I'm trying to drive an LED from a Lipo battery. The useable voltage range of the Lipo goes from 4.2V down to 3.4V, and the forward voltage of the LED is 3.2V. With a resistor in series with the LED, the voltage drop across the resistor will range from 1V [4.2V batt - 3.2V LED] to 0.2V [3.4V batt - 3.2V LED]. Therefore the current flowing through the resistor will drop significantly as the battery discharges.

So, I'm looking to supply a constant current to the LED over the Lipo's voltage range. I've tried using a basic typical constant current circuit (zener diode, transistor, and 2 resistors), however, the zener diode requires 5-10mA holding current, that makes the system inefficient because the LED requires only ~20mA. I've also tried using a boost circuit (NCP1402) which provides a constant 5V output, but again this is quite inefficient (LED only receives 60-70% of power from battery).

Can anyone suggest a low power and efficient circuit that will keep the LED constantly powered as the battery discharges?




2 Answers 2


Something like this could be very efficient (not much more than the LED draw) with a CMOS op-amp. For fairly constant visual brightness (+/-10% current) you could derive the 100mV with a voltage divider from the battery, or use a low current reference such as the TLV431 which would require another 100uA or so but would make the current very constant and accurate (of course the 1.24V output of the TLV431 would have to be divided down to the 100mV).

Q1 is a logic level MOSFET rated for 3V drive. U1 is a CMOS single-supply op-amp with R-R output. Careful layout is required around R2 so that trace resistance does not affect the current sensing.


simulate this circuit – Schematic created using CircuitLab

In operation the op-amp drives the MOSFET gate to maintain a voltage of 100mV at the source so that the current through the LED is 100mV/5\$\Omega\$ or 20mA.

The resistor R1 and capacitor C1 are to prevent oscillation due to the MOSFET gate capacitance.

The minimum voltage across the MOSFET to maintain regulation is Rds(on)\$\times I_{LED}\$ + 0.1V- with a suitable MOSFET with low Rds(on) that won't be much more than 100mV, so it should work down to 3.3V with a 3.2V LED Vf.

  • \$\begingroup\$ Hi Spehro, that sounds pretty good, can you give me a quick run-through of the circuit's operation... thanks! \$\endgroup\$
    – Andy_C
    Commented Mar 2, 2015 at 17:06
  • \$\begingroup\$ @Andy_C I've added a brief description, please indicate if anything is not clear. \$\endgroup\$ Commented Mar 2, 2015 at 19:03
  • \$\begingroup\$ Great tip! Please, could this work with PWM as well? \$\endgroup\$ Commented Jan 8, 2017 at 15:00
  • \$\begingroup\$ Isn't this just shifting the problem? If I were able to efficiently provide a (near) constant 100mV from the declining voltage of the discharging battery to the op-amp, couldn't I just use that mechanism to directly derive the 3.2V Vf required by the LED? Or is the issue here the small difference in voltage provided by the discharged battery and Vf? Would the problem be easier if the LED had a more standard ~2V Vf? Finally, isn't stepping down 1.24V from the shunt to the required 100mV terribly inefficient? Huge thx for your patience! \$\endgroup\$
    – dtk
    Commented Feb 15, 2020 at 12:32
  • 1
    \$\begingroup\$ If the 100mV is derived from the battery, a 20% drop in battery voltage results in a 20% drop in LED current, provided the circuit still regulates. If you use a resistor the drop would be much greater (maybe to 1/3 or less). It would also more variable from unit to unit and more temperature sensitive because it’s a difference between the Vf and battery voltage. 3.2 is a normal Vf for a white or blue LED at a normal current. The 100mV reference is just a signal input so efficiency isn’t a concern, the opamp input requires almost no current. \$\endgroup\$ Commented Feb 15, 2020 at 13:17

I've had good luck with this http://www.nxp.com/documents/data_sheet/PSSI2021SAY.pdf

Requires an external set resistor (current draw is microamps) and comes in a SOT353 package. Onesie twosie costs $0.62.

  • \$\begingroup\$ Insufficient compliance for this application- it needs to work down to a drop of < 200mV to meet the requirement. \$\endgroup\$ Commented Mar 3, 2015 at 4:40
  • \$\begingroup\$ What is the issue with using this Spehro... is it because when the battery is down to 3.4V, the voltage drop across Vs and Iout pins of the PSSI2021 will only be 0.2V...? Thanks! \$\endgroup\$
    – Andy_C
    Commented Mar 3, 2015 at 16:33
  • \$\begingroup\$ @Andy_C Yes, that's the issue. The minimum voltage is not directly specified- they spec it from 2V and up- but it looks like it needs 0.617V + Vce(sat), which is more than 0.2V. Otherwise a nice part! \$\endgroup\$ Commented Mar 3, 2015 at 17:17

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.