Other Parts Discussed in Thread: BQ79616, USB2ANY
I am using auto cell balancing. I have a 11 cell battery module as the cell voltage source. All cells measure about the same voltage, in the ballpark of 3.37V. I have a BQ79600 EVM and a custom BQ79616, and a BQ GUI/USB2ANY.
I have attached the BQ GUI settings in the two pictures. I first run the OVUV protector. I have set UV as 2.7V, OV as 4.2V. I can click on VCBDONE but where do I enter a threshold for VCBDONE? I am able to set balance timers and auto cell balancing finishes based on the timers.
In the BQ firmware, I am following the sequence recommended by the datasheet to start cell balancing. I find that cell balancing runs (using a real battery module) only if I don't program the VCB_DONE threshold register. If I have this programmed, cell balancing comes to an stop right away, balstat reads 0x01. Why is this?
Previously, I was manually checking cell balancing with a cell simulator. I set one cell to 3.6V, the rest to 3.5V. I set VCB_DONE_THRESH= 3.5V. Manually I reduced the voltage of 3.6V to 3.5V and confirmed that a breakpoint halts in the firmware to show cell balancing is complete.
I need to understand if it is possible to use VCB_DONE_THRESH with auto cell balancing.
vcbDoneThresh = findVcbThresh(voltageBalanceTarget); //SET BALANCING TIMERS TO 10 s SpiWriteReg(0, CB_CELL16_CTRL, balTimers16, 8, FRMWRT_ALL_W); //cell 16-9 (8 byte max write) SpiWriteReg(0, CB_CELL8_CTRL, balTimers8, 8, FRMWRT_ALL_W); //cell 8-1 //SET DUTY CYCLE TO 5 s SpiWriteReg(0, BAL_CTRL1, CELL_BALANCE_DUTY_CYCLE, 1, FRMWRT_ALL_W); //5s duty cycle // SpiWriteReg(0, VCB_DONE_THRESH, vcbDoneThresh, 1, FRMWRT_ALL_W); //For APM2 Murata cell, BMS will not send cell balancing command if min cell voltage measures below 3.25V //what is the equivalent CB start voltage for CATL? SpiWriteReg(0, OTCB_THRESH, OTCB_THRESH_VAL, 1, FRMWRT_ALL_W); //pause CB threshold, for Vishay this is 72C; cooloff 4%, CB resumes; for Vishay, this is 69C SpiWriteReg(0, OVUV_CTRL, OVUV_CTRL_VAL, 1, FRMWRT_ALL_W); //round-robin and OVUV_GO SpiWriteReg(0, OTUT_CTRL, OTUT_CTRL_VAL, 1, FRMWRT_ALL_W); //round-robin and OTUT_GO //START BALANCING SpiWriteReg(0, BAL_CTRL2, BAL_CTRL2_VAL, 1, FRMWRT_ALL_W); //OTCB_EN, auto balance and BAL_GO