This question already has an answer here:

I got into a bit of a challenge with myself, just for the sake of learning something about low power stuff.

I want to build a device that has basically two requirements:

  • blink an LED every 5-10 seconds with a microcontroller
  • last the longest time possible on a lithium button cell (something like a CR2032 or smaller)

The input voltage to the system will be ranging from 3 to 1.8 volts, so probably i want to pick a red LED so that the power is above it's Vf until the end. My microcontroller will consume around 10uA when active and 1uA when sleeping. So the LED will probably be the most power hungry component.

Now it comes the question: what's the most energy efficient way to drive it, to get the shortest visible pulse? Putting a resistor in series with the led would mean wasting a lot of power, even half of the power that goes into the LED. A constant current driver would waste as much power as the resistor plus some power to stay on itself.

The only solution that came to my mind until now is to connect the LED directly to the microcontroller and adjust the pulse duration until I can see it blinking. But will this be the most efficient way?

I don't care about simplicity or bom cost, it's a 1-off thing. Even an overkill circuit if it's more energy efficient than the resistor is better for me


marked as duplicate by Dave Tweed Dec 17 '18 at 22:14

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • \$\begingroup\$ Comments are not for extended discussion; this conversation has been moved to chat. Any conclusions reached should be edited back into the question and/or any answer(s). \$\endgroup\$ – Dave Tweed Dec 17 '18 at 22:10
  • \$\begingroup\$ @DaveTweed thank you. But this question is not a duplicate, the question you linked asks for a simple circuit for doing the whole think. I could also use a very complicated one, but it has to be energy efficient, and i have my system already \$\endgroup\$ – valerio_new Dec 17 '18 at 22:42

you could make a small high side buck converter with a low rdson mosfet (if you want you can make it synchronous too to improve the efficiency even more) so that it wakes up just in the short time the led is active. You have to pick a mosfet so that it has the smallest gate capacitance though because it needs to switch in the fastest way possible for two reasons: while charging the capacitor, some energy gets dissipated into heat (very very small heat) and the mosfet while switching becomes for a short time a resistor and i'm sure you don't want resistive components all around the circuit. The buck converter can be made with a fixed frequency and fixed duty cycle to save some energy.


Roll your own converter, perhaps.


simulate this circuit – Schematic created using CircuitLab

Pulse the GPIO high for long enough to charge the inductor to the desired peak current, then bring it low to discharge through the LED.

If the GPIO sticks on, the current is unlimited except by inductor DC resistance and MOSFET, so you may wish to degrade it a bit by adding a series resistor to handle such a case.

But in practical terms, I think you'll do very well by buying the LED with the highest brightness at a given low current and using a resistor.

  • \$\begingroup\$ I have a somewhat similar idea, but instead of using an external MOS i was thinking of using an LC lowpass filter for filtering a square wave thus giving to the LED an adequate Vf \$\endgroup\$ – valerio_new Dec 14 '18 at 14:01
  • 1
    \$\begingroup\$ It might be useful to add that the drain voltage of the mosfet will rise above Vdd of a Vf. In case somebody wants to omit the mosfet, and directly use a micro pin for this circuit, it should be clear that that would not work due to the protection diode of the micro starting to conduct well before a significant current flows in D2. \$\endgroup\$ – Vladimir Cravero Dec 14 '18 at 14:19
  • \$\begingroup\$ Btw i do want to buy the led with the highest brightness at 1-5mA, but then i want to maximise the efficiency with that led. \$\endgroup\$ – valerio_new Dec 14 '18 at 15:37

You could create the same effect as a boost regulator by adding an inductor and a NMOS FET. Then you can choose any color LED. To keep it really simple, pick a blue one that won't be activated at your supply voltage. Ground the cathode, connect the inductor from the anode to your supply. The FET drain goes to the LED anode, source to ground, gate to output.

When you want to blink the LED, turn on the FET for an amount of time (that you can determine experimentally), and then turn it off. The built up current in the inductor will blink the LED for you.

If your LED has a low enough forward voltage to turn on by itself from the supply, you can just put the FET between the cathode and ground. The inductor will efficiently limit the input current based on the pulse width with fewer losses.


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