Battery Reconditioner

by msuzuki777 in Circuits > Arduino

50007 Views, 170 Favorites, 0 Comments

Battery Reconditioner

BatCon3_2.JPG
ReconditionGraph.jpg

So if you are like this Lazy Old Geek, you have a lot of rechargeable batteries lying around. I wrote another Instructable with some battery tips.
https://www.instructables.com/id/Rechargeable-Battery-Tips/

Amongst these batteries, I have a lot that no longer work or don’t work very well. So I decided to try to revive them.

First step: If the battery isn’t totally dead, stick it in something like a flashlight, turn it on and let it run until it stops working. Try to recharge and see if it works better.  I tried this with a couple of cordless drill batteries and was able to ‘restore’ the battery packs.

Second step: However, I have a lot of AA and AAA batteries that still didn’t work. I also have a bunch of battery chargers but none of them will recondition batteries very well, so I decided to make my own.

Well, after years of diligent research (well, actually it was more like days and not very diligent), I decided this method had the most promise:
http://batteryuniversity.com/learn/article/how_to_restore_nickel_based_batteries

Okay for the technically challenged, the basics are:

1. Fast discharge the battery from 1.2-1.4 volts, down to 1 volt.
2. Discharge it slower to about 0.4 volts. Then recharge and see if it works.
This may have to be repeated several times.
 


Design Battery Holder

Panasonic1.JPG
Panasonic2.JPG
PanPCB1.JPG
PanPCB2.JPG
MyBattHolder.JPG

My Design criteria for a battery reconditioner:
Individual circuits for each battery.
Discharge up to 3000mA AA batteries.
Do up to four AA or AAA batteries at a time.

So, since I’m an Arduino Geek, I decided to use an Arduino.

But first, I needed a holder for AA and AAA batteries. Well, I didn’t have any readily available and didn’t want to try to make my own (as seen in many Instructables). But I did have an old Panasonic battery charger that I didn’t really like (See rechargeable battery tips). This one will take AA or AAA batteries.

So I took a screwdriver and opened it up. (see picture). All of the battery contacts are on the PCB. So I took my trusty $4 soldering iron and some solder wick and removed most all of the components.

Now I don’t expect very many readers will have one of these around but you can probably make or buy suitable battery holders. So I’m not going to go into a lot of details about how I modified the PCB. Here is the design criteria for my battery holder:

All the grounds (the – sides of the batteries) are tied together.
My battery slots can take either AA or AAA batteries. The positives for each slot type can be tied together.
So six wires will come off the holder: two black grounds and four red positives. I labeled the positives for each slot.

This Panasonic charger actually charged in pairs so that you had to charge two or four batteries at a time. So I had to do some cuts on the PCB. Then I also had to jumper the AA and AAA positives together for each slot.

Caution: The wire I used is 22AWG. 22AWG is rated for 7 Amps (7000mA) so will handle the currents for 3000mA discharge rate. Since I will have up to four batteries at a time, I have two ground wires. Make sure your wiring can handle the current.

I cut up the housing and labeled the battery slots. (see pictures)

First/Second Designs

Arduino2.JPG
Arduino2_1.JPG
Arduino2_2.JPG
Arduino2_3.JPG
parallel_resistors.jpg
Par2.JPG
Par3.JPG
Schematic2.jpg
RBBBPinout.jpg

So my first design was using TIP122 Darlington transistors to discharge the batteries. I also purchased some ICs to measure the current so that I could discharge the batteries at the proposed ‘1C’ rate which is 3000mA for 1 hour. I selected the TIP122 because it can handle 5A (5000mA) continuous.
But I couldn’t get these to work. I think the main problem is that when drawing 3000mA, the ‘On’ voltage is over 1 volt. So if the battery voltage is only 1.2 volts, there is not enough difference for the TIP122 to work.
Failed: First design

My Design 2 was to use 5 volt relays to connect resistors to discharge the batteries. Now this actually worked and I will provide information in case you might want to try this method.

Now I only have two relays but these are DPDT relays so I could control two circuits with one relay. With this limitation, I could only discharge two batteries at one time.

Stage 1: Fast discharge from 1.2 Volts to 1.0 volts at ‘1C’. For a 3000mA battery, this is about 3000mA (3A) discharge. Okay this is a simple application of Ohm’s Law, E=IR. Since we know the voltage and the current, we can figure the resistance. R=E/I = 1.2/3 = 0.4 Ohms.

