My Notebook

How to modify an Arduino Pro Mini (clone) for low power consumption

Author
Date
Category
Electronics
Arduino Pro Mini Running

Yesterday I decided to do a little project with my cheap Arduino Pro Mini clone, which had been lying around for a while. I decided to power it with normal AA batteries and I assumed that this tiny board would already use the minimal possible amount of power. But I soon discovered that it had an annoyingly bright power LED, which couldn't be turned off. While searching for a solution, I came across lots of articles and posts with catchy titles like "How to run an Arduino (clone) on (AA) batteries for over a year", but I couldn't find a step by step guide for a total beginner like me. Since my Arduino clone had cost me only 7 €, I decided to warm up my soldering iron and start messing with it.

Starting point

My Arduino clone uses \(15 \ldots 20 \text{mA}\) when running and \(3.28 \text{mA}\) in sleep mode. According to Wikipedia a good alkaline AA battery has a capacity of about \(2600 \text{mAh}\). With the following simple formulas we can calculate the lifetime under optimal conditions:

$$\frac{2600 \text{mAh}}{15 \text{mA}} = \frac{173.33 \text{h}}{24 \text{h}} = 7.22 \:\text{days}$$ $$\frac{2600 \text{mAh}}{3.28 \text{mA}} = \frac{792.68 \text{h}}{24 \text{h}} = 33.03 \:\text{days}$$

So under absolutely optimal conditions with the Arduino doing nothing, AA batteries will last only about 33 days. In reality it will be far less, depending on the number of batteries used and the cutoff voltage of the Arduino. That's not even close to the one year lifetime I wanted to achieve.

Removing the power LED

LEDs use a lot of power. Especially if they are on all the time and cannot be turned off like the power LED on the Arduino Pro Mini. So the first order of business for me was to try to desolder the power LED. Unfortunately the LED is tiny and wedged between two other components that probably shoudn't be damaged.

Position of the power LED

Mehtod 1: Scratching it off

I used solder wick to remove the small solder blobs at the front and back of the LED. Solder wick is a dense mesh like copper wire, which sucks up the solder through capillary action. It is also really easy to use. You just put a small stripe on top of the solder and press down on it with your hot soldering iron until the solder melts.

This worked really well and most of the solder was gone. Unfortunately the LED was still stuck and wouldn't move. In the end I had to slowly and carefully scratch it off destroying it in the process. Once it was gone I cleaned the now empty solder pads with solder wick.

Mehtod 2: Adding more solder

Since removing the LED by basically scratching it off was such a mess, I tried a different approach with my second Arduino Pro Mini. This Youtube-Video demonstrates it very nicely. Instead of removing solder, you add more of it to merge the two solder pads of the LED. This way a thermal bridge is created between the front and back and both ends can be heated at the same time. Because of the surface tension of the solder, the LED is lifted off its pad immediately and can be easily removed with the tip of the soldering iron.

Removing the voltage regulator

Since I am a lowly software engineer and not an electronics engineer, I had no clue where to look for the voltage regulator. Then I found this very detailed article, which shows exactly which component needs to be removed:

Position of the voltage regulator

In contrast to what is stated in the article, I found that it isn't necessary to destroy the power regulator. It is very easy to desolder it with solder wick. After the solder is removed from every pin, the regulator comes off easily. The result looks like this:

Arduino Pro Mini with power LED and regulator removed

The Low-Power library

I used the excellent Low-Power library from rocketscream. It can be installed by downloading the repository as a ZIP file directly from GitHub and importing it into the Arduino IDE.

Arduino IDE Menu

I used the following simple demo code to test my setup and measure the current:

#include <LowPower.h>

#define LEDPIN 13

void setup() {
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
  // Sleep for 8s
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
  
  // Run for 8s
  digitalWrite(LEDPIN, HIGH);
  delay(8000);
  digitalWrite(LEDPIN, LOW);
}

Measurements

The following table contains all of my measurements. I used my bench power supply at 5.07 volts and a cheap multimeter. The measurements were quite stable, but I do not know how accurate the multimeter is.

ModificationsVCCRAW
NormalSLEEP_8SSLEEP_FOREVERNormalSLEEP_8SSLEEP_FOREVER
Original21.85 mA3.28 mA3.28 mA18.89 mA3.02 mA3.01 mA
No LED19.05 mA30.8 µA24.6 µA16.21 mA32.6 µA26.4 µA
No Regulator19.15 mA27.4 µA20.9 µA---

The reason for the lower measurements on the RAW pin is simply, that the voltage regulator drops the voltage from 5.07 volts to 4.71 volts and the ATMega328 draws less current at that voltage. So the energy wasted by the voltage regulator is overcompensated by the savings of the MCU. If I supply only 4.7 volts to the VCC pin, then VCC actually draws less current.

Estimate Battery Life

In order to estimate the battery life of the Arduino Pro Mini, the equations shown above can be used as a simple rule of thumb, but in reality things are a little bit more complicated.

Discharge curve and voltage drop

First of all there are many different types of batteries, which use different chemical reactions. Every type of battery has a different discharge curve for different types of loads. The discharge curve shows the drop in voltage for a given load over time.

Alkaline AA Battery - Constant Current
Service Hours

Cut-off voltage

So there is a significant continuous drop in voltage during the discharge of a battery. My tests with my bench power supply have shown, that the Arduino Pro Mini will stop working at about 2.7 volts. So if the voltage drops below 2.7 volts, any remaining capacity will be wasted. In practice battery manufacturers will use the average voltage to calculate the mAh for their products. Dave Jones has a great video on the EEVblog explaining this in great detail.

Calculation

If I use three AA alkaline batteries in series, then the cut-off voltage would be at 0.9 volts per cell. At this voltage there is hardly any capacity left. Again Dave Jones has a great video on the EEVblog, where he explains how to calculate the wasted capacity at a given cut-off voltage. I don't have real experimental data, so I will estimate the wasted capacity to be less than 5%.

Let's assume that the Arduino Pro Mini will spend most of its time powered down in sleep mode and occasionally wake up to read some sensors and send the data over the air. Let's say it will sleep for 10 minutes, wake up, take some measurements for 2 seconds and send the data for 1 seconds.

$$Avg.\:Current = \frac{27 \mu\text{A} \times 10 \text{min} + 19 \text{mA} \times 3 \text{s}}{10 \text{min} + 3 \text{s}} = 121.39 \mu\text{A}$$ $$\frac{2600 \text{mAh} \times 0.95}{121.39 \mu\text{A}} = \frac{20347.64 \text{h}}{24 \text{h}} = \frac{847.82 \:\text{days}}{365 \:\text{days}} = 2.32 \:\text{years}$$

This modified Arduino should run for about 2.32 years on a single set of three AA alkaline batteries. In reality it would be much less, because this assumes that all the sensors and the radio work down to 2.7 volts, which is unlikely. A step up voltage converter is probably necessary, which would reduce the efficiency significantly. But it is still a nice result.

Conclusion

It is definitely worth removing the power LED of these Arduino Pro Mini boards to conserve battery power. Especially since they are completely useless and provide no functional benefit at all. The voltage regulator on the other hand is very useful and removing it only saves a few micro amps. The significant reduction in functionality is too high a price to pay for the relatively small benefit.

References