This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ76907: Calculation of SOC

Part Number: BQ76907
Other Parts Discussed in Thread: BQ40Z80, BQ34Z100, BQ40Z50, BQ76905

Tool/software:

Hi,

I’m currently working on a project that uses the MSPM0 microcontroller along with the BQ76907 IC for battery management. One of our key requirements is to accurately measure the State of Charge (SoC) of the battery pack.

After reviewing the datasheet, I found that the PASSQ sub-command can be used to retrieve a 12-byte value containing accumulated charge and time data. Based on my understanding, this accumulated charge is not equivalent to the actual SoC of the battery pack. Please correct me if I’m mistaken.

I have a few questions related to calculating SoC using the PASSQ command:

  1. Is there any documentation or recommended approach for calculating SoC specifically for the BQ76907?

  2. In the event of an unintentional power cycle of the AFE, does the BQ76907 retain the accumulated charge and time values and there by calculation of SOC will not get affected, or are they reset?

  3. When connecting the battery for the first time, is there a specific initialization process required to ensure the SoC is configured correctly in the AFE?

We are approaching the final stages of development, so any guidance on these points would be greatly appreciated.

Thank you in advance for your support.

  • Hi Vishnudas,

    The SOC of a pack is different from the passed charge, which the BQ76907 can provide.  SOC calculation can be a fairly involved algorithm, and the accumulated charge is a key variable used in that algorithm, but that alone doesn't tell SOC.  I can reach out to our MSPM0 team to see if they have SW for SOC calculation, that will generally need to be calculated in the MCU.

    If there is an unintentional power cycle of the AFE, then it will lose all accumulated charge and time, these will be reset.  Since this information is important to the SOC algorithm running in the MCU, it would probably be prudent to read it periodically and store it in the MCU flash, so there it would persist through a power cycle.

    Thanks,

    Terry

  • Hi Terry,

    Thanks for your quick reply.

    As you said please provide me with the SW for SOC calculation, it will be a great help.

    Also please provide your thoughts on this:

    When connecting the battery for the first time, is there a specific initialization process required to ensure the SoC is configured correctly in the AFE?

    Or do we need to initially predict an SOC value from cell manufacture's open cell curve, and use if for the further calculation?

    Thanks in advance,

    Kartha.

  • Hi Kartha,

    I've passed your info onto other teams, will see if they can help further on an SOC calculation.  Regarding connecting the battery the first time, you'll generally need to estimate SOC from the OCV.  After that point, the passed charge can be used with that to help determine changes in SOC.

    Note that the BQ76907 passed charge does not get calculated and updated while the device is in SLEEP, DEEPSLEEP, or SHUTDOWN modes, it only is updated in NORMAL mode.  However, if you are concerned about the power consumption and want to keep the passed charge running while minimizing power, you can set the Settings:Configuration:DA Config[CCMODE1:0]=0x2 (this minimizes the power drawn by the Coulomb counter ADC) and set Settings:Configuration:Power Config[LOOP_SLOW[1:0]=0x3, to slow the rate at which voltage measurements are made.  Then you will want to keep the device running in NORMAL mode, which can be done by sending the SLEEP_DISABLE() command.  With these set, the device draws ~32uA BAT current (assuming no REGOUT LDO current is being supplied).

    Thanks,

    Terry

  • Hi Terry,

    Thanks for your support.

    I am expecting a code snippet for the calculation of SOC in uC.

    Thanks in advance.

  • Hi Vishnudas,

    I'm concerned about your expectations - SOC calculations can take thousands of lines of code, this is not a simple snippet of code.  We sell standalone devices that provide an SOC calculation, such as BQ40z80 (up to 6s), BQ40z50 (up to 4s), and BQ34Z100 (for higher cellcount systems).  In addition, for gauging to operate properly, you need a chemistry ID that matches the algorithm to your specific cell, it is not a generic gauging algorithm that works for any gauge without customization.

    Thanks,

    Terry

  • Ok Terry, 

    Thanks for your support.

    Kartha

  • Hi Kartha,

    I haven't seen a response from the other team yet, will see if I can directly contact them to help here.

    In the meantime, you might review https://www.ti.com/lit/pdf/slaaee3 and https://www.ti.com/lit/an/slaaef5/slaaef5.pdf , if you haven't seen these already.

    Thanks,

    Terry

  • Hi Kartha,

    Here is the latest MSPM0 Gauge code, Gauge GUI and document. We add more fantastic algorithm in it. Besides, we also include the BQ76905 in the MCU code as well. 

    Gauge Level2.zip

    For your two questions:

    1. In the latest code, we add a function to enable MSPM0 to save the gauge data and recall it after reset. You can enable the data saving function when the battery voltage or MCU voltage drop under a certain threshold.

    2. When connecting the battery for the first time, the algorithm will compenstate for the SOC error when it starts to work. For more details, please refer to the chapter in the doc in the zip file.

    Eason