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?




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 Mar 2 '15 at 17:06
  • \$\begingroup\$ @Andy_C I've added a brief description, please indicate if anything is not clear. \$\endgroup\$ – Spehro Pefhany Mar 2 '15 at 19:03
  • \$\begingroup\$ Great tip! Please, could this work with PWM as well? \$\endgroup\$ – delmadord Jan 8 '17 at 15:00

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\$ – Spehro Pefhany Mar 3 '15 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 Mar 3 '15 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\$ – Spehro Pefhany Mar 3 '15 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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