Tool/software:
We observed that our cell 16 voltage is usually Higher than the rest cells and it fluctuates quite significantly at 200 to 300mV after end of charging.
I am attaching the Schematic of AFE section and Power Supply section for BAT pin.
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.
Tool/software:
We observed that our cell 16 voltage is usually Higher than the rest cells and it fluctuates quite significantly at 200 to 300mV after end of charging.
I am attaching the Schematic of AFE section and Power Supply section for BAT pin.
Hi Alexis,
I found some random behavior of cell balancing in AFE. I have selected manual cell balancing. But all-time balancing is ON in period of 10 sec ON 20 Sec OFF. sometime for even cells and sometime odd cells.
I am attaching command sequence here:
Parameter config for init sequence #define Interval_time 20 #define CB_Th_lvl 2900 //Protection #define Min_cell_temp_th 0 #define Max_cell_temp_th 100 #define Max_int_temp_th 70 #define max_cell 16 #define Cell_balance_min_cellv_chg_th 2000 #define Cell_balance_min_cellv_rlx_th 2000 #define Cell_balance_min_delta_chg_th 0 #define Cell_balance_stp_delta_chg_th 0 #define Cell_balance_min_delta_rlx_th 0 #define Cell_balance_min_stp_rlx_th 0 //Init Sequnce void CB_init(void) { BQ769x2_SetRegister(BalancingConfiguration, 0x03, 1); Delay_1ms(); // Balancing Configuration is set here; 0x03 : Host controlled balancing and the balancing will be enable in relex and charge mode BQ769x2_SetRegister(CellBalanceInterval,Interval_time, 1); Delay_1ms(); //Interval time or duration for which cell balancing will be turned on. define in the macro Interval_time. BQ769x2_SetRegister(CB_SET_LVL,CB_Th_lvl, 1); Delay_1ms();//CB_SET_LVL after which cell balancing will enable BQ769x2_SetRegister(CB_ACTIVE_CELLS,0x0000,2); Delay_1ms(); //Reset the cell balancing command /* ------------------ Protection for the cell balancing configured in the CB register ----------------------------*/ BQ769x2_SetRegister(MinCellTemp,Min_cell_temp_th,1); Delay_1ms();BQ769x2_Register_Read(MinCellTemp,1); CB_max_cell_temp = (AFE_RxBuf[0]); //Min_cell_temp_th BQ769x2_SetRegister(MaxCellTemp,Max_cell_temp_th,1);Delay_1ms();BQ769x2_Register_Read(MaxCellTemp,1); CB_min_cell_temp = (AFE_RxBuf[0]); //Max_cell_temp_th BQ769x2_SetRegister(MaxInternalTemp,Max_int_temp_th,1);Delay_1ms();BQ769x2_Register_Read(MaxInternalTemp,1); CB_max_internal_temp = (AFE_RxBuf[0]); //AFE die temp /* ------------------- Following reg is only applicable with the AFE controlled CB -----------------------------*/ BQ769x2_SetRegister(CellBalanceMaxCells,max_cell,1);Delay_1ms();BQ769x2_Register_Read(CellBalanceMaxCells,1); CB_max_cell = (AFE_RxBuf[0]); //No of max cell can be active at the time BQ769x2_SetRegister(CellBalanceMinCellVCharge,Cell_balance_min_cellv_chg_th,2);Delay_1ms();BQ769x2_Register_Read(CellBalanceMinCellVCharge,2); CB_min_cell_V = ((AFE_RxBuf[1]<<8) + (AFE_RxBuf[0])); // Minimum cell voltage after which cell balancing will stop BQ769x2_SetRegister(CellBalanceMinDeltaCharge,Cell_balance_min_delta_chg_th,1);Delay_1ms();BQ769x2_Register_Read(CellBalanceMinDeltaCharge,1); CB_min_delta_chg = (AFE_RxBuf[0]); // Min delta cell voltage for the enable the cell balancing in charge ; BQ769x2_SetRegister(CellBalanceStopDeltaCharge,Cell_balance_stp_delta_chg_th,1);Delay_1ms();BQ769x2_Register_Read(CellBalanceStopDeltaCharge,1); CB_stp_delta_chg = (AFE_RxBuf[0]); //Min delta cell voltage for the disable the cell balancing in charge BQ769x2_SetRegister(CellBalanceMinCellVRelax,Cell_balance_min_cellv_rlx_th,2);Delay_1ms();BQ769x2_Register_Read(CellBalanceMinCellVRelax,2); CB_min_cell_v_rlx = ((AFE_RxBuf[1]<<8) + (AFE_RxBuf[0])); // Min cell voltage after that cell balancing should start in relex mode BQ769x2_SetRegister(CellBalanceMinDeltaRelax,Cell_balance_min_delta_rlx_th,1);Delay_1ms();BQ769x2_Register_Read(CellBalanceMinDeltaRelax,1); CB_min_delta_rlx = (AFE_RxBuf[0]); // Min delta cell voltage for the enable the cell balancing in relex mode BQ769x2_SetRegister(CellBalanceStopDeltaRelax,Cell_balance_min_stp_rlx_th,1);Delay_1ms();BQ769x2_Register_Read(CellBalanceStopDeltaRelax,1);CB_stp_delta_rlx = (AFE_RxBuf[0]); // Min delta cell voltage for the disable the cell balancing in relex mode } //In run mode to enable the Cell balancing as per below void CB_Enable(uint16_t CellBalance) { Ip_Cb = CellBalance | 0x0000; Subcommands_cb(CB_ACTIVE_CELLS,( Ip_Cb ),W2,2); Delay_2ms(); } // To read which cell is currently enabled using following command void CB_read(void) { int power_ch , i ,j =0; //Subcommands_cb(CB_ACTIVE_CELLS,0,R,2); BQ769x2_Register_Read(CB_ACTIVE_CELLS, 2); //Delay_2ms(); BQ76952_Module.Cell_balncing_config.Active_cell = ((AFE_RxBuf[1]<<8) + AFE_RxBuf[0]); CB_EN_cell = BQ76952_Module.Cell_balncing_config.Active_cell; for(i = 0; i < 8; i++) { power_ch = pow((double_t)2 , (double_t)i); CB_Sts[i] = (( power_ch & AFE_RxBuf[0]) >> i); CB_Sts[i+8] = (( power_ch & AFE_RxBuf[1]) >> i); } Subcommands(CBSTATUS1,0,R,2); Delay_1ms(); BQ76952_Module.Cell_balncing_config.Total_bal_time = ((AFE_RxBuf[1]<<8) + (AFE_RxBuf[0])); }
Hello Vinod,
Do you have a .gg file you could share as well? Can you clarify what you mean by random behavior of cell balancing?
Something to note, when autonomous balancing occurs for the device, if the device is configured to avoid balancing during charge, and while balancing the pack begins charging, balancing will continue until the interval timer expiries before it is disabled. Is this something you have considered in your host balancing as well?
Best Regards,
Alexis