Skip to main content
EVPulse
HomeArticlesToolsGlossaryAboutContact
Subscribe
HomeArticlesToolsGlossaryAboutContact
Subscribe to Newsletter
EVPulse

The most technically rigorous source for battery technology and EV engineering coverage.

Categories

Cell ChemistryBMS DesignThermalCharging

Resources

SearchAll BlogsGlossaryCalculatorsAboutContact

Site

Archive

(c) 2026 EVPulse. All rights reserved.

About
Coulomb Counting vs OCV Correction vs Kalman Filtering — BMS SOC Architecture Compared
Home/Articles/Coulomb Counting vs OCV Correction vs Kalman Filtering — BMS SOC Architecture Compared
bms

Coulomb Counting vs OCV Correction vs Kalman Filtering — BMS SOC Architecture Compared

May 15, 2026·13 min read·Expert
  • Table of Contents
  • The Estimation Problem — Why There Is No Direct Measurement
  • Technique 1 — Coulomb Counting: Strengths and Failure Modes
  • Technique 2 — OCV Correction: The Ground Truth You Can't Always Access
  • LFP OCV Hysteresis — The Specific Failure Mode Nobody Talks About
  • Technique 3 — The Kalman Filter: Optimal Fusion or Overengineered Distraction?
  • Equivalent Circuit Models — The Battery Model the KF Needs
  • EKF vs UKF vs Simple Weighted Fusion — Choosing the Right Architecture

Three techniques. Each one solves problems the others cannot. Each one introduces problems the others need to compensate for. The art is in the fusion — and most Indian BMS implementations are getting the fusion wrong in specific, identifiable, fixable ways.


Table of Contents

  • The Estimation Problem — Why There Is No Direct Measurement
  • Technique 1 — Coulomb Counting: Strengths and Failure Modes
  • Technique 2 — OCV Correction: The Ground Truth You Can't Always Access
  • LFP OCV Hysteresis — The Specific Failure Mode Nobody Talks About
  • Technique 3 — The Kalman Filter: Optimal Fusion or Overengineered Distraction?
  • Equivalent Circuit Models — The Battery Model the KF Needs
  • EKF vs UKF vs Simple Weighted Fusion — Choosing the Right Architecture
  • The Dual Estimation Problem — SOC and Capacity Together
  • Where Indian BMS Implementations Break Down
  • Validation — How to Know If Your SOC Estimator is Working
  • Key Takeaways
  • Resources and References

ℹ

This is the Expert level of the EVPulse Coulomb Counting series. It assumes working knowledge of BMS firmware architecture, battery electrochemistry, and control systems fundamentals. Mathematical treatment is included. For full error budgeting, production implementation architecture, and Indian-specific validation data, read the Master article.


The Estimation Problem — Why There Is No Direct Measurement

SOC is a state variable, not a directly measurable quantity. There is no electrode you can touch that outputs "remaining charge in coulombs." The only directly measurable quantities at the battery pack level are:

  • Terminal voltage V (measurable, but includes ohmic drop and diffusion overpotentials under load)
  • Current I (measurable, with sensor error)
  • Temperature T (measurable, but spatially non-uniform in large packs)

From these three measurements, the BMS must infer SOC — a hidden state variable — in real time, under load, with degraded sensors, in an environment that was not the calibration environment.

This is a state estimation problem. There are three standard approaches to solving it, each with a complementary failure mode:

Coulomb counting
Accurate dynamically, drifts with time due to integration of systematic errors
OCV correction
Accurate at rest, unavailable under load, ambiguous for LFP mid-range
Kalman filter fusion
Optimal when the model is right, problematic when it is wrong

Technique 1 — Coulomb Counting: Strengths and Failure Modes

The coulomb counting algorithm in discrete form:

Coulomb Counting with Temperature Compensation
SOCk=SOCk−1+η⋅Ikcorrected⋅ΔtQnomSOC_k = SOC_{k-1} + \frac{\eta \cdot I_k^{corrected} \cdot \Delta t}{Q_{nom}}SOCk​=SOCk−1​+Qnom​η⋅Ikcorrected​⋅Δt​

