Energy-efficient LED driver circuit

I want to light a normal LED for as long as possible on two AA or AAA batteries. It does not have to blink or so, just stay on. The LED doesn't have to light at the max, as long as it's visible from ~1 meter.

The LED is designed for 2.5V/16mA, however, 1.9V/0.25mA is also still possible. Below that, I don't get enough light from it anymore.

I might not be looking for the fewest power consuming circuit, as some other circuits might work at a lower voltage as well. For example, consider a circuit drawing 20mA for >2V and a circuit drawing 25mA for >1V, then the second would be a better option.

What would be the circuit to give the longest lifetime?

Size is not an issue, nor is manufacturing cost or amount of components. You can use a microcontroller if you want, however, an Arduino would be a dealbreaker.

TL;DR version:

Use two alkaline AA cells, a 2.7 kOhm resistor and the LED in series, such that the LED is provided the bare minimum current that lights it up sufficiently.

Summarizing from chat discussion around this question.

• Determine empirically what minimum current through your specific LED provides sufficient light to be acceptable as "staying on". Done: 0.25 mA
• Measure precisely the forward voltage of the LED at around twice that current. Done: 1.86 Volts at 0.5 mA
• Why the higher current? So that the "staying on" condition remains valid even when the current drops to half the starting value due to battery depletion.
• Determine nominal voltage for your power source: Alkaline AA = ~ 1.5 x 2 = 3 Volts
• Simply add a series resistor to the LED such that ~ 0.5 mA is supplied to the LED. Calculation: R = (Vbatt - Vled) / Iled = (3 - 1.86) / 0.0005 = 2.28 kOhms
• Next higher E12 value = 2.7 kOhms, gives 0.42 mA, well within our desired current range, so we are done.

Now, calculating power consumed and longevity of the solution

• Circuit power consumption: P = V x I = 3 x 0.00042 = 1.27 milliwatts
• Capacity of batteries:
• Assuming Energizer E91 Alkaline AA.
• From Milliamp Hours Capacity chart, extrapolating to discharge rate less than 1 mA, but discharging only to 1.27 Volts gives approximately 3000 mAh. This assumption is such that the voltage does not drop below 2.535 Volts for 2 batteries in series, so that current across LED does not drop below 0.25 mA.
• Keeping that as a worst-case number, 2 cells = 6000 mAh (Approximation!)
• At 0.42 mA, minimum longevity = 6000 / 0.42 = 14285.7 hours = ~ 595 days, close to 2 years.
• Even if we discount the calculations above significantly, this solution will still give around a year of battery life with a good estimation buffer.

As per experiments conducted and mentioned in chat, using a resistor of 2.4K, it consumes 0.25mA at 2.5V, 0.42mA at 3.0V. This proves that the calculations above are conservative, a longer duration is not inconceivable.

I don't know how efficient the joule thief is so I'd go for the LTC3531 and an op-amp to control the FB pin on the device. The intention of the op-amp is to monitor LED current and therefore keep the drive to the LED constant at 20mA. Here is a picture that hopefully demonstrates the efficiencies: -

The lower picture is the adjustable version and with a load of (say) 20mA, efficiency is about 89%. The feedback pin I'd drive from a low power opamp circuit that "monitors" current thru a small value resistor (say) 0.1 ohm that is in series with the LED. OK, stability issues are uncertain, but I'm sure it can be made to work. Lowest voltage it will work down to is 1.8V which puts it at a disadvantage c/w the joule thief but I reckon it'll be more efficient for most of the life of the battery and this may well be the winning way?

Maybe I'd consider this device as a means of getting the final few drops out of the battery: -

I don't think it'll beat the efficiency of the LTC3531 until things get really tight sub 2V, then the LT1610 device can take over and milk a few more joules out of what's left in the batteries - it'll perform down to sub 1V. Above 1.8V it'll be in shutdown and not taking any part in proceedings - the LTC3531 will be doing its stuff but, when it runs out of steam, another low power op-amp will switch the switcher(!) and for simplicity of components it could use a different LED - is that allowed(?) - if not then the op amp will need to drive a FET that turns the LTC3531 off and hopefully it won't need disconnecting from the single LED. Teething issues that can be solved with another FET.