Go Down

Topic: Reducing power consumption (Read 1 time) previous topic - next topic

MarkT

If you use a RBBB Arduino compatible (for instance) and leave out the voltage regulator and power LED, then you can run the ATmega328 powered down to uA levels.  Standard Arduino has the USB to serial chip and the regulator so they can't go down to micropower levels.  Most regulators consume much more power than a powered down CMOS chip, note.  I can get down to 10uA at 5V with a 328 - I've used the Sleepy class from the Jeelabs Ports library which packages up the relevant power-management and watchdog timer stuff.

[note you mustn't remove the decoupling caps from the circuit, just the regulator and the power indicator LED/resistor.]
[ I won't respond to messages, use the forum please ]

sdh314

Thanks MarkT,

1. In the interests of working out a short term solution (ie butchering an existing board), I'm guessing I could cut the Vi and Vo pins of the regulator and short the connection, as well as cutting the line to the 3.3V regulator (I don't need 3.3V) and severing the line to the LED?  I'm working on a Freetronics Eleven, schematic: http://picpaste.com/eleven-schematic.jpg
2. I'm planning on using a 9V Li ion battery source as some additional circuitry requires 9V.  Will a simple voltage divider (with mega-ohm resistors) provide the best (ie most efficient) way of delivering 5V to the Arduino board?
3. Is there any way to disable the USB-serial chip after I've uploaded my sketch?  I'm guessing this pulls at least a few mA, and maybe there isn't any point removing the regulator and power LED if this is still drawing sizeable current.

Cheers in advance!

dc42

#7
Sep 06, 2011, 12:43 pm Last Edit: Sep 06, 2011, 12:49 pm by dc42 Reason: 1
I would prototype the system on Arduino and then migrate it to a stripboard design. That way, you can leave out the USB/serial chip and anything else you don't need. Also, you can choose to run the mcu at a lower frequency than 16MHz to save power.

I'd use one of the mcu sleep modes rather than turn off power to the mcu.

To derive +5v (or +3.3v to save power) from 9v to power the mcu, get a voltage regulator with low ground current, for example LP2950CZ-5.0 or TS2950CT.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Nick Gammon

There was a similar query a while back, and I did a mock-up here:

http://www.gammon.com.au/forum/?id=11149

That circuit used 25 uA when asleep.

I hooked up a clock chip (via a breakout board) and powered it from one of the processor pins as suggested earlier. I didn't think about the problem caused by the decoupling cap on the "clock side" but during testing it seemed to work. Whether it would fail prematurely I don't know. Perhaps switching a MOSFET rather than directly connecting would be safer.

I used the watch dog timer, which itself doesn't draw much power, to do "rough" intervals, and then wake up after 20 seconds and check the clock. Depending on the accuracy required you could go into a WDT loop for longer, and then check the clock.

My tests on this page:

http://www.gammon.com.au/forum/?id=11109

... showed that a slower clock didn't seem to save current usage whilst asleep.

However the difference in consumption reported between those two pages was because on the earlier page I put more internal things (like the ADC converter) to sleep, as well as using the sleep mode.

MarkT

When asleep the clock isn't running at all.  You get a rather high 131uA in sleep mode which suggests you haven't powered down all the sections of the 328 (ADC for instance).  Checkout Jeelabs.org and blog entries about low power mode - Jeelabs have a utility class called "Sleepy" in their Ports library which packages up all the power-saving and watchdog timer calls nicely - < 10uA should be achievable with just the watchdog timer running.

And back to the switching other loads issue - if they are all run off 5V or 3.3V then a p-channel MOSFET is a good solution.  For higher voltage I'd think PNP transistor/darlington and a resistor + zener diode to level-shift the Arduino pin output to the base of the PNP.
[ I won't respond to messages, use the forum please ]

Go Up