A high capacity lithium battery tester with printout

I mentioned a while ago I had made a version of my single AA cell tester which can test high capacity LiFePO4 batteries with a nominal voltage of 24 volts (8 cells) which I had made for work as we supply 30 and 60 amp hour batteries which need to be tested. I have finally got the hardware and software version complete enough to a point where it works satisfactorily so I’m going to mention it here.

Arduino based 24V battery tester
Completed tester showing the load bank box, controller and finally the Epson TM88 printer on the top

The basics

A simple battery tester that puts a load of approximately 5 amps or 10 amps (selectable) onto a battery with a typical capacity of 30 or 60Ah. The tester displays time lasted and an approximate total amp hour / capacity reading and prints the results onto a Epson TM88 series thermal printer. An RTC is included so testing time and date can be stamped onto the result then a receipt can be given to a customer if required etc.

Schematic and code

The program was written with Atmel Studio so the download includes the compiled binaries, the Atmel Studio project files and the Arduino file. The code is based on my single AA battery tester which is heavily modified but still could do with further improvements if needed and make better use of the RTC module. The schematic has a 0.01uf capacitor across the battery inputs to stop interference at 90Khz from a switching regulator used in the battery pack from causing erratic readings. I had also fitted a Murata EMI filter in series with the battery but this should not be required for most uses. It was just particular to our product. I would suggest still fitting that 0.01uf capacitor though.

Code for 24V LiFePo4 tester

LiFePo4 battery tester schematic
Schematic for the LiFePo4 battery tester

Other notes regarding the build

As this tester puts a load of 10 amps (at 24 volts) the load resistors will get hot as they will be dissipating up to 280 watts so I had used several resistors in parallel rated at 150W each to spread the load. These were mounted onto a large heatsink fitted into an old ATM power supply case which contained a 140mm cooling fan. Even with this the resistors reached a temperature of 65 degrees centigrade. Also thick cables to the load resistors and battery are a must; I used cable rated at 32 amps to be sure and to reduce voltage drops.

Printout sample
Sample printout from the battery tester

I’m not going to give this project a full page as it’s a modified existing project and could still do with improvement. Although it is designed and calibrated for LiFePo4 batteries it can be used to test lead acid car or truck batteries and lower voltage batteries. The VCAL value I have used in the code adjusts the total Ah reading to compensate for the resistive load; if this is not used the total Ah rating displayed will be lower than the actual battery capacity. Testing a known good battery e.g a new one is required to determine the VCAL value. Lead acid batteries perform differently to Lithium and the VCAL value will need to be calculated and changed accordingly.

The accuracy of the voltage reading was pretty much spot on. If anyone does decide to build or base their project on this then proper grounding of the digital and analog grounds is a must. Filter capacitors are definitely a must on the ADAC inputs, MCU supply pins and the Vref supply. Readings are in 5mV steps due to the limited resolution of the ADAC built into the ATMega328. But for this application precision is not required.

Reading the true Ah rating of a battery could be improved by adding a function to measure the current drawn from the battery and then calculate the amp hour rating more accurately. However to do this it would need too much code change and for our application we are only interested in how long a battery will last for with a given load comparing to a known good one. The approximate amp hour rating is a bonus.

I will be making a simpler 12V version for testing SLA batteries at some point. This will not have the RTC, printout nor the dual selectable load.