Started: 6 Jan. 2014
Last Updated: 12 June 2015
Update History (newest on top)
-added info about IO pin voltage protection using a single resistor (ex: 10K --> +15.5V/-10.5V) - 20150612
-very minor corrections: some clarity added - 20140730
- Quick Tip: Arduino Input/Output (I/O) Pin Over-Voltage Protection Using a *Single* Resistor!
- eRCaGuy_ButtonReader Library for Arduino [JUST UPDATED] - Debounce and read the current button or switch state, & most recent action ("just pressed" or "just released") easily!
- Arduino micros() function with 0.5us precision - using my Timer2_Counter Library
- Quick Tip: 4 Ways to Power an Arduino
- Recommended Soldering Kit & Tutorials (for Arduino, Electronics, & Radio Control)
- The Power of Arduino - including many good tutorials, links, help info, etc at the bottom of this post
Other Articles You May Be Interested in Reading:
- Parallel Charging Your LiPo Batteries
- Beginner RC Airplane Setup
- Propeller Static & Dynamic Thrust Calculation
(image above is from this Adafruit tutorial here)
In using Arduino and designing my circuits for it, I have often-times asked myself the question, "What are the power/current/voltage limitations of the Arduino?" "Will I risk damaging it?" In the image above, for instance, a large servo is being powered by the voltage regulator right on the Arduino development board. Larger servos and motors like these have the potential to push the Arduino past its max current limits, potentially causing it to reset itself and cause unusual errors while running, or possibly even damage the Arduino (I should note that most linear voltage regulators have an over-temperature auto-cutoff feature, however, so damage is unlikely). In either case, it's important to understand the limitations of your Arduino, its input/output pins, and its voltage regulators.
Here, I will attempt to succinctly and accurately describe the power limitations of the standard Arduino boards, such as the Uno and Nano. References will be included at the end, and references for particular data are denoted by square braces with the reference number, such as this: "." Following my references and methodology, you can use the same techniques to figure out the limits of your particular board, in case you're not using an Uno or Nano.
Summary of information below:
- Input Voltage Limits:
- Recommended: 7~12V
- Absolute: 6~20V
- Input/Output (I/O) pins: -0.5V to +5.5V (the actual max is "Vcc + 0.5V," which for a 5V Arduino, is +5.5V) (Note 1)
- Output Current Limits:
- When powered by USB: total of 500mA
- With external battery or power supply: total of 500mA~1A (see below for specifics)
- 5V pin: same as above: 500mA or 500mA~1A
- Each input/output pin: 40mA
- Sum of all input/output pins combined (but NOT including the "5V" pin): 200mA
KEEP READING BELOW FOR MORE DETAILS.
Power Limitations of the Arduino Uno & Nano:
Voltage Input Limits:
- Input power: to power the Arduino, you either plug it in to a USB port, or you input a voltage source to it either its 2.1mm x 5.5mm DC power jack (if present, such as on the Uno) or via jumpers going to its "VIN" and "GND" pins (which are on all Arduinos that I've seen). When powering the Arduino via the power jack or VIN and GND pins, it has the following input voltage limitations:
- Recommended input voltage limits: 7~12V [1&2]
- These input voltages can be sustained indefinitely
- Absolute voltage limits for powering the Arduino: 6~20V [1&2]
- Below 7V may cause the 5V levels on the board to waver, fluctuate, or sag, causing board instability and less accurate analog readings when using analogRead().
- Sustained voltage leves above 12V will cause additional heating on the linear voltage regulator of the Arduino, which could cause it to overheat. Short periods, however, are fine. Feel the voltage regulator with your finger. If it feels too hot to comfortably touch, you need to use a voltage source within the recommended limits in order to reduce heat buildup. In the picture below, the black device at the left side of the Arduino, circled in yellow, is the voltage regulator. Caution: before touching any electro-static discharge (ESD) sensitive parts on the Arduino (which is pretty much all of the Arduino), touch the metal part of the USB plug first to ground yourself out to the board and safely discharge any static voltage you have built up.
- Voltage limits on input/output pins: -0.5 - +5.5V max. 
- If you need to read in a voltage on an Arduino digital or analog input pin, ensure it is between 0 and 5V. If it is outside these limits, you can bring down the voltage using a voltage divider. This scales the input voltage to allow for analog or digital readings of voltages otherwise outside the allowed range. If your input signal is digital, and you don't need to take scaled analog readings, another technique is to clip (cut the top off of) the input voltage, rather than scale it. Since AVR microcontrollers (ex: the Atmel ATmega328) have internal clipping diodes (note that Atmel, mistakenly I believe, calls them "clamping diodes"), this can be done by simply adding a single resistor in series with the pin. Ex: adding a 10k resistor in series with the input pin permits input voltages as low as -10.5V or as high as +15.5V. Read my article here for more information.
- Total maximum current draw from the Arduino when powered from a USB port: 500mA 
- The Uno has a "resettable polyfuse that protects your computer's USB ports from shorts and overcurrent." 
- Total maximum current draw when powered via external power supply:
- Arduino Uno: 1A 
- Arduino Nano: 500mA 
- Arduino-compatible Nano that I like to use: 1A 
- Note: If not powered by USB, the total 5V current limit coming out of the Arduino is limited by the voltage regulator on your particular board, and/or your input power supply, whichever provides less power. Let's assume your power supply going to the Arduino can provide 7~12V and >= 1A. If this is the case, the 5V power is limited strictly by your Arduino board's voltage regulator.
- Total max current draw across the Arduino "5V" pin and "GND": as specified just above.
- The output current limit from the "5V" pin will be according to the info just above.
- Total max current per input/output pin: 40mA [1, 2, & 3]
- Sum of currents out of all input/output pins combined: 200mA .
- Note: this is the one that usually gets people, as it may be the least understood! Despite the fact that your voltage regulator on the Uno (or the Nano that I use) may permit up to 1A draw across the "5V" and "GND" pins, the sum of all currents going into or out of the input/output pins (all Analog and Digital pins combined) of the Atmega328 microcontroller itself cannot exceed 200mA. So, if you are powering 10 LEDs at 20mA each, via your Analog or Digital pins, you just hit your limit! Any more than that and you may damage the microcontroller on the Arduino board. A work-around if you need more current is to use transistors. The Arduino input/output pins can then use a very low current to activate a transistor, which then turns a higher current on and off from the 5V pin directly (which is connected straight to the output of the on-board linear voltage regulator), to the device you want to control. This way, you keep the sum total output from the Arduino analog/digital pins below 200mA, while allowing up to the 500mA~1A limit from the 5V pin.
The first place to look is to go to Arduino.cc --> Products, then click on the board you use. This brings you to your board's main reference page. Schematics for your board can be found by looking for the "schematic" link on your board's main reference page.
- Main Arduino Uno reference page - http://arduino.cc/en/Main/ArduinoBoardUno
- Main Arduino Nano reference page - http://arduino.cc/en/Main/ArduinoBoardNano
- The Arduino Uno and Nano use the Atmega328 microcontroller. Googling "Atmega328 datasheet" helped me find its datasheet here; see pg 303, Table 29.1, Absolute Maximum Ratings - http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf
- Arduino Uno Schematic - http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
- I got to this schematic by going to Arduino.cc --> Products --> Uno --> "arduino-uno-Rev3-schematic.pdf". In this schematic, at the top right, I can see that the voltage regulator used on the Uno is the NCP1117ST50T3G. By Googling "NCP1117 datasheet" I found the datasheet here: http://www.unihedron.com/projects/sqm-le/PDFspecs/NCP1117-D.PDF. It says that the regulator can supply "Output Current in Excess of 1.0 A."
- Arduino Nano Schematic - http://arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf
- I got to this schematic by going to Arduino.cc --> Products --> Nano --> "schematic". At the bottom-left I can see that the voltage regulator is a UA78M05. Googling "UA78M05 datasheet" helped me find the datasheet here: http://www.ti.com/lit/ds/symlink/ua78m05.pdf. It specifies "Output Current up to 500 mA."
- The Arduino-compatible nano that I use has an AMS1117 5V linear regulator, as printed on the top of the regulator, which is located on the bottom of the board. The datasheet is here: http://www.advanced-monolithic.com/pdf/ds1117.pdf. It specifies "Output Current of 1A."
Additional Resources to read: