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: Fluctuations on 16th number cell at the time of Cell balancing.

Part Number: BQ76952
Other Parts Discussed in Thread: BQSTUDIO

Tool/software:

Dear all,

I am using BQ76952 in 16S configurations on the LFP battery Pack. Facing fluctuations on 16th number cell voltage measurement around 15mV on steady state and other cell voltage around 1mV which is normal. Below are the Firmware config and Images details.

-> All Cell image and check 16th yellow cell.

-> Below is 1st cell vs 16th cell

Can you please let me know what can be the cause of this.

// Configures all parameters in device RAM

// Enter CONFIGUPDATE mode (Subcommand 0x0090) - It is required to be in CONFIG_UPDATE mode to program the device RAM settings
// See TRM for full description of CONFIG_UPDATE mode
CommandSubcommands(SET_CFGUPDATE);

// After entering CONFIG_UPDATE mode, RAM registers can be programmed. When programming RAM, checksum and length must also be
// programmed for the change to take effect. All of the RAM registers are described in detail in the BQ769x2 TRM.
// An easier way to find the descriptions is in the BQStudio Data Memory screen. When you move the mouse over the register name,
// a full description of the register and the bits will pop up on the screen.

// 'Power Config' - 0x9234 = 0x2D80 //9E0
// Setting the DSLP_LDO bit allows the LDOs to remain active when the device goes into Deep Sleep mode
// Set wake speed bits to 00 for best performance
BQ769x2_SetRegister(PowerConfig, 0x27A8, 2); //Power Config

// 'REG0 Config' - set REG0_EN bit to enable pre-regulator
//BQ769x2_SetRegister(REG0Config, 0x01, 1); // doubt

// 'REG12 Config' - Enable REG1 with 3.0V output (0x0B for 3.0V, 0x0F for 5V)
BQ769x2_SetRegister(REG12Config, 0x0B, 1);
BQ769x2_SetRegister(REG12Config, 0x0F, 1);

// Set CFETOFF pin to Config (AFE_CS to oin enable)
BQ769x2_SetRegister(CFETOFFPinConfig, 0x4A, 1);

// Set DFETOFF pin to measure Cell Temperature - 0x92FB = 0x87 (set to 0x00 to disable) // set TS4 to measure cell temperature
BQ769x2_SetRegister(DFETOFFPinConfig, 0x07, 1);

// Set up ALERT Pin - 0x92FC = 0x2A // 0x22
// This configures the ALERT pin to drive high (REG1 voltage) when enabled.
// The ALERT pin can be used as an interrupt to the MCU when a protection has triggered or new measurements are available
// The Alert pin to measure Data ready
BQ769x2_SetRegister(ALERTPinConfig, 0x22, 1);

// DA Configuration.
BQ769x2_SetRegister(DaConfiguration, 0x06, 1); //Set Centiamp (10 mA) units are selected for user-amps.

// Current Calibiration CC Gain.
BQ769x2_SetRegister_f(CCGain, CC_GainValue, 4);

// Current Calibiration Capacity Gain.
Capacity_GainValue = CC_GainValue * 298261.6178;
BQ769x2_SetRegister_f(CapacityGain, Capacity_GainValue, 4);

Subcommands(CCGain, 0x00, R);
Subcommands(CapacityGain, 0x00, R);

// Set TS1 to measure Cell Temperature - 0x92FD = 0x87 //0x87
BQ769x2_SetRegister(TS1Config, 0x07, 1);

// Set TS2 to measure Cell Temperature - 0x92FE = 0x87
BQ769x2_SetRegister(TS2Config, 0x07, 1);

// Set TS3 to measure Cell Temperature - 0x92FF = 0x87
BQ769x2_SetRegister(TS3Config, 0x07, 1);

// Set HDQ to measure Master Otuput Slave Input - 0x9300 = 0x00
//BQ769x2_SetRegister(HDQPinConfig, 0x00, 1); // No thermistor installed on EVM HDQ pin, so set to 0x00

// Set DDSG TO measure short circuit detection
BQ769x2_SetRegister(DDSGPinConfig, 0xA2, 1);

// 'VCell Mode' - Enable 16 cells - 0x9304 = 0xFFFF; Writing 0xFFFF sets the 16 cells

BQ769x2_SetRegister(VCellMode, 0xFFFF, 2);

// Set up Protection Configuration Register Field Descriptions Disable all
BQ769x2_SetRegister(ProtectionConfiguration, 0x0000, 2);

// Enable protections in 'Enabled Protections A' 0x9261 = 0xBC
// Enables SCD (short-circuit), OCD1 (over-current in discharge), OCC (over-current in charge),
// COV (over-voltage), CUV (under-voltage)
BQ769x2_SetRegister(EnabledProtectionsA, 0x80, 1);

