Skip to content
OnlyProjects
M.Tech / M.E. · Automobile EngineeringFor educational purposes only
Code included

EV Battery State-of-Charge Estimation: Coulomb Counting, OCV Lookup and Kalman Filtering on Public Data

Three BMS estimators benchmarked on NASA and CALCE battery data under drive-cycle loads and cold-start SOC errors

Mapped to your syllabusVTU M.Tech 2022 Scheme · 22SXX41 Project Work Phase-2 · Semester 4

Overview

1 min read

SOC-Bench is a declared-protocol benchmark of three state-of-charge (SOC) estimation algorithms for electric-vehicle lithium-ion batteries, executed entirely on public, citable laboratory datasets from the NASA Prognostics Center of Excellence (PCoE) and the CALCE Battery Group at the University of Maryland.

SOC is the quantity every battery management system must report, and India's EV fleet — dominated by two- and three-wheelers — is extremely sensitive to range anxiety and premature cell ageing, both of which trace back to SOC error. Yet student projects typically demonstrate one estimator on one dataset and declare victory. This study instead implements three estimators in one framework — Coulomb counting with periodic OCV re-anchoring, OCV-lookup with resistive-drop correction, and an Extended Kalman Filter (EKF) on a first-order equivalent-circuit model — and scores them on the same cells, the same current profiles (including CALCE's dynamic DST, FUDS and US06 drive-profile tests) and the same metrics.

The evaluation protocol is frozen before any estimator is scored, in the spirit of 22RMI16: "truth" SOC is defined by OCV-anchored capacity determination, three cold-start SOC-error trials (±10 %, ±20 %) test convergence, RMSE and post-settling maximum error are pre-declared, and a parameter-sensitivity sweep (±20 % on R0, R1, C1) answers how much identification quality the EKF actually needs.

The deliverable is a paper-style study with a reproducible Python pipeline — the honest comparison an M.Tech viva can defend, with every number traceable to a public dataset and a fixed random seed.

Relevant for
Karnataka
Level
Advanced · 22 weeks · solo
Common at
Visvesvaraya Technological University, Anna University, Chennai, Jawaharlal Nehru Technological University Hyderabad
Updated
Nov 2026

Syllabus alignment

VTU · M.Tech 2022 Scheme

22SXX41 · Project Work Phase-2 · Semester 4 · 18 credits · CIE 100 + SEE 100 (viva)

Subjects this project applies
  • 22RMI16 Research Methodology & IPR
  • Project Work Phase-1 (22SXX34): literature survey and problem formulation
  • Python programming (M.Tech lab coursework)
  • Automobile engineering PG coursework: electric and hybrid vehicles, energy storage systems
How it is evaluated

50 : 25 : 25 (report : presentation : Q&A)

Also fits: Anna University M.E. Regulation 2021, JNTUH M.Tech R22.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

5 min read

Problem statement

EV battery management systems must report state-of-charge accurately under drive-cycle loads, cold starts with unknown initial SOC, and imperfect model parameters, yet published student-level work overwhelmingly demonstrates a single estimator on a single dataset with a single run — no cold-start trials, no parameter sensitivity, no declared truth definition — making accuracy claims unverifiable and comparisons between papers meaningless. There is no open, reproducible benchmark that implements Coulomb counting, OCV lookup and Extended Kalman Filtering in one framework, scores them on the same public NASA PCoE and CALCE cells under identical dynamic drive profiles, and quantifies (a) steady-state accuracy, (b) convergence from deliberately wrong initial SOC, and (c) sensitivity to equivalent-circuit parameter error. This dissertation fills that gap with a frozen evaluation protocol, a reproducible Python pipeline, and results tables that regenerate from public data — giving the Indian EV community an honest baseline for the estimator decision every BMS designer faces.

Synopsis

Abstract

This dissertation benchmarks three state-of-charge estimation algorithms for EV lithium-ion batteries on public datasets: Coulomb counting with periodic OCV re-anchoring, open-circuit-voltage lookup with resistive-drop correction, and an Extended Kalman Filter on a first-order equivalent-circuit model. Data come from the NASA PCoE and CALCE battery archives, whose DST/FUDS/US06 profiles emulate realistic drive-cycle loading. A pre-declared protocol defines truth SOC, evaluation windows, metrics (RMSE, post-settling maximum error, convergence time) and cold-start error trials, so every reported number regenerates from source data and fixed seeds. The EKF is expected to win under dynamic loads and large initial errors; the study quantifies the margin, the cost in parameter-identification effort, and the failure modes of the simpler estimators.

