Inspired by this circuit, I'm trying the following one for charging 2 NiCd batteries:


simulate this circuit – Schematic created using CircuitLab

There is a current limiter part, with a red LED (D3) indicating that the charging is in progress. The overvoltage protection should be provided by a 2.7 V Zener diode (D1).

The current limiter part is working as expected, delivering about a constant 120 mA current. The problem comes with the overvoltage protection, since the zener appears to conduct enough current to turn on Q2, with the batteries still at 2.7 V. More precisely, I measure a current of 0.35 mA on the zener, with a voltage drop of 1.9 V on it, and so D3 is always off.

My try to fix this was to replace R3 with a lower resistance, namely 20 Ω. With this new configuration Q1 is turned on, with the zener conducting 15 mA over a 3.3 V voltage drop on it (this Zener diode is pretty far from being ideal, isn't it?). Voltage drop on R3 is then 0.45 V, not enough to turn on Q2.

Based on these experiments, I suspect that the value of R3 can probably be arranged in order to turn off Q1 at an appropriate voltage of the batteries (e.g. 2.9 V). Yet, this seems to me too much dependant on the particular components I'm using, and so difficult to predict and calculate. Also, I wouldn't like to rely on such fine-tuning arrangements in order to prevent overvoltage on my batteries.

My question is: is there a way to properly fix this circuit, or is it simply wrong by design?


  • 2
    \$\begingroup\$ Looks like you've discovered that a lot of circuits on the internet cannot be trusted. \$\endgroup\$
    – Andy aka
    Commented Dec 7, 2020 at 15:41
  • \$\begingroup\$ Today, I have done a circuit very close to that one you sketched. These is 2 major differences from yours, as I use an AZ431/TL431 as precision Zener and it is desined to charge 5x NiCd: V_final = 6.87V and i_lim = 140mA. It is working flawlessly. If it is still worth for you, I can answer with it too. \$\endgroup\$
    – EJE
    Commented Aug 4, 2022 at 21:47
  • 1
    \$\begingroup\$ And about your questions, yes I believe it can be fixed as it is, where I suggest 2 changes: #1 (easier) try first R3= 330R, as mid point between Zz and Zzk in BZX55C datasheet. (vishay.com/docs/85604/bzx55.pdf). #2 replace 2V7 Zener by any TL431 as 2.495V precision reference (joint Ref+Cathode). For this, I guesstimate any 220R < R3 < 2K2 will work fine. \$\endgroup\$
    – EJE
    Commented Aug 4, 2022 at 22:03

2 Answers 2


Your questions:

Q1: Is there a way to properly fix this circuit?
Q2: Or is it simply wrong by design?

Short answers:

A1 = Yes there is. See detailed answer, with 4 Checks/Changes and 2 Tips.
A2 = No, the circuit is not ‘wrong by design’, but needs to be calculated properly and are ways to improve its performance. Then you proto-board it too and you get something that works as intended

Detailed answers:

A1: Yes there are ways you can ‘fix’ it, if you accept a not-so-defined knee from “constant” current to “constant” voltage.
Between quotes, because is not really constant, but would work ok.

I already built some circuits like that, obviously changing values and components. But in terms of topology/configuration, they are quite similar.
I suggest a few changes:

#1 Upgrade Q1.
Q1 = 2N2222 is borderline adequate, it will “fry” due to power dissipation. Assume as worst case, V_in = 8V and dead batteries (0V). In this case Power = 8V x 120mA = 960mW.
If you use a BD135 or MJE340 assuming HFE > 30, or in a better TO-220 as TIP31 or even a TIP110 Darlington with HFE = 2500, you have several design BJT options that will dissipate 1W without heatsink.
Please observe that using a Darlington, it may be necessary to raise V_in.

#2 Review & Change R1.
Base current resistor, we could think of using
R1 = ((8 - 0 - Vbe) / 0.120) * (HFE_min / 3).
R1_BD135 = ~620R (commercial). R1_TIP110 = ~47K.
Current in R1 is important because will drive CC LED: However, as we wish i_LED ~= 10mA, by inspection we could see R1 is far from the determined values FDTE to polarization requirements of Q1. Recalculating by LED current.
In this case, for V_in = 8V, delta_V_NPN+LED+Bat = 5.8V.
R1 = (V_in - delta_V)/i_LED = 220.
R1 = 220R.

#3 - Review R2 & D3.
Using a LED_RED or Green, with V_f ~=2.0V, V_R2 = (2.0 - Vbe) R2 = V_R2/i_bat = ((2.0-0.7)/0.12) = 10R8.
R2 = 10R.
D3 = RED(new) or GREEN.

#4 Check ZenerDiode D1 and R3.
Zener Diode BZX55C in Vz = 2.7V, has an equivalent resistance between 85R (@ 5mA) and 600R (@ 1mA).
R3 voltage at 0.7V will make Q3 conduct; assuming Zener current = 5mA, we expect Vz ~= 2.7V.
So say, i_D1 = 2mA and for that, R3 = 0.7/0.005.
R3 = 150R.

Tip #1: R3 and V_out fine-tuning.
Curiously, Vbe_Q2 and Vf_D2 are not much different, so it is expected that
V_out ~= Vzener_D1.
A trick to fine-tune the Output voltage would be to change R3 in such a way that current would swing from 2mA and 30mA, which would increase the Vz by tenths of volts around the nominal 2V7.
Using R3 = 22R (fixed) + 330R (trimpot) would be a first guess.

Tip #2: Improving Voltage stability.
If you wish to get a very sharp knee with really Flat plateau for the Constant Voltage part, Zener is not the best option, as it varies the impedance much more than an “integrated Zener” as the TL-431. Another point is related to Thermal drift, which a 2V7 Zener is not the most precise if it is left close to the power transistor getting hot.
Don’t get me wrong, the Zener circuit will work as a Voltage reference, and even can be tricked (as above) because it has a comparative large impedance at a given operating point; but you can use other references too.
So, if you replace the Zener by a TL431 and use Datasheet’s Figure 10-3 or 10-5 or 10-6, it works beautifully.
Just put an 4K7 in parallel with your D4 and replace Q1, D1 and R3 by the TL431 and its voltage divider. Oh, and leave the previous C.C. Circuit as it is.

A2: So, can work and is not ‘wrong by design’. It just need some recalculations, but the circuit works.
That is exactly what I have done, for a friend of mine that needed a 5 cell NiCd charger. I made one running at V_out = 6.88V & i_cc = 140mA.
See the assembly for that, using:

  • Vref = TL431 + 12K & 6K8 (V_divider)
  • NPN (MJE13003+2N3904)= Darlington parts from C.F.Lamp.
  • Blue LED for D3 (compensate using Darlington).
  • Any LED (white) as D4; too bright, ‘painted’ as RED: nail enamel used for that.
  • My R1 = 820R, as I work with V_in = 12V.
  • I decided to not use that output diode (your D2) as the back-voltage is not high to cause damages to the circuit and it is being used to charge a toy, so it is just connected when another recharging is needed. If you don’t feel this as adequate for you, maintain the “D2” and comped paste that in the TL’s voltage divider.

enter image description here

CC-CV Charger - Update with Test Data

Using the charger from the Picture, I tested it using 5 AAA advertised as 800mAh but tested individually (La Crosse smart charger) and showed actual 450-500 mAh. Battery pack (5x AAA) was fully and deeply discharged, using initially a 5R6 and then a 10R power resistor. Recovery voltage (instantaneous and after 1 minute was tabulated too.
Then a charging was monitored measuring selected Input Voltages (Nominal V_in is 12V), V out, I_out, LED status, and Temperature @ heatsink.
The Excel spreadsheet (Made in Brazil, so using comma as decimal separator and DD/MM/YYYY) then discounts the stand-by current (last line) to estimate the actual charging current. Accumulated mAh was "integrated" by trapezoidal segments (Romberg's method) for each measured delta Time.

enter image description here

Then general curves showing some key values are plotted - consider that Nominal C = 400mAh and i_cc = 140 mA, charging rate is about C/3:

enter image description here

Summary and conclusions for this CC-CV Charger at C/3

Using a charger that limits CC to C/3 (C = Capacity), and CV set at 1.38V/cell:

  • 25% C occurs at CC-CV switch-over (seen in LEDs).
  • 50% C is achieved at 2 Hours mark.
  • 80% C is reached in 6 Hours.
  • 90% C is reached in 9H.
  • 95% C is reached in 16H.
  • 100% C is reached in 20H, with "final" charging current of 1 mA.

Here is a simple answer. You could try using three or four silicon diodes in series for D1 (about 2.5V) although with a negative temperature coefficient. Or a white LED, perhaps in series with a diode, may have the voltage you need. You might also be able to replace the zener with a resistor of about 3k, which will forward bias Q2 at about 2.8 volts. You could replace D1 and R3 with a 5k trimpot and adjust output voltage.

Here's my simulation:

NiCad Charger simulation


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.