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.

CCS/DRV8305: my driver is overheating

Part Number: DRV8305

Tool/software: Code Composer Studio

Hi

I am using Lab3a of motor ware to control my motor. DRV8305 is getting very hot at 24 V 6A system current draw. I saw few post regarding how to solve this. 

One of the solution was to change Idrive source and sink current. I found on DRV8305.h the typedef enum for different drive currents are assigned however I could not locate where I can assign specific Idrive current.

Can you please help me to find where exactly in the code I need to change the drive current value.

Thanks

  • There are two ways to change the configuration of DRV8305
    1. You might set the values in DRV8305_writeData() in drv8305.c directly.

    // Write Control Register 5
    drvRegAddr = Address_Control_5;
    Spi_8305_Vars->Ctrl_Reg_05.IDRIVEP_HS = ISour_HS_0p500_A;
    Spi_8305_Vars->Ctrl_Reg_05.IDRIVEN_HS = ISink_HS_0p500_A;

    drvDataNew = (Spi_8305_Vars->Ctrl_Reg_05.IDRIVEP_HS) | \
    (Spi_8305_Vars->Ctrl_Reg_05.IDRIVEN_HS) | \
    (Spi_8305_Vars->Ctrl_Reg_05.TDRIVEN) | \
    (Spi_8305_Vars->Ctrl_Reg_05.CTRL05_RSV1 << 10);
    DRV8305_writeSpi(handle,drvRegAddr,drvDataNew);

    // Write Control Register 6
    drvRegAddr = Address_Control_6;
    Spi_8305_Vars->Ctrl_Reg_06.IDRIVEP_LS = ISour_LS_0p500_A;
    Spi_8305_Vars->Ctrl_Reg_06.IDRIVEN_LS = ISink_LS_0p500_A;

    drvDataNew = (Spi_8305_Vars->Ctrl_Reg_06.IDRIVEP_LS) | \
    (Spi_8305_Vars->Ctrl_Reg_06.IDRIVEN_LS) | \
    (Spi_8305_Vars->Ctrl_Reg_06.TDRIVEP) | \
    (Spi_8305_Vars->Ctrl_Reg_06.CTRL06_RSV1 << 10);
    DRV8305_writeSpi(handle,drvRegAddr,drvDataNew);

    or 2. You might and then call DRV8305_writeData()

    gDrvSpi8305Vars.Ctrl_Reg_05.IDRIVEP_HS = ISour_HS_0p500_A;
    gDrvSpi8305Vars.Ctrl_Reg_05.IDRIVEN_HS = ISink_HS_0p500_A;
    gDrvSpi8305Vars.Ctrl_Reg_06.IDRIVEP_LS = ISour_LS_0p500_A;
    gDrvSpi8305Vars.Ctrl_Reg_06.IDRIVEN_LS = ISink_LS_0p500_A;
    gDrvSpi8305Vars.Ctrl_Reg_07.DEAD_TIME = DeadTime_1000_ns;

    gDrvSpi8305Vars.WriteCmd = 1;

    // Write new reg values into DRV
    HAL_writeDrvData(halHandle,&gDrvSpi8305Vars);

    Please ensure the parameters of motor is correct and identified by lab02b/c, and check current/voltage feedback signals are good enough to estimate the rotor position.
  • Thank you Yanming,

    I will try this,

    The motor parameters were identified with Lab 2b and was confirmed using lab 2C. The currents voltage feedback signals are alright. Motor parameters are close to what specified in datasheet.  Motor also getting hot though. MOSFETs are not over heating. 

    There are 11 different values for drive current.  Any suggestion or rule to follow which one I should use or I should find it using   trial and error based on motor and driver performance.

    Thanks

  • You might select the right value based on the spec. of MOSFET, and there is a recommendation design in the datasheet of DRV8305, you may refer to it.