87
\$\begingroup\$

What's the maximum amount of current which I can draw from each of the Arduino's pins without tripping any of the internal fuses? Is there a limit per pin as well as an overall limit for the whole board?

\$\endgroup\$
1

5 Answers 5

130
\$\begingroup\$

This is a bit complex. Basically, there are a number of limiting factors:

The IO lines from the microcontroller (i.e. the analog and digital pins) have both an aggregate (e.g. total) current limit, and an per-pin limit:

enter image description here
From the ATmega328P datasheet.

However, depending on how you define the Arduino "Pins", this is not the entire story.

The 5V pin of the arduino is not connected through the microcontroller. As such, it can source significantly more power. When you are powering your arduino from USB, the USB interface limits your total power consumption to 500 mA. This is shared with the devices on the arduino board, so the available power will be somewhat less.
When you are using an external power supply, through the barrel power connector, you are limited by the local 5V regulator, which is rated for a maximum of 1 Amp. However, this it also thermally limited, meaning that as you draw power, the regulator will heat up. When it overheats, it will shut down temporarily.

The 3.3V regulated output is able to supply 150 mA max, which is the limit of the 3.3V regulator.


In Summary

  • The absolute maximum for any single IO pin is 40 mA (this is the maximum. You should never actually pull a full 40 mA from a pin. Basically, it's the threshold at which Atmel can no longer guarantee the chip won't be damaged. You should always ensure you're safely below this current limit.)
  • The total current from all the IO pins together is 200 mA max
  • The 5V output pin is good for ~400 mA on USB, ~900 mA when using an external power adapter
    • The 900 mA is for an adapter that provides ~7V. As the adapter voltage increases, the amount of heat the regulator has to deal with also increases, so the maximum current will drop as the voltage increases. This is called thermal limiting
  • The 3.3V output is capable of supplying 150 mA.
    • Note - Any power drawn from the 3.3V rail has to go through the 5V rail. Therefore, if you have a 100 mA device on the 3.3V output, you need to also count it against the 5V total current.

Note: This does not apply to the Arduino Due, and there are likely some differences for the Arduino Mega. It is likely generally true for any Arduino based off the ATmega328 microcontroller.

\$\endgroup\$
6
  • 4
    \$\begingroup\$ Nice summary! Keep in mind that while the maximum current on a pin might be rated at 40mA, that's the absolute maximum. And as the datasheet says, operating at the absolute maximum can be damaging. It is generally recommended to limit to <35mA. \$\endgroup\$ Apr 13, 2013 at 3:12
  • \$\begingroup\$ The Due has a charge pump to supply the core voltage which is not exposed directly as a pin but could be soldered to. \$\endgroup\$
    – naven87
    Apr 13, 2013 at 6:37
  • 11
    \$\begingroup\$ There are actually THREE limiting factors, the two listed in the answer above plus the fact that the data sheet says that the sum of all current sourced from ports C0-C5, D0-D4, ADC7, and RESET should not exceed 150mA. Likewise total current sourced for ports B0-B5, D5-D7, ADC6, XTAL1, XTAL2 should not exceed 150mA. As far as current sink goes, the sum of ports C0-C5, ADC7, ADC6 should not exceed 100mA; the sum of ports B0-B5, D5-D7, XTAL1, XTAL2 should not exceed 100mA; and the sum of ports D0-D4, RESET should not exceed 100mA. This is all listed in the datasheet. \$\endgroup\$
    – james
    Apr 19, 2013 at 21:30
  • \$\begingroup\$ To the person who suggested in an edit that the 3.3V rail comes from the FT232, it doesn't in any of the versions of the board I looked at. \$\endgroup\$ May 12, 2015 at 1:01
  • \$\begingroup\$ What component would you typically use to switch more than 40mA at high frequencies (500Hz or so?) using a datapin? I looked at demux but they have pretty low max amperage too? \$\endgroup\$
    – Bram
    Oct 9, 2021 at 22:53
14
\$\begingroup\$

What's the maximum amount of current which I can draw from each of the Arduino's pins without tripping any of the internal fuses?

There is only one fuse on the Arduino boards. There is a Resettable Polyfuse on the USB port which limits current starting at 500mA. This fuse is only effective when powered by USB and only when total draw on the 5V rail is more than 500mA. (Note that this type of fuse does not simply "blow open.")

If you draw too much current (40mA or more) from an I/O pin, it will damage the pin. There are no fuses on the I/O pins.

\$\endgroup\$
1
10
\$\begingroup\$

The maximum current values are listed here for the Uno, Duemilanove:

DC Current per I/O Pin: 40.0 mA

DC Current per VCC and GND Pins: 200.0 mA

Overall DC current limit for all IO pins put together: 200 mA

Note that if there are more than one VCC/Vin/GND pins, then the Arduino can take more current. (Each pin corresponds to a pin on the ATMega328)

These seem to be more or less standard for most Arduinos, as these current limitations are for the microcontroller.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ Do you have any idea for Arduino Nano, DC Current per VCC and GND Pins: ??? mA \$\endgroup\$
    – mehmet
    Sep 29, 2020 at 14:23
3
\$\begingroup\$

According to the v2.3 schematic, the Arduino Nano 3.3v regulator is the FTDI usb to serial ic. That has a max current rating of 50mA.

\$\endgroup\$
2
\$\begingroup\$

If you take a look at the schematics for the Nano you can see that the 3.3V pin is provided by the FT232RL chip. According to its datasheet that pin can provide a maximum of 50mA.

To run your module you will have to provide an external 3.3V supply. Maybe provided by a 3.3V LDO regulator powered by the 5V pin which is either fed from the USB or the 5V regulator, a UA78M05, both of which are 500mA maximum (less the current required by the Nano)

\$\endgroup\$
5
  • \$\begingroup\$ Rethinking this: I believe I could just use the 5V pin with a voltage dividor (2 resistors) to get the ~250mA peak that I need at 3.3V. \$\endgroup\$
    – rufo
    Feb 3, 2015 at 16:18
  • 4
    \$\begingroup\$ You're re-thinking wrong. Voltage dividers cannot provide large currents. They are for very tiny currents (reference voltages) only. \$\endgroup\$
    – Majenko
    Feb 3, 2015 at 16:26
  • 3
    \$\begingroup\$ electronics.stackexchange.com/questions/145482/… \$\endgroup\$
    – Majenko
    Feb 3, 2015 at 16:28
  • \$\begingroup\$ Didn't know that - you saved me a lot of time and aggravation. Thanks. \$\endgroup\$
    – rufo
    Feb 3, 2015 at 18:57
  • 1
    \$\begingroup\$ For whoever sees this particular answer in the future: this was an answer to another question specifically related to the 3v3 pin in the Arduino Nano. An administrator decided to merge that question here (thus converting an excellent answer to the original question in an incomplete answer to the question is was relocated to). \$\endgroup\$
    – rufo
    Feb 4, 2015 at 13:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.