Where:

Temperature-Compensated Current
Ikcorrected=Ikraw⋅(1−TC⋅(Tk−Tref))I_k^{corrected} = I_k^{raw} \cdot \left(1 - TC \cdot (T_k - T_{ref})\right)Ikcorrected​=Ikraw​⋅(1−TC⋅(Tk​−Tref​))

Strengths:

  • Tracks SOC continuously during dynamic load conditions
  • Responds correctly to fast current transients
  • Does not require battery rest — works under full load
  • Computationally trivial — runs on any BMS MCU

Failure modes:

Complete error taxonomy for production coulomb counting

1. Initial SOC error (ε_0): If SOC₀ is wrong — e.g., the vehicle was parked and the battery self-discharged but the BMS retained the last known SOC without applying a self-discharge model — the entire subsequent count is offset by this initial error. This error does not drift further but persists until an OCV correction applies.

2. Sensor gain error (ε_gain): The sensor reads αI where α = 1 + δ_gain. The error contribution per cycle: δ_gain × Q_cycle. Systematic, accumulates every cycle.

3. Sensor offset error (ε_offset): The sensor reads I + I_offset where I_offset is a fixed bias. The error contribution per unit time: I_offset × Δt. If the vehicle is plugged in and idle (zero true current) but the sensor has a 20 mA offset, the counter is still incrementing.

4. Temperature coefficient error (ε_TC): As derived in the Intermediate article — TC × ΔT fraction of every reading is wrong. For Indian conditions, this is typically the dominant term.

5. Quantisation error (ε_quant): ADC resolution limits. At 16-bit resolution (0–400A range), step size = 400/65536 ≈ 6 mA. At low current, this is a significant relative error. Mitigated by using high-resolution ADCs or dual-range sensing.

6. Coulombic efficiency error (ε_η): The efficiency factor η is temperature and rate dependent. Assuming η = 1.0 always introduces a small but systematic error, especially at high charge rates.


Technique 2 — OCV Correction: The Ground Truth You Can't Always Access

The OCV of a fully relaxed battery cell is a deterministic function of its SOC (at a given temperature and ageing state):

OCV-SOC Relationship
VOC=f(SOC,T,αage)V_{OC} = f(SOC, T, \alpha_{age})VOC​=f(SOC,T,αage​)

Where α_age is an ageing factor. For a fresh cell at known temperature, the OCV-SOC curve is well-characterised and lookup provides direct SOC.

Rest time requirements for OCV stability:

NMC — rest time for 99% OCV stabilisation
30–60 minutes after load removal
LFP — rest time for 99% OCV stabilisation
2–4 hours (slow lithium diffusion in olivine structure)
LFP OCV plateau width
~50 mV across 20–90% SOC range
SOC uncertainty from 1 mV voltage noise in LFP plateau
~1–2% SOC

The LFP plateau problem deserves emphasis. The olivine crystal structure of LFP creates an extremely flat OCV response through most of the SOC range because the phase transformation between FePO₄ and LiFePO₄ proceeds at nearly constant chemical potential. This is electrochemically elegant and practically infuriating for SOC estimation.

OCV-SOC curves for LFP (flat plateau) vs NMC (sloped). The LFP plateau spans 70% of the SOC range with less than 50 mV change. OCV correction provides reliable SOC anchoring only at the endpoints for LFP.
OCV-SOC curves for LFP (flat plateau) vs NMC (sloped). The LFP plateau spans 70% of the SOC range with less than 50 mV change. OCV correction provides reliable SOC anchoring only at the endpoints for LFP.

LFP OCV Hysteresis — The Specific Failure Mode Nobody Talks About

LFP exhibits significant thermodynamic hysteresis in its OCV — the OCV measured after charging is systematically higher than the OCV measured after discharging at the same SOC.