Introduction

An electric-vehicle battery management system owns one question — how much energy is left? — and answers it with a SOC estimate that must stay within a few percent across temperatures, ageing and aggressive load transients. Over-estimating SOC strands the rider; under-estimating it wastes usable capacity and feeds the range anxiety that Indian two- and three-wheeler buyers report most. The algorithms are classical, but their relative merits depend on data quality, model identification and initial-condition error — exactly what student projects rarely control.

Existing system and literature gap

The SOC literature is enormous, but accessible published comparisons either use private data, compare estimators under different model assumptions, or report a single favourable run without cold-start trials or parameter sensitivity. Industry BMS documentation rarely quantifies expected accuracy under drive-cycle loads. What is missing is a like-for-like benchmark on fully public, citable data with a declared protocol — same cells, truth definition, metrics and initial-error trials — so that any reviewer can regenerate every figure. This study provides that for three estimator families spanning the practical spectrum.

Proposed work

  • Parse the NASA PCoE and CALCE battery archives into a documented, versioned store; verify dataset integrity against published test descriptions.
  • Identify a first-order (R0–R1–C1) equivalent-circuit model per cell by non-linear least squares; report parameter fits and residuals.
  • Implement the three estimators behind one interface, each consuming only what a real BMS would see — terminal current and voltage.
  • Evaluate on the dynamic cycles under the declared protocol: three initial-SOC error trials per cycle, pre-declared metrics, EKF consistency checks and a ±20 % parameter-perturbation sweep.
  • Report per-cycle and aggregate results with residual diagnostics, and an operational recommendation for a low-cost Indian EV BMS.

Feasibility

  • Technical: all estimators run in Python on a 16 GB laptop (FilterPy for the EKF); the full benchmark takes minutes per cell.
  • Data: both sources are public and citable (NASA PCoE repository; CALCE open battery data with required citation), removing the private-database objection entirely.
  • Economic: zero licence cost; no hardware or cell cycling is required.
  • Operational (research): the protocol is scripted and frozen; every results table regenerates with two commands, which is the reproducibility evidence M.Tech panels increasingly demand.

Objectives

  1. 01Build a documented, versioned data store from the NASA PCoE and CALCE battery archives, verifying file integrity against the published test descriptions of each cell.
  2. 02Identify a first-order (R0–R1–C1) equivalent-circuit model per cell by non-linear least squares and report parameter fits with residual diagnostics.
  3. 03Implement Coulomb counting with periodic OCV re-anchoring, OCV lookup with resistive-drop correction, and an EKF on the identified model behind one common estimator interface.
  4. 04Define and freeze the evaluation protocol before scoring: OCV-anchored truth SOC, dynamic drive-profile cycles, cold-start trials at ±10 % and ±20 % initial SOC error, and pre-declared metrics (RMSE, post-settling maximum error, convergence time).
  5. 05Run a ±20 % parameter-perturbation sweep to quantify how sensitive each estimator's accuracy is to equivalent-circuit identification quality.
  6. 06Publish the complete pipeline and configuration so every table and figure regenerates from public data with two commands.

Scope

In scope

  • Cell-level estimation on public datasets: NASA PCoE 18650 cells and CALCE CS2/CX2 prismatic cells, including their dynamic DST/FUDS/US06 drive-profile tests and OCV/capacity characterisation runs.
  • Three estimator families: Coulomb counting (with OCV re-anchoring), OCV lookup (with R0 correction), EKF on a first-order equivalent-circuit model.
  • Declared protocol: truth SOC from OCV-anchored capacity, cold-start error trials, pre-declared metrics, EKF consistency checks, parameter-sensitivity sweep.
  • Room-temperature data only, as published in the source datasets.

Out of scope

  • Pack-level estimation, cell balancing and thermal modelling beyond what the datasets provide.
  • Ageing/health (SOH) prediction and remaining-useful-life forecasting — separate research questions.
  • Hardware prototyping or embedded implementation on a real BMS microcontroller.
  • New estimator design (e.g. unscented/particle filters appear only as future scope); the contribution is the benchmark, not a novel filter.

Methodology

The work follows a quantitative, comparative-experimental research design in six phases over 22 weeks, with the evaluation protocol frozen at the end of Phase 2 — before any estimator is scored.

