Understanding the Arduino UNO Development Board

Introduction

Understanding the Arduino UNO Development Board

This is a “genuine” Arduino UNO taken from the official website, and it probably won’t differ much from the one you have. However, upon closer inspection, there seem to be some indescribable differences. As a global open-source project, Arduino has given rise to countless variants around the world, and within just the “UNO” version, many unnamed branches can be identified.

Understanding the Arduino UNO Development Board

This article will analyze the well-known UNO development board from multiple perspectives, uncovering the hidden connections between different versions and attempting to explain what makes it a key player in Anycar and many other robotic projects.

A Quick Look at the Circuit Board

Understanding the Arduino UNO Development Board

The above shows a top view of the Uno development board from the Arduino official website. Even without the schematic, we can easily identify some circuit units.

The ATMEGA328P in the bottom right corner is undoubtedly the MCU of the development board, the soul of the “classic” Arduino, which is backed by the historically significant ATmega8 series. In 1996, Atmel launched the first microcontroller based on the AVR architecture, using flash memory instead of traditional ROM as the storage medium, allowing developers to repeatedly write programs to the microcontroller. This feature caught the attention of several Italian students, who designed a development platform named “Wiring” based on the ATMEGA128, and expanded it into Arduino in 2005.

Today, the 328P found on the UNO is already an upgraded version of the 128, yet it appears somewhat outdated. With only 32KB of flash memory and 1K EEPROM, Atmel has long listed it as “not recommended for new designs.” However, in small-scale projects like Anycar, the 328P can still showcase its remaining capabilities, which is why it has been retained in the UNO’s design. Thus, the ATmega8 created the initial brilliance of Arduino, and the latter has allowed the former to survive to this day, marking a mutually beneficial history.

Understanding the Arduino UNO Development Board

To the left of the TX/RX indicator light is an ATMEL8U2, which is actually a microcontroller that performs comparably to the 328P and is still in production. Its packaging suggests it is much more modern than the 328P. However, on the UNO board, it is merely used as a USB-serial converter, serving as a bridge between the TX/RX signals and the data on the USB interface, which seems like a waste of resources. It is quite perplexing why the official team did not opt for a more cost-effective solution like CH340.

Understanding the Arduino UNO Development Board

In contrast, the identification of the circuit in the lower left corner is not as clear, but it is actually much simpler. The PCB traces in the above image are primarily concentrated on the front of the board, clearly showing that the power voltage from the DC socket is isolated by a diode in the lower right corner and filtered by a 25V 47uF electrolytic capacitor before entering the large linear regulator on the left. Readers familiar with Arduino can probably guess that the output voltage of the regulator is the 5V power supply provided by the UNO. It is crucial to remember this circuit structure for protecting Arduino: the “5V” on the development board is only meant for small sensors and cannot power high-power devices like motors or heating elements, otherwise, the three-terminal regulator on the left will bear undue stress and will almost certainly sacrifice itself in a puff of smoke.

The five-pin device above the two electrolytic capacitors may seem unfamiliar, but combined with the layout of the capacitors on either side, it can be inferred that this is another voltage regulator module providing 3.3V output. It is self-evident that the output power of the “3V3” port on the UNO is lower than that of the “5V” port — as the saying goes, “the longer the inch, the stronger the strength,” and the 3.3V regulator is significantly smaller than the 5V one, likely resulting in output capabilities akin to that of an ant.

Understanding the Arduino UNO Development Board

Analyzing the Schematic

Understanding the Arduino UNO Development Board
Understanding the Arduino UNO Development Board

(Click the end of the article to view the high-definition image)

Starting from the clearer circuit drawn on the right side, the three connectors IOH, IOL, and AD are the Digital/Analog IO ports on the Uno board, each connected directly to the 328P. It can be seen that the pull-ups and pull-downs for the digital pins are controlled by the corresponding registers within the 328P. The SCL/SDA and ADC input channels A5/A4 share two pins, so if the built-in I2C interface is needed, the multiplexed pins must be properly set in the programming. C4 is the decoupling capacitor for the ADC reference voltage AREF.

C5, RN1D, RN2D, D2, and the RESET button form the reset control circuit. When the RESET pin is pulled low, the 328P enters reset mode, and the built-in BootLoader checks for new programs sent from the computer via the USART interface (i.e., RX/TX) after the reset is complete. The manual reset process is straightforward: while the circuit is functioning normally, the CTS pin of U3 is high, causing C5 to connect to VCC through RND1, thus C5 remains uncharged, and the RESET pin is high. Pressing the button forces the RESET low, resetting the 328P. After releasing the button, C5 charges from the right side to VCC, completing the reset. On the other hand, when the computer uploads a new program to the Uno, this circuit can also reset the circuit. The USART protocol allows U3 to provide flow control through the CTS pin; when a new program arrives via USB, its USB-USART conversion logic pulls the CTS low. Note that C5 should be uncharged at this time, so this low-level pulse is coupled to the RESET pin, causing the 328P to reset. However, RND1 will charge C5 to VCC within a few milliseconds, bringing the RESET pin back to high, thus ending the reset, and the BootLoader takes over to start reading the new program transmitted on the RX/TX line.

