Arduino Uno Archives - CyberBlogSpot https://cyberblogspot.com/tag/arduino-uno/ Not just another blogspot site Tue, 24 Jan 2023 07:15:51 +0000 en hourly 1 https://wordpress.org/?v=6.5.5 https://cyberblogspot.com/wp-content/uploads/2018/08/cropped-iphone-iphone3gs-32x32.jpg Arduino Uno Archives - CyberBlogSpot https://cyberblogspot.com/tag/arduino-uno/ 32 32 How to Use Arduino as ISP Programmer https://cyberblogspot.com/how-to-use-arduino-as-isp-programmer/ https://cyberblogspot.com/how-to-use-arduino-as-isp-programmer/#respond Tue, 17 Jan 2023 05:26:02 +0000 https://cyberblogspot.com/?p=5774 ISP (In-System Programming) programmers, which are also known as ICSP (In-Circuit Serial Programming) programmers, are used for burning bootloaders onto microcontroller (MCU) chips. They are also used for setting MCU chip fuses in order to change some of the chip’s functions. There are many cheap ISP programmers available on the internet. However, if you have… Read More »How to Use Arduino as ISP Programmer

The post How to Use Arduino as ISP Programmer appeared first on CyberBlogSpot.

]]>
ISP (In-System Programming) programmers, which are also known as ICSP (In-Circuit Serial Programming) programmers, are used for burning bootloaders onto microcontroller (MCU) chips. They are also used for setting MCU chip fuses in order to change some of the chip’s functions. There are many cheap ISP programmers available on the internet. However, if you have an Arduino board (Arduino Uno, Nano, etc.) lying around, you do not need to buy an ISP programmer. You can easily turn an Arduino board into an ISP programmer. This article will show you how to use an Arduino board as an ISP programmer.

To use an Arduino board as an ISP programmer, simply upload the Arduino IDE example sketch named “ArduinoISP”. Next, connect the SPI pins of the Arduino board to the MCU chip or MCU board to be programmed. Then, you can start using the Arduino board as an ISP programmer.

To illustrate the steps for the procedure, first, I will make an Arduino Nano board into an ISP programmer. Then, I will show how to upload sketches and burn bootloaders to a Digispark ATtiny85 development board.

Step by Step Guide on How to Use Arduino as ISP Programmer

STEP 1 – Connect your Arduino board to your computer’s USB port.

Connect the Arduino board of your choice to your programming computer hosting the Arduino IDE. In the next several steps, we will upload the ArduinoISP sketch to the board to make it an ISP programmer.

STEP 2 – Open your Arduino IDE and open the ArduinoISP sketch.

Open your Arduino IDE. If you are a beginner and you have not yet installed the Arduino IDE, please see How to Install Arduino IDE on Windows 10. On the Main menu, select File/Examples/11.ArduinoISP/ArduinoISP.

Screenshot of Arduino IDE showing how to open the example sketch ArduinoISP that turns an Arduino board into an ISP programmer
Figure 1. Screenshot of Arduino IDE Showing How to Open the ArduinoISP Sketch

You should see the screen shown below after clicking on the ArduinoISP on the Built-in Examples menu.

Screenshot of Arduino IDE showing the ArduinoISP sketch
Figure 2. The ArduinoISP Sketch


STEP 3 – Choose the name of your Arduino board from the Board Manager’s list.

Go to Tools/Board/Arduino AVR Boards and select the type of Arduino board you are using. As shown in the screenshot below, I chose Arduino Nano for my Arduino board.

A screenshot of Arduino IDE showing how select the Arduino board before uploading the sketch that will turn the Arduino board into an ISP programmer.
Figure 3. Picture Showing How to Select the Arduino Board


STEP 4 – Set the proper COM serial port for your board.

On the Tools menu, select Port. Then select from the serial ports list the appropriate port for your Arduino board.

Screenshot of Arduino IDE for selecting the correct serial COM port.
Figure 4. Arduino IDE Showing the Serial Ports Selection


STEP 5 – Click the Upload button.

As a final step for uploading the ArduinoISP sketch to the Arduino board, click on the Upload button.

