Li-Ion BMS

Home resources white_papers wp_soc_estimate

White Paper - Estimating the State Of Charge of Li-Ion batteries

Coulomb Counting plus Voltage Translation give reasonable SOC estimates

There is no direct way of measuring the State Of Charge (SOC) of a Li-Ion battery. There are indirect ways of estimating it, but each suffers from limitations. This paper describes how combining two techniques can result in a reasonable estimate of SOC.

Techniques for SOC estimating anchor

Of the various techniques for estimating SOC, two are:

  • The battery voltage translation
  • The battery current integration ("Coulomb Counting")

Both techniques are useful, but each by itself is unable to reliably estimate SOC in a Li-Ion battery.

Voltage Translation anchor

In many systems, a simple voltmeter is used as a SOC indicator: the battery voltage decreases more or less linearly as the battery is discharged. This effect is more or less pronounced depending on the battery chemistry. In particular, the voltage in a Lead Acid battery decreases significantly as it is discharged. Knowing the relationship of battery voltage and SOC allows the voltmeter to be calibrated to report SOC: that is, the voltage is translated to an estimated SOC.

A major limitation with this technique is that the battery voltage is also affected by temperature and battery current. Knowing the way temperature and current affect the voltage allows one to compensate for those effects to a great extent, allowing Voltage Translation to be a used with many battery chemistries.

Using Voltage Translation to estimate SOC in a lead acid battery
Using Voltage Translation to estimate SOC in a lead acid battery.

Unfortunately, for most of its SOC range, the voltage of a Li-Ion battery remains very constant, making Voltage Translation inpractical. Yet, the voltage of a Li-Ion battery does change significantly at both ends of its SOC range: the voltage increases rapidly when full, and drops significantly when it starts getting empty. Therefore, Voltage Translation can be use to estimate SOC of a very full or very empty Li-Ion battery.

Using Voltage Translation to estimate SOC in Li-Ion
Using Voltage Translation to estimate SOC with Li-Ion cells.
Coulomb Counting anchor

Integrating the current into or out of a battery gives the relative value of its charge, just as counting currency in and out of a bank account gives the relative amount in the account. The operative word here is "relative": like all definite integrals, "Coulomb Counting" needs a starting point. If the initial charge in the battery is known, from then on "Coulomb Counting" can be used to calculate its SOC.

For example, a 2 A current into a battery, for 3 hours, will add 2 * 3 = 6 Ah to the battery charge. If the battery capacity is 24 Ah, that will increase its SOC by 6 / 24 = 25 %. That's 25 % more than it had been at the beginning; but, without knowing what the beginning SOC was, we do not know the final SOC.

Using Coulomb Counting to estimate SOC
Using Coulomb Counting to estimate relative SOC changes.

Depending on the battery chemistry, Coulomb Counting can be a very accurate technique.
Coulomb Counting doesn't work as well with Lead Acid batteries, because:

  • The significant leakage current within Lead Acid batteries does not go through the battery current sensor and is therefore not taken into account
  • Not all the charge in a Lead Acid battery is converted into useful work: some of it is converted in waste heat, an effect that is characterized by the Peukert exponent

On the other side, Coulomb Counting does work as well with Li-Ion batteries, because of their low leakage and good Peukert exponent.

Another limitation of Coulomb Counting is drift. In any integration, any small, constant error in the variable being integrated results in a drift in the result. In the case of Coulomb Counting, any small offset in the measurement of battery current, will result in the SOC drifting up (or down) over time.

Drift in Coulomb Counting due to small offset in the measured current.
Drift in Coulomb Counting due to small offset in the measured current.

Drift can become significant in applications that, for long periods, use very little battery current or shuttle current back and forth:

  • Stand-by batteries:
    • Even if the battery is full, a small offset in the current sensor will result in the reported SOC drifting all the way to 0% over time
  • Hybrid car (HEV) batteries:
    • Stand-by batteries:
    • The car uses energy from the battery when it needs it, and replenishes it when it can, trying to keep the SOC at about 50%;
    • Well, the reported SOC may very well stay around 50%; but, over time, because of some small offset in the current sensor's output, the actual SOC will drift up or down, and eventually the actual battery charge approaches either the full or empty state

Therefore, Coulomb Counting can be used to estimate SOC of a Li-Ion battery as long as there's a way of calibrating the SOC at some point, and often enough to overcome drift.

Combining the two techniques anchor

Going back to the bank account analogy: balancing your check book synchronizes the the amount you believe is in your account with the amount that your bank says is in that account. Similarly, "Coulomb Counting" needs a way to calibrate its result, so that the charge it reports is the actual SOC.
Voltage Translation provides a way of doing so, just as balanching a checkbook does for a bank account.

Combining these two techniques results in a reasonable way of estimating of SOC in a Li-Ion battery:

  • The battery current is integrated ("Coulomb Counting") to get the relative charge in and out of the battery
  • The battery voltage is monitored, to calibrate the SOC when the actual charge approaches either end
Combining Coulomb Counting and Voltage Translation to estimate SOC
Combining Coulomb Counting and Voltage Translation to estimate SOC.

If the SOC estibated through Coulomb Counting is uncalibrated (it is not equal to the actual SOC), eventually the battery will be charged or disccharged so far, that Voltage Translation can be used to estimate SOC, and cablibrate the estimate value. For example, if the actual SOC is 80% but the extimated SOC is 50%, and the Li-ion cell is charging, its voltage soon becomes higher than a threshold (say, 3.4 V), which corresponds to an actual SOC (say, 90 %). At that point, the BMS sets the estimated SOC to 90 %, to calibrate it.

Actual SOC and calculated SOC with a larger battery than known.
Example of estimated Li-Ion cell charge being much lower than what actual SOC;
calibration during charging when cell voltage crosses a threshold.

Going back to the issue of drift, let's see how combining the two techniques affects the two applications we considered earlier.

  • Stand-by batteries:
    • In stand-by, the battery is kept full, meaning that Voltage Translation will be used, avoiding the drift of Coulomb Counting
  • Hybrid car (HEV) batteries:
    • When the battery's actual charge does drift close either end, Voltage Translation is used to calibrate the reported SOC
    • In an HEV, the actual SOC doesn't matter that much: what does matters is that the car expects the battery to have enough energy left when extra energy is needed to accelerate, and to be able to accept excess energy when braking.
    • The problem is if, just as the car needs extra energy, the car realizes that the battery is actually empty (and the reported SOC needs to be calibrated): the performance of the car will leave to be desired.
    • The HEV will attempt to handle this problem by determining when it's OK to do a test (such as in the middle of a long trip at highway speeds), and let the battery charge up to the point that the Voltage Translation method can be used to calibrate the SOC, and then return to 50% SOC.

For the above method to work, the capacity of the battery must be known a priori. Otherwise:

  • The integration rate of Coulomb Counting will be wrong, resulting in a battery that appear to change SOC too slowly or too quickly
  • When using Voltage Translation to calibrate the SOC at the top, the SOC at the bottom is uncalibrated; and vice-versa

In application in which this could present a problem, there is a need to measure battery capacity.

Measuring capacity anchor

If a battery is used in applications where knowing the SOC is crucial (such as Electric Vehicles), there is a need to measure its actual capacity. The battery capacity is measured by integrating its current from completely full to completely empty (or vice-versa).

Measuring battery capacity
Measuring battery capacity: starting from a full cell, use Coulomb Counting to measure the charge out of it, until discharged (as indicated by its voltage). That charge is the cell's capacity.

The problem is that not all applications will use up all the battery's energy in one session. And, in many cases, the battery will be recharged fully even though the battery was not completely empty to start with.
In the following applications, capacity measurement is not really possible:

  • Stand-by batteries:
    • High end: the battery is kept fully charged, so this end is OK
    • Low end: batteries are sized so that they do not discharge completely before the power is expected to return. If the batteries were to be fully cycled once in a while just to measure their actual capacity, a power outage may occur right in the middle of it, and that would not be acceptable
  • Electric vehicles:
    • High end: the battery should be fully recharged before use, so this end is OK
    • Low end: if the vehicle is driven until the battery is completely empty, the user will be stranded, so one cannot rely on that happening
  • HEVs:
    • High end: the battery is aways kept around 50 %, and never allowed to go above about 75 %
    • Low end: the battery is aways kept around 50 %, and never allowed to go below about 30 %
  • PHEVs (Plug-in Hybrids):
    • High end: the battery should be fully recharged nightly, so this end is OK
    • How end: the battery is never allowed to go below about 10 %

In some of the above applications, knowing exactly the SOC or the capacity is not important; for example, in HEVs and PHEVs, there is a gasoline engine to get you home. In others (specifically EVs), knowing the SOC and the capacity is important, and therefore the limitations of the above techniques are a concern.


Creative Commons License "State Of Charge estimate with Li-Ion batteries" by Davide Andrea is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. Permissions beyond the scope of this license may be available by contacting the author.

Davide Andrea, Elithion, 1/10/09

© 2008~2014 Davide Andrea. All rights reserved, except where noted by CC mark. Page published on Nov 08 2009. Graphic design by morninglori