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.

BOOSTXL-DRV8323RH: Motor Control SDK - How to feed forward BEMF?

Part Number: BOOSTXL-DRV8323RH

Hi,

In the universal motor control lab I have not seen any BEMF constant feed forwarding or am I wrong? If this is available, I would be glad to enable it, if it is not available, I will probably add this myself. So, one would like to be able to directly modify Vq and Vd for this. Do I have access somehow to do this?

Also normally there is some decoupling of the axis available, is this done in the control lab?

Kind Regards,

Sebastian

  • Which algorithm are you using? The BEMF value are only used in the observer/estimator module for estimating the rotor angle, it's not used in current loop for outputting the Vd and Vq.

    No. There is no decoupling control for d&q-axis current control loop the in this lab.

  • Hi Yanming,

    I'm using FAST. The BEMF constant estimation from FAST is the motorSetVars_M1.flux_VpHz. So, for BEMF feedforward, I need the SI units (V s / rad). Is this constant in Volt(RMS) or Volt(peak)? When it is V(RMS), the conversion factor should be 1/(PI*sqrt(6)), right?

    --> The feed forward term for Vq should be motorSetVars_M1.flux_VpHz * (1/(PI * sqrt(6))) * omega, right? Or directly motorSetVars_M1.flux_VpHz * f_motor?

  • It seems like you need to get these values for implementing the decoupling control. Only the FLux, Inductance and Current will be used in control.

    If you need these values, you may call the EST_getEab_V(EST_Handle handle,MATH_Vec2 *pEab_V) or EST_getEdq_V(EST_Handle handle,MATH_Vec2 *pEdq_V) to get the alpha/beta back EMF voltage vector or the direct/quadrature back EMF voltage vector from the estimator.

  • Hi,

    I implemented now the BEMF feed forwarding, but it seems, that the speed controller becomes instable when I want a high damping constant.

    So what I did:

    //BEMF voltage 
    
    obj->vq_ff_bemf_V = (obj->motorSetsHandle->flux_VpHz * obj->speed_Hz);
    
    //Use feedforward term for BEMF
    
    PI_run_series(obj->piHandle_Iq, obj->IdqRef_A.value[1],
    obj->Idq_in_A.value[1],obj->vq_ff_bemf_V, (float32_t*)&obj->Vdq_out_V.value[1]);

    When I have a look at the integrator Ui for Iq, the integrator term stays always near zero for all speeds, this proofs that the BEMF term works great. But when I increase the bandwidth (objUser->BWc_rps from 400.0f to 1100.0f), the controller becomes instable (speed is waving around setpoint), but only when I use the BEMF feed forwarding.

    So, it seems FAST has some problem when using the FF BEMF. What I also see is, that the speed controller and the current controller use the same bandwidth objUser->BWc_rps, why? What I also observed is, that I need to increase the bandwidth pretty high to achieve o proper stiffness of the motor and when I choose a new setpoint from high to low speed, there is always a short time phase where the motor goes nearly down to zero speed. 

  • It's not related to the FAST that is only a estimator and doesn't care what current controller are used. You may try to tune the gain of the current PI controller.

    The speed controller use a damping factor (BWdelta) to set the real bandwidth. All of the gains for both current and speed controllers calculated in the lab are just for a reference, the user should tune these parameters according to the motor and system.