LFP OCV Hysteresis Model
VOC(SOC)=VOC,mean(SOC)+M(SOC)2⋅sgn(ΔIlast)V_{OC}(SOC) = V_{OC,mean}(SOC) + \frac{M(SOC)}{2} \cdot \text{sgn}(\Delta I_{last})VOC​(SOC)=VOC,mean​(SOC)+2M(SOC)​⋅sgn(ΔIlast​)

Where M(SOC) is the hysteresis magnitude (up to 20–30 mV for LFP) and sgn(ΔI_last) tracks whether the last significant current was charge or discharge direction.

A BMS that ignores hysteresis and uses a single OCV-SOC curve will introduce a systematic SOC error of up to 5–10% depending on which branch of the hysteresis loop the cell is currently on.

⚠

Most Indian BMS OCV-SOC lookup tables are single curves measured under one condition (typically after charge). For NMC, this introduces modest error because hysteresis is small (~5 mV). For LFP, ignoring hysteresis introduces errors that can exceed the accuracy benefit of doing OCV correction at all. A BMS implementing LFP OCV correction without hysteresis modelling may be less accurate than one not using OCV correction.


Technique 3 — The Kalman Filter: Optimal Fusion or Overengineered Distraction?

The Kalman filter is a recursive Bayesian state estimator. For a linear system with Gaussian noise, it is provably optimal — the minimum variance unbiased estimator. For the nonlinear battery system, linearised variants (EKF) or sigma-point variants (UKF) approximate this optimality.

The standard KF for SOC estimation uses a battery model as the process model and the terminal voltage as the measurement:

State vector:

KF State Vector
xk=[SOCkVRC,k]\mathbf{x}_k = \begin{bmatrix} SOC_k \\ V_{RC,k} \end{bmatrix}xk​=[SOCk​VRC,k​​]

Where V_RC is the voltage across the RC polarisation element in the equivalent circuit model.

Process update (prediction step):

KF Process Model
xk∣k−1=Axk−1+BIk+wk,wk∼N(0,Q)\mathbf{x}_{k|k-1} = \mathbf{A} \mathbf{x}_{k-1} + \mathbf{B} I_k + \mathbf{w}_k, \quad \mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q})xk∣k−1​=Axk−1​+BIk​+wk​,wk​∼N(0,Q)

Measurement update (correction step):

KF Measurement Update
x^k=xk∣k−1+Kk(Vkmeasured−h(xk∣k−1,Ik))\hat{\mathbf{x}}_k = \mathbf{x}_{k|k-1} + \mathbf{K}_k \left( V_k^{measured} - h(\mathbf{x}_{k|k-1}, I_k) \right)x^k​=xk∣k−1​+Kk​(Vkmeasured​−h(xk∣k−1​,Ik​))

Where K_k is the Kalman gain — the weighting between model prediction and measurement — and h(·) is the terminal voltage model function.

Why this works: When the model prediction diverges from the measured voltage, the Kalman gain pulls the SOC estimate towards the value that would produce the observed voltage. This continuously corrects for coulomb counting drift without requiring the battery to be at rest.

Why it fails in bad implementations:

Wrong battery model parameters — The equivalent circuit model parameters (R0, R1, C1 in a 1RC Thevenin model) change with SOC, temperature, and ageing. A BMS using a single fixed parameter set calibrated at 25°C and moderate SOC will have a systematically wrong h(·) function at other conditions. The Kalman correction will then try to fix a voltage error that is actually a model error — and will distort the SOC estimate in the process.

Wrong noise covariance matrices — Q (process noise) represents how uncertain you are in your model dynamics. R (measurement noise) represents sensor measurement noise. In many Indian BMS implementations, these are set to default values from textbook examples calibrated for other chemistries and conditions. A Q set too small means the filter trusts its model too much and ignores OCV corrections. A Q set too large makes the filter chase noisy voltage measurements. Correct Q and R require empirical tuning on the actual hardware at the actual operating temperatures.

Unmodelled temperature effects on OCV — The OCV-SOC curve shifts with temperature (for NMC, approximately 0.3–0.5 mV/°C at a given SOC). A Kalman filter using a temperature-independent OCV curve interprets this OCV shift as a SOC error and applies a correction in the wrong direction. At 45°C instead of 25°C, this introduces a systematic 2–3% SOC bias purely from the temperature-OCV coupling that most implementations ignore.


Equivalent Circuit Models — The Battery Model the KF Needs

The Kalman filter needs a battery model. The standard choice is the Thevenin equivalent circuit:

1RC Thevenin model (minimum viable for SOC estimation):

  • R0: ohmic internal resistance (immediate voltage drop)
  • R1, C1: one RC network representing charge transfer and diffusion dynamics
  • OCV(SOC, T): open circuit voltage as function of SOC and temperature

2RC Thevenin model (recommended for better accuracy):

  • R0, R1, C1: as above
  • R2, C2: second RC network for slower diffusion dynamics (timescale: minutes)
🔑

For Indian operating conditions, model parameters must be characterised across the full temperature range of 0–55°C, not just the 25°C standard. The difference in R0 between 5°C and 45°C can be a factor of 3–5× for NMC. A Kalman filter running a model that assumes R0 is constant will have a systematically wrong voltage prediction at temperature extremes.

Model parameter identification is done offline using Electrochemical Impedance Spectroscopy (EIS) or pulse characterisation tests across the SOC and temperature operating space. The resulting parameter tables are embedded in the BMS firmware as lookup tables.


EKF vs UKF vs Simple Weighted Fusion — Choosing the Right Architecture

Simple Weighted FusionExtended Kalman FilterUnscented Kalman Filter
Complexity: LowComplexity: MediumComplexity: High
MCU requirement: AnyMCU requirement: 32-bit, FPU preferredMCU requirement: 32-bit, FPU required
NMC accuracy: ±3–5%NMC accuracy: ±1–2%NMC accuracy: ±0.5–1.5%
LFP accuracy: ±4–8%LFP accuracy: ±2–4%LFP accuracy: ±1–3%
Tuning effort: LowTuning effort: MediumTuning effort: High
Suitable for: Budget EVs, 2W/3WSuitable for: Passenger EVsSuitable for: Premium EVs, BEV buses

For most Indian passenger EV applications, the EKF with a properly parameterised 2RC model and full temperature compensation is the right balance of accuracy and implementation complexity. The UKF's advantage over EKF is meaningful primarily for LFP, where the OCV nonlinearity is highest.


The Dual Estimation Problem — SOC and Capacity Together

The standard Kalman filter estimates SOC while treating Q_nom as a fixed known parameter. This works while the battery is new. It fails as the battery ages.

The solution is dual estimation: run a second, slower estimator in parallel that tracks Q_nom and feeds the updated value into the primary SOC estimator.

Approaches to capacity estimation:

Coulomb counting between OCV points: Accumulate charge between two reliable OCV-SOC measurements. The observed capacity is the charge counted divided by the SOC delta. Apply a recursive least squares (RLS) update to Q_nom.

Dual EKF: Augment the state vector to include Q_nom as an estimated state. Run a single filter over the extended state space. Elegant but computationally expensive and prone to observability issues.

Forgetting factor RLS: Maintain a running estimate of Q_nom using a recursive least squares algorithm with a forgetting factor (λ = 0.99 typical) that emphasises recent cycles. Robust and straightforward to implement.

Observability of capacity from BMS measurements

Capacity Q_nom is only observable from BMS measurements when the battery traverses a significant SOC range with reliable OCV anchors at start and end. During normal urban use — repeated small top-ups between 30% and 80%, no full charges, no deep discharges — Q_nom may be barely observable for weeks.

This means the adaptive capacity estimator needs to explicitly track when reliable capacity observations are available and only update Q_nom when the observation quality is sufficient. An updater that runs every cycle regardless of observability quality will converge to wrong values during low-observability operation periods.


Where Indian BMS Implementations Break Down

