The Battery Cycler is a device to allow testing a battery or cell by discharging it at a constant current and then recharging it.
This device was originally proposed by Lee on the EVTech mailing list in Feb 2009:
The latest B.G.Micro catalog lists an interesting device. Velleman K8055, a "USB Experiment Board" for $47.95. Description is at www.vellemanusa.com model# K8055.
It appears to come with DLL software drivers for Windows 98SE, 2000, Me, and XP, Linux etc. It has a USB input port, and screw terminal blocks for its various analog and digital I/O:
- 5 digital inputs (TTL logic levels, with LEDs and pushbuttons to test)
- 8 digital outputs (open-collector, 30v or 0.1a max)
- 2 8-bit analog inputs, with scaling resistors
- 2 8-bit analog (PWM) outputs, one open-collectors
For some time I've been trying to think of a project that could bring EV tinkers together on the same project cooperatively, so we can share and build on each other's work.This might be it.
How about if we use this board to build a battery tester/cycler? The two analog inputs measure battery voltage and current. The two analog outputs control the charging and load current. Digital outputs can select modes (charge, off, discharge), and control an inexpensive LCD display to show what is going on.
The load could be a set of big MOSFET(s) on a heatsink, operating as an adjustable linear resistor. The charger could be any old power supply, using the load MOSFETs as a series regulator so you could get any imaginable charging algorithm.
The useful thing is to all have the same hardware, so the software developed can be shared by all.
What say you, mates?
Well, much was said, and by mid Mar 2009 the proposal had evolved somewhat:
I had some time to poke at this USB Experiment Board project over the weekend.
First, we're really talking about 2 boards -- A Cycler board, and a Control board. The Cycler board is unique to the application; we have to design it no matter what. The Control board is generic; it can be a LabJack, Velleman, or just a manual front panel with a bunch of pots and a meter.
So, I decided to focus on just the Cycler board. I have a design that I like; it's simple, cheap, and should be versatile enough. Based on the good ideas in previous posts, here's a description:
1. Discharge tests the cell/battery with a constant-current load. Turns off when it falls to a set minimum voltage.
2. Charges the battery with a 3-step charging algorithm (IUT).
- Step 1 is constant current.
- Step 2 is constant voltage.
- Step 3 turns off after a selected time.
- Idle: No charge/discharge, but displays still active.
- Charge: Start a charge cycle, turn off when complete.
- Discharge: Start a discharge cycle, and turn off when complete.
- Automatic charge/discharge cycles.
- a. IDIS Discharge current pot: 1-100 amps
- b. VLO Discharge ending voltage pot: 2.1-11.5 volts
- c. IBULK Charge step 1 current pot: 1-100 amps
- d. VFIN Charge step 2 voltage pot: 3.5-16 volts
- e. TIME Charge step 3 timer pot: 1-20 hours
- f. DISCHARGE on/off switch
- g. CHARGE on/off switch
There are 3 options for mounting the controls:
- Pads on the PC board for inexpensive trimpots and switches. These would be installed for a minimum-cost "set-and-forget" Cycler, to be used for one particular battery type.
- Wires to panel-mounted pots and switches. This would be used for a general-purpose Cycler that you frequently readjust to test different batteries.
- Wires to a Control board (LabJack, Velleman, etc.) to change the settings under computer control. The inputs are ground referenced analog voltages from 0-2.55v.
"Charge" and "Discharge" LEDs to show which mode is active.
Otherwise, there is no display on the Cycler board itself, but it has ground referenced 0-2v outputs which can be read by any standard analog or digital meter, LabJack or Velleman board, custom display board, etc. For example, an under-$10 LCD meter with an 8-position rotary switch can provide a simple digital display.
- a. VBAT (Battery Voltage): 0 to 2v represents 0 to 20 volts
- b. IBAT (Battery Current): -1 to +1v represents +100 to -100 amps (negative for charge, positive for discharge
- c. VLO (Discharge Voltage): 0.21 to 1.15v represents 2.1-11.5v
- d. IDIS (Discharge Current): 0 to 1v represents 0 to 100 amps
- e. AH (Amphours since discharge cycle began): 0-2.5v for 0-250ah
- f. IBULK (Bulk Charge Current): 0 to +1v represents 0-100 amps
- g. VFIN (Finish Charge Voltage): 0.35 to 1.6v represents 3.5-16v
- h. TIME (Time since charge cycle began): 0-2v represents 0-20 hours
- a. The Cycler works with lithium, nicad, nimh, or lead-acid cells or batteries from 3.2v to 13.2v. It is powered by the battery, so it will work without an AC supply for discharge tests.
- b. Charging power comes from any AC power supply of sufficient voltage and current for the charging rate desired. This supply does not need to be regulated; the Cycler basically functions as a linear regulator.
- c. A switchmode power supply provides stable operating voltages from a 3.2v to 13.2v (nominal) battery.
- d. Has regulated 12v output to power a cooling fan.
- a. Separate thermistors sense transistor temperatures for charging and discharge. They start backing off the current at 75 deg.C and reduce it to about 0 at 100 deg.C.
- b. 100amp output fuse, in case there's a short or the battery or AC supply is connected backwards.
The circuit is rather interesting. My goal was a KISS design (Keep It Simple, Stupid), so it uses very cheap parts and straightforward circuits. However, there are enough clever tricks to make it entertaining. :-)
I used a surplus dual 200amp IGBT module for the load resistor, and for the series pass regulator for charging. These are available surplus (ebay etc.) for $20 or so, and allow currents up to 100a. Besides, I already had some. :-)
Battery+ is used as common for all circuitry. Battery- is thus a negative" supply. An MC34063 switching regulator, using a common mode choke as a transformer, produces a regulated +6v and +12v over the battery voltage. An LP2950 produces +5v from the +6v supply. The +12v supply is used for the fan and IGBT gate supplies.
The discharge current regulator is basically Steve Hageman's circuit, but with shunt moved to the battery positive side so it can swing both + and - (for + and - currents) to work for charging as well as discharging. The opamps are powered from Battery- and Battery+12v, so their outputs can easily pull the IGBTs high enough to turn fully on.
A strip of 1/2" steel banding strap in series with the discharge IGBT takes half the voltage drop at 100amps. It's a cheap resistor, and cuts heating in the IGBT in half. Bypass it for testing lithium cells.
The charging regulator is interesting. It needs to regulate both current and voltage, and operate over a very wide range. I chose to use two TL431's -- one for current, and one for voltage.
Two sections of an LM339 quad comparator are used for a charge/discharge latch.
The other two sections of this LM338 sense the low-voltage cutoff for end-of-discharge, and the full-battery cutoff for end-of-charge.
The meter can display time and amphours. The timer for these is interesting. A friend of mine calls this a classic Hartian design. :-)
Since it has analog outputs to indicate volts and amps, I figured it was easiest to output an analog voltage proportional to time. 0-2 volts represents 0-20 hours. This can be displayed on an inexpensive 3-1/2 digit multimeter or LCD panel meter.
The obvious approach is a precision oscillator, driving a big binary counter. Then use a DAC (Digital to Analog converter) to convert the binary count into an analog voltage.
This same scheme can display amphours if a multiplying DAC is used. Basically, you use the discharge current as the reference voltage for the DAC.
So I designed this up, but felt the parts are too expensive. A 0-1999 display needs 11 bits, and an 11-bit parallel-input multiplying DAC is over $10. Here is what I came up with instead.
A 400 KHz RC oscillator clocks *two* 12-bit binary counters in parallel. Both counters are reset when you start, so they have exactly the same numbers. Their Q12 outputs (at 100 Hz) are XOR'ed together, so the output is 0 volts. This goes through an RC network, and is the analog TIME output voltage.
A low frequency precision oscillator gives *one* of the counters an extra clock pulse at the desired timebase. For 2000 counts to represent 20.00 hours, the timebase produces 1 pulse every 36 seconds. The most accurate way to make such a timebase is with a high frequency oscillator and another binary counter.
So as time passes, every 36 seconds the second counter is larger by one more count. The two Q12 outputs are always at 100 Hz, but the phase between them shifts. It works out that the average voltage of the XOR of these two outputs is an analog voltage proportional to their difference.
This is implemented with a CD4030 XOR gate (Jameco #676019 $0.18) and three CD4536 counters (Jameco #676449 $0.29 each). The oscillators are included in the counters, so the only extra parts are a few R's and C's, for a total parts cost around $1.
On charge, the user sets a maximum charging time with a pot. When the analog voltage from this timer exceeds the pot setting, the charger turns off.
On Discharge, the time base oscillator is driven by a V/F converter. The higher the current, the faster the 3rd counter will add pulses to the 2nd counter. The result is that the output voltage is now proportional to amphours. The V/F converter is pretty basic; it's the last section of the LM324 quad opamp and the other sections of the XOR gate.
I should mention what I have in mind for battery connections. Get a pair of big battery alligator clips (like you'd use with jumper cables). Take out the rivet holding the two halves together. Replace it with a screw, but use two insulating shoulder washers, so the two halves are electrically isolated from each other.
Use one half of the clip for the high-current wire. Use the other half for the low-current sensing wire. This forms a 4-wire connection, so the voltage drop and resistance of the high-current connection doesn't affect the voltage measurement accuracy.
[...] it occurs to me that I could put a bimetal switch in the sensing half of the clip. It opens if the battery post gets too hot, shutting down the test. The battery posts are probably the first external part of the battery to get hot. (Otherwise, you have to wait for the heat to soak through the thick plastic case).
By 04 Apr 2009, Lee had a schematic drawn up (NOTE: the latest schematic is this one) and provided the following description of the circuit operation with references to the actual part designators:
Cost: On-board parts cost is about $10. Off-board parts are $30 and up, depending on how much current and heatsinking you want. I used a $20 surplus dual IGBT module from eBay, though individual MOSFETs could be used. I show an $8 LCD meter for display, though a micro or data acquisition board to a PC could also be used.
Circuit description: It looks complicated, but it's really just a whole bunch of simple little circuits. The idea was to use cheap generic parts that anyone can get, and that is useful without microcomputers or software programming talents.
U1 (MC34063) is a switching power supply, to convert battery voltage (3.2v to 13.2v nominal) to 6v and 12v. U2 (LP2950) produces a precision regulated 5v reference for the system. The circuit runs off the battery under test, so you don't need a charger or AC power to do discharge tests. It is configured as a buck/boost converter since the battery under test may be lower or higher than 5v. D13 is the "power on" LED. Q1 and R2 provide a constant drive current for U1, to keep power consumption low over the huge battery voltage range. It should work from 2v to 16v.
B+ is battery positive. It is the ground reference for the system. This way I had both positive (+5v, +12v) and negative (battery negative) supplies, which is easier for the opamp circuitry.
All outputs are scaled to 2v, for use with a DMM or cheap LCD panel meter (i.e. 1.234v represents 12.34v, 0.345v is 34.5 amps, 0.123v is 123 deg.F). This range is also reasonable for PC data acquisition boards. The output is floating relative to battery negative, allowing use of LCD meters that can't measure a voltage with input negative tied to their negative power supply.
U3C and U3D (1/2 of a TL074B quad opamp) form the discharge current regulator. It is basically Steve's circuit, re-referenced to B+ so it can measure + and - (discharging and charging) currents. Re sets the discharge current, 0-100 amps. DA lets you meter the Discharge Amps setting, to precisely set Re.
Q4 and thermistor RT2 cut back the discharge rate as Q02 gets hotter. It starts to cut back around 75 deg.C, and fully stops discharging if Q02 reaches 100 deg.C.
U6 (TL431) is the charge voltage regulator. It controls Q01 as a linear series pass regulator. Rf sets the charge voltage (3.5v-16v). The CV (Charge Voltage) output meters the pot setting of Rf to precisely set the charge voltage.
U5 (TL431) is the charge current regulator. It is wire-ORed with U6 so you get a constant current bulk charge, then constant voltage finish step. Rd sets the charge current (0-100a). CA (Charge Amps) lets you meter the charging current setting to precisely set Rd.
Q3 and thermistor RT1 cut back the charging rate as Q01 gets hotter. It starts to cut back at 75 deg.C, and fully stops charging if Q01 reaches 100C.
U3A (1/4 TL074B) scales the battery voltage to 0-2v, and level shifts it to be referenced to B+. The BV (Battery Voltage) output is to meter battery voltage.
U7A and U7B (4030) is the charge/discharge mode latch. The three output states (off, charge, and discharge) are controlled by switches S1 and S2. LEDs D12 and D14 indicate whether a charge or discharge cycle is in progress.
A discharge cycle is started by S2, or starts automatically at the end of a charge cycle if S2 is already on. D12 lights, and the discharge current regulator is enabled.
U4C (1/4 LM339) detects the end-of-discharge voltage. Pot Rc sets the shut-off voltage at 2.1v to 11.5v. Output DVO (Discharge Voltage Off) meters the setpoint to precisely set Rc. When battery voltage goes below the setpoint, U4C's output DISCHARGE goes low, which resets the discharge mode latch, turning off D12 and disabling the charge current regulator.
The charger is rather sophisticated. I wanted something that would return the battery to a repeatable state of charge; otherwise, discharge amphour tests will vary a lot. Basically, it is an IU charger with turn-off timer that starts when the battery crosses a set voltage and current threshold. For example:
- charge at a constant 25 amps to 14.8v
- charge at a constant 14.8v until current falls to 2 amps
- hold at 14.8v for 20 minutes
- turn off
U4A and U4B (2/4 LM339) detect the end-of-charge conditions. U4A looks for the voltage to exceed CVO (Charge Voltage Off), and U4B looks for the current to fall below CAO (Charge Amps Off). Outputs CVO and CAO meter the pot settings.
When either CAO or CVO condition is met, it starts timer U8 (4536). Switch S3 sets the time delay from 10 minutes to 20 hours in eight 2:1 steps. When U8 times out, CHARGE goes low, which resets the charge latch U7A. D14 turns off, and the charge regulator is disabled.
Transistor Q03 is used as the battery temperature sensor; it is mounted on one half of the big alligator clip that clips onto the battery under test. Q03 basically senses the temperature of the positive post of the battery. Its output is scaled to 1mv/deg.C and output on BT (Battery Temperature).
Q03 also drives the input of U7D (1/4 4030). It is wired as a schmitt trigger to end charging and discharging if battery temperature exceeds a threshold set by Ri (30-60 deg.C).
U3B, U4D, U7C, U9, U10, and U11 all forms the amphour counter. It could better be done with a micro; but I wanted to see how much it took the old fashioned way. As it happens, there are a lot of ICs but they cost under $1.
U3B and U4D are a current-to-frequency converter. 0-100 amps (represented by 0-2.5 volts) generates a frequency of 0-1553 Hz. U3 is a FET input opamp to minimize errors at low currents due to input current. Trimpot Rj trims out the zero offset, and Rg trims the gain to get exactly 1553 Hz at 100a.
U9 (4536) divides this by 2^11 to produce a pulse every 1.318 seconds at 100a. Each pulse represents 100a x 1.318sec / 3600sec/hr = 0.0366 amphours.
U9's MONO output, C22, R12, and D11 produce a one clock cycle pulse on DO that is synchronized with the 1.8432 MHz clock (since C22 can only charge during the clock's high time).
U10 and U11 are a pair of 2^14 counters. U10 has a 1.8432 MHz crystal oscillator, which is the master timing reference for all the counters. Both U10 and U11 are reset at the start of a discharge cycle, so they have exactly the same value and count up at exactly the same rate. Their outputs are thus identical. XOR gate U7C (4030) thus outputs a zero.
A pulse from U9 removes one clock pulse from U11 by gating Q5 off for one clock cycle. Thus, U11's count is one less than U10. A 1-count difference means the XOR gate inputs are not the same for 2 clock pulses out of 2^14=16384 (one at the leading edge, one at the trailing edge).
R45, R49, and C7 take the average value of the output of U7C, and scale it to produce amphours. Output DAH (Discharge Amp Hours) = 5v x 150k/(150k+100k) x 2/16384 = 0.366mv. This represents 0.0366 amphours.
Each pulse removed from U9 makes the difference in the counters increase by exactly 0.366mv. If I did the math right, this makes each volt on the the DAH output 10mv/amphour, i.e. 2v represents 200 amphours.
Miscellaneous: I showed an LCD meter and 10-position rotary switch as the simplest display. This could be an analog meter, or PC with data acquisition board.
I showed a 12v fan, turned on by a thermostat switch on Q01/Q02's heatsink. I was actually thinking of using a PC clone power supply as the charger power source, and using its fan. But, it wouldn't surprise me if we need a bigger, more powerful fan, especially if you're charging or discharging at high currents. The little MC34063 won't be powerful enough for a high-current fan, so a charger or AC power source would be needed to power the fan.
06 Sep 2009: Relocated from main cycler page.
09 May 2009: Updated with latest revision of the schematic.
04 May 2009: Added links to latest schematic and parts list.
05 Apr 2009: Added link to older cycler device. Updated (new) cycler schematic.
05 Apr 2009: Initial revision.