D2 clamps the RESET pin to VCC, which is an indispensable protection measure — after the program upload is complete, the CTS will return to high, and C5 still holds a positive voltage of 5V on the right side, so without D2, a brief 10V pulse would appear on the RESET pin, while each pin on the 328P can only withstand 5.5V. D2 effectively limits the RESET voltage to around 5.4V, and using a Schottky diode can enhance the protective effect.

The 328P uses a 16MHz passive crystal oscillator, and since this model integrates load capacitors internally, it has three pins. R2 provides gain to the logic inverter within the 328P to ensure the oscillator can start oscillating normally in low-temperature environments.

The 1k resistors RN4B and RN4A are connected in series on the RX/TX data line, and their function is somewhat subtle. Typically, a few hundred ohms (common values are 470Ω or lower) are used in series on the RX line to alleviate EMI issues, but a 1kΩ value seems too high. Additionally, some analysts believe these two resistors ensure that when devices are connected to the Arduino on the 328P USART bus, the onboard USB-to-serial chip does not interfere with communication, effectively lowering U3’s priority on the bus and protecting the circuit in specific situations (like when the 328P is communicating with other devices, and the USB port starts downloading a program). This is a reasonable explanation for RN4A, but in fact, the conflict that RN3A is meant to protect does not exist…

In contrast, there is not much to analyze on the left-side circuit. Z1 and Z2 are ESD protection devices. L1 is a high-frequency ferrite bead, isolating the USB signal ground from the common ground to prevent high-frequency signals from entering the ground plane. F1 is a 500mA surface mount fuse (which can be found quite obviously on the right side of the PCB), and its function will be mentioned later.

Now let’s look at the power management circuit at the top of the schematic. On the right side, X1 is the DC socket, and the input voltage is isolated by D1 before being sent to PC1 for filtering, and then stabilized at 5V by the three-terminal regulator U1. From the markings on the diagram, it can be seen that VIN is directly connected to the DC socket, so it is said that Vin as a power output is much more “reliable” than the 5V interface. However, when the DC plug is not connected, VIN has no power, and even if Vin is not supplied by Arduino, the current still flows through the PCB, so it is still not advisable to drive large loads with it, as we can’t be sure whether the VIN network on the PCB has maintained a reasonable line width.

T1 mainly serves the purpose of power switching. When only the DC plug is inserted, the drain of T1 is floating, and the input to the 3.3V regulator naturally comes from the 5V network; when only the USB cable is inserted, the 5V regulator has no input, and USBVCC supplies power to the 3.3V regulator through the D-S body diode of T1; if both the DC plug and USB cable are inserted, then U5’s control function must be considered: When the Vin voltage is below 5V, U1’s output voltage will definitely be insufficient, so USBVCC will supply power to the 5V network (actually charging PC2) to maintain the normal voltage of the 5V and 3.3V networks; when 5V < Vin < 6.6V, T1’s body diode is off, and U1 and U2 are powered normally from Vin, while U5A’s inverting input gets 3.3V, and since Vin is divided by RN1A and RN1B to be insufficient for 3.3V, U5A outputs a low level to turn T1 on, effectively powering U2 with both USB and U1; when Vin > 6.6V, U5 turns off T1, and only U1 powers U2, preventing U1’s output voltage from being too high and damaging external USB devices (usually host computers).

U5B is a voltage follower that uses the SCK signal to control the LED, indicating the status of I2C communication.

Collection of Insights

1. Do not power high-power devices using the 5V or 3.3V ports!

2. Every time a serial communication is established through the USB data line, the Uno will reset and reload the program, which is caused by U3 CTS. Therefore, when you open the serial monitor in the Arduino IDE or call functions like Serial.begin() on the host, the Uno will automatically restart.

3. There are no external circuit protections for the digital IO ports, and the internal protection of the 328P is also very limited, so do not abuse it.

4. It is not recommended to plug in both the DC plug and the USB data line simultaneously. There is no isolation between the USBVCC and the 5V network on the Uno (there is a fuse, but it is too slow), although U1 and U2 generally fail open, in special cases such as incorrect wiring or overload, it cannot be guaranteed that the 5V network will not short to ground or appear at a higher voltage, both of which could very likely damage your computer. Your computer is much more precious than the UNO (nods).

Sharing | Cao Zhiyang

Typesetting | Wang Xiaoqiang

Understanding the Arduino UNO Development Board

Leave a Comment

×