I am trying to implement an extremely simple lead acid battery state-of-charge (SOC) estimation calculation. The following values are known:

1. $V_F$ for SOC=100%: Open circuit voltage of the battery when full
2. $V_E$ for SOC=0%: Open circuit voltage of the battery when empty
3. $V$: The real-time terminal voltage
4. $I$: The real-time load current

Using $V_F$ and $V_E$, if you know the present $V_{OC}$ (open circuit voltage), you can calculate the SOC using this simple formula:

$$SOC = \frac{V_{OC}-V_E}{V_F-V_E}$$

A common issue, and my problem, is that I can't afford to stop using the battery long enough (up to 12 hours according to some of the literature) to get a stable read on $V_{OC}$.

So, can I use the load current and terminal voltage to approximate $V_{OC}$, and then calculate the SOC?

I'm fine with a rough estimate (80% accurate or so), and possibly some method which calibrates periodically whenever I know (by some other means) that the battery is full or empty.

• Where is your formula coming from? For what I know, oc voltage tells very little about the battery SOC. A dead battery might well have an high open voltage that rapidly drops when the load is increased. – Vladimir Cravero Oct 5 '16 at 21:45
• @VladimirCravero, I first found it here but have seen it a few other places as well. Also, the OC voltage will always be higher than loaded voltage - but it can still benchmark SOC - for lead acid, the voltage/SOC relationship is linear enough for my purposes. – LShaver Oct 5 '16 at 21:52
• "I can't afford to stop using the battery long enough (up to 12 hours according to some of the literature) to get a stable read" - how long can you afford to stop using it for? Can you measure the current while it is in use? – Bruce Abbott Oct 6 '16 at 2:35
• @BruceAbbott, yes, I can measure current in real-time. This is for a microgrid application, so switching off the loads periodically just to get an open-circuit voltage reading isn't really an option. – LShaver Oct 7 '16 at 1:31

A typical profile for a battery is shown below:

As you can see, say from 10% to 90% state of charge (SOC), the open circuit voltage, $$\V_{oc}\$$, pretty much behaves linearly. Note that the profile depends on whether you are charging or discharging, but the behavior is about the same.

Say your battery has a capacity called $$\C_{nom}\$$ in units of Ampere-hour. Then, the state of charge ($$\soc\$$) (a unitless quantity) is:

$$soc=\frac{Q}{C_{nom}}$$

Where $$\Q\$$ is the charge on the battery at time $$\t\$$. Now, if you know the current that you are drawing from the battery, you can determine $$\Q\$$ since

$$\frac{dQ}{dt}=-i_{bat}(t)$$ or equivalently,

$$Q(t)=-\int{i_{bat}(t)dt}$$

The negative sign because the battery is being depleted. If you were charging the battery, this sign is positive. You could now re-write the state of charge as follows:

$$soc=-\frac{1}{C_{nom}}\int{i_{bat}(t)dt}$$

If you look closely, the state of charge remains a unitless quantity, as it should, since $$\C_{nom}\$$ is in Ah and so will be the integral of the current (For sure, Amps times some unit of time).

To better show what I am modeling here, look at the following circuit:

simulate this circuit – Schematic created using CircuitLab

You could easily derive what I did from that circuit, notice that I haven't added the typical loss resistor in series with $$\V_{oc}(soc)\$$, which I am guessing you want to omit.

As you see that $$\V_{oc}\$$ is a function of the $$\soc\$$ as expected. One caveat though, is that you need to guess an initial state. Say, you suspect the battery was initially 100% charged and measure that voltage. Then you could find the $$\soc\$$ with the equation provided above.

You need an estimate for the initial charge because of the constant of integration that you would get when you integrate the current. That is,

$$soc=-\frac{1}{C_{nom}}\int{i_{bat}(t)dt} + soc(0)$$

I am just explicitly showing the constant of integration which you would need to guess at the beginning of the experiment. I would start at a point which I presume the battery to be 100% charged and measure the $$\V_{oc}\$$ and it is also necessary to know $$\V_{oc}\$$ when the battery is presumed to be discharged. You may not get accurate results because both ends of the $$\V_{oc}\$$ vs $$\soc\$$ plot (less than 10% $$\soc\$$ and more than 90% $$\soc\$$) are very nonlinear.

But since you already have the values for $$\V_F\$$ and $$\V_E\$$, you can simply map the value of the $$\soc\$$ you find through the equation I provided to a value for $$\V_{oc}\$$.

So you could estimate the state of charge, if you know the current being drawn, by integrating. And the state of charge will linearly map to a value of $$\V_{oc}\$$ $$\\in[V_E,V_F]\$$, which are values you already have for the ends of the state of charge spectrum.

One last thing is the sign of the integral, the negative sign comes from discharging the battery. If you were charging the battery, the sign in front the integral would be positive.