how to calculate the capacity loss of a battery?

17 views (last 30 days)
I have a dataset of cyclic ageing of li-ion battery. In that i have the discharge capacity(Q discharge/mA.h) for every cycle.
Now i want to fit an equation in curve fitter using this data. please look at the data file attached for better idea.
my equation is Q_loss=B*exp⁡(-E_a/RT)*(A_h )^Z. Qloss is the percentage of capacity loss.Now my questions are
In this i have calculated Qloss in percentage as (nominal capacity-discharge capacity)/nominal capacity*100, is it right?
In this equation Ah is ampherehourthroughput which means the amount of charge delivered by the battery during cycling.
for the ah-throughput i am taking the accumulating ah-throughput values, is it correct?
any thoughts and help is much appreciated.

Accepted Answer

William Rose
William Rose on 18 Sep 2022
Edited: William Rose on 18 Sep 2022
@sandeep, [edit: correct speklling mistake] Your model formulation looks good. You write
Qloss(%)=(nominal capacity-discharge capacity)/nominal capacity*100
The equaiton is reasonable, and your spreadsheet does that calculation.
Your model is
Q_loss=B*exp(-E_a/RT)*(A_h )^Z
where A_h is the cumulative discharge across all cycles thus far. I assume B and (E_a/RT) are constants, where Ea=energy per mole, related to the battery, and RT is temperature times ideal gas constant. I assume B and Z are parameters to be fitted.
If we do not know Ea/RT, we can combine B*exp(-Ea/RT) into a combined constant, C:
Q_loss=C*(A_h )^Z
You don't need Matlab, you can do it in Excel. A bit of experimenting in Excel shows a good looking fit with C=1e-2, Z=0.52 (see Excel plot below). No doubt you can improve on that using fmincon() in Matlab (read the help for it and look at the good examples) or using the Goal Seek feature of Excel.
  1 Comment
William Rose
William Rose on 18 Sep 2022
@sandeep, I forgot to add that I had to add an initial Loss parameter to the model, because the model you proposed will always start at 0 loss, or very close to it, but the data shows a 5% loss to start. Thus the model I fitted has 3 adjustable parameters:
Loss(%) = C*(A_h )^Z + L0
where L0=inital loss. I set L0=5 for the fit shown above. And C=0.01, Z=0.52, as noted earlier. These values are just eyeball-fitted to give a good initial guess.

Sign in to comment.

More Answers (0)


Find more on Propulsion and Power Systems in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!