Power guzzlers: Arduino boards

Teodor Costachioiu
Feb 9, 2016 · 7 min read

Arduino boards: are those little things energy efficient or are they power guzzlers? In this blog post I will test some of my commercially available Arduino and Arduino-compatible boards, focusing on their current draw in some of the most frequent power configurations.

Considering a battery-powered Arduino, the most common choice is the 6LR619V alkaline battery, which has a typical capacity of 550mAh. Sometimes a holder for six AA batteries is used, depending on the type of AA batteries used the combined capacity is in the range 1800–2600mAh. Also it’s common to use 9V wall warts.

Then, it’s interesting to see how much current will the Arduino boards need when powered from a 12V supply. This is again a common voltage in both lead-acid batteries and in wall-warts.

The third set of tests will evaluate the Arduino boards when powered with 7V, which is the minimum recommended power supply voltage.

And finally, one set of tests with an 18V power voltage, which is what you get if you place two 9V batteries in series. Not common, but doable, and it’s close to the maximum voltage to power an Arduino board. So it’s interesting to find what happens in this scenario.

With the exception of Arduino Due and Flip and Click, the boards used in this test have linear regulators, so I expect a not-so-good power efficiency. Also the power LED on the board will suck some energy, so a second battery of tests will be performed after the power LED is removed.

And what about the processor itself? Well, there will be three tests performed in different situations: one test with the processor in SLEEP mode, one test with the processor doing nothing (just executing NoP’s), and a third test with the processor fully loaded. This latter test is based on the Svarichevsky Mikhail’s stress test for Arduino, from which I have removed any LED blinking and LCD-related code. BTW, it’s nice to take a look on his blog post too: he overclocked an Arduino to 64MHz by submersing the board into liquid nitrogen. Not the thing to do at home, but nevertheless it’s an interesting lecture.

Sleep modes

Putting Arduino boards into sleep mode proved to be troublesome, so I feel the need to share some of my code. Note that by disabling interrupts the microcontroller will stay in sleep mode until reset is pressed:

// Arduino SLEEP mode

// The two lines below should be uncommented only for Arduino Uno / Mega
#include <avr/sleep.h>
#include <avr/interrupt.h>

void setup()
{
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(5000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
// disabling interrupts will keep the board in sleep mode until reset is pressed
noInterrupts();
// sleep sequence for Arduino UNO / MEGA
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode(); // never wakes up
// end of sleep code
// If the arduino board has exited sleep mode, the LED will turn back on
delay(500);
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage lev
}

void loop()
{

}

For the ChipKIT UNO32, which has a PIC32 microcontroller the sleep sequence is inspired from this libstock.com example:

// sleep sequence for PIC32
SYSKEY = 0x0; // write invalid key to force lock
SYSKEY = 0xAA996655; // Write Key1 to SYSKEY
SYSKEY = 0x556699AA; // Write Key2 to SYSKEY
OSCCONSET = 0x10; // set Power-Saving mode to Sleep
SYSKEY = 0x0; // write invalid key to force lock
asm volatile( "wait" );// put device in selected Power-Saving mode

The AT91SAM3X8E on the Arduino Due / Flip and Click has three low-power modes. Here’s the code for it:

// sleep sequence for Arduino Due
// only one of the commands has to be uncommented
pmc_enable_sleepmode(1); // sleep mode
//pmc_enable_backupmode(); //backup mode
//pmc_enable_waitmode(); // wait mode
// end of sleep code

Testing rig

For the test I used my Keithley 2231A-30–3 Triple Channel DC Power Supply, an expensive piece of equipment able to provide an accuracy of 0.06% of the set voltage. Current measurements were performed using a Keysight 34460A 6½ Digit, Basic Truevolt DMM. An average of 100 measurements was considered in each case.

Several boards were put to the test:

  • Arduino Uno (old board, same as official Arduino LLC version)

As there’s a lot of data gathered during the testing, I prefer to show the results in as graphs, allowing for easier comparison between different boards.

Vin = 7V

The lowest voltage recommended for powering Arduino boards. I know, the Arduino Pro is labeled 4–12V, but this is true only in the case of 3.3V Arduino Pro.

Current draw test at 7V

Here we find a winner: the Arduino Pro has the lowest current draw of all the boards in test. Particularly in sleep mode the current draw is below 1mA.

Another thing to notice is the poor performance of the two UNO boards in sleep mode. My guess here is that the little ATMEGA8U2 that does the USB-UART job doesn’t go in sleep mode, and it’s just a power guzzler.

The Reduino and the Seeeduino Mega use FTDI chips, and have lower current draw than the UNO counterparts. In the case of the Seeeduino Mega lowering the voltage at 3.3V has as result an even lower current draw.

Not surprisingly, the boards with 32bit processors such as the ChipKIT and the Due have the highest power draw. One might notice that is sleep mode the PIC32 boards comes second in current draw after the Arduino Pro.

Vin = 9V

At the typical voltage of a 9V battery things don’t change much.

Current draw at 9V

Vin = 12V

Raising the voltage to 12V. Arduino PRO still has the lead, but we notice that the Arduino Due and Flip and Click boards how have lower current draw than the PIC32, and comparable to the UNO’s. The reason is that the ATSAM3x based boards have switching power supplies, and those are now more efficient than the linear regulators.

current draw at 12V

Vin = 18V

A bit on the extreme side here, as we are close to the maximum voltage that can be fed into an Arduino.

You’ll notice here that the Arduino Pro is missing from this test, because 18V is a bit too much for the MIC5205 regulator. In its absence the leading positions are occupied by the Reduino and by the Seeeduino Mega running at 3.3V.

Next come the two SAM3X-based Flip and Click and Arduino Due boards — the switching-mode power supply really counts at this voltage, and they beat the UNO’s in terms of current draw, not to mention performance.

The ChipKIT UNO32 has one of the lowest current draws in sleep mode, but it’s a power guzzler when operating normally.

Current draw at 18V

Removing the power LED: does it help?

I performed some experiments with the power LED removed. Depending on LED color and the value of the current limiter resistor I managed to reduce the current draw by 1mA to 2.7mA. With the exception of Arduino PRO it counts, but doesn’t make a great difference.

Without the power LED the Arduino PRO is the great winner: 13mA in normal operation, and an average of 0.27mA in sleep mode.


Originally published at https://electronza.com on February 9, 2016. Moved to Medium on April 23, 2020.

Electronza

DIY electronics projects and more

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store