PhaseWeeksActivitiesDeliverable
Literature survey & protocol1–3Survey SOC estimation literature and BMS practice; fix research questions, truth-SOC definition, metrics, cold-start trialsSurvey chapter; pre-declared protocol document
Data engineering4–7Download and parse NASA PCoE and CALCE archives; verify against test descriptions; build versioned store with QC reportDocumented dataset + integrity report
Model identification8–11Fit R0–R1–C1 equivalent-circuit parameters per cell by non-linear least squares; residual analysis; OCV–SOC curve construction with hysteresis noteIdentified models + fit report
Estimator implementation12–15Implement the three estimators behind one interface (FilterPy for the EKF); unit tests on synthetic signalsEstimator library + test report
Benchmark evaluation16–18Run declared protocol on all cells/cycles; cold-start trials; parameter-perturbation sweep; aggregate statisticsFull results tables and figures
Writing & defence19–22Dissertation in VTU format, paper-style results chapter, slides, live pipeline demoDissertation, presentation

Validation inside the study: synthetic replay tests (run the identified model forward, confirm each estimator recovers the planted SOC), EKF consistency checks (NIS within chi-square bounds), coulomb-counting sign/direction unit tests, and a full re-run reproducing all tables from fixed seeds.

Architecture & tech stack

1 diagram · 7 technologies · 1 min read

  • Python
  • NumPy
  • pandas
  • SciPy
  • FilterPy (Kalman filtering)
  • Matplotlib
  • Jupyter Notebook

The pipeline keeps data, model identification and estimation strictly separated, so the benchmark cannot accidentally train and test on the same artefact.

flowchart TD
  A["NASA PCoE + CALCE archives\ncurrent, voltage, temperature"] --> B["Parser and QC\nintegrity vs test descriptions"]
  B --> C[("Versioned data store\nper-cell time series")]
  C --> D["OCV-SOC curve + capacity\ncharacterisation per cell"]
  C --> E["ECM identification\nR0, R1, C1 by least squares"]
  D --> F["Truth-SOC builder\nOCV-anchored"]
  E --> G["Estimator interface\nsees only current + voltage"]
  F --> H["Scoring layer\nRMSE, max error, convergence"]
  G --> H
  H --> I["Cold-start trials\n±10 %, ±20 % initial error"]
  H --> J["Parameter sweep\n±20 % on R0, R1, C1"]
  I --> K["Results tables and figures"]
  J --> K

Three design decisions carry the viva. First, the estimator interface exposes only terminal current and voltage — never truth SOC, never the identified parameters of the cell under test unless the estimator legitimately needs them — so information leakage is structurally impossible and a unit test enforces it. Second, truth SOC is defined once, from OCV-anchored capacity determination on the characterisation runs, and the same definition scores every estimator; a benchmark with a per-estimator truth would be meaningless. Third, the scoring layer is the only place metrics are computed, from paired error series with declared settling windows; the cold-start and parameter-sweep runs are re-parameterisations of the same harness with recorded configurations, so the protocol in the dissertation is quoted verbatim from code rather than re-typed.

Modules