// Enable all protections in 'Enabled Protections B' 0x9262 = 0xF7
// Enables OTF (over-temperature FET), OTINT (internal over-temperature), OTD (over-temperature in discharge),
// OTC (over-temperature in charge), UTINT (internal under-temperature), UTD (under-temperature in discharge), UTC (under-temperature in charge)
BQ769x2_SetRegister(EnabledProtectionsB, 0x00, 1);

// Enable protections in 'Enabled Protections C' 0x9263 = 0x4F
BQ769x2_SetRegister(EnabledProtectionsC, 0x41, 1);

// 'Default Alarm Mask' - 0x..82 Enables the FullScan and ADScan bits, default value = 0xF800
BQ769x2_SetRegister(DefaultAlarmMask, 0xF882, 2);

// Set up Cell Balancing Configuration - 0x9335 = 0x0B - Automated balancing while in Relax or Charge modes
// Also see "Cell Balancing with BQ769x2 Battery Monitors" document on ti.com
BQ769x2_SetRegister(BalancingConfiguration, 0x03, 1);

BQ769x2_SetRegister(CellBalanceInterval, 0x02, 1); //Cell Balance Interval 5 Seconds
BQ769x2_SetRegister(CellBalanceMaxCells, 0x06, 1); //Cell Balance Max Cells 5 Cells

BQ769x2_SetRegister(CellBalanceMinCellVCharge, CombineConfigPacket.BMSDetailsConfiguration.BalanceStartVoltage, 2); //Cell Balance Min Cell V (Charge) 3100mV
BQ769x2_SetRegister(CellBalanceMinDeltaCharge, CombineConfigPacket.BMSDetailsConfiguration.BalanceWindow, 1); //Cell Balance Min Delta (Charge) 30mV
BQ769x2_SetRegister(CellBalanceStopDeltaCharge, (CombineConfigPacket.BMSDetailsConfiguration.BalanceWindow - 10), 1); //Cell Balance Stop Delta (Charge) 20mV

BQ769x2_SetRegister(CellBalanceMinCellVRelax, CombineConfigPacket.BMSDetailsConfiguration.BalanceStartVoltage, 2); //Cell Balance Min Cell V (Relax) 3200mV
BQ769x2_SetRegister(CellBalanceMinDeltaRelax, CombineConfigPacket.BMSDetailsConfiguration.BalanceWindow, 1); //Cell Balance Min Delta (Relax) 30mV
BQ769x2_SetRegister(CellBalanceStopDeltaRelax, (CombineConfigPacket.BMSDetailsConfiguration.BalanceWindow - 10), 1); //Cell Balance Stop Delta (Relax) 15mV


// Set up CUV (under-voltage) Threshold - 0x9275 = 0x31 (2479 mV)
// CUV Threshold is this value multiplied by 50.6mV
BQ769x2_SetRegister(CUVThreshold, 0x31, 1);

// Set up COV (over-voltage) Threshold - 0x9278 = 0x55 (4301 mV)
// COV Threshold is this value multiplied by 50.6mV
BQ769x2_SetRegister(COVThreshold, 0x55, 1);

// Set up OCC (over-current in charge) Threshold - 0x9280 = 0x05 (10 mV = 10A across 1mOhm sense resistor) Units in 2mV
BQ769x2_SetRegister(OCCThreshold, 0x05, 1);

// Set up OCD1 Threshold - 0x9282 = 0x0A (20 mV = 20A across 1mOhm sense resistor) units of 2mV
BQ769x2_SetRegister(OCD1Threshold, 0x0A, 1);

// Set up SCD Threshold - 0x9286 = 0x05 (100 mV = 100A across 1mOhm sense resistor) 0x05=100mV // 0x02=40 mV(31mV)
BQ769x2_SetRegister(SCDThreshold, 0x06, 1);

// Set up SCD Delay - 0x9287 = 0x03 (30 us) Enabled with a delay of (value - 1) * 15 µs; min value of 1
BQ769x2_SetRegister(SCDDelay, 0x02, 1);

// Set up SCDL Latch Limit to 1 to set SCD recovery only with load removal 0x9295 = 0x01
// If this is not set, then SCD will recover based on time (SCD Recovery Time parameter).
BQ769x2_SetRegister(SCDLLatchLimit, 0x01, 1);


