A Simple Peak-detecting Nicad Charger

This peak-detecting Nicad charger will charge 1 to 7 cells at up to 2 Amps, when powered with 12V. If you have access to a higher voltage power supply then more cells can be charged. To work out how much voltage is required, assume 1.6V per cell, plus circuit losses of 0.8V. Therefore to charge 10 cells you would need at least (1.6*10)+0.8=16.8V.


How it Works

The circuit consists of two parts, a constant current generator using a PNP power transistor (Q2), and a peak-detecting shutoff circuit using a high-gain opamp (IC1). To start the charge cycle, switch SW1 is momentarily closed, causing C1 to discharge. As IC1's inverting input is now higher than its non-inverting input, its output goes low, turning on Q1. This lights the red "charge" LED (D2) and provides about 80mA through R6 and R7 to turn on Q2, which starts charging the battery. Charge current flows through R8 on its way to the battery. When the voltage across R8 exceeds about 0.6V, Q3 starts to turn on and robs current from the base of Q2. This regulates the output current to an amount determined by the value of R8.

Peak Detect

To detect the end of charge, we make use of the 'peaking' effect of a Nicad battery. During the charge process voltage across the battery rises steadily until no more charge can be stored, at which point the excess energy must be dissipated as heat. The resulting rise in battery temperature causes the voltage to drop by a small amount (as little as 7mV per cell). In this circuit peak detection is achieved by comparing the battery voltage to a time-delayed version stored on capacitor C1. When battery voltage is rising, voltage on C1 lags behind voltage on C3, so IC1 will hold its output low. If the voltage on C1 becomes higher than C3, then battery voltage must now be falling. As the non-inverting input of IC1 is now higher than its inverting input, its output goes high, turning off Q1 and stopping the charge cycle.

Charge Termination

To ensure that output current is held off at the end of charging, Q4 monitors the charge current. If current drops below half the preset amount, Q4 turns on and forces the non-inverting input of IC1 high, thus permanently stopping the charge. This will occur at peak detect, or if battery voltage rises too close to the supply voltage (eg. if the battery is disconnected). The orange "power" indicator LED (D3) along with R11 and R12, provides a voltage reference of 0.9V on the base of Q4. Subtracting 0.6V between base and emitter, Q4 turns on when the voltage across R8 drops below 0.3V.

Extra bits

Unfortunately, an LM358 opamp's inputs only work correctly up to 1.5V less than the supply voltage. To fully utilize the available power supply voltage, it is necessary to keep the opamp's inputs below this level. R9 drops about 1.5V when the battery under charge reaches 10V (due to current flowing through R5 and D5). At lower voltages it drops progressively less, so it doesn't unduly reduce sensitivity.

Another problem is that an LM358's output does not go all the up to the supply rail, but can only manage about 1.2V below it. Thus Q1 and Q2 might not switch off completely, which could cause the "battery" LED to remain light when it shouldn't. Therefore R14 was added to ensure that Q2 turns off completely.

If you attempt to charge an already full battery, it may may peak very quickly. Since the time constant of R3 and C2 is quite long (more than 20 seconds), D4 was added to ensure that C2 reaches at least 90% charge immediately, thus 'priming' the peak-detect circuit so that the end-of-charge signal is not missed.

A few other parts were added to increase reliability. C5 and R10 ensure high frequency stability of the current regulator, C4 and C6 smooth out power supply noise, and C1 and C3 eliminate noise in the sensitive peak-detect circuit. R1, R2 and R10 limit surge currents through Q4, SW1 and Q3 respectively.


Component Selection

I designed this circuit to use readily available parts, no expensive or exotic IC's required! Many different opamps can be used for IC1, just make sure that the common-mode input voltage range, output swing, and bias current are good enough. Bias current should be less than 100nA. Input offset voltage should be less than 3mV. This can be achieved with a high-spec part such as the LM358A or AD708 (better), an opamp with null adjustment (a trim-pot would have to be added), or by simply selecting an individual part for low offset voltage. The transistors can be just about types so long as they are PNP, have reasonable current gain, and can handle the power.

LEDs D1, D2, and D3 can be whatever color you like. I used yellow for "power", red for "charge", and green for "battery". Check the voltage drop across R11, and if necessary adjust its value to get 0.9V. Some LEDs drop different voltages eg. Blue LEDs typically use about 4V, compared to 1.8V for a red or yellow LED, and 2.2V for green.

Q2 can get quite hot if charging 6 cells or less at high current, as it must absorb the excess voltage. It should be mounted on a good heatsink. Resistors R7 and R8 will also get quite warm. Do not use lower ratings than those specified.

