NASA PCoE battery capacity

How four lithium-ion batteries cycled on a NASA test bench become a table with one capacity value per discharge.

Four lithium-ion batteries (cells B0005, B0006, B0007 and B0018) were charged and discharged again and again at the NASA Ames Prognostics Center of Excellence until each had lost 30% of its rated capacity. The table used here, NASAbattery.csv, holds each battery’s capacity, the charge delivered in one full discharge, for every discharge: 168 rows and four columns. Every value equals the capacity stored in NASA’s official Battery Data Set files for the same cells.

This page follows the data from the test bench to that table: what was measured, what the official files contain, and the steps that reduce two million logged samples to one capacity value per discharge.

4
cells
2,167
logged operations
2,089,050
logged samples
636
discharges
168 × 4
capacity table
CellDischarge cut-offNon-empty capacitiesBlank rows
B00052.7 V1680
B00062.5 V1680
B00072.2 V1680
B00182.5 V13236

The CEEMDAN battery forecasting demo uses only B0005. It numbers the discharges as cycles 1–168, so discharge 0 here is cycle 1 there.

Creators

B. Saha and K. Goebel, NASA Ames Research Center (Prognostics Center of Excellence).

Four lithium-ion cells rated 2 Ah were run at room temperature (the files record an ambient 24 °C) through three kinds of operation, repeated until each cell had lost 30% of its rated capacity (2 Ah → 1.4 Ah):

OperationProtocol (official README)
ChargeConstant current 1.5 A until the voltage reaches 4.2 V, then constant voltage until the current falls to 20 mA
DischargeConstant current 2 A until the voltage falls to the cell’s cut-off: 2.7 V (B0005), 2.5 V (B0006), 2.2 V (B0007), 2.5 V (B0018)
ImpedanceElectrochemical impedance spectroscopy sweep from 0.1 Hz to 5 kHz

From the test bench to this page

  1. DocumentedTest bench (NASA Ames PCoE)

    Four 2 Ah lithium-ion cells; charge, discharge and impedance operations, April–August 2008

  2. HeldOfficial files

    2,167 operations in four MATLAB files, from NASA’s archive

  3. DocumentedCapacity per discharge

    NASA’s stored Capacity field, one value per discharge

  4. Not recordedPivot to a table

    Made from a secondary operation table, metadata.csv

  5. HeldSupplied table

    168 × 4; every value equals the official field

Documented: described by NASA. Reproduced: rerun or checked on this page. Held: the files this page reads. Not recorded: no record says how this step was done.

One acquisition unit: one operation

Each charge, discharge or impedance measurement is stored as one operation with its own start time and time vector. The three panels show voltage, current and temperature during the second charge of B0005, as logged: constant current until the voltage reaches 4.2 V, then constant voltage while the current falls.

constant currentconstant voltage 4.2 V

Three panels share one time axis.

What each operation records

OperationFieldUnitMeaning
charge, dischargeVoltage_measuredVBattery terminal voltage
charge, dischargeCurrent_measuredABattery output current (negative while discharging)
charge, dischargeTemperature_measured°CBattery temperature
chargeCurrent_charge, Voltage_chargeA, VCurrent and voltage measured at the charger
dischargeCurrent_load, Voltage_loadA, VCurrent and voltage measured at the load
charge, dischargeTimesTime since the operation started
dischargeCapacityAhBattery capacity for discharge to 2.7 V (one value per operation)
impedanceBattery_impedance, Rectified_ImpedanceΩImpedance from raw data; calibrated and smoothed
impedanceRe, RctΩEstimated electrolyte and charge-transfer resistance
impedanceSense_current, Battery_current, Current_ratioA, —Currents in the sense and battery branches, and their ratio

Every operation also stores its type, the ambient temperature and a start date-time. Samples are logged about every 9.38 s during discharge and every 2.91 s during charge (median intervals).

4
MATLAB files, one per cell
56.5 MB
total
2,167
operations
2,089,050
samples

A file, opened

Each file holds one structure, cycle: a list of operations in the order they were run.

B0005.mat
└─ cycle[616]
   ├─ type                  charge | discharge | impedance
   ├─ ambient_temperature   24
   ├─ time                  start date-time
   └─ data
      ├─ Voltage_measured, Current_measured, Temperature_measured, …   one value per sample
      ├─ Time              seconds since the operation started
      └─ Capacity          discharges only: one number
CellFile sizeOperationsChargeDischargeImpedanceSamplesFirst → last operation
B000516.0 MB616170168278591,4582008-04-02 → 2008-05-28
B000616.0 MB616170168278591,4582008-04-02 → 2008-05-28
B000716.0 MB616170168278591,4582008-04-02 → 2008-05-28
B00188.5 MB31913413253314,6762008-07-07 → 2008-08-20

The operation sequence

Every mark is one operation, placed at its start time, with one row per cell and colour by operation type. B0005, B0006 and B0007 share one sequence and start on the same day. B0018 was run separately from July 2008. Hover over a mark to see its type and date, with its duration and number of samples (or frequency points, for an impedance sweep).

chargedischargeimpedance

What the capacity table leaves behind

Impedance sweeps are part of the same record but do not enter the capacity table. The first and last sweep of B0005 (calibrated impedance, Nyquist form):

  • Charges, voltage and temperature traces, and impedance spectra are all discarded when capacity is extracted.
  • The sample interval is irregular and differs between charge and discharge, so traces cannot be stacked without resampling.
  • Discharge numbering is implicit: operations are interleaved, and the n-th discharge is found only by counting. Across the four cells, 2,167 operations contain 636 discharges.

One recipe turns each file into one column of the table.

StepEvidenceOperationResult
0DocumentedNASA runs charge, discharge and impedance operations and writes one MATLAB file per cell2,167 operations
1ReproducedWalk the operation list and keep only discharges168 / 168 / 168 / 132 discharges
2DocumentedTake one capacity value per discharge: the official Capacity field (Ah, discharge to 2.7 V). NASA defines it; recomputed here from the logged current within 0.3%one number per discharge
3ReproducedNumber discharges 0, 1, 2… in the order they were rundischarge index
4ReproducedPlace each cell in its own column; B0018 is shorter, so its last 36 rows are blank168 × 4 table, identical to the supplied one

Follow one discharge

Pick a discharge from the menu; the three panels show its voltage, current and temperature. Capacity is the charge removed until the voltage first drops below 2.7 V: the shaded area under the current curve. After the load switches off, the voltage recovers; those samples do not count.

Checks on the extracted values

CellOfficial dischargesValues in supplied tableSupplied vs officialRecomputed vs official: median / max (mAh)
B0005168168identical2.84 / 5.32
B0006168168identical2.84 / 5.3
B0007168168identical2.81 / 5.26
B0018132132identical3.51 / 4.11

Integrating the logged current reproduces the stored capacity to within 0.3%. The table keeps NASA’s stored values unchanged.

The analysis-ready table: one row per discharge number, one column per cell, capacity in Ah. Each line is one cell’s capacity across its discharges. Hover over the chart to read all four cells at one discharge number.

B0005B0006B0007B0018

The dashed line marks the 1.4 Ah end-of-life threshold (30% below the rated 2 Ah) named in NASA’s README.

All 168 rows
ColumnUnitMeaning
(index)—Discharge number within the cell, from 0 (the CEEMDAN demo calls discharge 0 cycle 1)
B0005, B0006, B0007, B0018AhCapacity of that discharge; blank where the cell has no such discharge

  • The supplied table reached this project through a secondary operation table (metadata.csv). Its values equal the official record, but who produced the pivot, and with what code, is not recorded.
  • The stored capacity is defined for discharge to 2.7 V, but B0006, B0007 and B0018 were discharged to lower cut-offs.
  • B0018 has 36 trailing blank rows because it has 132 discharges.
  • Capacity is not monotonic: B0005 has 36 increases between successive discharges. The table alone does not establish the cause.
  • Recomputing capacity from the logged current differs from the stored field by up to about 5 mAh.

Reference

B. Saha and K. Goebel (2007). Battery Data Set, NASA Prognostics Data Repository, NASA Ames Research Center, Moffett Field, CA.

CEEMDAN battery forecasting: its Insight and Workflow pages.