Estimating battery capacity remaining from SLA connected to motors

batteriescurrentcurrent measurementmeasurementpower

I have an SLA battery, at say 10 Amp-Hours, connected to 3 high power motors. Each motor can draw up to 10 Amps each (worst case / max power). Using Q = It as an approximation, I see that I get 1200 seconds of usage. (Q = 3600*10, I = 30, t in seconds)

For my application, what circuit can I built/add on to measure (estimate) the charge remaining? Right now it's literally just SLA battery –> motor controllers –> motors, with an Arduino connecting to the motor controllers.

I was wondering if something like this: https://www.sparkfun.com/products/11005 could connect to the battery leads, the other end to Arduino, and then I sample the current every few milliseconds and "subtract" the charges from my total of 10 Ah. E.g. charge_used = sample_period * current_measured; followed by charge_remaining -= charge_used;.

Are there better ways of measuring the remaining battery capacity? Is my approach even feasible?

Cheers

Best Answer

Your approach is feasible, however there are a few caveats:-

Charge remaining depends on how much charge was originally stored in the battery, and how much can be extracted from it at the current being drawn. Lead-acid battery capacity drops off dramatically at high discharge rates. A 10Ah SLA may only last 10 minutes (not 20 minutes) at 30A, and 40 minutes (not 1 hour) at 10A. So you should add a 'derating' factor to your calculations, based on the discharge rate.

Unless you know how much charge the battery had in it initially, you cannot know how much capacity is left! Depending on the charging current and algorithm used, an SLA battery could take 15 to 30 hours to fully charge. Can you guarantee that it will get a full charge before use? If not then you need some way to gauge how much charge it has at the start. One way to do that is have the measuring circuit permanently connected to the battery, so it can also measure how much charge is put into the battery during charging. This is the basic principle behind so-called 'fuel gauge' battery monitoring ICs.

Another way to estimate state of charge is to measure the terminal voltage. At low current the voltage curve is quite flat over most of the discharge cycle, but at high current it has considerable slope that can be used to estimate the charge state.

You could measure both current and voltage to get both capacity used, and an estimation of remaining capacity from the instantaneous voltage and current based on the known characteristics of your battery (eg. when voltage drops to 10V at 30A you know that there is virtually no capacity left). The two methods should converge, but voltage would be given greater weight as the battery approached full discharge.

Note:- Sparkfun's SEN-11005 is a current transformer that works on AC only (it cannot measure DC current). You need either a Hall-effect current sensor, or (for better accuracy) a low resistance current shunt and amplifier. You are only interested in the average current, so you can apply heavy low-pass filtering to smooth out the signal and reduce the required sampling frequency.