Week 7 State of charge estimation
BATTERY MANAGEMENT SYSTEM (BMS)
Battery management system is an electronic system that helps to manage the rechargeable battery cell, i.e., protecting the battery operation inside the safe operating area (SOA), sensing and monitoring the voltage, current and temperature status. Controlling the battery output and its surrounding temperature by controlling coolent fan speed etc.
Requirement:
- Cell and individual series combination Battery pack terminal voltage.
- Load and individual parallel combination current.
- Sensing, Monitoring and Controlling the Battery, its terminal, body and surrounding temperature.
- Terminal Contactors control.
- Protection and isolating the faulty portion using fuses or switches.
- Charging and Discharging rate control.
- All the sensed and reported data communication for diagnostic the faulty portion.
- Displaying the present battery pack state of charge (SoC), actual power consuming and total energy estimation left and yet to consume.
Simulation:
As in given model in the link (https://in.mathworks.com/matlabcentral/fileexchange/72865-design-and-test-lithium-ion-battery-management-algorithms) consists of Closed Loop Controlled BMS which includes all the above requirements.
Consists of
- Battery pack including the practical system including temperature.
- Pre-Charger Circuit including the Contact control.
- Charger .
- Drive load.
- SoC Estimation.
- Balancing Logic.
- Logic state machine to control all switch and protective device.
- Representation of Bus.
- For testing BMS state request with test sequence variant with 3 test case.

Fig 1: BMS Closed Loop HArness Dashboard.

Fig 2: BMS State test sequence with 3 test cases.

Fig 3: BMS Closed Loop.

Fig 4: BMS ECU.

Fig 5: SoC Estimation.

Fig 6: Balance Logic

Fig 7: Current and Temperature limits for Charging and Discharging state.

Fig 8: Battery Pack module.

Fig 9: Pre Charging Circuit.

Fig 10: Charger input and Driving Load.
RESULT:
Note:
Pre Charge state for all test case:
- SoC = 80% and its equivalent terminal voltage.
- Keping the temperature at 288K.
- Energy Balancing Command Kept zero for all.
| Test Case | Analysis | Scope Result |
|
Case 1:
|
As the BMS in Driving mode depending on the load the cells starts to the discharge.
As the BMS mode changes to Standby mode the Cell starts to Balance the energy between the cell in the battery pack.
As the BMS in Charging mode Cells starts to charging along with cell energy balancing. But as the one cell reaches the 100% SoC. BMS cuts off the charger. |
![]() |
|
Case 2: Complete BMS Driving mode. |
AS we know that the BMS in Driving Mode the cell starts to discharge and temperature also increase. Also the Cell discharges if any one of the cell discharge completely the BMS will Cut off the load. Here the Battery pack was cut off at at 8500sec. |
|
|
Case 3: Complete BMS Charging Mode. |
As here BMS in Charging mode, Precharging condition says that the battery pack in 80% SOC. The Battery pack starts to charge when reaches to the 100% The Cell balancing will helps to balance the energy between the max voltage with other cell. As the all reaches the same level the cell balancing pulsate as in the scope result. |
|
Cell Balancing shoud balance the energy from max voltage cell to the other but here it is balancing the cells are not balancing with max reached cell. Their might be some fault in the BMS.
COULOMB COUNTING:
This Method measures the discharging current of a Battery and integrates the discharging current over time to estimate SOC. Estimate the SOC which is estimated from the discharging current, actual current I(t) and previously estimated SOC values.
`SoC(t) = SoC(t-1) + (I(t))/(Q_n) Delta t`.
Factors affecting this method:
- Temperature.
- Battery history.
- Discharge Current.
- Cycle Life.
Quadratic relation between the corrected and discharging current of battery.
`I_c(t) = k_2 I(t)^2 + k_1 I(t) + k_0`.
Where `k_2,k_1 and k_0` are constant values are taken from practical experimental data.
`SoC(t) = SoC(t-1) + (I(t))/(Q_n) Delta t`.
Fig 11: SoC Estimation using Coulomb Counting method block diagram.
`SoC(t) = SoC_(i) + int (I(t))/(3600*Q_n) dt ->` as per the above block diagram.


