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.

Estimator identification of Lsd_H not working, but Rs_Ohm is fine.

Other Parts Discussed in Thread: TMS320F28069F

Hi,

Working on a custom BLDC solution.

We've arbitrarily set:

#define USER_MOTOR_Ls_d				 (0.01)
#define USER_MOTOR_Ls_q				 (0.01)

We found that after the estimator has completed that our Rs_Ohm is updated (3.624 in our case) but the Ls_d and Ls_q values remain unchanged (i.e. the estimator did not estimate these values).

Could anyone please suggest where to look for why the estimator is not updating Ls_d?

Thanks

Stomp!

  • Which lab project are you using? Only lab02a/b/c is used to identify the motor parameters to update the Ld and Lq. Did the motor run smoothly during motor identification and had any faults if you used lab02x.
  • Hi,

    We are using a application specific version of what amounts to lab5a.

    The point I would like to make is that we run:

    EST_setFlag_enableRsRecalc(...)

    And wait until:

    EST_isMotorIdentified(obj->estHandle) == true

    We then read:

    // get the stator resistance
    sInsta.sMotorVars.Rs_Ohm = EST_getRs_Ohm(obj->estHandle);
    
    // get the stator inductance in the direct coordinate direction
    sInsta.sMotorVars.Lsd_H = EST_getLs_d_H(obj->estHandle);
    
    // get the stator inductance in the quadrature coordinate direction
    sInsta.sMotorVars.Lsq_H = EST_getLs_q_H(obj->estHandle);

    And we find that Rs_Ohm was calculated, but Lsd_H is the same from user.h.

    Lsd_H does not get computed or updated in any way once the motor is identified. We can put any value we like (say for example 0.0123456 into user.h and its simply returned as Lsd_H.

    I will try and run Lab2a on a HVKIT and see what happens. The only thing that comes to mind is somehow we are not setting:

    CTRL_setFlag_enableUserMotorParams(...)

    correctly.

    Thanks.

  • So I've just ran Lab02b and the estimator state stays in EST_State_Rs for a few minutes.

    Any suggestions as to why it gets stuck?

    Thanks.
  • How long does it take , and whether go to next step? What's EVM kit and controller? You can refer to the lab guide to set some parameters in user.h for motor parameters identification.
  • Hi Stomp,

    What's update on your side? Did you change the following parameters in user.h to enable motor to run smoothly in Ls and Flux identification phase? Please let's know if you need any further assistance.

    USER_MOTOR_RES_EST_CURRENT
    USER_MOTOR_IND_EST_CURRENT
    USER_MOTOR_MAX_CURRENT
    USER_MOTOR_FLUX_EST_FREQ_Hz
  • Hi Yanming,

    Sorry for the late reply. I've got a few BLDC designs on my desk.

    For this current problem, I am working with a BLDC, Ls = 14mH, Rs = 3.2R. Hardware is HVKIT

    The problem is that the estimator would simply not run, at all. The reason had something to do with either

    USER_IQ_FULL_SCALE_FREQ_Hz = 1100.0

    or

    USER_PWM_FREQ_kHz = 30KHz.

    When I put the IQ FREQ to 800 and the PWM FREQ to 15KHz the system returns to normal and will ID my motor.

    I suspect there is some condition that is not being detected and reported as an error during the user params setup.

    Thanks anyhow.

    Stomp!.
  • What's the CPU frequency?

    You need to set below parameters in user.h if the CPU frequency is 60MHz and PWM frequency is 30KHz

    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (2)
    #define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1)
  • Hi,

    Sorry I should have been more specific:

    TMS320F28069F at 90MHZ.

    Our hardware is kind of interesting in that I need a very small FET deadband of 0.01uS and 30KHz PWM.  

    I'm still trying to evaluate the issues associated with the frequency and PER_TICK settings as you'll note from my other posts about the 20827F devices.

    Thanks again for your help!