State of Charge estimation of Li-Ion battery, based on voltage measurements and Coulomb couting. Implementation on STM32 Nucleo board.
In the next updates, I’m planning to boost accuracy and stability by adding a Kalman Filter. This should help filter out sensor noise and provide a more adaptive solution.
These are the preliminary measurement results. The BC234 transistor cuts off the load when the cell voltage drops to 2.8 V. However, after disconnection, the measured cell voltage rises back above 2.8 V. This causes the microcontroller to switch the transistor and load back on, resulting in cyclical on/off behavior. Clearly, this issue will need to be resolved.
Unfortunately, I couldn’t use the INA219 sensor (maximum current of 3.2 A) which is much more suitable for this application, because it was damaged during soldering. Instead, the current was measured using an ACS758LCB-050B (maximum current of 50 A, sensitivity 40 mV/A). The output voltage was sampled by the Nucleo’s 12‑bit ADC. As a result, the readings show significant noise, and the ADC’s limited resolution is also evident — quantization effects can clearly be seen as discrete voltage steps.
I’m certain it will be interesting to compare the INA219 to the ACS758, as the two sensors differ so much in terms of design and performance.
Numerical integration performed using the rectangular method resulted in a total energy of 6.75 Wh and a total charge of 1826 mAh. In the next measurement, I will try to compare these results with data from a more accurate INA219 sensor and also apply the trapezoidal method for numerical integration.