Electronic – How to measure the car battery charge with good precision

automotivebatteriesgaugelead-acid

My goal is to replace the analog battery gauge in the dashboard – with a more accurate, digital gauge.

My first idea was to look for a specialized IC. I'm familiar with battery gauges for LiPo batteries like the STC3100IST, so I thought "probably there's something similar for lead-acid batteries, since they are used in nobreaks".

And indeed there was, like the bq78412 – but all hard to find, overwhelmingly complex. Also, they are designed to measure multiple cells, with current measuring features which for a car are of course not useful (think about installing a current sensing resistor…)

Then, my second choice was just to use an ADC after a voltage divider made with resistors to reduce from the 12-14V to hundreds of milivolts – giving a 10x margin to survive voltage spikes.

But this second choice seems almost too simplistic. Will it work? Will it survive the harsh environment a car is? Are there any feasible alternatives?

Thanks in advance.

Best Answer

You actually don't need a sophisticated setup (like bq78412) for measuring the SoC of a starter battery in a car. Your second approach with measuring the battery through a voltage is adequate.

The lead-acid batteries can be split into two (2) groups:

  1. Starter batteries, such as the ones found in common cars and motorcycles. These always operate high SoC under normal conditions. They are discharged by the starter for just a few seconds. That takes may be 5% of the charge. Afterwards, they are recharged by the alternator in just a few minutes. An important requirement for starter batteries is the ability to deliver high current.
  2. Deep cycle batteries are designed to discharge down to 20%. Probably, bq78412 was made with deep cycle batteries in mind.

If you know the battery capacity within 20%, you can still detect the faults, which you're describing (lights left on, defective alternator or battery).

P.S. This question have been up for a day, there are no responses, we've got use cases from @fceconel in his comments. I feel that I can provide a systems-engineering answer.