Flux Blog

News, resources, and company updates

Flux + GPT-5 (Beta)

Open Flux now, switch Copilot to “Next-gen” and see how it handles your next design challenge. The sooner you try it, the more your feedback can shape the next leap in AI-powered hardware design.

|
August 11, 2025
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Understanding Pull-up and Pull-down Resistors: A Guide for Arduino and Microcontrollers

Understanding Pull-up and Pull-down Resistors: A Guide for Arduino and Microcontrollers

This article provides a comprehensive guide on pull-up and pull-down resistors, emphasizing their importance in establishing a known voltage level on microcontroller pins. It explains how to implement these resistors in Arduino circuits, discussing functions like pinMode and digitalRead. It also dives into real-world applications, voltage dividers, and tips for avoiding common mistakes.

What are Pull-ups and Pull-downs?

Pull-up and pull-down resistors are components added to circuits to ensure that pins on a microcontroller have a known voltage level, usually either VCC (5V or 3V) or GND (0V), before they are actively driven by other components. Pull-ups pull the voltage level up to VCC when the pin is not active, while pull-downs pull the voltage down to 0V.

Pull-up Resistor vs Pull-down Resistor

To more clearly highlight the distinctions between pull-up and pull-down resistors, I'll present a side-by-side comparison in the table below:

| Pull-up Resistors | Pull-down Resistors | | :=== | :=== | | Connect between I/O pin and +supply voltage, with an open switch connected between I/O and ground. | Connect between an I/O pin and ground, with an open switch connected between I/O and +Supply. | | Keeps the input “High” | Keeps the input “Low” | | More commonly used | Less commonly used |

What is PinMode and DigitalRead in Arduino?

In Arduino, setting the pinMode for a GPIO (General Purpose Input/Output) pin as INPUT sets the microcontroller to read incoming signals. If digitalRead reads a high voltage close to 5V, it will return HIGH, and if it reads close to 0V, it returns LOW. However, when a pin is set as an INPUT and is not connected to any voltage or is between different voltage levels, it is said to be "floating," and its state could be unreliable.

Importance of Pull-up and Pull-down Resistors in Circuits

To prevent a pin from floating, we use either a pull-up or a pull-down resistor. The resistance usually ranges around 1K to 10K ohms, although the exact value can be calculated based on the impedance requirements of the circuit.

When connected in a circuit, the resistor pulls the voltage across the pin to a known level. For example, with a pull-up resistor, a digitalRead on an Arduino GPIO pin will return HIGH unless actively driven low. This ensures a stable logic level, thus making the reading consistent and reliable.

Schematics and Practical Examples

In a typical pull-up schematic, the resistor is connected between the pin and VCC. For pull-downs, the resistor connects the pin to GND. These schematics often appear in circuits with switches, NAND gates, CMOS, and TTL logic devices.

A typical schematic diagram of pull-up resistor and pull-down resistors used in ESP32 microcontroller
Typical pull-up resistor and pull-down resistors used in ESP32 microcontroller.

Role in Digital Protocols and Transistors

Pull-up and pull-down resistors also have their place in digital protocols like I2C, where they are used to maintain data line and clock line states. They also find applications in circuits with transistors, acting as a voltage divider when the transistor is in the ON or OFF state.

Arduino's Built-In Pull-ups and Pull-downs

Since pull-up resistors are so commonly needed, many MCUs, like the ATmega328 microcontroller on the arduino microcontrollers often have internal pull-up and sometimes pull-down resistors that can be enabled or disabled through software by setting pinMode to INPUT_PULLUP or INPUT_PULLDOWN. This is extremely useful when you're low on external components.

To enable internal pull-ups on an Arduino, you can use the following line of code in your setup() function:

pinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5
pinMode(6, INPUT_PULLUP); // Enable internal pull-up resistor on pin 6
pinMode(7, INPUT_PULLUP); // Enable internal pull-up resistor on pin 7

How to Calculate Resistance of a Pull-up Resistor?

The value of the resistor in ohms is essential for maintaining the impedance balance in the circuit. A value too low will cause excessive current to flow through the circuit, while a too high resistance may not effectively pull the voltage level to 0V or 5V.

Let's say you want to limit the current to approximately 1mA when the button is pressed in the circuit above, where Vcc = 5V. What resistor value should you use?

To calculate the pull-up resistor, we'll be using Ohm's Law:

V = I x R, where V is the Vcc, I is the current through the pull-up resistor and R is the resistance of pull-up resistor

Rearrange the above equation with little algebra to solve for the resistor:

Pull Resistor Resistance = Vcc / current through the pull-up resistor = 5V / 0.001A = 5k ohms

Pull-ups vs. Pull-downs: When to Use Which?

Choosing between pull-ups and pull-downs often depends on the specific requirements of your circuit. However, pull-ups are generally more common because CMOS and TTL logic chips usually have a higher noise margin at the high-end (closer to VCC than to GND).

The Physics Behind It: Ohm's Law

Ohm's Law is the foundation when it comes to understanding resistors. The formula V = I * R, where V is the voltage, I is the current, and R is the resistance, governs how resistors work in circuits. The resistor limits the current that can flow between VCC and the input pin, balancing the impedance and providing a stable voltage level for digitalRead to interpret.

Real-world Applications: Switches and Sensors

In real-world applications, pull-up and pull-down resistors are commonly used with switches and sensors. When a switch is open, a pull-up resistor will ensure that the voltage at the pin is pulled up to VCC (5V or 3V). When the switch is closed, it connects the pin directly to GND, overriding the pull-up and bringing the voltage to 0V.

In sensor applications, a pull-up or pull-down can help stabilize the voltage level read by the microcontroller, offering a more accurate and reliable reading. For example, a pull-up can ensure that a temperature sensor starts with a known "high" state before it sends its own signal.

Voltage Dividers and Level Shifters

In some cases, pull-up or pull-down resistors are part of a voltage divider circuit, especially when you're interfacing 5V and 3V components. A voltage divider consists of two resistors in series connected across a voltage supply. The output voltage can be tapped between the two resistors, providing a reduced voltage that is proportional to the ratio of the resistors.

Common Pitfalls and Tips

  1. Wrong Resistor Value: Choosing a resistor with a value too low can cause excessive current to flow, wasting power and possibly damaging the microcontroller pin.
  2. Forget to Connect the Resistor: When the resistor is not connected, the pin will float, leading to unreliable readings.
  3. High-impedance Sources: If you're connecting a high-impedance source to a pin, even a large pull-up or pull-down resistor may not effectively set the logic level. In this case, consider using a buffer or amplifier circuit.
  4. Wire Length: Longer wire runs can introduce noise and resistance, affecting the performance of pull-up and pull-down resistors.

