Reducing the voltage drop on a simple comparator driving a MOSFET to avoid LiIon overdischarge

I would like to use a LiIon cell recovered from an old laptop to power my bike light (a bulb one, 2.4W 6V).

I thought about using an opamp controlling a MOSFET to avoid overdischarge (MOSFET ON for Vbatt>3.1V), and also an opamp to signal when the battery is almost drained (LED ON for Vbatt<3.2-3.3V).

As DC-DC step-up I used a small board meant to be used for phone chargers and I measured an output of 4.8V with the load connected. It is way lower than the nominal 6V of the light bulb, but this is a minor issue, since I can easily swap that circuit with another one.

The circuit is (of course the LM7805 is a placeholder for the step-up board and also my MOSFET is different: a BUK556-60A I had lying around):

simulate this circuit – Schematic created using CircuitLab

My problem is that the LM358 (or the TL081 I have at home) is not rail to rail and apparently its output cannot put the MOSFET in saturation. For example, I measured on the breadboard the following values: 3.48V Vbatt, 3.17V threshold for the comparator OA2 (it was not 3.1V as I wrote above) and 3.9V on the gate of the MOSFET (and on the output of the opamp) resulting on a drop along the MOSFET of 0.8V.

How can I prevent overdischarge of the LiIon battery without losing almost 1V on the switch I have to place inevitably somewhere? A NPN transistor would not change the situation much, I think.

Update

This circuit technically doesn't prevent the batteries to drain, but it will light up the LED when charge is low and will stop the bike like altogether when the battery is almost empty, resulting in me being forced to charge the batteries.

I didn't show in the circuit the physical switch I plan to use to disconnect the batteries completely when no light is needed.

Maybe this will help:

simulate this circuit – Schematic created using CircuitLab

Tweak the pot until the comparator go low only when battery voltage is high enough.

• Yes, but if the step-up board has a LED already, I would use that one instead of the Zener, to reduce the number of components by two. I will order a better step-up board and then I'll test the discharge curve to find out the optimal cut-off voltage.
– FarO
Mar 25, 2015 at 10:09
• @OlafM TL431 is not a Zener but a precision reference chip. I used Zener symbol for simplicity's sake. Mar 25, 2015 at 10:11
• I didn't notice. But we are talking about bike lights, the idea of the red LED is still suitable for this application. For completeness, could you post under your first answer the circuit you mentioned with PMOS and BJT? thanks
– FarO
Mar 25, 2015 at 15:51
• @OlafM Edited my other answer to include that schematic. Mar 25, 2015 at 16:21

There are a few things that you can do to improve your circuit.

1) Get rid of the 7805 regulator. Because your input voltage is way below the drop-out voltage of the regulator, all it is doing is introducing a voltage drop to the rest of the circuit.

2) Use a low-power voltage reference. For something that is fairly non-critical, I use a standard red LED with nominal forward voltage of about 1.7V. The temperature coefficient of the LEDs that I use is about -1 mV / degree C but this will vary depending on who makes your LEDs. Nonetheless, it should be sufficiently accurate for your purposes.

The red LEDs that I use are in a water-clear plastic package and are really quite efficient - they produce significant light at a current of about 0.5 mA. This allows the LED to be both the voltage reference as well as a (dim) power-on indicator. Pick the LED resistor for about 0.5 mA current and see how well it works for you.

3) Use a low-current op-amp. The LM358 that you are using isn't bad but there are inexpensive CMOS op-amps that consume one-tenth the current that the LM358 uses. That said: if the LM358 is all that you have, it will work.

If you are stuck using the LM358, add a 10k or so pull-up resistor from V+ to the output. That should bring your output swing close to the input power supply rail.

4) This is the most important step: use a better FET. There is a class of MOSFETs called "Trench FETs". These have very low gate threshold voltage and very low Rds on values. They go by a variety of names but the word "Trench" is usually in there somewhere.

For example, Digikey shows more than 7700 listings for the search phrase "Trench FET". The cheapest N-channel device in stock in a through-hole package costs \$1.22 in singles and is rated for 54A @ 40V max. Rds On is less than 12 milli-Ohms.

• 1) The LM7805 is a placeholder for a DC-DC step-up 2) I like a lot the idea of using the LED as voltage reference! especially because there is one on the DC-DC step-up board connected to the regulated output. Compared to my circuit I won't reduce the number of components, but accuracy will be way better. 3) I also have TL081 (I run out of TL082), but it is a single opamp and I want to keep the thing very small, avoiding double package. I'll check your suggestions, I may have another different one. Also, I may combine your suggestion with the one from @MaxthonChan 4) I'll check them.
– FarO
Mar 23, 2015 at 12:33

This circuit won't really prevent draining the batteries. I suggest a solution involves 1 power PMOS, one NPN BJT, one Zener and a few resistors. Make the BJT conduct and pull the gate of the MOSFET low only when Vbatt >= Vz+Vbe.

simulate this circuit – Schematic created using CircuitLab

The Vz of TL431 can be tweaked using a pot.

• Yes you are right, I didn't mean to prevent the drainage completely, but lighting up the LED and, if necessary, preventing the light to work would be enough to remember me to charge the batteries. I update the question.
– FarO
Mar 20, 2015 at 9:40
• @OlafM If that is the case you can use a comparator like LM339, comparing the battery voltage divided down by a ratio against some voltage reference like TL431. LM339 outputs an open collector signal and you can use that with a pull up resistor to drive a PMOS high side switch. Mar 20, 2015 at 9:46

You may end up needing a charge pump for the gate, if you leave with the NMOS.

Use an npn bipolar transistor.

If the problem is that the opamp being used as a comparator is not rail to rail and you can't get enough gate drive, use it to instead drive an npn with an emitter resistor. This will allow you to use drive the gate at the voltage rail minus VCE_SAT.

If instead the problem is that the VGS threshold on the FET is just too high, select a different FET with a lower threshold.