- Dynamic voltage control is a mode where our BMS will send a charge target to the charger/inverter over CAN that is either slightly higher or equal to the current shunt voltage.
- This has the effect of making the end of charge more gentle, as an alternative to Ramped Targets
Here's a diagram that explains how the offsets and limits work:

- During Charge Full the BMS will take the current shunt voltage, add Normal Dynamic Volt Offset (default 0.3V), and ask the inverter/charger to charge to that voltage, sticking within Dynamic Volt Min and Dynamic Volt Max for normal charging.
- During Charge Limited the BMS will take the current shunt voltage, add Limited Dynamic Volt Offset (default 0.1V), and ask the inverter/charger to charge to that voltage, sticking within Dynamic Volt Min and Dynamic Volt Max for limited charging.
- During Charge Off the BMS will take the current shunt voltage and ask the inverter/charger to charge to that voltage, sticking within Dynamic Volt Min and Dynamic Volt Max for normal charging.
- If any cell gets above CV10 Cell Hi Cutout, the BMS will ask the inverter/charger for 0A current to stop charging.
- Critical rules still apply, if any cell reaches CV12 Hi Cell Volt for enough time, the BMS will enter a critical state and trigger circuit breakers if configured to do so.
- Navigate to Control Logic > Remote and change Template to Dynamic Voltage Targets

- Press Default then Save to pre-populate your limits and offsets with sane defaults.
If you don't see decimal points here, Default and Save first, this step will fix this issue.

- Press Edit again and then Modify the limits and offsets as you see fit.
- Navigate to Control Logic > Charging > Extra Parameters and switch on Remote Volt - Dynamic Targets

- Close Extra Parameters and click Save
¶ Understanding the charging process

- Due to the large voltage movement at the end of the LiFePO4 charge curve, and the inertia present in batteries and chargers, a charger may push too much current in at the end of charge.
- In a well tuned control loop, you might get a graph that looks something like this at the end of charge

- As you can see, any time the cell goes over CV9, it enters balancing. You can tune this on the Hardware > CellMon page

- If the cell voltage goes higher to CV14 on K9s, or over 0.1A (CA1) for BlockMons, the charger is instructed to follow the limited values.

- Eventually once all cells reach 50mAh (CA3), charge is declared done and SoC is reset to 100% - It is important to hit this point regularly and at the right time
- For a trigger-happy or slow-to-respond inverter, your voltage graph might look more like this

- The voltage spikes all the way up to charge cutout, causing charge to stop, and slowing the balancing process
- Dynamic Targets can help here by smoothing out this graph.
¶ Related Articles