Another screenshot of Arduino IDE depicting how to start the upload of the ArduinoISP sketch to make the Arduino Nano board into an ISP programmer
Figure 5. Arduino IDE Illustrating How to Upload a Sketch

When you see the message “Done uploading”, congratulations!!! You now have a full-pledged ISP programmer.

Screenshot of Arduino IDE with the message saying that the sketch upload is complete
Figure 6. Arduino IDE Showing the Completion of the Sketch Upload


In the following steps, we are going to show how to use the Arduino board acting as an ISP programmer to:

  • Program or upload a sketch to a Digispark ATtiny85 board
  • Burn an Optiboot bootloader
  • Burn a Micronucleus bootloader

STEP 6 – Connect the ISP programmer (the Arduino board) to the Digispark ATtiny85 development board.

Like in any other ISP programmers, including the popular USBtinyISP and USBasp programmers, we use six (6) terminals of the ISP programmer to connect to the device to be programmed. These terminals are:

  • MOSI
  • MISO
  • SCLK
  • RESET
  • VCC
  • GND

On the Arduino board acting as an ISP programmer, the corresponding terminals are as follow:

  • D11 (MOSI) —> MOSI
  • D12 (MISO) —> MISO
  • D13 (SCLK) —> SCLK
  • D10 (SS) —> RESET
  • 5V —> VCC
  • GND —> GND

Now, based on the foregoing discussion, we can connect the Arduino board to the Digispark ATtiny85 board using the following terminals:

Arduino Board —> Digispark ATtiny85 Board
D11 (MOSI) —> PB0(MOSI)
D12 (MISO) —> PB1(MISO)
D13 (SCLK) —> PB2(SCLK)
D10 (SS) —> PB5(RESET)
5V —> 5V
GND —> GND

For reference purposes, the Digispark ATtiny85 development board pinout is shown below. For more information on Digispark ATtiny85, you may consult the Digispark ATtiny85 Pinout and Configuration.

Digispark ATtiny85 pinout showing the physical pins, digital IO pins, ADC pins, PWM pins, I2C pins, SPI pins, USB pins, pin change interrupts, and hardware interrupt pin.
Figure 7. Digispark ATtiny85 Pinout

Shown below is the Fritzing breadboard diagram for connecting the Arduino Nano board to the Digispark ATtiny85 board.

Picture showing the Arduino Nano connected to the Digispark ATtiny85 board.
Figure 8. Fritzing Breadboard Diagram of Arduino Nano Connected to a Digispark ATtiny85 Board


How to connect the Arduino Nano board to the Digispark ATtiny85 board illustrated by an old-school schematic diagram.

Picture of the schematic diagram of Arduino Nano connected to a Digispark ATtiny85 for programming the Digispark using the Arduino as ISP programmer
Figure 9. Schematic Diagram of Arduino Nano Connected to a Digispark ATtiny85 Board

After connecting the Arduino board to the Digispark ATtiny85 board, we are now ready to test drive the Arduino board as an ISP programmer.

Since we are going to work with the Digispark ATtiny85 board, you must have the board core ATTinyCore by Spence Konde installed on your Arduino IDE. If you do not have the ATTinyCore installed yet, see the article How to Install ATTinyCore on Arduino IDE.

STEP 7 – Copy and Paste the Blink Program.

Going back to the Arduino IDE, create a new sketch and then copy and paste the Blink program sketch shown below.

/*
www.cyberblogspot.com
07Jan2022  
*/

#define LED_BUILTIN 1  //PB1 for Model A
                       //PB0 for Model B

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

STEP 8 – Change the board from Arduino board to Digispark ATtiny85 board.

Go to Tools/Board/ATTinyCore and select ATtiny25/45/85 (No bootloader). Take note that we are using the “No bootloader” option and NOT the “Micronucleus/Digispark” option. This is because we are going to upload the Blink sketch via an ISP programmer (the Arduino board) and not thru the Digispark’s USB port.

Screenshot of Arduino IDE with the list of ATTinyCore supported boards.
Figure 10. Arduino IDE with the ATTinyCore List of Supported Devices

STEP 9 – Select the proper COM port.

Go to Tools/Port and choose the correct COM port from the ports list.

Screenshot of Arduino IDE showing how to select the proper COM port before using the Arduino board as ISP programmer.
Figure 11. Arduino IDE Showing How to Select the Serial COM Port

STEP 10 – Select the programmer type.

On the Tools/Programmer menu, select Arduino as ISP as the programmer type.

Screenshot of Arduino IDE prior to using the Arduino Nano board as an ISP programmer.
Figure 12. Arduino IDE Illustrating How to Select the Programmer Type

STEP 11 – Upload the Blink program.

Upload the Blink program by clicking on the Upload button.

Picture of Arduino IDE showing how to upload the Blink sketch.
Figure 13. Arduino IDE Showing How to Start the Upload Process

When you see the message saying that the upload is done, your Digispark ATtiny85 board should start blinking the built-in LED.

Another screenshot of Arduino IDE showing the message of completion of using the Arduino Nano board as ISP programmer.
Figure 14. Arduino IDE with Upload Completion Message

How to Burn Bootloader on Digispark ATtiny85 Using Arduino as ISP Programmer

Burn Optiboot Bootloader

STEP 1 – Select ATtiny45/85 (Optiboot) from the ATtinyCore list.

Screenshot of Arduino IDE showing how to select the Optiboot option
Figure 15. Arduino IDE Showing How to Select Optiboot

STEP 2 – Verify that the proper COM port is selected.

STEP 3 – Make sure that the programmer selected is “Arduino as ISP”.

Picture of Arduino IDE showing the options before starting the Arduino board as an ISP programmer burning the Optiboot bootloader on a Digispark ATtiny85 development board.
Figure 16. Arduino IDE Prior to Burning a Bootloader

STEP 4 – Click “Burn bootloader” to start the burning process.

A picture depicting how to burn a bootloader into a Digispark ATtiny85 board using an Arduino board as an ISP programmer.
Figure 17. Arduino IDE Depicting How to Burn a Bootloader

Burn Micronucleus Bootloader

To burn the Micronucleus bootloader onto the Digispark ATtiny85 board using the Arduino as ISP programmer, follow the steps above for burning the Optiboot bootloader. However, instead of selecting ATtiny45/85 (Optiboot), select ATtiny85 (Micronucleus / Digispark) from the ATtinyCore list of supported devices.

References on How to Use Arduino as ISP Programmer

In-System Programming (ISP)
How to Install ATTinyCore on Arduino IDE
How to Program ATtiny85 with Arduino IDE
Digispark ATtiny85 Pinout and Configuration
How to Program Digispark ATtiny85 Board with Arduino IDE
Digispark USB Device Not Recognized
How to Use AT-09 BLE with Arduino and Smartphone

The post How to Use Arduino as ISP Programmer appeared first on CyberBlogSpot.

]]>
https://cyberblogspot.com/how-to-use-arduino-as-isp-programmer/feed/ 0
Arduino Power Supply Schematic https://cyberblogspot.com/arduino-power-supply-schematic/ https://cyberblogspot.com/arduino-power-supply-schematic/#comments Fri, 26 Mar 2021 23:23:37 +0000 https://cyberblogspot.com/?p=4288 Knowledge of the Arduino power supply schematic is very important. It can help you choose the right power supply for your Arduino board. Besides, you should give enough attention to the Arduino power supply. Simply because it affects the entire Arduino board operation. More so, it affects the accuracy of the analog to digital converter… Read More »Arduino Power Supply Schematic

The post Arduino Power Supply Schematic appeared first on CyberBlogSpot.

]]>
Knowledge of the Arduino power supply schematic is very important. It can help you choose the right power supply for your Arduino board. Besides, you should give enough attention to the Arduino power supply. Simply because it affects the entire Arduino board operation. More so, it affects the accuracy of the analog to digital converter (ADC).

Picture of an Arduino Uno R3 development board with the power supply clear shown
Arduino Uno R3 Development Board (Photo Source: Wikipedia)

Main Parts of Arduino Uno Power Supply

Screenshot of an Arduino Uno development board with the power supply parts annotated
Arduino Uno R3 with the Power Supply Annotated

In the picture above, the important parts of the Arduino power supply are all annotated. The main parts of the power supply are the two (2) voltage regulators, the op amp comparator, the MOSFET transistor, and the protection diode.

5V Voltage Regulator

In the original Arduino Uno R3e, this is a NCP1117ST50T3G chip. It is a three-terminal voltage regulator. According to the datasheet, it can output a current in excess of one (1) ampere. Also, it has a maximum dropout voltage of 1.2 volts. In addition to that, it boasts of input operation up to 20 volts.

In the Chinese Arduino clone that I have, the 5V voltage regulator is an AMS1117. A quick check on the datasheet indicates that it is also a 1 ampere voltage regulator. It has a similar dropout voltage of 1.2 volts. However, the maximum input voltage is 18 volts, a two (2) volts difference from the NCP1117. Anyway, both AMS1117 and NCP1117 are the same 1117 device from two different manufacturers.

3.3V Voltage Regulator

Again, on the original Arduino board, the chip used for the regulator is LP2985-33DBVR. It is a Low Dropout device (LDO). That is, the difference between the input and output voltages is very small. The maximum dropout voltage of the device is 280mV. Also, the device has a maximum current of 150mA and a maximum input voltage of 16 volts.

On the Chinese clone, the 3.3V voltage regulator is also different. As a matter of fact, the chip is only marked as “4B2X”. If you try to google the part number to look for the datasheet, you will end up empty handed. However, a website selling the chip claims that the part number is XC6204B332MR-G (see screenshot below). If it is true, then the chip has similar output current and dropout voltage as the original. The output current is 150mA and the dropout voltage is 200mV. However, the input voltage is only up to 10 volts, a far 6 volts lower than the original.

Picture of a 4B2X chip used as 3.3V voltage regulator in Chinese Arduino Uno R3 clones
The 3.3V Voltage Regulator Used by Chinese Arduino Clones

OP AMP Comparator

Let’s take a look at the operational amplifier (Op Amp) that is used as a comparator. The Arduino Uno from Italy uses the LMV358IDGKR chip. There seems nothing special here, because LMV358 is just a low voltage version of the ever popular LM358 op amp chip. Suffice to say that the chip is a general purpose operational amplifier with two op amps in a single package.

Unfortunately, I cannot identify the op amp chip on my Arduino clone. It is only marked as “88 TI”.

MOSFET Transistor

The MOSFET transistor used on the Arduino board is the FDN340P transistor. It is a P-channel MOSFET transistor with a rating of 2A drain current. It’s maximum drain to source voltage is 20V.

The Arduino clone uses the transistor A1SHB. According to datasheetspdf.com, this transistor is a generic Si2301 transistor. Also, their datasheet shows that it is a P-channel MOSFET transistor with 2.5A drain current rating. It’s maximum drain to source voltage is also 20 volts, like the FDN340P.

Protection Diode

The protection diode (polarity reversal protection) installed is M7. This is a surface mount (SMD) version of the general purpose 1N4007 diode. Therefore, as in the regular through-hole diode, it has a 1 ampere maximum forward current rating. Its maximum RMS voltage is 700 volts.

At last, I found a matching part on the Chinese clone. The clone uses the same M7 diode that is on the original Arduino Uno board.

Now that we are familiar with the parts of the power supply, let’s take a look at the schematic diagram.

Arduino Uno Power Supply Schematic Diagram

Schematic diagram of Arduino Uno R3 power supply showing how the DC barrel jack is connected to the USB power supply source
Schematic Diagram of Arduino Uno Power Supply

Shown above is the power supply schematic diagram of an Arduino Uno R3 board. It shows that the DC jack connects to the 5.5V voltage regulator. It also shows how the USBVCC from the USB connector supplies power to the board. To understand the circuit better, I made a simplified schematic diagram based on the circuit above.

The Simplified Arduino Uno Power Supply Schematic

Simplified schematic diagram of Arduino Uno development board showing the two voltage regulators and the series protection diode
Simplified Arduino Uno Power Supply Schematic Diagram (KiCad Schematic)

Shown above is a simplified schematic diagram of an Arduino Uno power supply. It is based on the Arduino Uno schematic diagram from the official site.

