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.
| Cell | Discharge cut-off | Non-empty capacities | Blank rows |
|---|---|---|---|
| B0005 | 2.7 V | 168 | 0 |
| B0006 | 2.5 V | 168 | 0 |
| B0007 | 2.2 V | 168 | 0 |
| B0018 | 2.5 V | 132 | 36 |
The CEEMDAN battery forecasting demo uses only B0005. It numbers the discharges as cycles 1–168, so discharge 0 here is cycle 1 there.
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):
| Operation | Protocol (official README) |
|---|---|
| Charge | Constant current 1.5 A until the voltage reaches 4.2 V, then constant voltage until the current falls to 20 mA |
| Discharge | Constant 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) |
| Impedance | Electrochemical impedance spectroscopy sweep from 0.1 Hz to 5 kHz |
From the test bench to this page
- DocumentedTest bench (NASA Ames PCoE)
Four 2 Ah lithium-ion cells; charge, discharge and impedance operations, April–August 2008
- HeldOfficial files
2,167 operations in four MATLAB files, from NASA’s archive
- DocumentedCapacity per discharge
NASA’s stored Capacity field, one value per discharge
- Not recordedPivot to a table
Made from a secondary operation table, metadata.csv
- 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.
Three panels share one time axis.
What each operation records
| Operation | Field | Unit | Meaning |
|---|---|---|---|
| charge, discharge | Voltage_measured | V | Battery terminal voltage |
| charge, discharge | Current_measured | A | Battery output current (negative while discharging) |
| charge, discharge | Temperature_measured | °C | Battery temperature |
| charge | Current_charge, Voltage_charge | A, V | Current and voltage measured at the charger |
| discharge | Current_load, Voltage_load | A, V | Current and voltage measured at the load |
| charge, discharge | Time | s | Time since the operation started |
| discharge | Capacity | Ah | Battery capacity for discharge to 2.7 V (one value per operation) |
| impedance | Battery_impedance, Rectified_Impedance | Ω | Impedance from raw data; calibrated and smoothed |
| impedance | Re, Rct | Ω | Estimated electrolyte and charge-transfer resistance |
| impedance | Sense_current, Battery_current, Current_ratio | A, — | 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).
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| Cell | File size | Operations | Charge | Discharge | Impedance | Samples | First → last operation |
|---|---|---|---|---|---|---|---|
| B0005 | 16.0 MB | 616 | 170 | 168 | 278 | 591,458 | 2008-04-02 → 2008-05-28 |
| B0006 | 16.0 MB | 616 | 170 | 168 | 278 | 591,458 | 2008-04-02 → 2008-05-28 |
| B0007 | 16.0 MB | 616 | 170 | 168 | 278 | 591,458 | 2008-04-02 → 2008-05-28 |
| B0018 | 8.5 MB | 319 | 134 | 132 | 53 | 314,676 | 2008-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).
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.
| Step | Evidence | Operation | Result |
|---|---|---|---|
| 0 | Documented | NASA runs charge, discharge and impedance operations and writes one MATLAB file per cell | 2,167 operations |
| 1 | Reproduced | Walk the operation list and keep only discharges | 168 / 168 / 168 / 132 discharges |
| 2 | Documented | Take 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 |
| 3 | Reproduced | Number discharges 0, 1, 2… in the order they were run | discharge index |
| 4 | Reproduced | Place each cell in its own column; B0018 is shorter, so its last 36 rows are blank | 168 × 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
| Cell | Official discharges | Values in supplied table | Supplied vs official | Recomputed vs official: median / max (mAh) |
|---|---|---|---|---|
| B0005 | 168 | 168 | identical | 2.84 / 5.32 |
| B0006 | 168 | 168 | identical | 2.84 / 5.3 |
| B0007 | 168 | 168 | identical | 2.81 / 5.26 |
| B0018 | 132 | 132 | identical | 3.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.
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
| Column | Unit | Meaning |
|---|---|---|
| (index) | — | Discharge number within the cell, from 0 (the CEEMDAN demo calls discharge 0 cycle 1) |
B0005, B0006, B0007, B0018 | Ah | Capacity 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.
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.