Battery Capacity Tester

This is an improved version of the Battery Capacity Tester. Click <HERE> to view the original article.
OVERVIEW
I'm always using rechargeable batteries, and sometimes I like to test them to see if they are wearing out. The circuit below can be used to test the capacity of rechargeable batteries. It can also be used to drain a battery prior to charging.
For large batteries, capacity is measure in amp-hours (AH). For small batteries the capacity is measured in milliamp-hours (mAH). For example a popular rating for "AA" rechargeable batteries is 2000mAH. This means that the battery can provide a current of 2000mA for 1 hour. Or 1000mA for 2 hours. Or 500mA for 4 hours, etc. But actually it is not perfectly linear. 2000mAH divided by 1/4 hour would be 8000mA (8 amps). But you cannot really get 8 amps of current out of an "AA" battery for 15 minutes. The battery capacity rating is really only accurate for modest loads, not heavy loads.
HOW TO DO IT
To determine the battery capacity, you need to do 3 things:
Step One - Put a known load on the battery
You could simply put a resistor across the battery. Rechargeable batteries have a nominal voltage of 1.2 volts.
If you put a 12 ohm resistor across the battery, 1.2V / 12Ω = 0.1 amps (100mA). You now have a 100mA load on your battery.
If you have a 4.8V battery pack, placing a 48 ohm resistor across the battery pack will give a 100mA load.
But wait, we have a problem with this. The battery voltage is not constant! When you pull the battery out of the charger, the terminal voltage is typically higher than the nominal voltage. And then when you attach the load, the battery voltage will slowly drop as the battery drains. For a large portion of your test, the load on the battery is NOT going to be 100mA. In order to make it work, you will need to monitor the battery voltage. I saw someone on the internet who did that. They used a microcontroller with a built-in A/D converter to monitor the battery voltage. They then charted the battery voltage over the duration of the test, and calculated an overall battery capacity.
That's a lot of work. An easier way is to use a constant-current load. Such a load will remain constant regardless of the battery voltage. There will be no need to chart the battery voltage throughout the test. And no fancy math to calculate the resulting battery capacity. You only need a simple circuit which will draw a constant current. This is the approach that my project uses.
Step Two - Time how long it takes for the battery to be depleted
We need to know how long it takes for the battery to be depleted. This can be done with some kind of timer. The accepted practice is to drain the battery to 1 volt (or drain a battery pack to 1 volt per cell). We already know the load (from our constant-current load). If we know the duration of the test, then we simply multiply the two together to get the capacity of the battery.
Step Three - Disconnect the load after the battery is depleted
This not only keeps from ruining the battery, it also marks the end for the timer. You do not need a fancy microcontroller for this, just a simple comparator. We don't care what the battery voltage is during the test. We just want to know when the battery voltage hits 1 volt (or 1 volt per cell).
CIRCUIT DESCRIPTION
The circuit is fairly simple. U1 is an LM358 dual op-amp. The first half (U1a) along with Q1 creates a constant-current load on the battery. For Q1, any NPN power transistor should work fine. I used a 2N3055, which is cheap and easy to find. You will want to use a heat sink on the transistor.
VR1 and VR2 sets the load on the battery. VR1 is a coarse adjust, and VR2 is a fine adjust. The range is roughly 100mA to 1 amp when running a 4-cell battery pack (4.8V battery pack). You can manipulate the range by changing R1. For a higher range, increase R1. For a lower range, decrease R1. You can also fudge with the range by changing the value of R3A.
The other half of U1 (U1b) is a comparator. One input is the battery voltage, and the other input is a trigger point set by VR3 and VR4. When the trigger point is reached then the output of U1b will go low and de-energize relay RY1. This will remove the load from the battery. R5 pulls-down the input of the comparator to keep the relay off when no battery is connected.
Q2 provides more power for driving the relay coil because the LM358 has a limited power output. Diode D1 protects Q2 from the surge that occurs when the relay is de-energized.
The comparator senses the battery voltage through relay contact RY1b. This will keep the comparator disconnected from the battery after the circuit times out. This is necessary because the battery voltage will recover (increase) when the load is disconnected. If the comparator was still connected to the battery, then the circuit would re-activate.
VR4 is typically set for 1V per cell. Less than 1V per cell is not recommended. Just take the nominal voltage of the battery or battery pack and divide by 1.2. For example a 7.2V battery pack should use a trigger point of 7.2V / 1.2 = 6.0V.
When the circuit is powered up and a battery is connected, the output of U1b will initially be low and no action is taking place. To get things started, switch S1 must be pressed. This will momentarily connect the battery to the comparator and energize the relay.
LED1 will stay illuminated until the trigger point is reached.
OK, so that is the basic circuit operation which provides a constant-current load on the battery. To calculate capacity you need to know the size of the load AND how long the battery lasts until the trigger point is reached. So we need a timer. The emitter of Q2 provides a trigger voltage for the timer. In this improved version of the Battery Capacity Tester I used a digital timer. It is model CUB7T1, made by Red Lion. A datasheet is available <HERE>. The price of this timer is approximately $65. You can use any timer that triggers on a 10VDC signal.
There is a cheaper alternative. You can use a small inexpensive battery operated quartz clock, available from Walmart, Target, etc. Since the clock uses a quartz movement, it will be very accurate. These clocks typically use one AA battery for power, which means that it runs on 1.5 volts. The trigger voltage from the Battery Capacity Tester is about 10V, so it must be reduced. An easy solution is to connect 2 diodes in series. The voltage drop of a diode is about 0.7V, so two in series will provide about 1.4 volts. This makes a good voltage source to power the clock. Just connect the clock across the diodes. You will need a current limiting resistor as well. Here is the circuit:

