I am designing a remote-control type IR transmitter that will be powered by a coin cell battery (i.e. CR2032) and commanded by a microcontroller. The LED is pulsed at around 40kHz. How can I ensure that the LED current will be consistent as the battery discharges? Here are the problems I've encountered:

  1. The CR2032 datasheet from Energizer shows the battery voltage starting at 3V and decreasing to about 1.8-2V. (1.8V is also the minimum brown-out voltage of the micro I'm using, the attiny85v.) If the LED has a maximum forward voltage of 1.5V, that means if I used just a resistor the voltage drop would go from 1.5-0.3V over the lifetime of the battery. If I set the LED current at 15mA at the nominal 3V, the current will be just 3mA by the time the battery dies.
  2. Trying a more advanced circuit, such as the simple BJT current limiter in the diagram below, works fine down until around 2.2-2.4V. Rsense needs around 0.5V across it due to Q2's \$V_{BE}\$, and Q1's saturation voltage adds another couple tenths. This is too much overhead, I need to reduce it to around 0.3V somehow.
  3. Finally, I don't want to use a switching regulator for two reasons: I want to keep the part count low, and I don't want the switching frequency to interfere with the 40kHz modulation of the LED.


simulate this circuit – Schematic created using CircuitLab

Or, let me know if I'm overthinking this and a widely varying LED current is ok for a remote control.

  • 1
    \$\begingroup\$ Perhaps an op amp CC driver is called for instead. \$\endgroup\$ Dec 1, 2014 at 5:42
  • \$\begingroup\$ Yeah this kind of constant current wont work very well with such low voltages and current sourcing ability of coin cells (they have high internal resistance). I agree with Ignacio and you should investigate other ways of constant current driving. There is also the classic "Joule thief" circuit for pulling usable current out of batteries that get low in voltage maybe that might help you? \$\endgroup\$
    – KyranF
    Dec 1, 2014 at 6:54
  • 1
    \$\begingroup\$ You may want to include a not-too-small capacitor (more than just the 100nF for the µC) in parallel with the battery to mitigate the effects of the battery's internal resistance, and to minimize voltage drop during pulses going to the µC. \$\endgroup\$
    – JimmyB
    Dec 1, 2014 at 16:08
  • \$\begingroup\$ @HannoBinder I've seen plenty of circuits for the tinyAVR micros without a decoupling capacitor, especially when the ADC is unused, so I'll probably just use a 100uF electrolytic capacitor across the battery. \$\endgroup\$ Dec 1, 2014 at 20:47
  • \$\begingroup\$ If your swircher was running at 40kHz the carrier could be the switcher oscillator. There is goodness in the idea of stepping up the voltage, you can neglect voltage drops and resistive losses to a greater extent in the IR LED drive circuit. You can store a lot of pulse energy more efficiently in a smaller capacitor at higher voltage than at the battery voltage. A longer duration drain at lower current is more to the liking of small cells. \$\endgroup\$
    – KalleMP
    May 2, 2017 at 14:07

1 Answer 1


This should work: -

enter image description here

Rset and Vset determine the current that flows through the load resistor: -

\$I_{LOAD} = \dfrac{V_{SET}}{R_{SET}}\$

However, the op-amp needs to be able to work down to 1.8 volts or lower and will need power connections (not shown above) to V and ground. It also must have rail-to-rail inputs and also preferably outputs.

If Vset is made to be 0.15 volts and Iset is required to be 15mA then Rset is 10 ohms.

  • 1
    \$\begingroup\$ Also, Vset cannot be from a potential divider across the battery! (It could be a potential divider from your square wave) \$\endgroup\$
    – user16324
    Dec 1, 2014 at 10:46
  • \$\begingroup\$ This is exactly what I was looking for: only four extra components including the voltage reference. (I had no idea there were op-amps that worked down to 1.8V!) It seems that most micropower op-amps do have rail-to-rail input/outputs-the only problem now will be soldering those tiny SOT packages! \$\endgroup\$ Dec 1, 2014 at 20:42
  • \$\begingroup\$ I too have situation where I need to drive current through an IR Led. At present I am using a single npn transistor. This still leaves me with the constant current problem (changing brightness as the battery deteriorates). I believe Andy's Op Amp solution will work for me as well. But why shouldn't Vset come from a voltage divider across the battery? Is it because of the current drain? \$\endgroup\$
    – user98758
    Jan 30, 2016 at 12:02
  • \$\begingroup\$ Because the current is proportional to Vset! If you use a voltage divider, then Vset is proportional to the battery voltage, and so your current will end up also proportional to the battery voltage. \$\endgroup\$ Jan 30, 2016 at 12:14
  • 1
    \$\begingroup\$ In all honesty if you're just doing an IR remote the brightness variation is not a big deal. I actually ended up going with the single-transistor solution on this particular project. \$\endgroup\$ Jan 30, 2016 at 12:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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