Final Thoughts

Pull-up and pull-down resistors are more than just "additional components" in your electronic projects; they're fundamental to the reliable operation of microcontrollers, transistors, and logic gates. Understanding their function, role in circuits, and practical applications can make the difference between a project that functions inconsistently and one that operates reliably.

By now, you should have a solid understanding of pull-up and pull-down resistors, how to set the pinMode and use digitalRead in your Arduino projects, and the significance of resistance and impedance in these configurations. Whether you're a hobbyist or a professional, these resistors are tools you'll come back to time and time again.

With this, we've reached the end of our comprehensive guide. Happy building!

|
September 5, 2023
Exploring ESP32: from History to Application

Exploring ESP32: from History to Application

ESP32 microcontrollers are affordable, low-power SoCs with integrated Wi-Fi and Bluetooth. Offering dual-core processing, ample memory, and versatility, they excel in IoT, wearables, and smart home applications. The ESP32's continuous evolution promises exciting possibilities ahead.

ESP32 WiFi

The ESP32 WiFi module is a key feature of the ESP32. It provides robust, reliable, and flexible Wi-Fi connectivity, making the ESP32 an excellent choice for a wide range of Internet of Things (IoT) applications.

Programming the ESP32 is a straightforward process, thanks to the comprehensive software development kit provided by Espressif. The ESP-IDF, Espressif's official development framework for the ESP32, provides a rich set of features and a powerful, flexible programming model.

{{insert-project-1-here}}

ESP32 Development

For development purposes, Espressif offers a development kit.

The ESP32 Dev Kit is a comprehensive development platform for the ESP32. It includes a development board, a software development kit, and a range of additional tools and resources. The advantages of the ESP32 Dev Kit include its comprehensive feature set, its ease of use, and its flexibility. The applications of the ESP32 Development Kit are wide and varied, including IoT devices, wearable electronics, and smart home applications.

The ESP32 Dev Module is a compact, versatile module that includes an ESP32 chip and a range of additional components. It provides a convenient, flexible way to develop ESP32-based applications. The features of the ESP32 Dev Module include its compact size, its flexibility, and its comprehensive feature set.

{{insert-project-2-here}}

ESP32 Uses

The ESP32 has risen in popularity thanks to allowing for easy development of Wi-Fi and Bluetooth-enabled projects. It has a wide range of applications, from IoT devices to wearable electronics, to smart home applications. Its powerful features, robust performance, and flexibility make it an excellent choice for a wide range of applications. 

Today many different types of ESP32 solutions exist, including the ESP8266 and the ESP32-WROOM series. 

Conclusion

The ESP32 is a powerful, flexible, and feature-rich device that offers a wide range of possibilities for developers. Its robust performance, comprehensive feature set, and flexibility make it an excellent choice for a wide range of applications.

Looking to the future, the potential of the ESP32 is vast. With ongoing development and improvements, we can expect to see even more powerful and feature-rich versions of the ESP32 in the future. The ESP32 is a device with a bright future, and we can look forward to seeing what developments are in store for this versatile device.

{{insert-mark-video}}

|
July 25, 2023
Arduino Uno Basics: Beginner's Guide to Getting Started

Arduino Uno Basics: Beginner's Guide to Getting Started

In this article, we will explore Arduino Uno's fundamental concepts, specifications, and its comprehensive pinout details including programming with the Arduino IDE.

What is Arduino Uno?

The Arduino Uno is an exceptional open-source electronics platform that empowers hobbyists and professionals alike to dive into the world of embedded systems. With its user-friendly programming language, you can easily create complex projects by writing minimal code. The Uno's powerful ATmega328P microcontroller enables rapid development of innovative applications, ranging from home automation to robotics and wearable technology to environmental monitoring. What sets the Arduino Uno apart is its compatibility with an extensive array of expansion boards (shields), enabling endless customization to suit your unique project requirements. By choosing the Arduino Uno, you're investing in a platform that has proven its versatility and reliability in countless real-world applications. Don't hesitate; embrace the Arduino Uno and unlock the limitless potential of your creative genius today.

Is Arduino Uno R3 a microcontroller?

The Arduino Uno R3 is not a microcontroller itself; instead, it is a development board built around a microcontroller. The microcontroller on the Arduino Uno R3 is the ATmega328P, which is an 8-bit microcontroller from Atmel's AVR family. The board uses a USB-to-serial converter chip, which is an FTDI (Future Technology Devices International) chip on some older Arduino boards or an ATmega16U2 chip on most of the newer Arduino Uno R3 boards. The Arduino Uno R3 provides an easy-to-use platform for programming and interfacing with the ATmega328P microcontroller and various peripherals and components, making it an ideal choice for various projects.

Arduino Uno Specification

