Game Instance

Let the games begin

Smart NiMH Battery Charger

Arduino DIY at its best

What good is a NiMH discharger when you don't have a reliable fast recharger. Most of the chargers on the market are built with economy in mind and mistreat the batteries in all ways possible. Almost all generate small charging currents and sometimes only a timer prevents battery overcharging. Needless to say, this comes at the expense of long charging times of up to 10 or even 15 hours. Many chargers handle multiple cells in series, allowing imbalanced charging. Using imbalanced cells in a pack will shorten the life of the weaker ones as they will often be deeply discharged or even reversed. Although imbalanced series of cells are evening out when charging at small currents over longer periods of time, some of the cells begin to heat-up - another life-shortening factor for batteries.
This article proposes a DIY Arduino Smart NiMH Recharger capable of determining the state of each individual cell and treating it accordingly.


In case you have no idea what you're up against, NiMH batteries need to be charged at constant current. They absorb that current at room temperature and store it in the chemical cell with little to no thermal effect. Once fully charged, the energy pushed-in by the charger transforms into heat. Consequently the temperature within the cell begins to rise rapidly. Another - very discreet - telltale sign of a charged battery is the slight drop in voltage. However, the indicators cannot be picked-up for low charging currents, around C/10. They become visible only when applying higher currents, starting from C/4 - as of 600mA for a 2400mAh battery.

NiMH 1.2V cell - Fast charging profile

A smart quick charger circuit needs to provide a constant current that's high enough to recharge the cell in a couple of hours and stop it at the right moment to prevent overcharging. To this end, it monitors external parameters, such as voltage, temperature, current and charging duration.

The circuit

will be using the non-synchronous buck converter tested few months ago and improved after the efficiency evaluation showed massive switching losses. It will be controlled by an Atmega328 MCU using an 11 bit resolution PWM signal at 8kHz with a duty cycle that will be continuously adjusted to provide a constant recharge current.

Nonsynchronous buck converter

To prevent memory effect of partially discharged batteries, the device will include a discharge circuit. R1 will act as a shunt resistor for measuring both charging and discharging currents. Given its 1.8 Ohm and 2 Watts rating, it will be safe to limit the charging current at 1 Amp.

NiMH cell discharger

For battery temperature monitoring the charger will also use a NTC thermistor in a voltage divider configuration. This will provide an important feedback from the battery that will help determine whether the battery can be charged. It will also indicate when to end charging process.

A daring attempt

I know, so fingers crossed. After several of my battery packs were cooked by a brand name recharger, I had to find alternatives. I started buying cheaper NiMH cells but, as it turns out, 1 and sometimes 2 out of 4 in a pack were bad, as in high internal resistance bad. I found some nice smart rechargers but in the process of investigating I realized that I could do one myself.

Update: check-out Part 2 - The build.