Based on published evaluation data and field investigation reports from ARAI, ICAT, and academic studies on Indian market BMS platforms, the documented failure modes in order of frequency:

1. No temperature compensation on current sensor (most common) Documented in: majority of budget segment and early mid-segment Indian BMS designs. Contribution to 8% drift at 200 cycles in Indian conditions: 4–6%.

2. Single OCV-SOC curve without temperature correction or hysteresis Documented in: most LFP-based packs where the OCV curve was characterised at 25°C only. For LFP, the missing hysteresis model alone contributes 3–8% SOC error depending on recent cycling direction.

3. Fixed Q_nom with no adaptive capacity tracking Documented in: nearly all budget and mid-range designs. At 200 cycles, NMC degradation of 5–8% means Q_nom is 5–8% wrong. Contribution to SOC display error: direct 5–8% systematic optimistic bias.

4. Kalman filter tuned for temperate climate OEM (copied implementation) Several Indian OEM BMS firmware lineages trace back to licensing or copying EKF implementations from European or Korean suppliers. The Q and R matrices, the OCV parameterisation, and the model parameters were characterised for 15–35°C operating ranges. Running these unmodified in Indian 30–48°C conditions produces suboptimal fusion where the filter underweights OCV corrections that are actually reliable and overweights model predictions that are systematically wrong.

5. OCV correction only at 100% endpoint The BMS applies a full SOC reset only when the pack voltage reaches the top-of-charge threshold. For owners charging to 80%, this correction never fires. The coulomb counter runs open-loop indefinitely.


Validation — How to Know If Your SOC Estimator is Working

A SOC estimator cannot be validated by comparing its output to another SOC estimator. You need ground truth.

Ground truth method 1 — Full charge/discharge at constant current to voltage limits: Charge to 100% CC-CV. Discharge at known constant current to low-voltage cutoff. Measure total Ah discharged. This is the true available capacity and the true SOC trajectory. Compare BMS SOC output against this reference.

Ground truth method 2 — Reference electrode cell teardown: Not practical for production validation, but useful for chemistry characterisation and OCV curve measurement at multiple temperatures.

Validation metrics for production acceptance:

SOC RMS error target (passenger EV)
< ±3% across full SOC range at 25°C
SOC RMS error target (Indian conditions)
< ±5% across full SOC range at 25–45°C
SOC maximum error target
< ±8% at any point in the SOC range
Capacity estimation error target
< ±3% of true capacity at 200 cycles
Drift per 100 cycles without OCV correction
< ±2% (residual after compensation)
💡

The most informative single validation test for an Indian-market BMS: run a 200-cycle aging test at 40°C ambient, charging to 80% daily, with a monthly full charge. Measure SOC error at the end of each 50-cycle block. Any BMS that cannot hold ±5% after 200 cycles under these conditions should not be in a passenger EV. This test also reveals whether the adaptive capacity estimator is functioning correctly.


Key Takeaways

  • SOC is a hidden state variable. All three estimation techniques — coulomb counting, OCV correction, Kalman filtering — are necessary and complementary.
  • LFP's flat OCV plateau makes OCV correction useless in the mid-range and makes LFP packs uniquely dependent on coulomb counting quality — which raises the stakes for sensor accuracy and temperature compensation.
  • LFP OCV hysteresis introduces systematic SOC errors of 5–10% if not modelled. Almost no Indian BMS designs model it.
  • A Kalman filter with wrong model parameters or wrong noise matrices performs worse than simple temperature-compensated coulomb counting. The filter is only as good as its model.
  • Dual estimation — simultaneous SOC and capacity estimation — is necessary for maintaining accuracy beyond year 2. Almost no budget Indian BMS designs implement it.
  • The five most common Indian BMS failures are all fixable with existing knowledge and modest development investment. There is no fundamental reason Indian-market EVs need to have worse SOC accuracy than imported vehicles.

Resources and References

ℹ

All references verified as of May 2025. DOIs provided for all journal articles.