Caution: You also have to watch out for power. P=IE = 3*1.2 = 3.6 Watts. Most little resistors are ¼ Watt and would burn up. So you need higher wattage resistors.

Stage 2: Slow discharge from 1.0 Volts to 0.4 volts over a couple of hours. Unfortunately, they didn’t give a discharge current. But I made an educated guess and decided to use ‘½ C.’

So in theory, back to Stage 1, I need a 0.4 ohm 3.6 Watt(or higher). Okay, these might be available but I went a different way. If you have two resistors in parallel, their resistance is divided by two and by the way, the wattage doubles. (See pictures)

So a fairly easy to get resistor is 1.6 Ohm 1 Watt. If you put two in parallel, that is 0.8 Ohm 2 Watt. If you put four in parallel, that is 0.4 Ohms, 4 Watts. Perfect. Since I am very clever, I decided to use two relays with 0.8 Ohms for each relay for each battery. So when both relays are on, the resistance for each battery is 0.4 Ohms. See schematic.

FYI: These relays can handle 8 Amps per contact and the contact resistance is 100 milliOhms or 0.1 Ohms maximum. Actually, this adds a little as each circuit could be up to 0.9 Ohms and two in parallel would be 0.45 Ohms but that's close enough.

So for stage 1, I turn on both relays and discharge at around ‘1C’ 3000mA. When the battery voltage drops to about 1 Volt, then for stage 2, I turn on only one relay so it discharges at a slower rate until the battery drops to about 0.4 volts.

 Now, I am not going to explain the point to point wiring for this circuit is rather extensive. Hopefully, you should be able to figure it out from the schematic in the picture.

Here’s some basic guidelines:
For this version of RBBB, I added male header pins sticking out the bottom of the PCB so that it will plug into a breadboard. I made a little template with Excel to identify pins and match them up to my breadboard. See picture.

This breadboard has a + and a – rail on both sides so I connected grounds and +5 volts to both rails.

More details on using the G2RL-24DC5 are available in my Instructable:
https://www.instructables.com/id/Arduino-Remote-Control/

Schematic comments:
The 1N4001 diodes across the relays are for back EMF. I think they helped reduce glitching when the relay turns on and off.
The 1 MegOhm resistors across the battery are so that the software can tell that there is no battery installed (if there is no battery installed). Any resistor from about 10K to 10M should work fine.


Parts list Design 2:
Arduino clone: Really Bare Bones Board (RBBB) ~$5
Arduino USB interface ~$5 (or USB-BUB)
https://www.instructables.com/id/Arduino-USB/

2 Relays: Digikey Z146-ND (G2RL-24DC5) $3.22 (Digikey.com)
2 2N3904 transistors $ 0.02 (TaydaElectronics.com)
8 1.6 Ohm 1W resistors $ 0.30 (ebay cn-resources)
2 10K resistors
1 3.3K resistor
2 IN4001 diodes


Design 2 Software

BatteryInternalImpedance.jpg

This is mostly electrical theory and can be skipped by all you practical readers.

 Problem: So when I turned on the relays starting to discharge the battery, the battery voltage drops down. For Stage 1, I am looking for the voltage to drop to 1 Volt but it will do this too quickly.
Cause: The problem is something called battery internal impedance. A battery is not an ideal voltage source (there is actually no such thing in the real world). It has something called internal impedance that can be represented as a resistor as shown in the picture. So the battery voltage and the internal impedance, Ri on the left side of the picture are what the battery looks like electrically. So when the battery is connected to a load, it actually connects the internal impedance in series and makes a voltage divider circuit. Normally this is not a problem as the load resistance is much higher than the internal impedance so the internal impedance is insignificant. However, with a 0.4 ohm load, the internal impedance can become significant.

FYI: Internal impedance is a good indicator of the condition of the battery. The higher the impedance, the worse the battery. If you understand voltage dividers, the higher Ri is that means the voltage across the load is less so it won’t work as well.

Further complication: This circuit is not an accurate representation of a battery.  The internal impedance is not a constant value and changes. It changes with the how much of the battery is discharged and I suspect with temperature.

Solution: My original plan and software was to turn on the relay and keep it on until the battery reach the goal voltage of 1V (Stage1) or 0.4V (Stage2). Well this didn’t work. So what I did was turn on the relays, leave them on for two minutes, then turn them off and measure the voltage.

