(note that this is a design document. The ideas presented here are an exploration of the different possibilities for controlling and monitoring the charging of lead-acid storage batteries)
Why a Battery Tender?
If the benefits of digital technology are to impact education in the developing world, it needs to be reliably available during the school hours. Now that the XO-1.75 has a battery life of 4+ hours, that part of the problem seems solved. But the School Server, providing a gateway to the internet, local content, collaboration, also needs to be available, even when the rolling blackouts occur. Battery backup for the School Server is essential, and lead-acid technology is still the most cost effective solution.
How to Kill a lead-acid storage battery:
- Continue to charge it after it is already fully charged.
- Let it discharge to the point where you have used up more than 50% of the energy it has available. Let it discharge all the way, and it may die in a few days just sitting.
- Let it run out of electrolyte, or add contaminated water, rather than distilled water
- For the cheapest “flooded” lead acid batteries, additional lifespan can be achieved if they are overcharged every month, for a period of an hour or two (called an equalizing charge).
It’s a challenge to use a lead-acid battery in a way that permits it live out its natural lifespan of three to five years:
Functions of a Battery Tender
The arduino can serve multiple purposes at the heart of the Battery Tender:
- Using its pulse width modulation output, it can control the charging current applied to the battery. In this capacity, it can take energy from a 100 watt solar panel, or from a 30 watt laptop power brick, and provide the optimum charging profile for maximum battery life.
- The arduino can accumulate information about electrical current into and out of the battery, and display on the lcd panel the current charge state, and the apparent maximum capacity of the battery (as a battery ages, its output voltage declines more rapidly as energy is removed).
- The battery tender can also provide the short over charging pulses which desulfate the lead plates.
- Connected to the School Server, the arduino can create a log to accumulate historical data about the health and function of the battery. This data can be transmitted to a server on the internet for display to any internet connected browser.
There are essentially three almost independent circuits: charge controller, current and voltage sensor, and desulfate pulser.
Current and voltage sensing
The arduino has 6 inputs that measure 0-5 volts, and divide that range of voltages into 1024 voltage steps. I’ve played with a number of circuits that are trying to change current and voltage into this 0-5 volt range.
I’ve experimented with different means of measuring battery charge and discharge current. The hall effect transducers seemed to me a good choice because they can be configured to have their outputs in the 0 – 5 volt range. But they are expensive, $17-27, as as I learned the hard way, from some manufacturers, very fragile.
Next, I tried commercially available shunt resistors. The .001 ohm 100Amp capable one was almost $20 and big and bulky. The 100 A seems overkill. I came across a DIY reference to making your own shunts at http://www.reuk.co.uk/Make-a-Shunt-Resistor.htm, and more recently I’ve been considering a 1 watt .05 ohm resistor from digikey for less than a dollar.
Skipping over a long description of the more expensive op-amps, and the breadboard circuits which went into oscillation, I finally put together a breadboard that was inexpensive, and worked well enough so that I could focus on writing the arduino program to translate the voltages to currents, and spit them out on a lcd shield piggybacked on the arduino.
Scott Ananian, from OLPC Boston, designed an arduino board for the XO that he costed out in 100 quantities at digikey in the $5 neighborhood. He documented his work designing the circuit board, using Eagle, and I just had to try my hand. Eagle is really fun. The two attachments show the circuit and the in-process circuit board layout. But that’s as far as I have gotten. Next I need to get, and tweak the design rules that the Eagle program will use in its routing and trace generation phase. Then I was hoping to get some PC stock, and use the Xerox resist method of etching the board.
The circuit I breadboarded it from the application note at http://cds.linear.com/docs/en/application-note/an105.pdf
It was a battery salesman I met that suggested that school servers should have a “desulfating” function. The best internet description of the process I have found is at http://fucimin.altervista.org/desulf/desulfator.pdf. The idea is basically that all lead acid batteries are subject to a process, called sulfation, which is the build up of sulfur crystals on the plates of a lead acid battery which are not electrically active, and destroy battery function.
(note: In the interest of getting a useful device out the door, and because the controller needs to be scaled to the size of the batteries, and solar panels employed, I decided to drop the idea of including the Charge Controlling function in my battery tender).
The Battery Tender uses a series switching regulator, which essentially disconnects the battery from its charging source to a variable degree, based upon the voltage and current profiles that are required for maximum battery life. The circuit is developed by an open source community in the UK. See :
A switching regulator uses an inductor to limit and vary the flow of current. It is more complicated that a series resistive element, but it consumes less power, and can handle larger currents for a given size because it doesn’t need to dissipate as much heat.
The program running on the arduino, called a sketch, controls the series regulator by changing the width of the pulses that drive the Field Effect Transistors (FET’s). A long duty cycle connects the battery to the charging source, for a greater percentage of the time.