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.

BQ76952: Cell Balancing Clarification

Part Number: BQ76952
Other Parts Discussed in Thread: BQSTUDIO

I have interfaced a BQ76952 with a host MCU through SPI. The BQ IC does not have any temperature sensors (NTC) connected to its pins. The MCU is measuring all required temperature. MCU is also responsible for load detection, charger detection and current sensing. BQ only measures cell voltages and is required for cell balancing.

Problem: When I send Activate Cell Balancing command along with a given cell number, no balancing takes place even though on reading back the registers, I get the cell number I had written.

Ques 1.) Do I need to disable any balancing parameters (temperature, cell voltages, etc) to force BQ to start balancing? I do not require auto-balancing. Also, with various temperature input pins, how does BQ calculate cell temperature?

I have currently 16 cells connected to BQ. I am able to read all cell voltages and the communication seems to work fine.

Ques 2.) It is mentioned that pin for cell 16 should always be connected to a real cell. If I have, say 14 cells, can I connect them till 14 pin, and short pin 15 and 16 to pin 14?

If no, then, if I connect 13 cells till pin 13 and 14th cell to pin 15 and 16 , where should I connect the 14 pin: to pin 15 or pin 13?

I have a production scheduled in a month. The requirement that pin 16 and 15 always needs to be connected poses some assembly issues, as for different series requirement, different cells go into pin 16 and 15. Is there a work around?

Kindly assist.

  • Dear Mrinal,

    1. Manual should be relatively straight forward in operations. In order for manual cell balancing to work, Settings:Cell Balancing Config: Balancing Configuration[CB_NO_CMD] must be set low. Otherwise the pins won't be balanced. One thing worth noting for the CB_ACTIVE_CELLS() command is that passing a number with the decimal number 5 doesn't start balancing cell 5. Rather, it balances cells 1 and 3. This is because CB_A_C takes a 16 bit input where each bit correlates to one cell for balancing. i.e. CB_ACTIVE_CELLS(0x0005) = 0000 0000 0000 0101 = balancing cells 1 and 3. How are you trying to determine whether balancing is occurring?

    For measuring temperature, the user adds thermistors to each of the temp sense pins. Since these thermistors fluctuate their resistance based on temp, a voltage divider is made using an internal resistor on the BQ769x2. The voltage is then measured and run through an algorithm that uses the coefficients that define the thermistor to determine the resulting temperature.

    2. No you should always have a real cell between pin VC15 and VC16. If you have 14 cells, you can short VC13 and VC14 to VC15, but shouldn't short VC15 to VC16. This is because in order for cell balancing to be fully operation, VC15-VC16 must have a cell across it.


    Asher Nederveld

  • For manual balancing, I understand that the bits of data passed will determine which all cells will balance. As of now, I have 16 cells connected with a balancing resistance of 75ohm. I am sending 0x0001 data to start balancing. When I read the corresponding register, I get back the same value. But no cell is being balanced. I am checking voltage across balancing resistor to determine balancing state. All resistors show 0V.

    As I said earlier, I have not connected any NTC or current sensor to the IC. I have shorted the current sense pins, but NTC pins are left open. Is this the source of problem? Or do I have to look elsewhere?

  • Dear Mrinal,

    If you are using BQStudio, could you share you .gg file that has your configurations as well? That would be helpful in determining if one of the registers was incorrect or if a fault is triggering. Furthermore, this would allow me to test your configuration on an EVM board where the hardware is confirmed to work.

    One thing that is worth trying is using the other manual command for cell balancing: CB_SET_LVL(). This balances cells that are high enough above a written threshold. It would be good to test whether this command works. Could you also share the value of your Settings:Configuration:Vcell Mode? If a cell is not enabled, it won't be able to balance.


    Asher Nederveld

  • Adding an NTC on TS1 pin worked.

    As per balancing rule, the cell temperature should be between max/min limit for balancing to start (I think in host-controlled balancing as well). By default TS1 pin measures cell temperature and other sensing pins are disabled. I assumed that this was the pin from where the IC checked for cell temperature rules. Since no NTC was added, it was returning -27deg as cell temperature. The min limit was -20 deg. So, adding NTC started balancing. I think changing min limit would have worked as well.

    Now, I am not sure what will happen if I disable TS1 temperature input. Will the IC disable its temperature rules, or switch to a different pin to get temperature?

    I am not using BQStudio or EVM board, so I will not be able to post any related file. I have my own PCB and am developing my own firmware.

    I will try to experiment and post the results. For now, I am caught up with production and am more than happy to add 10k resistor on TS1 to emulate NTC.

  • Dear Mrinal,

    That makes sense that a wrong voltage on a thermistor input would cause an issue. I'm glad you were able to resolve it. If you wish to avoid using a 10kohm resistor, you can disable TS1 as a thermistor input. Factory defaults sets TS1 as a thermistor input, but you can change it in Settings:Configuration:TS1 Config[PIN_FXN]. Once changed, the pin should no longer be able to trigger an UTC or UTD fault as it no longer probes temperature.

    Another option would be to disable UTC, UTD, OTC, and OTD if you aren't using any temperature protections. These can be disabled in Settings:Protections:Enabled Protections B.


    Asher Nederveld