Software is included. BatteryRecondition.zip

Downloads

Using Design 2

Design2Screenshot.jpg

Procedure:

1. Charge batteries if possible. I have three chargers.
https://www.instructables.com/id/Rechargeable-Battery-Tips/

If the battery is in bad shape, my Ultra charger will reject it. This is one of the methods I use to indicate the battery needs reconditioning. So I usually charge them in the Panasonic.
2. Place one or two batteries in the reconditioner. I leave my Arduino-USB plugged in to supply power to the Arduino but you can also run it standalone with a separate power source.
3. I also open up the Arduino serial terminal to ‘watch the progress.’ See picture
4. The relays should click a couple of times, then the red LED will turn on indicating that the batteries are discharging.
5. Every few minutes, the relays will click and the red LED will turn off.
6. The process should repeat several times.
7. After 2-3 hours, the green LED should come on and the process is complete.
8. Now try to recharge the batteries. I usually try in my Ultra but the batteries are pretty discharged so may not work. Then try your batteries out. I like to use my digital camera.
9. If they work, then you are done. If not you can repeat the whole process several times.

I was able to revive several batteries this way.

Tips: This reconditioner should work with one or two batteries. If using two batteries, it’s better if they are in similar state, e.g., same type and age.

The resistors are set up for 3000mA batteries but should also work with 2900-2500mA. If discharging smaller capacity or AAA batteries, I would suggest doubling the resistor values, i.e., just use one 1.6 ohm instead of two in parallel.

What I don’t like:
It uses relays. Relays are mechanical, noisy and wear out.
It can only discharge two batteries at a time.
It doesn’t really discharge the two batteries individually.

So onto Design 3

Design 3

Arduino3_1.JPG
Schematic3_1.jpg

So much of this design was inspired by:
https://www.instructables.com/id/Rechargeable-Battery-Capacity-Tester/

This is an excellent Instructable.

So I wanted to replace the relays I used in Design 2 with MOSFETs as used in the above design. I’ve never designed a circuit with MOSFETs so that Instructable was very helpful.

The MOSFET I selected was an STP65NF06. The specifications I considered critical were:
Rds(on) (On resistance) less than 100mOhms. It is 11.5mOhms
Id (On current) greater than 3A. It is 60A
N-channel. Yes
Low price. $0.41@

These may not mean much to the technically challenged. The low Rds means that the FET doesn't add much resistance to the discharge circuit. The Id means it can handle 3000 mA discharge easily. N-channel is just the type of FET it is and determines how you need to turn it on.

I decided I wanted a more permanent design than a breadboard so I used my LOG $10 Arduino (see picture).
https://www.instructables.com/id/LOG-10-Arduino/

I used the same basic design as with the relays. Each battery has two FETs. So for stage 1, I turn on both FETS and discharge at around ‘1C’ 3000mA. When the battery voltage drops to about 1 Volt, then for stage 2, I turn on only one FET so it discharges at a slower rate until the battery drops to about 0.4 volts.

The first picture is a revision in progress. I added a Reset button.

See schematic. I also added a Red LED to the second FET so whenever the battery is being discharged, it will light up.

Design 3 parts list:
Arduino USB interface ~$5 (or USB-BUB)
https://www.instructables.com/id/Arduino-USB/
LOG $10 Arduino
https://www.instructables.com/id/LOG-10-Arduino/
8 STP65NF06 MOSFET $3.28 (TaydaElectronics.com)
1 3.3K resistor
16 1.6 Ohm 1W resistors $ 0.60 (ebay cn-resources)
1 Mini Slide switch $0.61 (TaydaElectronics.com)
5 270 Ohm resistors
4 Red LEDs
1 Green LED

Assembly

Arduino3_4.JPG
Arduino3_2.JPG
Arduino3_3.JPG
Arduino3_5.JPG
BatConStandoffs.JPG

Ok, the schematic looks relatively simple. But cramming all those components on to that little tiny PCB proved to be a daunting task for this Lazy Old Geek. I am not going to do a point to point description as that would be too difficult but I will provide some guidelines:

First: I would recommend making the LOG $10 Arduino and make sure it works.
Second: Add the 1 Meg pullup resistors for Analog pins 2-5.
Third: Connect the switch to D3 and ground and the resistor and LED on D11.
Fourth: Build the circuit for Battery 1, test it. The sketch should work with just one battery. As you can probably tell from the pictures, I installed all of the big resistors on the bottom and soldered them so they were away from the PCB. This is so they can dissipate heat more easily.
Fifth: Test the circuit. Without a battery the green LED on D11 should blink. With a charged battery in Bat 1, both resistor packs should get warm since both FETs should be on and the Bat 1 LED should be on, most of the time. It will cycle every few minutes.
Note: I originally had Battery 1 FETs on D2 and D3 but for some reason the LED wouldn’t work (does anyone know why) so I had to change it to D2 and D8 as per schematic.
Sixth: Keeping adding Battery circuits, one at a time, then test.
 

Arduino Sketch

BatCon3Screenshot.jpg

Sketch attached (BatRecon3.zip)

The sketch is pretty well commented.

For most variables, I used arrays as the four battery circuits are identical except for the Analog and Digital pins.
If any of the batteries is over 0.4 volts, then it will go into test mode.
If all the batteries are less than 0.4 volts, then the green LED will blink.
If a battery is being discharged, the associated red LED should turn on.
StartBattV is the ‘unloaded’ voltage.
LoadBattV is the ‘loaded’ voltage with a 0.8 Ohm load.
IntRes is an estimate of the battery’s internal resistance. It is only meaningful when the battery is fully charged.
If the battery voltage is 1.0 volt or greater and the switch is set to high, then both FETs will be on discharging the battery with 0.4 Ohm load.
If the battery is less than 1.0 volt, then only one FET is on changing the load to 0.8 Ohms.
Each battery is tested individually.
The progress can be monitored with a serial monitor (see picture)

Downloads

Design 3 Procedure

BatCon3_2.JPG

The Procedure is similar to Design 2.

Procedure:

NOTE: Most of the AA rechargeables, I’ve seen are 2500 to 3000mA. Set the switch to high. For AAA batteries from 1000 to 1800mA. Set the switch to low.
Caution: In the low setting, with a fully charged battery, the current will be 1500mA. So this is higher than the capacity of 1000mA batteries. What this means is that the battery will discharge in approximately 40 minutes instead of one hour. The battery will get pretty warm. I don’t think this will damage the battery but if you don’t feel comfortable doing this then don’t do it or change the resistor values.

1. Charge batteries if possible. I have three chargers.
https://www.instructables.com/id/Rechargeable-Battery-Tips/

If the battery is in bad shape, my Ultra charger will reject it. This is one of the methods I use to indicate the battery needs reconditioning. So I usually charge them in the Panasonic.
2. Place 1-4 batteries in the reconditioner. I leave my Arduino-USB plug in to supply power to the Arduino but you can also run it standalone with a separate power source.
3. I also open up the Arduino serial terminal to ‘watch the progress.’
4. After a few seconds, the red LEDs for the individual batteries will turn on indicating that the batteries are discharging.
5. Every few minutes, the FETs will turn off to check the Start Voltage and the red LEDs will turn off then back on.
6. The process should repeat several times.
7. After 2-3 hours, the green LED should come on and the process is complete.
8. Now try to recharge the batteries. I usually try in my Ultra but the batteries are pretty discharged so may not work. Then try your batteries out. I like to use my digital camera.
9. If they work, then you are done. If not you can try the whole process several times.

Caution: I noticed that often, even after several hours, the green LED never comes on and the reconditioner says it’s still going. Well, I suspect that the internal impedance of the battery is too high for it to discharge any further.
I also noticed that with some AAAs, the discharge LEDs would sometimes go off than come back on later. This probably means that the battery has recovered after resting for a while.

Serial Terminal: This displays the StartVoltage, LoadVoltage and 'Internal Resistance' for each of the four batteries. Internal resistance is probably only relevant when first starting to discharge. The actual values probably aren't that important but if you compare them to 'known' good batteries it probably is a good indicator of battery condition. Most of my good batteries start off at just a few tenths of an Ohm.
As the batteries start to discharge, the StartVoltage will start to drop. If it starts to level out, then you may have gone as far as you can. Try to recharge and repeat.

Conclusions: With my battery reconditioner, I was able to revive several batteries and still working on some others. My original long term plan was to modify this to include recharging circuitry. But since the LOG $10 Arduino is already pretty stuffed with components, I decided not to do this and just use this reconditioner along with my battery chargers.