The specs shown here:

enter image description here

show that it has 54 digital pins with each outputting a DC current of 20mA which makes it 54 * 20 = 1080 mA

Plus the DC current of the 3.3V Pin of 30mA we get a total of 1110mA.

Is this how one should go about doing the computations?

If the adapter is insufficient will a 12 VDC 2A Power Supply Adapter be appropriate or excessive?

Any links to read up on will be greatly appreciated as well.

Links for this question:



PS: All I'm planning to connect to the board is: 'a PIR sensor (the first version not Rev B)', a '5V relay' and possibly a 'ESP8266 ESP-01S Relay Module'

  • 1
    You may be able to draw 20mA from a pin, but you cannot draw 20mA from each pin. The absolute max is 200mA for entire package. – Milliways Mar 13 at 1:45
  • 1
    Incorrect re: 200mA max. There are 4 VCC/4 GND pins, rated for 200mA each, so the uC chip can potentially support 800mA. This is straight from Atmel tech support. Further, there are limits to how much each port can support as seen in the notes of Table 31.1 of the datasheet, page 356, document # 2549Q–AVR–02/2014. There may be a later revision at www.microchip.com (they bought Atmel a while ago and have been re-releasing data sheets). 20mA as a max is good usage, more current than that and highs may drop to <4.2V, and lows may rise to > 0.9V. – CrossRoads Mar 14 at 13:01

No. You have everything wrong there.

First off, a power supply does not provide power. It provides voltage. The device attached to it then draws current. As much current as it needs at any particular moment in time. The current rating of a power supply is the maximum that the power supply can give.

The same goes for Arduino IO and power pins: The current ratings are the maximum current you can draw from the pin.

Exactly what current it will draw from the power supply depends completely on what is connected to what pins, and even what calculations the Arduino is doing at the time. To get a ball-park figure of current requirements you need to know the current requirements of whatever is attached. If a device has its own power input that is the current you need to worry about. If a device is powered directly from an IO pin (such as an LED) then that forms part of the Arduino's current (which starts at about 40mA or so for the board itself).

There are many other factors to take into consideration:

  • The 5V regulator on the Arduino can't give more than 1A maximum, and considerably less than that when powered from a high voltage like 12V.
  • The DC jack on the Arduino is limited to 1A due to a polarity protection diode.

It is usually recommended to use a separate 3.3V regulator for an ESP8266 module (or 5V if your module has a built-in 3.3V regulator) due to the lack of power capacity in the Arduino's on-board regulators.

As a rough guestimate:

  • Arduino: 40-60mA
  • ESP8266: 200mA (when transmitting)
  • PIR: Negligible
  • Relay: 50mA when active

So you'd be looking at 300mA as a minimum. More is better. 1A should be more than sufficient. 2A would be overkill but give a big margin of error.

For everything you have there, it would be better to use a 5V power supply, not a 12V power supply.

  • Good answer, but one comment: It’s my understanding that the Arduino itself is fairly dumb about power management and runs all it’s subsystems at full power, so what it’s calculating doesn’t have a lot of influence on its power consumption (in contrast, modern high end CPUs have sophisticated power management systems, and throttle down subsystems when you’re not using them.) – Duncan C Mar 13 at 0:30
  • It is fairly dumb, yes. Maybe calculations isn't the right word. What internal programs are doing what at any given time has a large bearing. You can also shut down portions of the chip, and enter various sleep modes to reduce power. Different instructions do use different amounts of power though, depending on what they do. – Majenko Mar 13 at 0:33
  • I would bet driving the various interface subsystems would have a fairly large influence on power. Those GPIO lines have fairly “stiff” gates, the UARTS and other subsystems, etc. For that matter the LEDs on the board draw not-insignificant power. – Duncan C Mar 13 at 0:39

In addition to what Majenko told you, some additional information:

The Arudino uses a linear power supply. That type of power supply works by converting all the excess voltage above the output voltage to heat. So if you feed it 12V, at 1A, it has to convert 1 amp of 12V-5V, or 7 watts of power to heat. The heat sink on the Arduino is not up to dissipating 7 watts of heat.

A linear power supply needs a little more than the output voltage. Feeding it 7.5V would be just about right. You should be able to get a full amp of 5V out of the Arduino’s power supply if you feed it 7.5V at the input, although the output voltage will probably droop some as you approach the max output, and it will get hot. Don’t put it in an airtight container.

As Majenko says, you shouldn’t add up the max current output of every pin on the Arduino to get its power requirements. A digital output line will use almost no current unless it is feeding an output that draws current. Think of the power supply as a spring-fed well, and the output as scoops that scoop water out of the well. As long as you don’t scoop water out of the well faster than it can be replace by the spring, you’re ok. If you only use a couple of small scoops, you’ll hardly take any water out of the well. (If you only have a couple of low power outputs connected, you’ll only draw a small amount of current.)

The Arduino draws a moderate amount of current all by itself. See the specs for details.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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