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.

Resistive braking ie shorting the three phase terminals of the motor

I am running simple FOC Current control ie same as Lab 5 (a) and providing inputs to Iq_ref

When Iq_ref = 0 , I want to add braking so the motor provides some resistance to external sources that can cause windmilling. 

Is there an easy way to introduce braking ? 

My motor controller is being driven from a Power supply and not a battery so I can do regenerative braking, I can only do Resistive braking ie by just shorting the three phases which can be done by turning all the 3 bottom mosfets on the 3 bridges ON while all the 3 top mosfets stay OFF. What's the best way to do so? Or if anyone has any better suggestions.

by just shorting the three phases , one good way would be to turn all the 3 bottom mosfets on the 3 bridges ON while all the 3 top mosfets stay OFF. What's the best way to do so? Or if anyone has any better suggestions.

  • correct, you can turn on all high sides or all low sides. both are valid, but I'm not sure of any differences.  With your power supply, can it take regenerative power?  If not you will need to monitor the Vbus and try to control the regen value at higher speeds.

  • I'm also interested in shorting the motor as a part of braking. Our proto brakes by regen to the DC bus and when the bus voltage goes over a set amount, a resistor is switched in. Although this provides adequate braking, we could save the product cost and heat from this circuit (by allowing the motor to heat instead). However, I was under the (possibly mistaken) impression that the InstaSpin control would be disrupted from loss of voltage/current feedback. Maybe there is a way to integrate this winding current while still maintaining speed control?

  • if you set the PWM highside (write all (0.0) to Tabc) or lowside (write all (1.0) to Tabc) yes you are no longer controlling the voltage to the windings, which means you aren't controlling the current or speed.  FAST can still track the rotor though.

    if you want to do dynamic braking you can put current into the Id_ref while still maintaining your speed controller.

  • So, if I have

    HAL_PwmData_t bPwmData = {_IQ(0.0), _IQ(0.0), _IQ(0.0)};

    and I call

    HAL_writePwmData(halHandle,&bPwmData);

    then that will short all the high side mosfets?

    ===================================================

    and if I have

    HAL_PwmData_t bPwmData = {_IQ(1.0), _IQ(1.0), _IQ(1.0)};

    and I call

    HAL_writePwmData(halHandle,&bPwmData);\

    then that will short all the low side mosfets?
  • as an example you will notice in the CTRL_run function when we go into Idle we set them all to 0

    else if(ctrlState == CTRL_State_Idle)
    {
    // set all pwm outputs to zero
    pPwmData->Tabc.value[0] = _IQ(0.0);
    pPwmData->Tabc.value[1] = _IQ(0.0);
    pPwmData->Tabc.value[2] = _IQ(0.0);

    }