Best way to reduce battery consumption for LED device?

I'm building a device that needs to "light up" to indicate status to the user. I of course want to use LEDs to light the device up, but I'm worried about battery consumption since I would like it to last for a year on batteries if possible. The device will be using its LED(s) for around one hour each day.

What are the best ways to get power consumption down for the LEDs? Using PWM? Is it better to use a high-intensity LED or several lower-intensity LEDs? Blinking the LEDs is ok, in fact that is the most obvious power-savings trick I've found.

• How much current does the rest of the circuit take - the LED might be trivial compared to this. – Andy aka Oct 14 '13 at 7:34
• This question isn't a duplicate but you can find a couple of ideas on the driver side here electronics.stackexchange.com/questions/55823/… – PeterJ Oct 14 '13 at 7:49
• The rest of the circuit draws only around 100 microamps. – David Högberg Oct 14 '13 at 8:55

Power the LED by a small flyback converter. The current limiting resistor can eat a lot of power. Note, this schematic is only an illustration. Some design/programming work have to be done.

Something like this:

simulate this circuit – Schematic created using CircuitLab

Here is a simple model (for LTSpice IV) of the above schematic. It demonstrated efficiency of 95% and higher:

Version 4
SHEET 1 880 680
WIRE 256 -160 -288 -160
WIRE 544 -160 256 -160
WIRE 256 -32 256 -160
WIRE 544 -16 544 -160
WIRE -288 96 -288 -160
WIRE 256 128 256 48
WIRE 544 128 544 48
WIRE 544 128 256 128
WIRE 256 176 256 128
WIRE 208 256 -48 256
WIRE -48 304 -48 256
WIRE -288 416 -288 176
WIRE 256 416 256 272
WIRE -48 432 -48 384
FLAG -288 416 0
FLAG 256 416 0
FLAG -48 432 0
SYMBOL nmos 208 176 R0
SYMATTR InstName M1
SYMATTR Value IRLML2803
SYMBOL ind 240 -48 R0
SYMATTR InstName L1
SYMATTR Value 100µ
SYMATTR SpiceLine Rser=1
SYMBOL LED 560 48 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D1
SYMATTR Value NSSW008CT-P1
SYMBOL voltage -288 80 R0
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName V1
SYMATTR Value 5V
SYMBOL voltage -48 288 R0
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName V2
SYMATTR Value PULSE(0 4 0 10n 10n 3u 50u)
TEXT -322 456 Left 2 !.tran 1m


Indeed, blinking is the most obvious choice and I'd say also the most used when energy is a concern.

You can make a blink as short as 50 ms and still have it visible, and if you blink every second that's a 5% duty cycle. If, as you say, it operates only a hour per day, the effective duty cycle goes down to 0.21%. It means that it will last about 500 times more than going at full power.

Let's make an example: say that you have a LED with a forward current of 1 mA (realistic, I bet you can find a lower power one). The average current over the day will be about 2 uA, or 48 uAh over the whole day, 17.5 mAh for the year.

Depending on what battery, what microcontroller and what else you got in the device, you should be able to make your calculations.

For further reduction you can consider faster blinking, less frequent blinks, lower power LED or just feeding it a lower current.

A trick I really really like is to let the user decide when he needs to know the status be having a pushbutton for status display. This does not work if you need "at a glance" visibility of the status.

Another trick is to use something like e-ink or memory LCDs, but that only works if there is light to see them, and besides they are 25\$ or more. They do let you display a lot of info.

Using narrow viewing angle LEDs can make it look brighter by focusing the light more but only if you are looking at the straight on.

But really, I would just go with a ultra bright LED green or something and blinking at low duty cycle as clabacchio suggests. Do the math on how much power it uses vs the rest of the circuit.