Close
0%
0%

Internal Resistance of Lead Acid Batteries

A project to automate the measurement of internal resistance for lead acid batteries to determine if pulse conditioning is of any benefit.

Similar projects worth following
This project takes a cheap assembly, $2 delivered, from China and turns it into a test fixture for measuring the internal resistance of small lead acid batteries.There were two motivating reasons for this project. The first, and a long standing one, was to determine if some of the rejuvenate, repair or restore ideas I had come across had any objective merit. My inital tests of a pulse conditioning circuit suggested it had merit but I wanted a more rigourous approach.I was looking for a way to automate the entire measurement, conditioning and charging process to firmly establish if there was any benefit in pulse conditioning these batteries. Then I stumbled across the project at https://hackaday.io/project/16097-eforth-for-cheap-stm8s-gadgets. I was so excited I just had to build my own battery tester. It works so well it was only fair to share it.

Overview

This project uses the W1209 thermostat board, readily available for under $2. What I did was make a few small modification to the board:

  1. remove the 20k smd resistor next to the sensor connector,
  2. throw the sensor in the junk box,
  3. add a 10k resistor across the sensor connector (underneath if a smd resistor or remove the connector if using a through hole resistor)
  4. add a 30k resistor (or two 15k resistors in series) from the upper terminal of the sensor connector to the +12v rail.

Then I built a 1A constant current load from a 5v regulator and two 10 ohm resistors. You probably have those in your junk box ready for a project like this.

At present my board works as follows:

  • after connection to the battery  I hit the "+" key to run the measurement routine. It takes about 1 second and in that time it reads the battery voltage 32 times, summing the result, activates the relay which increase the current drawn by 1 amp and takes a further 32 measurements of the battery voltage summing those results, releases the relay then saves these two sums into eeprom
  • I then hit the "set" key  and the display shows me the average of the open circuit voltage, the loaded battery voltage, and the calculated internal resistance.
  • If I hit the "-" key the run counter is reset to zero.

The current partially discharge battery I tested this project on had a beginning voltage of 12.8V, a loaded voltage of 12.5V, and an internal resistance of 0.2 ohms.  Why not 0.3 ohms? That's the result of scaled integer maths. The 0.2 ohms is the correct answer. e.g. 12.81 - 12.59 = 0.22. But the display only shows voltage truncated to 0.1v.

My longer term goal is a test fixture that repeats daily a charge of the battery, measure the internal resistance, then applies the pulse conditioning until it is time to start the cycle over again. Then once every 8 weeks I can either dump the data back to the PC by reading the eeprom, or read the data via the display for whatever run I chose.

Batttest V3.frt

Timing and duration of testing changed. Added decimal point to voltage displays and ability to review all readings.

frt - 4.29 kB - 09/12/2017 at 04:43

Download

Batttest V2.frt

Update to show 0.2 ohms as 200 on display, not 2.

frt - 3.26 kB - 08/13/2017 at 13:24

Download

VID_20170812_135057.mp4

How the display presents the results

MPEG-4 Video - 13.99 MB - 08/12/2017 at 05:59

Download

Batttest.frt

Version 1 code for the W1209 board

frt - 3.08 kB - 08/11/2017 at 12:09

