Take the 2-minute tour ×
Arduino Stack Exchange is a question and answer site for developers of open-source hardware and software that is compatible with Arduino. It's 100% free, no registration required.

Yesterday afternoon I have left my Arduino running on a fresh Alkaline 9V battery (+ connected to Vin, - connected to GND). Today morning (16 hours later) the LCD display was no longer visible, and when I measured the volatage, I saw the battery was depleted to my surprise - its idle voltage was only 7 V.

My device is Arduino Uno with LCD 2x16 with LCD backlight and 2 DS18B20 sensors. Is it normal for such device to deplete 9V battery this quick?

I have read an answer to What are (or how do I use) the power saving options of the Arduino to extend battery life? question and I think what I see might be related to this, however I am not sure. If it is, is there some common schematics how to connect Arduino to be powered by a battery efficiently?

share|improve this question
    
I'd try attaching a multimeter and measuring the current from the battery with the whole thing and with the display and sensors disconnected. Don't try to optimize the arduino if it's something else pulling most of the power. –  BowlOfRed Aug 8 at 8:50
    
@bowlofred "measuring the current from the battery" - Will do, hoever I need to buy a new 9V cell first. :) –  Suma Aug 8 at 8:58
1  
9V batteries are tiny, only around 500mAh. The LCD backlight alone will kill it within hours. –  hobbs Aug 8 at 16:01
    
More radical approach for powersaving: 1. Using TI MSP430 board instead of Arduino; 2. Using non-linear regulator; 3. Using LCD without backlight (like in a calculator). –  Vi. Aug 8 at 16:56
    
@bowlofred Whole thing current is 61 mA. With no backlight it is 57 mA, with no LCD and no sensors it is 56 mA. –  Suma Aug 12 at 8:44

2 Answers 2

up vote 12 down vote accepted

Power consumption

The Arduino boards use a fair bit of power compared to other embedded systems with similar functionality.

There are three main factors:

  • The NCP1117 (datasheet) 5V linear regulator in the Arduino UNO R3 (schematic) has a quiescent current of around 6mA.

  • The ATMega328P (datasheet) draws around 5mA @ 8MHz and 5V, and probably more than double that at 16MHz.

  • user2973: The ATMega16U2 used for USB communications also draws approximately 13mA.

LEDs and other peripherals also draw some current. In your circuit, the LCD backlight is probably drawing 4mA as well.

When dropping 9V to 5V via a linear regulator, almost half of the power is lost by the regulator due to its 4V drop. Duncan comments that this nearly doubles the quiescent power draw from 9V as well as the power needed for every mA of 5V, since 4/9ths of the power gets wasted as heat by the voltage regulator. An efficient switching regulator would put out 5V with little wasted energy, effectively reducing the current draw seen by the battery by 4/9ths.

A duracell 9V battery (datasheet) drops from 9V to 7V in around 7.5 hours with a 50mA current draw. Therefore, a rough guess is that your circuit draws around 25mA, which sounds about right based on the description of your circuit.

Note, alkaline battery life is non-linear with respect to current. For very small currents (<1mA) the life of an Alkaline approaches that of a lithium battery.

Getting current down

