[quote author=Nick Gammon link=topic=60554.msg437112#msg437112 date=1304836894]
I had an example sleep sketch here:
http://arduino.cc/forum/index.php/topic,60334
A minimal Atmega328 processor (no LEDs, no voltage regulator, no USB chip) used 17 mA while "doing something" (looping) and only 0.131 mA while in power-down mode. If you change the clock speed to 8 MHz the power-up state drops to 13.8 mA, whilst the sleep mode is the same.
If you powered it off a 1200 mA/H battery, by my calculations it could run for 381 days in sleep mode. So if you only want it to occasionally "do something" (like a TV remote, most of its time is spent not having buttons pushed) then it could last over a year on a set of batteries. If that was your design goal.
In my test I didn't try to aggressively turn off the "peripherals", I presume if I had the sleep mode consumption could be somewhat lower. Although an eighth of a milliamp sounds pretty good.
[/quote]
Sorry to raise this thread from the dead, but low powered ATmega is an important topic and this thread returns with a Google search. Using Teensy 2.0 (Arduino compatible), it's quite easy to go as low as 0.06mA. That same 1200mA/H battery now lasts 2 and a quarter years.
Alone, that's not really that special, as it's not doing anything. However, you can use the watchdog timer to wake back up or the external pin interrupts to wake when a button is pressed. When designing ultra-low powered circuits, I use the Teensy 2.0 as it can run in ultra-low power mode, it's cheap ($16), easy compile switches to run at as low as 1MHz, and, well, it's teensy so it will fit anywhere. It could be made into a watch, it's really that small.
When doing ultra-low powered circuits, your friend is the multi-meter. And with it you can squeeze quite a bit out of the ATmega with creative ideas. For example, replace delay() with a sleep() function that powers down the ATmega to 0.06mA. Even if it's for 15ms, it adds up. Also, you can power down external devices/sensors when not in use. An example is a circuit/sketch I built that uses an Ultrasonic sensor, two buzzers, two LEDs, a 3 way switch, pot, and button. It also reads the battery voltage. It polls the ultrasonic sensor every 90-180ms, monitors all other inputs, yet only uses 1.48mA average. With a 2000mA/H AA battery pack, it runs for over 50 days between charges. As it only draws 1.48mA, adding a solar cell easily makes it run forever, even with interior lighting.
In any case. The ATmega is a fine microcontroller for ultra-low powered systems (when using a Teensy 2.0, not an Arduino Uno). With a bit of creativity and a modest solar cell, you can seriously create systems that virtually run forever without additional power.
Tim