Foundational SOC Estimation Papers

  • Plett, G. L. (2004). Extended Kalman filtering for battery management systems of LiPB-based HEV battery packs — Parts 1, 2, and 3. Journal of Power Sources, 134(2), 252–292. DOI: 10.1016/j.jpowsour.2004.02.031
  • Plett, G. L. (2006). Sigma-point Kalman filtering for battery management systems of LiPB-based HEV battery packs. Journal of Power Sources, 161(2), 1369–1384. DOI: 10.1016/j.jpowsour.2006.06.003
  • He, H., Xiong, R., Zhang, X., Sun, F., & Fan, J. (2011). State-of-charge estimation of the lithium-ion battery using an adaptive extended Kalman filter based on an improved Thevenin model. IEEE Transactions on Vehicular Technology, 60(4), 1461–1469. DOI: 10.1109/TVT.2011.2132812

LFP Hysteresis and OCV

  • Dreyer, W., Jamnik, J., Guhlke, C., Huth, R., Moskon, J., & Gaberscek, M. (2010). The thermodynamic origin of hysteresis in insertion batteries. Nature Materials, 9, 448–453. DOI: 10.1038/nmat2730
  • Dubarry, M., Liaw, B. Y., Chen, M. S., Chyan, S. M., Han, K. C., Sie, W. T., & Wu, S. H. (2011). Identifying battery aging mechanisms in large format Li ion cells. Journal of Power Sources, 196(7), 3420–3425. DOI: 10.1016/j.jpowsour.2010.07.029

Equivalent Circuit Modelling

  • Hu, X., Li, S., & Peng, H. (2012). A comparative study of equivalent circuit models for Li-ion batteries. Journal of Power Sources, 198, 359–367. DOI: 10.1016/j.jpowsour.2011.10.013
  • Birkl, C. R., Roberts, M. R., McTurk, E., Bruce, P. G., & Howey, D. A. (2017). Degradation diagnostics for lithium ion cells. Journal of Power Sources, 341, 373–386. DOI: 10.1016/j.jpowsour.2016.12.011

Indian Market BMS Benchmarking

  • ARAI (2022). SOC Estimation Accuracy Benchmarking: Indian EV BMS Platforms Under High-Temperature Operating Conditions. Automotive Research Association of India. https://www.araiindia.com
  • SAE India (2023). Technical Session: BMS Design Challenges for Indian Climate — Proceedings. SAE India Symposium on Electric Vehicles. https://www.saeindia.org

Further Reading — EVPulse Series

  • ← Beginner: Why Your EV's Battery Percentage Is Lying to You
  • ← Intermediate: Coulomb Counting Drift — Why 0.5% Sensor Error Becomes 8% SOC Error After 200 Cycles
  • → Master: SOC Estimation Error Budgeting, EKF Implementation, and Why Indian BMS Firmware Gets It Wrong

This is the Expert level of the EVPulse Coulomb Counting series.

Published on EVPulse — India's most technically rigorous source for battery technology and EV engineering coverage.

SD

Written by

Sai Chaitanya Dasari

Battery Systems Engineer | Volvo Eicher Commercial Vehicles

3+ years in commercial EV pack development. Writing about real battery engineering from the bench.

Frequently Asked Questions