Here are some tips to get the current consumption down:

  • Regulator: Replace the regulator with one with a low quiescent current, or better yet, a switching regulator (also with low quiescent current). A switching regulator uses 'pulses' of current and some external inductor and capacitors to give a reasonable steady voltage output. It doesn't waste energy like with the voltage drop of linear regulator and efficiency in the high 90% are possible.

    • There are buck (step down) converters that take the battery as input, then connect directly to 5V and GND, bypassing VIN and the regulator. This one from Pololu both steps up and down, and has 0.1mA quiescent current.
    • Alternatively, you could use some 1.5V alkaline batteries, and a boost (step up) converter to get the voltage up to 5V (e.g. this product from Sparkfun). It seems boost converters are more commonly stocked.
    • Finally, you could buy a rechargeable lithium battery with charging shield. This advantage of this is not having to buy new batteries, and for a tiny bit bigger than a 9V battery the lithium one has much greater capacity. A really cool product is the seeeduino stalker waterproof kit that includes a charging circuit, battery, solar panel and other goodies.
  • ATMega328P: Rather than using delay for timing and spinning in loop endlessly waiting for something to happen, re-write your code so that it goes to sleep in between sensor reads, etc. There are a few low power libraries out there that use the watchdog timer for periodic wakeup from sleep which are handy. You can get the current consumption of the ATMega328P below 0.1mA during sleep.

  • LCD: Turn off the backlight, or even the entire LCD. Add a button to the design that the user can push to activate the LCD and have it turn off after a set amount of inactivity.

  • Peripherals: Most peripheral chips also have a sleep mode that drastically reduces their power consumption. Remove power LEDs and other indicators that are not necessary.

  • ATMegu16U2: user2973 comments It seems this chip is quite power hungry (user2973). It could be removed to save power and just use the UART instead, but that seems like overkill. There are Arduino Pro boards that are just the bare bones Arduino without the USB interface that could be used instead of the UNO.

  • Batteries: Other alkaline cells have much greater capacity. For example, a 1.5V AA has over 2000mAh for low currents. Using AA cells plus a boost converter can increase the time before battery replacement. Use D cells (16000mAh) and it will run for quite a while. :D

Summary

With appropriate power supply and coding you can get a reasonable amount of life out of a battery. Using the above principles, I have made an Arduino derivative board that measures a few sensors and stores the readings to an SD card every half a second. It can last for about 4 months on 2 AA batteries, so it is definetly possible to have low power and remain in the Arduino ecosystem.

The chip I used for the low power in my board is the LTC3525-3.3V. It takes an input voltage as low as 0.8V and boosts up to 3.3V and a 5V version is also available. I designed a PCB for this chip as there was no ready-made breakout, and in the datasheet there are reference designs. The main critera for choosing this chip was it still had high efficiency at very low currents. Some other converters need a small minimum current draw.

The biggest consumer of power on the board ended up being the micro SD card. It can vary between 0.1mA and 1.5mA of idle current depending on the manufacturer. I have found Verbatim and Lexar cards to consume the least amount of power. I will this EE.SE question up to date with the results of my micro SD card power consumption tests.

share|improve this answer
1  
Good thorough answer. Note: the power consumption of the usb to serial atmega16u2 which will be very significant after solving the other issues. –  user2973 Aug 8 at 8:58
    
@user2973 do you have an idea of what it might be? I can get the typical characteristics off the data sheet, but I didn't put it in as I don't know if the firmware has any sleeping in it. If it is just running normally it is 12mA @ 5V which is a significant draw. –  geometrikal Aug 8 at 9:53
    
@geometrikal, how do you power an Arduino with 2 AA batteries? That's only 3 volts, which is below the minimum. Is the power supply you mentioned a buck/boost supply? (Outstanding answer by the way <voted>.) –  Duncan C Aug 8 at 12:04
1  
@geometrikal, would you mind posting a link to one of the buck power supplies you mention, like the one from SparkFun? I just did some searching and can't find it. For long life a buck style supply seems critical, since the idle current from a conventional voltage regulator is significant. –  Duncan C Aug 8 at 13:33
1  
@geometrikal, you said "...Also when dropping 9V to 5V via a linear regulator, almost of the power is lost by the regulator due to its 4V drop" Doesn't that nearly double the quiescent POWER draw from 9V as well as the power needed for every mA of 5V? (Since 4/9ths of the power gets wasted as heat by the voltage regulator.) Seems like running it off a buck converter like a TSR 1-2450 would be better –  Duncan C Aug 8 at 20:25

I think an Arduino Uno is not suitable for such projects. Some components on the board draw too many amps, as @geometrikal correctly points out. If you're up to a challenge, I would advise you to take your project to another level and go barebones.

Sparkfun has a good article about how to increase battery life, using an ATmega328 that you also have on your Arduino Uno: https://www.sparkfun.com/tutorials/309

Look for ways to create a circuit with only the components that you really need, and have your microcontroller sleep as much as possible.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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