Let us start from the DC Barrel Jack. If we connect a DC power source on the DC jack, the supplied voltage will first pass thru a protection diode. Then, it enters the 5-volt voltage regulator and comes out as a regulated 5 volts on the VCC terminal. As noted on the diagram, the VCC provides all the power requirements of the whole Arduino board. Take note that the VCC also connects to the 8-pin female header and labelled as 5V.

The 5-volt output of the regulator is also fed to the input of the 3.3V voltage regulator. It comes out as a 3.3 volts that also terminates on the female header with a 3.3V label. Observe that this 3.3V does not supply anything on the Arduino board. Its main purpose is for supplying external circuits with 3.3 volts. Its only use within the Arduino board is serving as a voltage reference for controlling the USB connector voltage.

Finally, the simplified schematic shows that the USB connector connects to the 5V (and hence, VCC) thru a simplified switch. Let’s find out how the switch works.

How the Auto Switching of USB Power Works

Anyway, why, in the first place, is there a need for a switch on the USB connector? The schematics above show that the Arduino board accepts power in many ways. As a matter of fact, in four different (4) ways. As a result, two or more input voltages may compete in supplying power to the board. To prevent this from happening, Arduino monitors the Vin for the presence of any voltage. Hence, the need for a switch. If Arduino finds an external voltage coming from either the Vin or the DC jack, it disconnects the USB connector VBUS (+5V) voltage.

If you look closely at the simplified schematic above, you will see that you should not simultaneously power the DC jack and the Vin pin. Also, you must refrain from powering the 5V pin together with the USB connector.

So basically, the Arduino board only monitors the USB connector and the Vin input voltages. However, since the DC jack is also connected to the Vin line, it is also compared with the USB connector when it is powered up (instead of the Vin input).

The Op Amp Comparator

The op amp (LMV388) samples the Vin line thru a voltage divider (refer to the schematic above). Because the voltage divider uses two resistors of the same value, the voltage sampled is one half (1/2) of the Vin voltage. This sampled Vin voltage is then compared to the output of the 3.3 volts regulator. When the sampled Vin voltage is greater than or equal to 3.3 volts (>=3.3V), the op amp output goes up. As a result the MOSFET transistor turns off. Subsequently, the USB connector voltage is disconnected from the 5V (or VCC) line.

On the other hand, when the voltage from Vin disappears or goes down below 6.6 volts, the comparator turns on the MOSFET transistor. As a result, it will allow the input voltage from the USB to connect to the 5V supply line.

Four Ways of Powering Up The Arduino Power Supply

Based on the schematics above, we can see that there are four (4) different ways of powering up an Arduino board. These are:

  • USB Connector
  • DC Barrel Jack
  • Vin on the 8-pin female header
  • 5V on the 8-pin female header

USB Connector

Picture of an Arduino Uno board with the annotated USB connector for providing power supply to the board
Arduino Uno with Annotated USB Connector

First, you can power the Arduino board using the USB connector. This is one of the standard ways of supplying power to the Arduino Uno board. When you buy an Arduino Uno board, it usually comes with a USB data cable. This cable, when plugged into a PC, carries a 5V DC voltage on one of its terminals.

Screenshot picture of a USB cable for powering the Arduino board
USB Cable for Arduino Uno

The cable uses a Type A male USB connector on one end that connects to a PC. The other end that connects to the Arduino board itself is a Type B male USB connector. A picture of the cable connectors is shown above.

DC Barrel Jack

Picture of an Arduino Uno development board showing the DC barrel jack for connecting a power supply
Arduino Uno Development Board with Annotated DC Barrel Jack

The second way of powering Arduino is thru the DC Barrel Jack. Typically, the DC jack is connected to a 9V or 12V AC-DC adapter. There are several requirements here for using the DC barrel jack. First of all, make sure that the output of the adapter is a direct current (DC). Second, check the voltage polarity. The inside terminal of the plug must be positive while the outside terminal must be negative. Third, the output voltage of the DC adapter must be at least 7 volts. And finally, the output voltage of the adaptor may not exceed 12 volts. Also, the recommended input voltage to the board is 9 volts.