What is the fundamental limitation of pure OCV-based SOC estimation for LFP batteries?
The LFP OCV-SOC curve has a near-flat plateau between approximately 15% and 90% SOC — a region where 75% of the usable SOC range corresponds to less than 50 mV of OCV change. A sensor resolution of 1 mV in this region corresponds to a SOC uncertainty of roughly 1–2%. Combined with sensor noise and hysteresis in the OCV curve itself, OCV-based estimation in the LFP mid-range is essentially useless for precision SOC tracking. LFP packs require coulomb counting as the primary estimator with OCV used only for endpoint anchoring.
How do you choose the process noise (Q) and measurement noise (R) covariance matrices for a Kalman filter SOC estimator?
Q represents uncertainty in the model dynamics — how much you trust the battery model's prediction vs the measurement. R represents measurement noise — how much noise is in your sensor readings. Q is tuned empirically: too small and the filter trusts the model too much and OCV corrections are ignored; too large and the filter tracks noisy measurements. For Indian conditions, Q should be increased compared to temperate-climate defaults to account for higher model uncertainty from temperature variation. R is measured directly from sensor noise characterisation at operating temperature.
What is the difference between a linear Kalman filter and an Extended Kalman Filter (EKF) for SOC estimation?
A linear Kalman filter requires the system model and observation model to be linear functions. Battery electrochemical behaviour — the OCV-SOC relationship and equivalent circuit model dynamics — is nonlinear. The EKF linearises these nonlinear functions at each time step using first-order Taylor expansion (Jacobians). The linearisation error is small when the step size is small and the nonlinearity is mild — which is generally the case for SOC estimation. An Unscented Kalman Filter (UKF) avoids the linearisation entirely using sigma point propagation, and performs better for highly nonlinear OCV curves like LFP.
Why does a correct Kalman filter implementation still drift on a degraded battery?
Because the Kalman filter's battery model has a parameter — the capacity Q_nom — that the filter does not automatically update. As the battery degrades, Q_nom shrinks. If the filter's internal model still assumes the original Q_nom, the state prediction is systematically wrong — the filter believes the battery is larger than it is. The solution is dual estimation: run a separate parameter estimator in parallel to track Q_nom and update the Kalman filter's model continuously.
How should OCV hysteresis be handled in an LFP BMS?
LFP has significant OCV hysteresis — the OCV after charging is different from the OCV after discharging at the same SOC, by up to 20–30 mV. Ignoring this introduces a systematic SOC bias of 5–10% depending on the direction the battery was cycled before the OCV measurement. The fix is to track the direction of the last significant current flow and apply the appropriate branch of the hysteresis model when looking up OCV-SOC. This requires storing the hysteresis state (charge or discharge) in the BMS state variables.

Part of the bms Series

← PreviousSOC Estimation Error Budgeting, EKF Implementation, and Why Indian BMS Firmware Gets It Wrong
In This Article
  • Table of Contents
  • The Estimation Problem — Why There Is No Direct Measurement
  • Technique 1 — Coulomb Counting: Strengths and Failure Modes
  • Technique 2 — OCV Correction: The Ground Truth You Can't Always Access
  • LFP OCV Hysteresis — The Specific Failure Mode Nobody Talks About
  • Technique 3 — The Kalman Filter: Optimal Fusion or Overengineered Distraction?
  • Equivalent Circuit Models — The Battery Model the KF Needs
  • EKF vs UKF vs Simple Weighted Fusion — Choosing the Right Architecture
bms Series
  • 1Why Your EV's Battery Percentage Is Lying to You
  • 2Coulomb Counting Drift — Why 0.5% Sensor Error Becomes 8% SOC Error After 200 Cycles
  • 3SOC Estimation Error Budgeting, EKF Implementation, and Why Indian BMS Firmware Gets It Wrong
  • 4Coulomb Counting vs OCV Correction vs Kalman Filtering — BMS SOC Architecture Compared

Related In bms

  • SOC Estimation Error Budgeting, EKF Implementation, and Why Indian BMS Firmware Gets It Wrong
  • Coulomb Counting Drift — Why 0.5% Sensor Error Becomes 8% SOC Error After 200 Cycles
  • Why Your EV's Battery Percentage Is Lying to You

Weekly EV Insights

Battery engineering delivered to your inbox every week.

Similar Topics

  • SOC Estimation Error Budgeting, EKF Implementation, and Why Indian BMS Firmware Gets It Wrong
  • Coulomb Counting Drift — Why 0.5% Sensor Error Becomes 8% SOC Error After 200 Cycles
  • Why Your EV's Battery Percentage Is Lying to You
  • Thermal Runaway — What Actually Happens Inside a Cell Before It Catches Fire