// Exit CONFIGUPDATE mode - Subcommand 0x0092
CommandSubcommands(EXIT_CFGUPDATE);

  • I have checked and found that the fluctuations value on the 16th cell depends upon how many cells are balancing other the 16th, like

    When only 16th cell is balancing -> 1mV

    When 16th and 14th cell are balancing-> 4mV

    When 16th, 14th and 12th cell are balancing-> 7mV

    When 16th, 14th,12th and 10th cell are balancing-> 11mV

    When 16th, 14th,12th,10th and 8th cell are balancing-> 15mV

    When 16th, 14th,12th,10th, 8th and 6th cell are balancing-> 19mV

    Below is the graph of the 16th cell voltage measurement with the number of cell balancing.

    Please check this identification and let me know the reason for that.

  • I found out the cause of fluctuation on top cell as written in BQ76952 cell balancing document, as below

    But here is written to avoid this you need to balance one cell at a time, but in my requirement, I can't do this. As written in the data sheet also that at the time of cell balancing there will be no cell measurement, then why this is happening?

    Need help on this to avoid fluctuations. 

  • Hello Raja,

    The IR drop can be reduced by limiting the maximum number of cells allowed to balance simultaneously. This doesn’t necessarily mean it has to be a maximum of 1 cell at a time.

    Also, changing the input resistors can help as well. Have you tried changing those values to see if there was a difference?

    The paragraphs below mentioned in Section 10.1 Cell Balancing Operation of the BQ76952 Technical Reference Manual might help answer your question.



    Best Regards,
    Alexis

  • Dear Alexis,

    Thanks for the reply, but if it is written in the datasheet that there will not be any measurement at the time of cell balancing on any cell then why is this drop coming in measurement? It should not be there.

    I am using autonomous balancing future and the maximum cell balance count is 6.

    And you are talking about the resistor change, are you talking about the balancing resistor? Please check the schematics below and let me know which resistance is needed. But if it is a balancing resistor, it can not be changed and reduced.

  • Hello Raja,

    The device disables balancing on any cell being measured as well as any cell adjacent to that cell, however, other cells not adjacent to the one being measured can still be balanced as this occurs.

    While other cells not adjacent to the one measured, are being balanced, the device draws current through the VC16 pin to enable the balancing switches.

    I was referring to these input resistors to the cells as shown below. I believe that would be R13 (100 ohms) from what you shared. If you could change that resistance to something smaller, that should also help with reducing the IR drop. 

    From looking at what you have shared with your schematic, if the FUSE pin is not used, you can leave it floating or connected to VSS. If the LD pin is not being used, we recommend connecting it through a series resistor to PACK+ connector or connected to VSS as well. Further information on what to do with unused pins can be found in Table 16-3. Terminating Unused Pins in the datasheet.

    Best Regards,
    Alexis

  • Hello Alexis,

    Thanks for the reply, I have tried reducing the V16 100 ohm resistance to 56 ohm, and fluctuation has also reduced to 11 milli volt from 21 milli volt. But I need a proper solution to this, it fluctuation is also not acceptable to our clients. Can you please help me with this, Is there any way to stop balancing at the time of automatic cell sensing?

  • Hello Raja,

    Unfortunately, there isn’t quite a way to stop all balancing at the time of automatic cell sensing.

    Even if you had a maximum of only 1 cell allowed to balance, balancing would not stop unless the cell that was being balanced was currently being measured.

    I would recommend dropping the resistance to 20 ohms and see how the fluctuations look.

    Best Regards,
    Alexis

  • Why is it taking current form V16 pin, it can be taken from the BAT pin also, from where all other systems are working inside the IC.

    Or taking 20 ohms, actually, we are using external cell balancing with 47-ohm resistance and MOSFET, we moved to this because inside cell balancing creates heat in the IC. if I change the resistance to 20 ohms of V16 cell then again more balancing current will flow inside the IC then again it will create heat and increase error in cell measurement.

    Please let me know any other way.

  • Hello Raja,

    Why is it taking current form V16 pin, it can be taken from the BAT pin also, from where all other systems are working inside the IC.

    That was how our part was designed. Figure 1-3. BAT and CP1 Pin Equivalent Diagram and Figure 1-20. Pin Equivalent Diagram for the Top Cell Input Pin in the Pin Equivalent Diagram partially show the internal pin connections. 

    As for switching the resistances to 20 ohms, you wouldn’t have to do that with all the input resistors. Just R13 should be helpful since the IR drop affects only the top cell measurement.

    Best Regards,
    Alexis

  • hello Alexis,

    Thanks for the guide, yes I am using 20-ohm resistance only on the 16th cell, but after that, I am also facing an error of 6 mV. I need to make it low the same as other cells, I need support on this. Please guide me on this how can I make the same as other cells?

  • Hello Raja,

    Other than lowering the maximum cell balance count, I’m not sure if there’s anything else that could help it further.

    Best Regards,
    Alexis