Screenshot of a DC adapter for providing 12 volts source to Arduino
DC Adapter for Arduino Uno Board

Why is there a 7 volts minimum and a 12 volts maximum requirements on the DC barrel jack?

The Minimum Requirement

The schematics above show that the input voltage from the DC barrel jack passes thru a diode. The diode serves as a protection for polarity reversal. That is, if you plugged a DC power adapter that is wired differently (outside terminal positive, instead of negative), you will not damage your Arduino. However, the diode has a voltage drop of around 0.7 volts (can be as high as 1.1V). This reduces the input voltage being fed to the board. Also, the input voltage will pass thru a 5V voltage regulator. The regulator requires a voltage input of at least 1.2 volts higher than its output. That is, it needs at least 6.2 volts to operate properly. Adding the 0.7 volts diode drop to the 6.2 volts input requirement, the total is 6.9 volts. Hence, the required 7 volts minimum input voltage for the DC barrel jack.

The Maximum Requirement

With regards to the 12V maximum requirement, it has something to do with the power dissipation on the voltage regulator. For proper operation, voltage regulators require a higher voltage on its input than the required output. But raising the input voltage more than necessary has a negative effect on the voltage regulator. The excess input voltage produces excess power that has to be dissipated by the regulator. Therefore, using an input voltage greater than 12 volts could exceed the dissipation rating of the regulator. In other words, with too much input voltage, the regulator overheats and eventually gets fried.

The Recommended Input Voltage

As previously stated, the recommended input voltage for the DC barrel jack is 9V. It is in between the minimum and the maximum input voltages.

Power Thru Vin Pin Terminal

Picture of Arduino Uno R3 development board showing the Vin power supply input
Arduino Uno R3 Board with Annotated Vin

Powering the Arduino board thru the Vin terminal is basically the same as using the DC barrel jack. It is clear from the schematics above that the only difference is the polarity protection diode. Therefore, the requirements should be similar with the DC barrel jack.

Power Via 5V Pin Terminal

Picture of Arduino Uno R3 board showing the 5V power supply input
Arduino Uno R3 Board with 5V Input Annotated

Finally, you may power the Arduino Uno board directly thru the 5V pin terminal. Based on the schematics, the 5V pin terminal connects directly to the VCC. This means it bypasses the diode polarity protection and the 5V voltage regulator. As a result, it loses the protections afforded by these circuits. That is, it loses the polarity reversal protection by the series diode and the built-in current limiting protection of the 5V voltage regulator.

Also, besides losing some protections, be aware that the input voltage to the 5V terminal must be clean and well regulated. Furthermore, powering this terminal with a voltage greater than 6V may possibly break your Arduino board. The reason is that the ATMEGA328 chip has an absolute maximum rating of 6 volts.

Related Articles on Arduino Power Supply Schematic

1 – How to Use MCP4921 DAC with Arduino
2 – How to Use MCP4725 Module with Arduino
3 – How to Use ADS1220 ADC Module with Arduino
4 – How to Set up Arduino IDE for ESP8266 Programming
5 – How to Install Esptool on Windows 10
6 – NodeMCU ESP-32S Pin Configuration
7 – NodeMCU V3 ESP8266 Pinout and Configuration
8 – How to Save and Restore ESP8266 and ESP32 Firmware
9 – How to Control ESP-01 Without a Router
10 – How to Test NodeMCU V3 Using Esptool

References on Arduino Power Supply Schematic

1 – Arduino Uno on Wikipedia – the first thing to read when doing a research
2 – Arduino Uno Schematic Diagram – complete documentation including interactive board viewer
3 – Arduino Pro Mini clones 12V supply and 4B2X regulator – Arduino with 4B2X regulator getting fried
4 – Convert Arduino Uno Power Supply to 3.3 Volts – Adafruit Arduino Tips, Tricks, and Techniques
5 – FDN340P Drawn incorrectly on schematic – Discussion on a possible MOSFET erratum on Arduino Uno

The post Arduino Power Supply Schematic appeared first on CyberBlogSpot.

]]>
https://cyberblogspot.com/arduino-power-supply-schematic/feed/ 2