5 modules

  1. Module 01

    Data ingestion and integrity verification

    Parses the NASA PCoE and CALCE battery archives (Excel/MATLAB files) into a versioned store, checks row counts, timestamps and value ranges against each dataset's published test description, and emits an integrity report — the audit trail that makes every later number citable.

  2. Module 02

    OCV–SOC characterisation and truth builder

    Extracts the open-circuit-voltage versus SOC curve and usable capacity from low-current/relaxation segments, applies a declared interpolation policy, and produces the truth-SOC series with anchored capacity that scores every estimator identically.

  3. Module 03

    Equivalent-circuit identification

    Fits the first-order R0–R1–C1 model per cell by non-linear least squares on pulse and dynamic segments, reports fitted parameters with residuals and confidence notes, and stores per-cell parameter sets consumed by the OCV-correction and EKF estimators.

  4. Module 04

    Estimator library

    Implements the three estimators behind one interface that exposes only measured current and voltage: Coulomb counting with periodic OCV re-anchoring, OCV lookup corrected for resistive drop, and an EKF (FilterPy) on the identified model with process and measurement noise tuned on development data and then frozen.

  5. Module 05

    Benchmark harness, sensitivity sweep and reporting

    Runs the frozen protocol — dynamic cycles, cold-start trials at ±10 %/±20 % initial SOC error, declared settling windows and metrics; executes the ±20 % parameter-perturbation sweep; and aggregates per-cycle and overall statistics into the dissertation's results tables and figures.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    EV Battery SOC Estimation: A Declared-Protocol Benchmark

  2. Slide 2

    Why SOC estimation matters in India

  3. Slide 3

    Research questions

  4. Slide 4

    Gap in existing work

  5. Slide 5

    Data: public and citable

  6. Slide 6

    Model chain

  7. Slide 7

    The three estimators

  8. Slide 8

    Evaluation protocol

  9. Slide 9

    Results

  10. Slide 10

    Sensitivity and limitations

  11. Slide 11

    Conclusion & future scope

  12. Slide 12

    References & artefacts

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 16 answered free · 13 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    What is your project's novelty, given that SOC estimation is a mature field?

    The novelty is not a new filter but a like-for-like benchmark: three estimator families implemented behind one interface, scored on the same public NASA PCoE and CALCE cells, with a truth-SOC definition, cold-start trials and metrics frozen before any scoring, plus a parameter-sensitivity sweep. Published comparisons typically use private data, per-estimator model assumptions and single favourable runs; this study makes every accuracy claim regenerable from citable public archives with two commands.

  2. 02Concept

    Why does Coulomb counting drift, and how does your re-anchoring limit it?

    Coulomb counting integrates current, so every sensor bias and integration error accumulates without bound — the estimate is only as good as the starting point plus the integral of all past errors. My implementation re-anchors whenever the cell is sufficiently relaxed: at low current the terminal voltage approximates the OCV, which inverts to an accurate SOC reference that snaps the integral back. The benchmark quantifies both the drift rate between anchors and the residual error right after each anchor.

  3. 03Concept

    Why is a first-order equivalent-circuit model enough for the EKF?

    A first-order R0–R1–C1 model captures the two behaviours that dominate SOC error at cell level: the instantaneous resistive drop through R0 and the diffusive relaxation through the RC pair. Second-order models add fidelity mostly for aggressive pulse trains and thermal gradients, but each added state costs tuning and risks filter inconsistency. For a benchmark whose question is estimator ranking, the simplest model that passes its consistency checks is the defensible choice — and the sensitivity sweep shows how much accuracy the model quality actually carries.

+13 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

1 step · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

1 step · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

271 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

271 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

331 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

331 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

6 sources

  1. NASA Prognostics Data Repository — PCoE Battery Data Set (Li-ion 18650 charge/discharge/impedance runs)
  2. CALCE Battery Group, University of Maryland — open battery test data (CS2, CX2, dynamic DST/FUDS/US06 profiles)
  3. Plett, G. L., Battery Management Systems, Volume I: Battery Modeling, Artech House, 2015
  4. Plett, G. L. (2004), "Extended Kalman filtering for battery management systems of LiPB-based HEV battery packs: Part 3. State and parameter estimation", Journal of Power Sources, 134(2)
  5. FilterPy Documentation — Kalman filtering library for Python
  6. SciPy v1.x Reference — scipy.optimize (least_squares) and scipy.io for dataset parsing

Cite this bundle

OnlyProjects. (2026). EV Battery State-of-Charge Estimation: Coulomb Counting, OCV Lookup and Kalman Filtering on Public Data: M.Tech / M.E. Automobile Engineering project bundle [Educational resource]. https://onlyprojects.online/projects/mtech-auto-ev-soc-estimation-drive-cycle-benchmark

Future scope

1 min read

  • Add an unscented or particle filter as a fourth estimator and test whether nonlinearity actually costs accuracy at cell level.
  • Repeat the benchmark on temperature-segmented data (the CALCE storage/temperature tests) to study cold-weather estimator degradation.
  • Extend to state-of-health co-estimation (dual Kalman filter) on the same public cells.
  • Study LFP chemistry explicitly: its flat OCV plateau breaks OCV lookup, making the EKF's model-based advantage largest — quantify it.
  • Port the winning estimator configuration to an embedded target and measure real-time cost per cycle for a low-cost Indian two-wheeler BMS.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

M.Tech / M.E.

Aerospace / Aeronautical

NACA 0012 Airfoil CFD Validation Study Against XFOIL with Mesh Convergence

A mesh-converged OpenFOAM study of the NACA 0012 aerofoil validated against XFOIL and NASA's turbulence-modelling reference data

  • OpenFOAM v12 (finite-volume CFD, SA and k-ω SST models)
  • XFOIL 6.99 (panel method with integral boundary layer)
  • Gmsh and blockMesh for structured C-grid generation
  • +3

advanced24 wkSolo