Arduino Power, Current, and Voltage Limitations

Arduino Power, Current, and Voltage Limitations

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
Note 1: simply by adding a resistor in series with an I/O pin, you get increased input voltage protection for that pin. Ex: a 10k resistor provides voltage enough protection to allow input voltages between -10.5V and +15.5V. A 100k resistor allows DC input voltages from -100.5V to +105.5V.

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.
Arduino uno w-circled voltage regulator
  • Voltage limits on input/output pins: -0.5 – +5.5V max. [3]
    • 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.

Current Output Limits:

  • Total maximum current draw from the Arduino when powered from a USB port: 500mA [1]
    • 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
    • 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
  • 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.