Skip to content

Simple Anode vs Step Charge

In this example we compare fast-charging degradation behaviour for the Molicel P45B cell.

Note

This is a showcase example for demonstration only. We are happy to discuss how we develop and supply degradation models for your specific cell and use case. Contact us at hello@breathebatteries.com.

Objective

Compare two fast-charging approaches under ageing:

  • Step profile charging
  • Simple anode control (anode potential constrained)

This example compares these KPIs across ageing:

  • Charge time
  • Time to 80% SoC
  • State of health (SoH)
  • Maximum temperature
  • Maximum power
  • Energy added
  • Minimum anode potential

Workflow

1. Configure base test settings

clear all;
bdclose all;
clc;

cRate = 4.5;
currDischarge = cRate;

socMax = 1.0;
socMin = 0.0;

numCyclesBtwnRPTs = 50;
numRPTs = 15;
totalCycles = (numRPTs - 1) * numCyclesBtwnRPTs;

2. Load model parameters

userProfile = getenv('USERPROFILE');
filePath = fullfile(userProfile, ...
    'Breathe Battery Technologies', ...
    'Breathe Model Projects - Documents', ...
    'Proj_BM_Mono', ...
    '07_Breathe_Model_Data', ...
    '03_PBMDegv1', ...
    '02_Parameters', ...
    'MoliP45_PBMDegv1_GD_Format');
load(filePath);

3. Run the step-charge benchmark

maxCrateStepCharge = 4.0;
currChargeStepExp = maxCrateStepCharge * cRate;

resultsStepChargeSim = Run_StepCharge_Experiment( ...
    maxChargeCurrent=currChargeStepExp, ...
    dischargeCurrent=currDischarge, ...
    socMax=socMax, socMin=socMin, ...
    numRPTs=numRPTs, numCyclesBtwnRPTs=numCyclesBtwnRPTs);

4. Run simple-anode cases

currMinSimpleAnode = 1;

resultsSimpleAnodeSim_Case1 = Run_SimpleAnode_Experiment( ...
    currMaxSimpleAnode=3.75*cRate, ...
    currMinSimpleAnode=currMinSimpleAnode, ...
    voltAnodeSetpointSimpleAnode=0.04, ...
    dischargeCurrent=currDischarge, ...
    socMax=socMax, socMin=socMin, ...
    numRPTs=numRPTs, numCyclesBtwnRPTs=numCyclesBtwnRPTs);

resultsSimpleAnodeSim_Case2 = Run_SimpleAnode_Experiment( ...
    currMaxSimpleAnode=3.75*4.5, ...
    currMinSimpleAnode=currMinSimpleAnode, ...
    voltAnodeSetpointSimpleAnode=0.05, ...
    dischargeCurrent=currDischarge, ...
    socMax=socMax, socMin=socMin, ...
    numRPTs=numRPTs, numCyclesBtwnRPTs=numCyclesBtwnRPTs);

resultsSimpleAnodeSim_Case3 = Run_SimpleAnode_Experiment( ...
    currMaxSimpleAnode=4.2*4.5, ...
    currMinSimpleAnode=currMinSimpleAnode, ...
    voltAnodeSetpointSimpleAnode=0.05, ...
    dischargeCurrent=currDischarge, ...
    socMax=socMax, socMin=socMin, ...
    numRPTs=numRPTs, numCyclesBtwnRPTs=numCyclesBtwnRPTs);

5. Generate comparison outputs

resultsCell = { ...
    resultsStepChargeSim, ...
    resultsSimpleAnodeSim_Case1, ...
    resultsSimpleAnodeSim_Case2, ...
    resultsSimpleAnodeSim_Case3};

namesArray = { ...
    'Step Charge 3.75C', ...
    'voltAnode 3.75C-40mV', ...
    'voltAnode 3.75C-50mV', ...
    'voltAnode 4.2C-50mV'};

figs = Plot_Results_Comparison(resultsCell, namesArray);

Charge-segment snapshots

Step charge

Early interval (RPT 1) Late interval (RPT 15)
Step charge segment RPT 1 Step charge segment RPT 15

Simple anode case 1 (3.75C, 40 mV)

Early interval (RPT 1) Late interval (RPT 15)
Simple anode case 1 RPT 1 Simple anode case 1 RPT 15

Simple anode case 2 (3.75C, 50 mV)

Early interval (RPT 1) Late interval (RPT 15)
Simple anode case 2 RPT 1 Simple anode case 2 RPT 15

Simple anode case 3 (4.2C, 50 mV)

Early interval (RPT 1) Late interval (RPT 15)
Simple anode case 3 RPT 1 Simple anode case 3 RPT 15

KPI comparison plots

Charge time

Charge time comparison

Time to 80% SoC

Time to 80% SoC comparison

State of health

SoH comparison

Maximum temperature

Maximum temperature comparison

Maximum power

Maximum power comparison

Energy added

Energy added comparison

Minimum anode potential

Minimum anode potential comparison

Version 73723266