Download

  • Initial Results of Pulse Conditioning

    richard10/05/2017 at 02:57 0 comments

    It's been about 4 weeks now and some observations of the impact pulse conditioning has had on internal resistance and perhaps battery capacity are warranted. More importantly, the need for a more rigorous approach has become apparent.

    Over this time the measured internal resistance has fallen from 264 milli-ohms to 175 milli-ohms. While the reduction in the internal resistance tapered off after about 10 days, there is some support for the battery's capacity having increased as well. At the start I was recharging the battery after 3 days on the pulse conditioner. Now it runs for 5 to 6 days before I have to recharge the battery.

    So my initial observations are that the pulse conditioner is beneficial. However, there are several issues with the approach and the results cannot be construed as anything other than weak support for pulse conditioners. 

    The biggest drawback to the approach is the lack of a control battery. With a second battery I could cycle one on the pulse conditioner whilst the other was cycled on a static load. If the static load battery showed little, or no improvement, in internal resistance then there would be much stronger support for the pulse conditioning approach.

    Another drawback stems from the lack of automation. I still have to manually changeover the battery at each step of the pulse, charge, measure cycle. So the time between measurements is not constant and the level of charge and discharge varies from one cycle to the next. I clearly need to automate the cycle and let it run unattended. 

    The final obvious shortcoming is temperature. We are moving towards summer and the average ambient temperatures have increased over the last month. The temperature change could be influencing the results either directly via battery chemistry somehow, or indirectly by it's impact on the voltage regulator which serves at the voltage reference for hte D2A conversion. A temperature controlled testing environment would be useful to remove another source of potential error but that is beyond my reach at present.

    The biggest obstacle to the full automation with the W1209 board is the need for an additional two digital outputs. I have considered two approaches. The first is using the + and - keys as both inputs and outputs. That would require some careful soldering to insert a resistor, say 2k, in series with each switch. The second approach is a 4017 counter clocked by the pin driving the relay. Then each of the decoded outputs for 1-3 from the 4017 driving a relay to perform each step of the pulse charge measure cycle.

    I'm leaning towards the first approach since I don't know if I have a 4017 in the drawer and the first approach avoids any ambiguity over which step the cycle is in.

  • Version 3 of Code

    richard09/12/2017 at 04:41 0 comments

    After hours running various tests to determine when the voltage samples should be taken I concluded there was no right answer. Mind you, the sweet joy of using Forth to do this via the serial port was a reward in itself. ( Timing loops could be tested interactively, results displayed on the terminal window, etc etc. )

    I settled on a longer delay before sampling the loaded voltage, or Vend in the code, then a short delay before sampling the unloaded voltage, or Vbeg in the  code. Because of the way the voltage depresses over time, then recovers, I doubt there is a right way to do this. But my training in Statistical Process Control and Gauge Capability steered me in this direction.

    I now have a testing method that gives me repeatable readings provided each test is run hours apart. So while the calculated internal resistance might not be the value according to some standard it should allow me to discern if my pulse conditioning circuit has any impact over time on the internal resistance.

    Over the next few weeks I'll run my trials and see what happens.

  • Subtle modification to code needed

    richard09/11/2017 at 13:00 0 comments

    I've held off posting the updated code for the x4 resolution enhancement. What I found when I ran the test on my battery 18 times in succession was the internal resistance fell. I need to try a longer delay before measuring but time is short tonight.

  • Improved measurment resolution

    richard09/11/2017 at 03:19 0 comments

    The initial project used a voltage divider to reduce the measured voltage down to less than 5V. This means the voltage resolution is about 20mV which means the internal resistance measurement for 1 amp of current is 0.020 ohms.

    Instead of dividing by 4 with a resistor string, what if we subtracted 10V from the voltage to be measured? This would give us a voltage resolution of about 5mV with an internal resistance measurement for 1 amp of current is 0.005 ohms. This seems like a worthwhile improvement and can be easily achieved.

    I had never played with a voltage subtracter before but it proved to work first time. Reaching into the junk box I pulled out a NE5532 dual op amp. I had no reason to chose this device over any other except I had hundreds I had recovered from a couple of boards. A few resistors and it was done. 

    While I used a NE5532 and 2.4k resistors I don't think there is anything critical about this. Just about any op amp will probably work and the resistors could be anything between perhaps 1k and 100k. As long as they are all the same value.

    While this is not yet the complete measurement tool I wanted it will allow me to make some measurements on the impact, if any, pulse conditioning has on internal resistance.

  • Improvements

    richard08/13/2017 at 13:23 2 comments

    While working on a small hardware modification to improve the resolution the obvious improvement hit me: change the display for the ohms so that 200 milliohms reads as 200, not 2.

    It was easy but due to the 16 bit maths it required a new word.

    V2 of code posted.

View all 5 project logs

  • 1
    W1209 Board modifications

    This project uses the W1209 thermostat board. What I did was make a few small modification to the board:

    1. remove the 20k smd resistor next to the sensor connector,
    2. throw the sensor in the junk box,
    3. add a 10k resistor across the sensor connector (underneath if a smd resistor or remove the connector if using a through hole resistor)
    4. add a 30k resistor (or two 15k resistors in series) from the upper terminal of the sensor connector to the +12v rail.

    Then I built a 1A constant current load from a 5v regulator and two 10 ohm resistors. You probably have those in your junk box ready for a project like this.

    My binary used the sensor port as part of the serial communications so I had to remove the surface mount cap. Later binaries which you will use now interface the serial communications via the + and - keys. Full marks to the project team for that.

View all instructions

Enjoy this project?

Share

Discussions

Arya wrote 08/15/2017 at 08:01 point

Hey, that's interesting - I like to see real-world projects with Forth for STM8 used!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates