EPISODE 05 · SEASON FINALE
Power & Energy + Estimation

Battery SOC: Coulomb Counting vs. Kalman Estimation

"Why your battery gauge is secretly running an optimal estimator."

⏱ ~16 minHosts: Elena & Marcus Read the transcript Companion notes (PDF)

In this episode

State of charge can't be measured directly — only inferred from voltage, current, and temperature. The obvious method, coulomb counting, integrates current open-loop, so it drifts: a tiny sensor bias integrates without bound, the initial SOC is often unknown, and the capacity you divide by fades with age. The other simple method, open-circuit-voltage lookup, is only valid at rest and is hopeless under load — especially on a flat LFP voltage plateau. Each is broken exactly where the other is strong, which is a standing invitation for the Kalman filter. We model the cell as an equivalent-circuit state space, then run the predict/update recursion: prediction is coulomb counting (and its growing covariance is the drift), while the Kalman gain optimally arbitrates how much to trust the voltage measurement versus the model — second by second. Then the modern turn: EKF vs. UKF for the OCV nonlinearity, and dual estimation that tracks capacity and resistance to give you state of health for free.

Lesson map

  1. ObjectiveSee why neither simple method works, and why every serious BMS runs a Kalman filter over a cell model.
  2. The refresherSOC defined; coulomb counting as open-loop integration and its three drift sources.
  3. What changedModel-based estimation became standard; why OCV lookup also fails alone (rest-only, load-corrupted, flat-plateau noise).
  4. The mechanismEquivalent-circuit state space; predict/update; covariance growth = drift; the gain as referee.
  5. Going modernEKF (linearize) vs. UKF (sigma points); dual/joint estimation → state of health.
  6. Industry standard + self-testEV & grid BMS, the end of "recalibrate your battery," two exercises.

Key concepts

State of chargeCoulomb countingOCV–SOC curveEquivalent-circuit model (R₀ + RC) State spacePredict / updateCovarianceInnovationKalman gain Extended Kalman filter (EKF)Unscented KF / sigma pointsDual estimationState of health

Self-test

1 · Reason the gain at two operating points

(a) Battery at rest, on a steep part of the OCV curve — the voltage is trustworthy and informative. What should the Kalman gain do, and what happens to the coulomb-counting drift? (b) Hard current draw on a flat plateau, where a millivolt of noise maps to a big SOC error. What should the gain do now — and is it the load or the flat curve that's responsible? (A good model predicts the load sag, so voltage under load stays informative.) If the reasoning feels natural, you own the filter, not just its equations.

2 · Synthesize the whole topic

Explain — as one clean paragraph — why neither coulomb counting nor OCV lookup is acceptable alone (name the integrator drift and the load/noise corruption), and how the predict/update structure uses each method to cover precisely the other's weakness. That's estimation theory in a sentence: an optimal estimator is a disciplined argument between a model and a measurement, and the gain is the referee.

Warm up in CircuitQuEEst

The matching undergraduate foundations are quests in CircuitQuEEst, the free, offline Android app for learning EE (download the APK). Play these first, then come back for the graduate-level version:

Go deeper

Companion math: the full EKF recursion (predict/update, gain, Jacobians) and a first-order equivalent-circuit state space.