| Specification | Value | | :=== | :=== | | Microcontroller | ATmega328P | | Operating Voltage | 5V | | Input Voltage (Recommended)| 7-12V | | Input Voltage (Limits)| 6-20V | | Digital I/O Pins | 14(6 of which can be used as PWM outputs | | Analog Input Pins | 6 | | Total DC Current for I/O Pins | 200mA | | DC Current per I/O Pin | 20mA | | DC Current for 3.3V Pin | 50mA | | Flash Memory | 32KB (0.5KB used by bootloader) | | SRAM | 2KB | | EEPROM | 1KB | | Clock Speed | 16MHz | | Length | 68.6mm (2.7 inches) | | Width | Width 53.4mm (2.1 inches) | | Weight | 25g | | Power Connector | 2.1mm x 5.5mm barrel jack | | Reset Button | Yes | | Power LED | Yes | | TX/RX LEDs | Yes | | LED | Yes (connected to digital pin 13) | | Voltage Regulator | NCP1117 (5V, 1A) |
SmokeSensor Shield - Arduino Uno shield is used to monitor chimney smoke and provide feedback to the stove.

What processor is on an Arduino Uno R3?

The Arduino Uno R3 uses the ATmega328P microcontroller as its central processor. The ATmega328P is an 8-bit microcontroller from the AVR family produced by Microchip (previously Atmel). It features a 16 MHz clock speed, 32 KB of flash memory, 2 KB of SRAM, and 1 KB of EEPROM.

How fast is an Arduino Uno R3?

The Arduino Uno R3 has an ATmega328P microcontroller, which operates at a clock speed of 16 MHz. The processor can execute up to 16 million instructions per second. While this speed is relatively low compared to modern microprocessors, it is more than sufficient for most hobbyist projects and simple applications, such as sensor reading, basic automation, and simple robotics.

 What is the pinout of the Arduino Uno?

| Pin No. | Pin Name | Pin Type | Description | | :=== | :=== | :=== | :=== | | 1 | Reset | Reset | Resets the microcontroller when pulled LOW; usually connected to the reset button | | 2-3 | TX,RX | Serial | Digital pins 0 (RX) and 1 (TX) for serial communication | | 4-9 | D2 - D7 | Digital I/O | General-purpose digital I/O pins | | 10-13 | D8 - D13 | Digital I/O | General-purpose digital I/O pins (D13 has built-in LED) | | 14-19 | A0 - A5 | Analog Input | Analog input pins can also be used as digital I/O pins | | 20 | AREF | Reference | The external voltage reference for analog inputs | | 21 | 3V3 | Power | 3.3V output from on-board voltage regulator (max 50mA) | | 22 | GND | Ground | Ground pins | | 23 | GND | Ground | Ground pins | | 24 | VIN | Power | Power input from the external power source or connected to VCC when USB powered | | 25 | 5V | Power | 5V output from the onboard voltage regulator | | 26 | D10 - D11 | SPI | SPI communication pins (D10 - SS, D11 - MOSI) | | 27-28 | D12 - D13 | SPI | SPI communication pins (D12 - MISO, D13 - SCK) | | 29-30 | A4 - A5 | I2C | I2C communication pins (A4 - SDA, A5 - SCL) | | 31 | D9 | PWM | Pulse Width Modulation (PWM) capable digital I/O pin | | 32 | D10 | PWM | Pulse Width Modulation (PWM) capable digital I/O pin | | 33 | D11 | PWM | Pulse Width Modulation (PWM) capable digital I/O pin | | 34 | D3 | PWM/Interrupt | PWM capable digital I/O pin and external interrupt 1 (INT1) | | 35 | D5 | PWM/Interrupt | PWM capable digital I/O pin and external interrupt 0 (INT0) | | 36 | D6 | PWM | Pulse Width Modulation (PWM) capable digital I/O pin |

This table provides a comprehensive overview of the Arduino Uno R3's pinout, which can be helpful when planning and building projects using this development board. Note that some pins have multiple functions, such as digital I/O, analog input, PWM, and communication protocols like SPI and I2C.

Arduino Uno R3 Shield Template - Include an official pinout so you will always know Arduino names and the alternative roles of pins.

What are the 3 types of pins on Arduino?

On an Arduino board, there are three primary types of pins:

  1. Digital I/O pins: These pins are used for digital input and output operations. They can read or produce either a HIGH (5V) or LOW (0V) signal, which is helpful for controlling devices like LEDs or reading the state of buttons. Some of these pins also support Pulse Width Modulation (PWM), allowing for the generation of analog-like signals to control devices such as servos or dimmable LEDs.
  2. Analog input pins: Analog input pins are used to read varying voltage levels, typically between 0V and the operating voltage (5V for Arduino Uno). These pins are connected to an Analog-to-Digital Converter (ADC) inside the microcontroller, which translates the analog voltage to a digital value. Analog input pins are commonly used for reading sensor data, such as temperature, light, or pressure sensors.
  3. Power and ground pins: These pins provide power and grounding connections for the board and connected components. The power pins include the supply voltage (5V or 3.3V, depending on the board), VIN for external power input, and sometimes a voltage reference pin (AREF). The ground pins are connected to the board's ground plane, providing a common reference point for all connected components.

In addition to these three primary types of pins, some Arduino boards also have pins supporting communication protocols like I2C, SPI, and UART for serial communication, enabling the board to interface with various peripherals and other devices.

How many ground pins are there on the Arduino Uno board?

The Arduino Uno board has a total of 5 ground pins. Three of them are located in the power section of the board, alongside the 5V, 3.3V, and VIN pins. The other two ground pins are situated beside the digital I/O pins, specifically next to pin 13 and the AREF pin. These ground pins can be used interchangeably to provide a common reference point for the connected components and circuits.

How do I program Arduino Uno R3?

To program an Arduino Uno R3, follow these steps:

  1. Install the Arduino IDE: Download and install the Arduino Integrated Development Environment (IDE) on your computer from the official Arduino website. The IDE is available for Windows, macOS, and Linux.
  2. Connect the Arduino Uno R3: Use a USB cable (Type A to Type B) to connect the Arduino Uno R3 to your computer.
  3. Launch the Arduino IDE: Open the Arduino IDE software on your computer.
  4. Select the board and port:
  5. Go to the "Tools" menu, then "Board", and choose "Arduino Uno" from the list of available boards.
  6. Next, go to "Tools" again, then "Port", and select the appropriate serial port that corresponds to your Arduino Uno R3. This will typically be labeled as "COM#" on Windows, "/dev/cu.usbmodem#" on macOS, or "/dev/ttyACM#" on Linux.
  7. Write or open a sketch (program):
  8. To create a new sketch, go to "File" > "New" and start writing your code in the editor.
  9. To open an example sketch, go to "File" > "Examples" and choose a sketch from the list of built-in examples.
  10. Compile and upload the sketch:
  11. Click the checkmark icon (✓) in the top left corner of the IDE to compile the sketch and check for any errors.
  12. If the compilation is successful, click the right arrow icon (→) next to the checkmark to upload the sketch to the Arduino Uno R3.
  13. Monitor the output (optional):
  14. If your sketch involves serial communication or you need to debug your code, click the magnifying glass icon in the top right corner of the IDE to open the Serial Monitor.
  15. Ensure the baud rate in the Serial Monitor matches the one specified in your sketch (e.g., Serial.begin(9600);).

After completing these steps, your Arduino Uno R3 should be successfully programmed and running the uploaded sketch. You can now modify the sketch or experiment with different examples to explore various functionalities and applications.

Is Arduino an IDE?

Arduino refers to both a hardware platform and an Integrated Development Environment (IDE).

  • Hardware Platform: Arduino is a family of open-source microcontroller-based development boards designed for electronics projects and prototyping. Examples include the Arduino Uno, Arduino Mega, and Arduino Nano. These boards typically feature a variety of digital and analog input/output pins, a microcontroller (e.g., ATmega328P on the Arduino Uno), and built-in communication interfaces, such as I2C, SPI, and UART.
  • Integrated Development Environment (IDE): The Arduino IDE software application provides an easy-to-use environment for writing, compiling, and uploading code (called sketches) to Arduino boards. The Arduino IDE supports the Arduino programming language, which is based on C/C++ but incorporates simplified syntax and built-in functions, making it more accessible for beginners. The IDE also includes a Serial Monitor for debugging and monitoring serial communication between the Arduino board and the computer.

Is Arduino IDE similar to Python?

The Arduino IDE and Python are related in the sense that they are both software environments used for programming, but they serve different purposes and are based on different programming languages.

  • Arduino IDE: The Arduino Integrated Development Environment (IDE) is a software application specifically designed for programming Arduino boards. The Arduino programming language used in the IDE is based on C/C++, with simplified syntax and built-in functions to make it more accessible for beginners. The Arduino IDE provides functionalities like writing, compiling, and uploading code to Arduino boards and a Serial Monitor for debugging and monitoring serial communication.
  • Python: Python is a high-level, versatile programming language widely used for various applications, such as web development, data analysis, artificial intelligence, and more. It is known for its readability and ease of use, making it a popular choice among beginners and experienced developers alike. Depending on the user's preference, Python programs can be written and executed using different IDEs, text editors, or the command line.

Is Arduino IDE C or C++?

The Arduino IDE supports a programming language based on both C and C++. The Arduino programming language inherits the syntax, data types, and control structures from C/C++, but it also incorporates simplified syntax and built-in functions to make it more accessible for beginners.

When you write a sketch (program) in the Arduino IDE, you can use features from both C and C++ languages, including object-oriented programming (OOP) concepts like classes and objects from C++.

Under the hood, the Arduino IDE uses the AVR-GCC compiler (for boards based on AVR microcontrollers, such as the Arduino Uno) or other appropriate compilers for different microcontroller families. These compilers support both C and C++ languages, allowing you to fully utilize the features of both languages in your Arduino sketches.

This template is a good starting point for your Arduino based project.

What is pinMode in Arduino?

In Arduino, pinMode is a built-in function used to configure a specific digital I/O pin as either an input or an output. This function is essential for setting up the behavior of each pin on the Arduino board before using them in a sketch (program).

The pinMode function takes two arguments:

  1. The pin number: The number of the digital I/O pin you want to configure.
  2. The mode: The desired mode for the pin, either INPUT, OUTPUT, or INPUT_PULLUP.

Here's the syntax for using pinMode:

pinMode(pin, mode);

Typically, you call the pinMode function in the setup() section of your Arduino sketch to configure the pin behavior before the main loop starts executing.

For example, to configure digital pin 13 as an output, you would write:

void setup() {  pinMode(13, OUTPUT); // Set digital pin 13 as an OUTPUT}

And to configure digital pin 2 as an input with an internal pull-up resistor, you would write:

void setup() { pinMode(2, INPUT_PULLUP); // Set digital pin 2 as an INPUT_PULLUP }

Using pinMode correctly is crucial for ensuring the proper operation of your Arduino projects and avoiding potential issues with pin configurations.

Is pinMode necessary in Arduino?

Using pinMode in Arduino is necessary when working with digital I/O pins because it configures the pin behavior as either an input or an output. Properly setting the pin mode ensures that the Arduino board can interact with connected components as intended.

What is the difference between pinMode and digitalWrite?

pinMode and digitalWrite are built-in functions in the Arduino programming language, and they serve different purposes related to digital I/O pins on an Arduino board:

  1. pinMode: This function is used to configure a specific digital I/O pin as either an INPUT or an OUTPUT. It takes two arguments: the pin number and the mode (INPUT, OUTPUT, or INPUT_PULLUP). The pinMode function should be called in the setup() function of the Arduino sketch to configure the pin behavior before executing the main loop.

Syntax: pinMode(pin, mode);

Example:

pinMode(13, OUTPUT); // Set digital pin 13 as an OUTPUT 
  1. digitalWrite: This function is used to set the state of a digital output pin to either HIGH (5V) or LOW (0V). It takes two arguments: the pin number and the desired state (HIGH or LOW). The digitalWrite function is typically used in the loop() function or other functions to control devices like LEDs, relays, or other digital components.

Syntax: digitalWrite(pin, value);

Example:

digitalWrite(13, HIGH); // Set digital pin 13 to HIGH (5V)

In summary, the pinMode function configures a digital I/O pin as either an input or an output, while the function sets the state of a digital output pin to HIGH or LOW.

What is Arduino Uno R3 used for?

The Arduino Uno R3 is a versatile, open-source microcontroller board used for a wide range of applications, including electronics projects, prototyping, learning programming and electronics, and building interactive systems. Some common uses for the Arduino Uno R3 include:

  1. Education: The Arduino Uno R3 is a popular choice for students and educators to learn programming and electronics concepts, thanks to its user-friendly programming environment, easy-to-interface with a breadboard, extensive online resources, and active community support.
  2. Hobbyist projects: The Arduino Uno R3 is often used by hobbyists to create various DIY projects, such as home automation systems, robots, interactive art installations, and musical instruments.
  3. Prototyping: The Arduino Uno R3 provides a cost-effective and accessible platform for engineers, designers, and makers to develop and test their ideas before creating custom PCBs or moving on to more advanced microcontroller boards.
  4. Sensor interfacing: The Arduino Uno R3 can be used to interface with a wide variety of sensors, such as temperature, humidity, light, and motion sensors, allowing users to collect data and build monitoring systems for various applications.
  5. Actuator control: The Arduino Uno R3 can control various actuators like motors, servos, relays, and solenoids, enabling the creation of automated systems, robotics, and mechatronic devices.
  6. Communication with other devices: The Arduino Uno R3 supports communication protocols like I2C, SPI, and UART, allowing it to interface with other microcontrollers, computers, or peripherals, such as displays, EEPROMs, or wireless communication modules.

These are just a few examples of what the Arduino Uno R3 can be used for. Its simplicity, accessibility, and flexibility make it a popular choice for a wide range of applications, from beginner-level projects to more complex systems.

|
April 20, 2023
Introduction to the ATtiny85 Microcontroller

Introduction to the ATtiny85 Microcontroller

From programming to hardware connections, this ATtiny85 comprehensive guide provides everything you need to know to get started. Read on and start exploring the endless possibilities of this tiny yet mighty microcontroller.

| ATtiny85 Features | | | :=== | :=== | | No. of Pins | PDIP: 8pins / QFN: 20pins | | CPU | RISC 8-Bit AVR | | Operating Voltage | 1.8 to 5.5 V | | Program Memory | 8K | | Program Memory Type | Flash | | RAM | 512 Bytes | | EEPROM | 512 Bytes | | ADC Number of ADC Channels | 10-Bit 4 | | Comparator | 1 | | Packages | PDIP(8-Pin) SOIC(8-Pin) TSSOP (8-Pin) QFN/MLF (20-Pin) | | Oscillator | up to 20 MHz | | Timer (2) | 8-Bit Timers | | Enhanced Power on Reset | Yes | | Power Up Timer | Yes | | I/O Pins | 6 | | Manufacturer | Microchip | | SPI | Yes | | I2C | Yes | | Watchdog Timer | Yes | | Brown out detect (BOD) | Yes | | Reset | Yes | | USI (Universal Serial Interface) | Yes | | Minimum Operating Temperature | -40 C | | Maximum Operating Temperature | 125 C |

Does ATtiny85 have analog pins?

Yes, ATtiny85 has two analog input pins, namely PB2 (ADC1) and PB3 (ADC3). These pins can be used to read analog signals from external sensors or other devices. It's one of the key features of the ATtiny85 is its analog input pins, which enable it to read analog signals from external sensors or other devices. This makes it suitable for applications that require high precision, such as temperature sensing and audio processing.

The analog-to-digital converter (ADC) in ATtiny85 has a resolution of 10 bits, which means that it can convert analog signals into digital values with a range of 0 to 1023. This makes it suitable for applications that require high precision, such as temperature sensing and audio processing.

How many bits is ATtiny85?

ATtiny85 is an 8-bit microcontroller, which means that it can process data in 8-bit chunks. This limits the range of values that it can process, but also makes it more efficient and less power-hungry than 16-bit or 32-bit microcontrollers.

The 8-bit architecture of ATtiny85 means that it can perform simple arithmetic and logic operations quickly and efficiently. However, it may not be suitable for applications that require complex mathematical calculations or high-speed data processing.

Is ATtiny85 a microcontroller?

Yes, ATtiny85 is a microcontroller. It is a small, integrated circuit that contains a processor core, memory, and a variety of peripherals. It is designed to be used in embedded systems and can be programmed to perform specific tasks.

The microcontroller architecture of ATtiny85 makes it ideal for use in applications that require real-time processing, such as sensor data acquisition, motor control, and audio processing. It is also suitable for applications that require low power consumption and a small form factor.

This module comes with software select power saving modes that are very helpful for the applications that operate with minimum power.

Like other controllers introduced by the Microchip, this module comes with 10-bit ADC converter that houses 4 analog channels that help in sensor interfacing and converting analog signals to digital ones.

This tiny chip is available in four packages called PDIP, SOIC, TSSOP, and QFN where first three come with 8-pin interface while the last one contains 20 pins.

Mini development board: ATtiny85 can be used as small development board which is a great way to jump into microcontroller electronics.

ATtiny85 Main Core Functions

ATtiny85 can perform a number of functions on a single chip. Some pins come with an ability to employ more than one functions.

Timers

One of the powerful features of the ATtiny85 microcontroller is its ability to function as a timercounter.. The ATtiny85 has two 8-bit timers (Timer0 and Timer1) that can be used for a variety of timing applications. These timers can operate in several different modes, including:

  • Normal mode: In this mode, the timer simply counts up from 0 to 255 and then starts over. This mode is useful for generating delays and for basic timing applications.
  • CTC (Clear Timer on Compare) mode: In this mode, the timer counts up to a specified value and then resets to 0. This mode is useful for generating precise delays and for measuring time intervals.
  • PWM (Pulse Width Modulation) mode: In this mode, the timer generates a square wave with a variable duty cycle. This mode is useful for controlling the speed of motors and for generating audio signals.

In addition to the timers, the ATtiny85 also has a built-in watchdog timer that can be used to reset the microcontroller if it becomes stuck or unresponsive. This feature is especially useful in safety-critical applications where the microcontroller needs to be able to recover from errors and prevent system failures.

SPI Communication

ATtiny85 comes with a serial peripheral interface (SPI) that is mainly used for communication between the microcontroller and other peripheral devices such as SD cards, sensors, and shift registers. It incorporates separate clock and data lines with the addition of a select line to pick the required device for communication. This communication allows both connected device to lay out the same path of communication under one communication protocol.

I2C Communication

I2C protocol is added in the device that is mainly two-wire protocol used to connect low-speed devices like ADC and DAC converters, I/O interfaces and microcontrollers. The two wires, known as Serial Clock (SCL) and Serial Data (SDA), are the main part of this communication protocol. The SCL line behaves like a clock signal that is generated by the master device and synchronizes the data transfer between the devices. While the SDA line is used to carry the required data.

BOD or Brown out reset

The BOD is a very useful function that helps in resetting the controller once the Vdd (voltage supply) drops below a brownout threshold voltage. The multiple voltage ranges are provided to secure the module once the power drops at the voltage supply line.

Interrupt

The interrupt plays a vital role in an emergency which puts the main function on hold and executes the required instructions that are necessary at that time. Once the interrupt is executed the running code puts the controller back to the main program.

ADC Converter

ADC module is a valuable addition in the device that makes it compatible with the sensors. It is a 10-bit module that contains 4 channels which are little less than the number of channels available on the modules introduced by Microchip that, more or less, come with 7 or 12 channels.

Microphone sinewave dislay: ATtiny85 can be used to generate and manipulate sound in various audio applications.

In addition to these applications, ATtiny85 can also be used in various DIY projects, hobbyist electronics, and educational projects. Its simplicity and ease of use make it a great choice for beginners who are learning about microcontrollers and embedded systems.

ATtiny85 available packages

The ATtiny85 comes in various packages, including:

  1. 8-pin DIP (Dual Inline Package): This is the most common package for the ATtiny85, and it has 8 pins that can be inserted into a breadboard or socket.
  2. 8-pin SOIC (Small Outline Integrated Circuit): This package has the same pinout as the DIP package, but it is smaller and designed for surface-mount applications.
  3. 8-pin MLP (Micro Leadframe Package): This is a surface-mount package that is even smaller than the SOIC package.
  4. 20-pin QFN (Quad Flat No-Lead): This package has a low profile and no leads, which allows for high-density circuit designs.

ATtiny85 Pinout

ATtiny85 PDIP-8 Package Pinout

Following table shows the pin description that will help you understand the major functions associated with each pin.

| Pin# | Name | Description | | :== | :== | :== | | 1 | PB5 PCINT5 RESET ADC0 dW | I/O Bidirectional pin Interrupt Reset Analog Channel 0 Define Word | | 2 | PB3 PCINT3 XTAL1 CLKI OC1B ADC3 | I/O Bidirectional pin Interrupt Crystal Oscillator Pin 1 Clock Analog Channel 3 | | 3 | PB4 PCINT4 XTAL2 CLKO OC1B ADC2 | I/O Bidirectional pin Interrupt Crystal Oscillator Pin 2 Clock Analog Channel 2 | | 5 | PB0 MOSI DI SDA AIN0 OC0A OC1A AREF PCINT0 | I/O Bidirectional pin SPI Serial Data (I2C) Analog Input Compare Register Voltage Reference Interrupt | | 6 | PB1 MISO DO AIN1 OC0B OC1A PCINT1 | I/O Bidirectional pin SPI Serial Data (I2C) Analog Input Compare Register Interrupt | | 7 | PB2 SCK USCKSCLADC1T0 PCINT2 | I/O Bidirectional pin Serial Clock Line (I2C) Analog Channel 1 Timer 0 Interrupt | | 4 | GND | Ground Pin | | 8 | VCC | Voltage Supply Pin |
ATtiny85 QFN-20 Package Pinout

ATtiny Memory

The memory of this little toy is designed and based on Atmel's high-density technology that is basically non-volatile in nature. The Program Memory can be reprogrammed through SPI serial interface using two ways i.e. On-chip boot code or non-volatile memory programmer. The main program execution is mainly done inside CPU that plays a vital role to access memories and perform calculations on the basis of the number of instructions incorporated into the controller. This module falls under the category of AVR controllers that are based on Harvard architecture and come with separate locations reserved for both program and data memory.

  • ROM Read only memory: The ATtiny85 microcontroller has a total of 8KB of flash memory for storing program code. This memory is non-volatile, which means that it retains its contents even when power is removed from the device. The flash memory is organized into 8K bytes, with each byte being individually addressable.
  • RAM Random access memory: In addition to flash memory, the ATtiny85 also has 512 bytes of SRAM (Static Random Access Memory), which is used for storing data during program execution. Unlike flash memory, SRAM is volatile, which means that it loses its contents when power is removed from the device.
  • EEPROM: The ATtiny85 also has 512 bytes of EEPROM (Electrically Erasable Programmable Read-Only Memory), which is non-volatile memory that can be used for storing data that needs to be retained between power cycles. EEPROM memory is accessed using special instructions and is slower than SRAM, but it can be written to and erased multiple times without wearing out.
LED controllers: ATtiny85 can be used to control the brightness and color of LEDs in various lighting applications.

How do I upload codes to ATtiny85?

To upload codes to ATtiny85, you need a avr programmer device that can communicate with the chip. There are several programmer devices that are compatible with ATtiny85, such as USBasp, Arduino as ISP, and Atmel AVRISP mkII.

Once you have the programmer device, you can connect it to your computer and the ATtiny85 chip using a breadboard or a custom PCB. You will also need to install the appropriate software, such as AVRDUDE or the Arduino IDE.

To upload the code to ATtiny85 using AVRDUDE, you will need to enter the appropriate commands in the command prompt or terminal window. For example, the command to upload a hex file to ATtiny85 using USBasp would be: 

avrdude -c usbasp -p attiny85 -U flash:w:myprogram.hex

There are many compilers available for compiling the code in the AVR microcontroller. Some are better than others. Before you pick some compiler for your controller, make sure it is easy to use and stand fit for your needs and requirements.

  • ImageCraft is good option to start with that has made a decent place in the market but lack of GUI features make this compiler difficult to handle where editor and project management are quite daunting and can put you in a total stall in the start.
  • CodeVision is another easiest compiler that comes with CodeWizard and helps in starting a new project sooner than later. Also, it is highly economical.

Alternatively, you can use the Arduino IDE to upload the code to ATtiny85. To do this, you will need to install the ATtiny core for Arduino and select the appropriate board and programmer settings. You can then write your code in the Arduino IDE and upload it to ATtiny85 using the standard upload button.

Tiny Motor Control board: ATtiny85 can be used to control the speed and direction of small motors in robotics and other applications.

Connecting ATtiny85 with Arduino uno as your programmer

| Arduino Pin | ATtiny85 Pin | | :== | :== | | 10 | 1 | | 11 | 5 | | 12 | 6 | | 13 | 7 | | +5V | 8 | | GND | 4 |

Tiny things can work wonders if used a proper way. Both ATtiny85 and Arduino uno, when connected, can easily drive automation in your project and help in executing the number of instructions. You can connect ATtiny85 with the Arduino following way.

It is important to note that programming ATtiny85 can be a bit challenging for beginners, as it requires some knowledge of electronics and programming. However, there are many tutorials and resources available online that can help you get started. Once you get the hang of it, programming ATtiny85 can be a fun and rewarding experience.

In conclusion, the ATtiny85 microcontroller is a versatile and powerful device that packs a lot of functionality into a small package. Despite its modest size, it is capable of running a wide range of applications and can be used in projects that require real-time processing, low power consumption, and a small form factor.

Whether you are a beginner who is just getting started with microcontrollers or a seasoned professional looking for a compact and efficient solution for your next project, the ATtiny85 is definitely worth considering. With its analog input pins, 8-bit architecture, and built-in flash, SRAM, and EEPROM memory, it provides a good balance of features that make it suitable for a wide range of applications.

So, if you are looking for a microcontroller that is small, efficient, and powerful, be sure to check out the ATtiny85. With its simplicity and ease of use, it is a great way to get started with embedded systems and explore the world of microcontrollers.

For more details and specifications, check out ATtiny85 Datasheet.

|
March 11, 2023
Raspberry Pi Zero 2 W Review: a Powerful and Affordable Mini Computer

Raspberry Pi Zero 2 W Review: a Powerful and Affordable Mini Computer

The Raspberry Pi Zero 2 W is a small and powerful computer with impressive performance for its size and price. With a quad-core processor, 512MB of RAM, built-in wireless connectivity, and a USB On-The-Go port, it's suitable for many projects, including home automation, media centers, and robotics.

What can I do with Raspberry Pi Zero 2 W?

The possibilities are endless, but here are a few popular use cases:

  1. DIY projects. The RPi Zero W's compact size and low power consumption make it ideal for DIY projects. You can use it to build a retro gaming console, a smart mirror, or even a robot. The GPIO (General Purpose Input/Output) pins allow you to connect sensors, motors, and other components to create your own custom hardware.
  2. Learning to code. The RPi Zero W is a great tool for learning programming and electronics. With its low price point and user-friendly interface, it's accessible to beginners who want to start learning how to code and play around with basic electronics. There are plenty of resources available online to help you get started, from tutorials on programming languages like Python to projects that show you how to build simple to advanced circuits.
  3. Home automation. The Raspberry Pi Zero W can also be used to build a home automation system. With its built-in wireless connectivity, you can control your home's lighting, heating, and other appliances using your smartphone or computer. You can use popular platforms like Home Assistant or OpenHAB to set up your own custom automation system. With its micro-hdmi port, you can use a hdmi adapter and hdmi cable to display important data and metrics on a 1080p30 resolution monitor.
  4. Portable computing. The Raspberry Pi Zero W's small size and low power consumption make it perfect for portable computing. You can build a handheld computer that runs on battery power and has a built-in display. With the addition of a keyboard and mouse, you can use it as a fully functional computer for basic tasks like browsing the web, checking email, or writing documents.
  5. Internet of Things (IoT). The Raspberry Pi Zero W is a popular choice for building IoT projects. With its wireless connectivity and GPIO pins, you can connect sensors, cameras, and other devices to the internet and collect data in real-time. You can use this data to automate tasks or create custom alerts and notifications.

The Raspberry Pi Zero 2 W has a USB On-The-Go (OTG) port, which allows it to act as a USB device or host. You can connect the Raspberry Pi Zero 2 W to another device, such as a computer, and use it as a USB device (act as a flash drive) or use the Raspberry Pi Zero 2 W to control USB devices or peripherals connected to it (such as a keyboard or mouse).

  • As a USB device, you will need a USB OTG cable which connects to the USB port on the Raspberry Pi Zero 2 W and provides a USB Type-A port for connecting to the host device.
  • As a USB host, you can connect USB devices directly to the USB OTG port on the Raspberry Pi Zero 2 W. However, because the Raspberry Pi Zero 2 W has a limited number of USB ports, you may need to use a USB hub to connect multiple devices.

Is Raspberry Pi Zero 2 W fast?

With its quad-core ARM Cortex-A53 processor running at 1GHz. It has 512MB of LPDDR2 RAM, and it supports wireless connectivity with built-in 2.4GHz and 5GHz Wi-Fi and Bluetooth 5.0. It also has a microSD card slot, a micro-HDMI port, and a USB Type-C port for power and data.

Compared to its predecessor, the Raspberry Pi Zero W, the Zero 2 W has a significant performance boost. The Zero W had a single-core ARMv6 processor running at 1GHz and only 512MB of RAM. The Zero 2 W's quad-core processor and LPDDR2 RAM make it much faster and more capable of handling more demanding applications.

In terms of benchmarks, the Raspberry Pi Zero 2 W is faster than its predecessor and other single-board computers in its price range. In tests conducted by The MagPi magazine, the Zero 2 W scored 703 points in the Geekbench 4 benchmark, compared to the Zero W's score of 352 points. This puts the Zero 2 W on par with the Raspberry Pi 3 Model B, which was released in 2016 and is still a popular choice for many projects.

Does Raspberry Pi Zero 2 W have WiFi?

Raspberry Pi Zero 2 W does have built-in WiFi connectivity, which supports the 2.4GHz and 5GHz bands, as well as Bluetooth 5.0. This means that the Raspberry Pi Zero 2 W can connect to wireless networks and Bluetooth devices without requiring additional hardware.

What is the difference between Raspberry Pi Zero and Zero 2 W?

| Feature | Raspberry Pi Zero | Raspberry Pi Zero W | | :--- | :--- | :--- | | Wireless Connectivity | Not included | Includes Wi-Fi and Bluetooth | | SoC | Broadcom BCM2835 | RP3A0 System in Package | | Memory | 512MB DDR2 | 512MB SDRAM | | Price | Less expensive | Slightly more expensive | | Power Consumption | Slightly lower | Slightly higher | | Availability | Less widely available | More widely available | | Pinout | Same pinout| Same pinout |

Raspberry Pi Zero 2 W specification

  • Processor: Broadcom BCM2710B0 quad-core Cortex-A53 (ARM v8) 64-bit SoC @ 1GHz
  • RAM: 512MB LPDDR2 SDRAM
  • Connectivity: 2.4 GHz and 5 GHz IEEE 802.11b/g/n/ac wireless LAN, Bluetooth 5.0, BLE
  • GPIO: 40-pin GPIO header (fully backward-compatible with previous models)
  • Video & Sound: Micro-HDMI port (1080p30 up to 1080p60 video output), MIPI CSI camera connector, 3.5mm audio jack
  • Storage: Micro SD card slot for loading operating system and data storage
  • Input power: 5V DC via USB Type-C connector (minimum 3A), or GPIO header (minimum 3A)
  • Dimensions: 66mm x 30.5mm x 5mm, 9g

Compared to its predecessor which only has Broadcom BCM2835, the Raspberry Pi Zero 2 W has a significantly faster quad-core processor, twice the RAM, and built-in wireless connectivity with support for dual-band Wi-Fi and Bluetooth 5.0. It also has a USB Type-C connector for power and data, instead of the micro-USB port on the previous model. Despite these upgrades, it retains the same small form factor and GPIO header as the original Raspberry Pi Zero. These specifications make the Raspberry Pi Zero 2 W a versatile and powerful single-board computer suitable for a wide range of projects.

What OS (operating system) is Pi Zero 2 W?

The Raspberry Pi Zero 2 W can run a variety of operating systems, just like other Raspberry Pi models. Some of the most popular operating systems that can run on the Pi Zero 2 W include:

  • RaspberryPi OS or Raspbian OS: This is the official operating system for Raspberry Pi boards, including the Pi Zero 2 W. It's a free operation system based on Debian optimized for the Raspberry Pi hardware and comes with a variety of pre-installed software and tools. It can be downloaded from the Raspberry Pi website and is available in both desktop and Lite versions.
  • Ubuntu: Running Ubuntu on your Raspberry Pi Zero 2 W is easy. Just pick the OS image you want, flash it onto a microSD card, load it onto your Pi and away you go.
  • RISC OS Pi: RISC OS is a unique operating system that was originally developed for the Acorn Archimedes computer in the 1980s. It's designed to be secured, fast and efficient, and it's been ported to run on the Raspberry Pi. RISC OS has a unique user interface and comes with a variety of software and tools.
  • RetroPie: RetroPie is a popular operating system that turns the Raspberry Pi Zero 2 W into a retro gaming console. It includes a variety of emulators and game engines, and it supports a wide range of classic game consoles and systems.
  • Other Linux distributions: The Raspberry Pi Zero 2 W can run a variety of other Linux distributions, including Arch Linux ARM, Fedora, and Gentoo. These distributions may require more advanced setup and configuration compared to the more user-friendly options like Raspberry Pi OS and Ubuntu.

Things You Should Know Before Buying RPi Zero 2 W

  1. Purpose: The Raspberry Pi Zero 2 W is a small and powerful computer, suitable for a range of projects, such as home automation, robotics, and media centers. Before purchasing, consider what you plan to use it for to ensure it meets your requirements.
  2. Price: While the Raspberry Pi Zero 2 W is affordable, it is more expensive than the previous Raspberry Pi Zero models. You should be prepared to spend a little more for the added features and performance.
  3. Connectivity: The Raspberry Pi Zero 2 W has built-in wireless connectivity (WiFi and Bluetooth), which is convenient for many projects. However, it also has a limited number of USB ports and no Ethernet port, which can be a consideration for some projects.
  4. Power Requirements: The Raspberry Pi Zero 2 W requires a 5V power supply capable of providing at least 3A of power, which may be different from the power requirements of other Raspberry Pi models.
  5. Availability: The Raspberry Pi Zero 2 W has been in high demand since its release, which can make it difficult to find in stock. Be prepared to search for it or consider pre-ordering to ensure you get one when it's available.

By considering these factors, you can determine if the Raspberry Pi Zero 2 W is the right choice for your project and be prepared to get started with it once you have it in hand.

Want to get started now? Here's a simple (Hardware attached on top) HAT template you can use for your Raspberry pi zero 2 W.

|
February 25, 2023
How to Convert from MM to Mils: a Guide for Beginners

How to Convert from MM to Mils: a Guide for Beginners

The guide provides an easy-to-follow formula for converting mm to mils, essential in engineering and PCB design for precise measurements and applications.

The Metric System vs. the Imperial System

Before we discuss how to convert MM to mils, it's essential to mention the metric system and the imperial system. 

  • The metric system is used worldwide and employs units like milliliters, centimeters, and millimeters. 
  •  The imperial system is more common in the United States, employing units like fluid ounces and inches. 

Our focus is on mm, a metric unit, and its conversion to mils, an imperial unit.

The Basics: Millimeters and Mils

  • Millimeters, denoted as "mm," are a metric unit that is one-thousandth of a meter, or 0.001 meters.

What units are mils?

  • Mils are one-thousandth of an inch, meaning 1 mil is equivalent to 0.001 inches.

However, mils are sometimes used in a different context as milliradians (mils), which are units of angular measurement commonly used in ballistic calculations and optical instruments.

mm to mils Conversion Formula

To convert from millimeters to mils, you can use the following straightforward conversion formula:

Mils = Millimeters * 39.37

We can derive this formula the following way:

  • 1 inch equals 25.4 millimeters (2.54 centimeters)
  • 1 mil equals 0.001 inch
  • So, 1 mil equals 0.0254 mm.
  • And 1 mil divided by 0.0254 mm is 39.37 mils per mm
  • Therefore, multiplying millimeters by 39.37 gives us the equivalent measurement in mils.

Let's illustrate this with an example: Suppose you have a measurement of 0.5 mm and want to convert it to mils:

Mils = 0.5 mm * 39.37 ≈ 19.685 mils

So, 50 millimeters is approximately 19.685 mils. That's about the thickness of two business cards!

Mils to mm 

This conversion is essentially the reverse of our previous equation. You can use the following straightforward conversion formula:

Millimeters (mm) = Mils / 39.37

Let's walk through an example of converting from mils to millimeters using the conversion formula:

Suppose you have a measurement of 50 mils, and you want to convert it to millimeters. You can use the formula as follows:

Millimeters (mm) = 50 mils / 39.37 ≈ 1.27 mm 

So, 50 mils are approximately equivalent to 1.27 millimeters. That's about the thickness of a U.S. Dime!

How thick is 1 mil in mm?

1 mil = 0.0254 Millimeter

Conversion Chart

For those who prefer visual aids, having a conversion chart on hand is common. Here's a short conversion chart we made to give you an idea:

| Mils | Millimeters (mm) | | :=== | :=== | | 10 | 0.254 | | 20 | 0.508 | | 30 | 0.762 | | 40 | 1.016 | | 50 | 1.270 | | 60 | 1.524 | | 70 | 1.778 | | 80 | 2.032 | | 90 | 2.286 | | 100 | 2.540 | | 120 | 3.048 |

In this chart, we have provided conversions for mils ranging from 1 to 120. This should cover most conversion needs. However, if you require conversions for values outside this range, simply use the conversion formulas mentioned earlier.

Why Convert to Mils in Electrical Engineering?

Mils are frequently employed in precision applications in the US, where small measurements are crucial. Below are specific scenarios where mils come into play for electrical engineers:

  1. Printed Circuit Boards (PCBs): Electrical engineers often use mils to specify the spacing between components and the traces on a PCB. For example, a common requirement for PCB trace spacing to prevent electrical interference is 6 mils (0.1524 mm). This level of precision ensures that signals do not cross over and disrupt the proper functioning of the circuit.
  2. Component Sizing: SMT (Surface Mount Technology) components often have specific pad sizes and pitches specified in mils. Engineers ensure that components fit snugly and securely on the PCB, reducing the risk of manufacturing errors or circuit malfunctions. Standard component pad sizes for SMT components can range from 20 mils (0.508 mm) to 40 mils (1.106 mm), depending on the component and its intended use.
  3. Wire Gauge Measurements: The American Wire Gauge (AWG), a U.S. standard for wire conductor size, relates to the diameter of the wire in mils. For example, typical household copper wiring is AWG number 12 or 14, translating to 12 or 14 mils in diameter.

For SMT components in PCB design, there are part size references that are commonly used and are crucial for specifying dimensions on the PCB. This table provides their size values in both mils and millimeters for easy reference during PCB design and assembly:

| Imperial Part Size Reference | Size in Mils | Size in Millimeters | Metric Part Size Reference | | :=== | :=== | :=== | :=== | | 0201 | 20 mils | 0.508 mm | 0603 | | 0402 | 40 mils | 1.016 mm | 1005 | | 0603 | 60 mils | 1.524 mm | 1608 | | 0805 | 80 mils | 2.032 mm | 2012 | | 1206 | 120 mils | 3.048 mm | 3216 |

Don't be Confused! Understanding the Milliradian "Mil"

We've mentioned milliradians earlier, so let's clarify what they are. A milliradian, often denoted as "mrad" or "mil," is a unit of angular measurement. It is used in various fields, including ballistics and engineering. When you hear talk about a mil-dot scope or mil reticle, it's referring to measurements in milliradians. In this context, one radian is divided into 1,000 milliradians, and the reticle markings are spaced at one milliradian intervals.

|
November 15, 2023