For the diodes, use a 1N4001, 1N4002, 1N4003, or 1N4004. The resistor should be 1K ohm 1/4 watt.
Simply set the clock to 12:00. When the circuit is activated the clock will get power and start ticking. When the comparator switches off, the clock will stop. You can then read elapsed time off the clock. The only possible issue is if you know that your test will exceed 12 hours. Then if the clock reads 3:00, you couldn't be sure whether it timed out after 15 hours or after only 3 hours. In this case just check the clock part way through the test to confirm that it is still ticking.
Please note that you cannot use a digital clock, they loose the time when power is removed. You must use a regular clock with minute and hour hands. Also please note that you might not be able to solder wires directly to the battery contacts on the clock. The battery contacts might be made out of some kind of material that does not accept solder (such was the case with mine). You can use a couple of small clips and just clip the wires to the battery contacts.
Important Note: When connecting the battery under test, you must use 3 wires to the battery. Two of the wires are for draining the battery (through Q1) and the other wire is to sense the battery voltage for the comparator. Do not try to use one set of wires. Initially I tried using only one set of wires, but there is current flowing through the wires which will create a voltage drop that will upset the comparator. You need to use a separate wire to the comparator. There won't be any current in this wire.
Connect the comparator wire directly to the (+) battery terminal (or as close as possible). So for example if you have a battery holder with long leads, do not connect the comparator wire to those leads. The voltage drop in the leads will cause the comparator to see a lower voltage than the true battery voltage, which will cause the circuit to time-out prematurely and thus report a low battery capacity. You would want to connect the voltage sense wire directly to the battery (or as close as possible).
MEASURING VOLTAGE AND CURRENT
Notice that there are two load resistors: R3A and R3B. The total load is 4 ohms. R3B is a precision 1 ohm resistor, which is then used to monitor the current. The current will be equal to the voltage drop on R3B. For example if you read 115mV across R3B, then the load current is 115mA. Switch S2 will let you switch between reading the load current and reading the trigger voltage. I soldered two "posts" of #14 solid copper wire to the circuit board, and then clipped the voltmeter to the posts. One post is ground, and the other post comes from S2.
CONSTRUCTION NOTES
I went to the trouble to make a PC board. Actually it's not all that hard. Here is the basic process:
I have done steps 1 & 2 for you. You need to do steps 3-5. Here is an excellent resource that discusses making PC boards:
http://www.riccibitti.com/pcb/pcb.htm (thank you Alberto!)
The foil pattern can be downloaded <HERE>.
When you print the foil pattern, you want to make sure that you print at a 1:1 scale. I use the excellent IrfanView program to view and print images. If you use IrfanView, set the Print Size to "Original Size" (in the print dialog window). You will get 1:1 scaling.
IrfanView is available here: http://www.irfanview.com/
If you want to dabble with making your own PC boards, I recommend Easytrax. I have tried a few programs, and I like Easytrax because it is fairly simple and therefore the learning curve is not too steep. However this program is DOS-based. If you are not familiar with DOS then it may be a bit tricky for you. If you have any questions, feel free to drop me a line.
Easytrax is available here: http://www.lupinesystems.com/easytrax/
Below is a diagram of the PCB layout. Note the 4 jumpers that must be installed.

