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.

Inverter Overheats!

Other Parts Discussed in Thread: DRV8301

I have designed an Inverter to attach to the Launchpad that is modeled after the BOOTXL.  However this inverter does not use the DRV8301 but rather three 8 pin gate drivers.  I have also updated user.h for this new inverter and removed the #define drv8301_spi

Using Lab2b, I am able to identify the motor and the motor spins good.  The main problem is that the MOSFETS and gate drivers get very hot with no motor load!  Running the same motor, the BOOSTXL board only gets a little warm even under load. The inverter is drawing about 10 times more current than the BOOSTXL inverter board.  Something is really wrong here.  My MOSFETs have a little higher total gate charge.  But I don't see that making this huge of a difference.  Could it be a dead time problem?  Below is the schematic of one phase of my inverter. Any ideas gents?

  • To see if there is a dead-time problem, remove the motor and run the phases at 50% duty cycle.  If you see extra current being drawn, then increase the dead-time in the EPWM peripheral until the current drawn from the power supply drops. 

    Did you populate resistors between the gate driver and gate of the mosfets?  You can adjust the value of these resistors to reduce switch ringing.  If the gate drive is too underdamped, it will ring after a switching event which can cause shoot-through and heating problems.

    -Eric

  • Thank you for the advice Eric. I did adjust the value of the gate resistor and the ringing doesn't change much but seems to be about 1us in duration. I adjusted the value from 10 ohms up to 120 ohms. It still seems quite underdamped.

    As for the dead time, I looked at pwm.h but I do not see where the adjustment should be made. Can you provide the location?

    I am also not sure how to run the phases at 50% without the motor. I can however run the motor at slow speed that seems to produce a 50% waveform that I can see on my scope.

    Thank you!
  • The dead-time setting is done in hal.h.  A define sets the amount of time in number of clock cycles.  The actual lines of code from hal.h is shown below.

    As for creating a 50% duty cycle, I insert code into the while(!(gMotorVars.Flag_enableSys)) loop as shown below.

    Create a global variable bool flag_enablePWMs = false;

    // Waiting for enable system flag to be set

    while(!(gMotorVars.Flag_enableSys))

    {

    if(flag_enablePWMs)

    HAL_enablePwm(halHandle);

    else

    HAL_disablePwm(halHandle);

    }

    By doing this, you can enable or disable the PWMs and still have gMotorVars.Flag_enableSys set to false.  The other nice thing is that all of these adjustments can be done from the real-time watch window.  To change duty cycle, use the global variable "gPwmData" that is in proj_lab*.c.  gPwmData contains an array of duty cycles for each phase.  To set phase A to 50% duty gPwmData.Tabc.value[0] = IQ(0.0), for phase B gPwmData.Tabc.value[1] = IQ(0.0), and for phase C gPwmData.Tabc.value[2] = IQ(0.0).

    After you have set the duty cycles that you want, then enable the PWMs by setting the flag "flag_enablePWMs = true".

    By adjusting the PWMs this way, you do not need a motor connected and the FOC control is not enabled.

    A note on duty cycles:  -1.0 is 0%, 0.0 is 50% and 1.0 is 100%.

    -Eric

  • Thanks again for your assistance Eric!

    I have adjusted my gate resistor to eliminate the ringing.  But what really helped was adjusting the deadtime.  I increased the deadtime by one count until the current draw stabilized.  With a setting of 7, now the inverter is running much cooler.  It was running way to hot with the original setting of 1.

    Now I believe I have some good success and my inverter is working well!

  • Hi Eric,

    Regarding adjusting my gate resistors, which side of the resistor should I look at to optimize the damping?

    Also, if I reduce the value of the gate resistors, and my MOSFET switching time then decreases, will I then need to re-adjust (increase) my deadtime values?

    Thank you!