Understanding and Improving State-of-Charge Measurement Variability with Nordic 52840 and NPM1300

We are using a Nordic 52840 along with an NPM1300 power manager and rely on Nordic's algorithm (via nrf_fuel_gauge_init and nrf_fuel_gauge_process) to calculate the battery's state of charge (SoC). However, we are observing inconsistencies in the SoC measurements:

  1. The SoC results differ depending on the initial system current during initialization.
  2. A significant tolerance of up to 10% is noted when the battery is used in fast-charging mode (0.5C), and the system is restarted with a low or zero current before re-measuring.

It was my understanding that the Nordic algorithm should compensate for these factors and provide consistent results regardless of the system current during initialization.

What could be the root cause of this discrepancy? How can we enhance or resolve this behavior to achieve more reliable SoC measurements?

Parents Reply Children
  • The initial fuel gauge  state of charge is purely based on the batter voltage. Different load conditions during initialization will lead to different initial state of charge values. 
    It is important to initialize the fuel gauge before enabling the charge process. Initialization during charging can lead to errors due to stressed voltage response of the battery or unexpected reset conditions. 

    We recommend initializing the fuel gauge before charging begins. As I understand it we do have compensation for the initialization error but it may not be enough in this case. Initializing during discharging may not bring much initializing error and algorithm should converge to the right value much faster. It would be interesting to see the data log from the measurement if possible? 

    It is also advisable to reinitialize the fuel gauge when the battery reaches fully charge, This ensures that the SoC calculations are based on a stable, fully charged state, reducing any discrepancies caused by residual conditions from charging. You could use the charge completion event (docs.nordicsemi.com/.../charger.html from the NPM1300 BCHGCHARGESTATUS register to trigger the fuel gauge reinitialization (nrf_fuel_gauge_init). 

    After initialization, the algorithm will typically converge to the correct SoC value after several minutes of normal operation under discharge conditions.

    Regards

    Runar

  • Thank you for your prompt response.

    I wanted to ask if it's a known issue that after charging at a high rate (0.5C), turning off the charger, and reinitializing the algorithm after 5 seconds, there remains a significant error in the state of charge?

    Best regards,
    Frank

  • Hi Frank

    This could be coming from the same issue with initializing the fuel gauge or the system wakes up while battery is charging. You can try to enabling charging right after fuel gauge being initialized. Then turning off the charger, and reinitialize the algorithm after 5 seconds tp see whether there is any significant bump. 

    It would be great if you can provide the log output and the battery model used in your test so we can look into it

    Regards

    Runar

Related