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: Turning OFF PCHG & PDSG FET's turns off Main FET's

Part Number: BQ76952

Hello,

1) I am using BQ76952 for a battery management system and I have a PCHG and PDSG MOSFET's in the design. I have attached the picture below of the MOSFET section as a reference. I am facing an issue while turning off the PCHG and/or PDSG FET's. I have also attached the code snippet of what I am trying to do. In the discharging state, I am trying to turn ON the PDSG FET first and after few milliseconds, I turn-ON the CHG, DSG FET's and after few milliseconds, I am trying to turn-OFF the PDSG FET as its useless to keep it ON once the CHG, and DSG FET's are ON. But when I send the command to turn-OFF the PDSG, the DSG FET's is also tunning OFF. See my code snippet below.

2) Second issue I am facing is that, i connected the same BMS to a 16S battery pack (max charge voltage is 67V) and connected a charger to charge the battery and everything was working fine until the battery reached around 57V and all of a sudden the Voltage at LOAD + increased to the max charger voltage (85V), but the voltage at the PACK+ remains unaltered at 57V. The charger shuts of thinking over voltage on the battery. But the Battery voltage (PACK+) is still at 57V, its at the LOAD+ that's raising up for some reason. 

I disconnected the charger and re-plugged in and the issue still persists and as soon as charger starts to push some current, the voltage at LOAD+ quickly jumps to 85V and remains there until i unplug the charger, but the PACK+ which is the battery voltage remains at 57V, and AFE doesn't detect any faults as all cells are with in limits. Im confused on why this is happening. 

By the way, the discharging works quite well and no issues. Its only the charging that started acting like i explained above. Any ideas ??

void AFE_EnableDisCharging(void)
{
    fsp_err_t err;
    uint8_t FET_Contol = 0x00;
    uint8_t messagePayLoad[4];
    uint8_t checksumDataByte[3];

    FET_Contol = ((uint8_t) ~(AFE_PDSG_OFF_MASK)); //PDSG ON
    FET_Contol = FET_Contol & 0x0F;
    messagePayLoad[0] = CMD_DIR_SUBCMD_LOW;
    messagePayLoad[1] = 0x97;
    messagePayLoad[2] = 0x00;
    messagePayLoad[3] = (FET_Contol);
    err = I2C_WriteReg (messagePayLoad, sizeof(messagePayLoad));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);

    checksumDataByte[0] = CMD_DIR_RESP_CHKSUM;
    checksumDataByte[1] = Checksum (messagePayLoad, 4);
    checksumDataByte[2] = 0x05;
    err = I2C_WriteReg (checksumDataByte, sizeof(checksumDataByte));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);

    R_BSP_SoftwareDelay (10, BSP_DELAY_UNITS_MILLISECONDS);

    FET_Contol &= ((uint8_t) ~(AFE_DSG_OFF_MASK | AFE_CHG_OFF_MASK)); //CHG, DSG ON
    FET_Contol = FET_Contol & 0x0F;

    messagePayLoad[0] = CMD_DIR_SUBCMD_LOW;
    messagePayLoad[1] = 0x97;
    messagePayLoad[2] = 0x00;
    messagePayLoad[3] = FET_Contol;
    err = I2C_WriteReg (messagePayLoad, sizeof(messagePayLoad));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);

    checksumDataByte[0] = CMD_DIR_RESP_CHKSUM;
    checksumDataByte[1] = Checksum (messagePayLoad, 4);
    checksumDataByte[2] = 0x05;
    err = I2C_WriteReg (checksumDataByte, sizeof(checksumDataByte));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);

    R_BSP_SoftwareDelay (10, BSP_DELAY_UNITS_MILLISECONDS);

    FET_Contol |= ((uint8_t) (AFE_PDSG_OFF_MASK)); //PDSG OFF
    FET_Contol = FET_Contol & 0x0F;

    messagePayLoad[0] = CMD_DIR_SUBCMD_LOW;
    messagePayLoad[1] = 0x97;
    messagePayLoad[2] = 0x00;
    messagePayLoad[3] = FET_Contol;
    err = I2C_WriteReg (messagePayLoad, sizeof(messagePayLoad));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);

    checksumDataByte[0] = CMD_DIR_RESP_CHKSUM;
    checksumDataByte[1] = Checksum (messagePayLoad, 4);
    checksumDataByte[2] = 0x05;
    err = I2C_WriteReg (checksumDataByte, sizeof(checksumDataByte));
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_MILLISECONDS);
}

  • Hello Naga,

    1) But when I send the command to turn-OFF the PDSG, the DSG FET's is also tunning OFF
    There is no command to turn-off the PDSG FET manually. The PDSG/DSG command will turn off both off. Usually the device will automatically turn-off the PDSG FET on its own either by a timer or depending on its configuration. 

    2) Second issue I am facing is that, i connected the same BMS to a 16S battery pack (max charge voltage is 67V) and connected a charger to charge the battery and everything was working fine until the battery reached around 57V and all of a sudden the Voltage at LOAD + increased to the max charger voltage (85V), but the voltage at the PACK+ remains unaltered at 57V. The charger shuts of thinking over voltage on the battery. But the Battery voltage (PACK+) is still at 57V, its at the LOAD+ that's raising up for some reason. 
    Are the protections being triggered? Can you check if there were any protection flags raised? Which FET is turning off when this occurs? 

    Best Regards,

    Luis Hernandez Salomon

  • hello Luis,

    Thanks for the Clarifying the First question. 

    Regarding the second question. NO Protections are triggered. No Faults are triggered as the Voltage jump was observed on Load + and everything is normal on Pack+, also the individual cell voltages are stable. I am puzzled on what could make the voltage on Load+ to jump to such high voltages when the charger turns ON to push current. Charge and Discharge FET's are already ON before the charger starts charging. 

    I have also checked the MOSFET's and they look fine.

  • Hello Naga,

    Could an over-current fault have been triggered?

    Can you read the fault registers to confirm no protection was triggered? Did you measure the voltage of the gate-source of the FETs to see which FET turned off? The FETs would not turn OFF unless a fault was triggered.

    Best Regards,

    Luis Hernandez Salomon

  • Hello Luis,

    I have read the Fault registers and NO fault bit is set and no protection is triggered. The Charge and Discharge FET's are actually ON, and then when the charger turns ON to charge the battery, then the voltage shoots up on Load+.

    Thanks,

    Naga Penmetsa

  • Hello Naga,

    I do not understand how this could be happening. Is the charger misbehaving? I don't see how it is possible for the voltage to be that different unless the CHG FET off. 

    How did you confirm that the FETs are ON? What is the gate voltage of the CHG FET compared to the battery voltage? Something I notice from your schematic is that the individual gate resistances are too high. These should not be 5.1-kOhm each, you should change these to about 51-Ohm. Let me know if this changes anything.

    R56/R13 are also too large. We typically have much smaller resistors here.

    Best Regards,

    Luis Hernandez Salomon