There are several solder pads:
P1: Install a post at this location. The (+) lead from your voltmeter will clip here. The (-) lead from the voltmeter should go to ground.
P2: Connect to one end of VR2.
P3: Connect to one end of VR4.
P4: This is the +12V trigger voltage for the timer. Note that the timer will also require a ground connection.
P5: Connect to the other end of VR2.
P6: Connect to the other end of VR4.
As noted in the above image, you will not see LED2 or R7. I added them as an afterthought after I had completed the design. LED2 is just a simple power lamp. Drill a couple holes to mount the LED. Drill one of the holes through the large ground plane, just above CONN1. Drill the second hole next to the first hole, but on a blank area. Install LED2 and solder the ground connection. On the back of the board, solder one end of R7 to +12V and then solder the other side to the free end of LED2. You now have a power lamp that will illuminate when the circuit has power.
By the way, CONN1 was a power connector that I had laying around. I might have a couple extra connectors, feel free to ask. Or you could forgo the connector and just solder a power cord directly to the board.
For the switches I used a couple slide switches I happened to have. Sorry, I don't have any left! You can always use toggle switches, etc. Just remember that S1 must be a momentary switch.
OPERATION
To test capacity:
TO CALCULATE CAPACITY
CAPACITY = MILLIAMPS x HOURS
Example
Measured Capacity = 200mA x 4.58 hours = 916mAH
ADDITIONAL NOTES
If you are just draining a battery prior to charging, then you can use a higher current drain. Try battery capacity divided by 2 or 3. You also don't need to drain it all the way down to 1V per cell. 1.05V per cell is fine (battery pack voltage divided by 1.14). This way it won't take hours and hours for the battery to drain down.
When not using the capacity tester, connect the voltage sense wire to ground. This will protect the IC from stray static charges.
SCHEMATIC

PARTS LIST
| SYMBOL | QTY | DESCRIPTION |
| U1 | 1 | LM358N, dual OP-AMP (for single supplies) |
| REG1 | 1 | LM7812, +12V regulator |
| Q1 | 1 | 2N3055, NPN power transistor |
| Q2 | 1 | 2N3904, NPN transistor |
| D1 | 1 | 1N4003, diode (or 1N4001, 1N4002, 1N4004) |
| LED1 | 1 | red LED |
| LED2 | 1 | green LED |
| C1 | 1 | 0.22µF film capacitor (Mylar, etc.) |
| C2 | 1 | 0.1µF ceramic disk capacitor |
| RY1 | 1 | Relay, DPST or DPDT, 12VDC, contacts rated at least 1A |
| VR1, VR3 | 2 | Potentiometer, 10KΩ 10-turn trimmer (top adjust) |
| VR2, VR4 | 2 | Potentiometer, 50KΩ 10-turn panel-mount |
| R1 | 1 | 1.6KΩ, 5%, 1/4W |
| R2 | 1 | 1KΩ, 5%, 1/4W |
| R3A | 1 | 3Ω, 5%, 10W power resistor |
| R3B | 1 | 1Ω, 1%, 3W precision power resistor |
| R4 | 1 | 4.3KΩ, 5%, 1/4W |
| R5 | 1 | 1MΩ, 5%, 1/4W |
| R6, R7 | 2 | 220Ω, 5%, 1/4W |
| S1 | 1 | Switch, momentary, normally open |
| S2 | 1 | Switch, toggle or slide, SPDT |
| 1 | Heat sink for Q1 | |
| 1 | Wall transformer, 15-20VDC, 200mA or higher | |
| 1 | Either a digital timer that accepts a 10VDC signal for a trigger, or a battery operated quartz clock (see text) | |
| 5 | Alligator clips. 2 for battery connection, 2 for clock, 1 for voltage sense wire. (if using a digital timer, then only 3 clips are needed) | |
| 1 | Circuit board (see text) |