C2 must have low leakage. This is critical, as excessive leakage current through this capacitor will reduce peak-detect sensitivity. Electrolytics often suffer from this problem, particularly if they have been stored for a long time. Leakage can often be reduced by 'forming' the capacitor, which you do by simply applying working voltage to it for a few hours. Tantalum capacitors have lower leakage, but are hard to get in large sizes (you might have to wire several in parallel to make up the required value).


Setting the Charging Current

By adjusting the value of R8, charging current can be set to match your battery. You could wire in a switch to select an appropriate resistor for each desired current. Most Nicads can be safely charged in 30 minutes, which corresponds to a current of twice their capacity or 2C (eg. a 300mAh cell can be charged at 600mA). With a 12V supply, a 7 cell pack may need to be charged at a lower rate to keep the peak voltage below 11.2V (1.6V per cell), otherwise premature shutoff could occur. Charging at current less than 1C is not recommended, as the peak effect becomes very weak and can be missed.

Current R8 (Ohms) rating
250mA 3.3 0.5W
500mA 1.5 1W
1A 0.68 2W
1.5A 0.47 2W
2A 0.33 3W



These pictures show my charger installed in a small project box, with heatsink mounted on the outside for better cooling. A three position switch selects charging currents of 500mA, 1A or 2A. The ouput terminals can take either bare wires or banana plugs (in the photos a short cable with Sermos connectors is attached).

For convience, I assembled the circuit on Veroboard, which is good for prototyping but prone to assembly errors. Therefore I have now designed a single-sided PCB. Note that as yet I have not tested this board layout. If you think there are any errors in it then please let me know! The board dimensions are 2.5 x 2.5 inches, which should be actual size when printed at 300dpi (to download the image, click on the thumbnail to view the full image, then right-click and select 'Save picture as').

Track Layout (bottom)

Component Overlay (top)



Connect a suitable DC power source to the 12V Supply inputs, which will light the "power" LED. Now connect your Nicad pack to the output (observing correct polarity!). Provided the pack's voltage is at least 2.4V, the "battery" LED should light (if it doesn't, either there's a bad connection or the polarity is reversed). Press the "Start" button for a second, and the "charge" LED should light. Wait for the Nicad to peak, at which time the "Charge" LED should extinguish.

Do NOT leave a charging battery unattended! Check the pack temperature regularly. If charging does not stop automatically after a reasonable time, or if the pack gets warm, disconnect it immediately. If charging stops too soon then one cell in your pack may have peaked earlier than the others, so you can hit the "Start" button again. However, do not restart if the pack is warm.

Disconnect the pack soon after charging, to prevent it from slowly discharging into the "battery" LED (a 600mAh 7.2V pack would loose about 1% charge per hour).

End of Charge Annunciator

Rather than having to periodically check the LEDs to see when charging has finished, wouldn't it be nice to have an audible indication? This circuit does it...


How it Works

/CHRG is taken from pin 1 of the LM358 opamp in the charger. At power-on /CHRG is high, so IC1A output is low and IC1B output stays high. When the 'Start' button is pressed, /CHRG goes low. IC1A inverts this and causes C3 to start charging through R2. After about 2 seconds the voltage on C3 is high enough to enable the oscillator formed by IC1B, C1 and R1. This produces a square wave with a frequency of about 2kHz, which is fed into IC1D. However, /CHRG is also connected to IC1D, preventing the 2kHz tone from getting to the piezo speaker. At the end of charging /CHRG returns high, but the oscillator continues to operate until C3 discharges (another 2 seconds). IC1D is now enabled, so the speaker is activated. IC1C doubles the voltage to the speaker for more noise!


The circuit is simple enough to be assembled on a small piece of Veroboard. The +12V power supply is connected to pin 14 of IC1, and Ground goes to pin 7.

Using a PMOSFET for Higher Current


The original circuit's charging current is limited to 2A, not because the output transistor can't handle more, but because it needs too much base current. FETs are controlled by voltage rather than current, so have much lower drive requirements.

Substituting the Bipolar output transistor for a P-Channel MOSFET allows charging current as high as the FET can withstand (with a suitable value of R8, eg. 0.15 Ohms for 4A). Both R8 and the FET may get very hot at high currents, so make sure they are sufficiently rated and heatsinked! Charging fewer than 4 cells at 4A is not practicable because the FET would get too hot.

Note that the values of R7 and R14 have changed, and R6 now connects to the positive supply rail.

Eagle PCB Layout for Nicad Charger V3.0

[home] [electronics]