The TI E2E™ design support forums will undergo maintenance from Sept. 28 to Oct. 2. If you need design support during this time, contact your TI representative or open a new support request with our customer support center.

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: universal_motorcontrol_lab 4 : what's the relationship between speedRef_Hz and speedEST_Hz

Part Number: BOOSTXL-DRV8323RH


I am working on the HALL to FAST smooth transition issues and discovered both speedRef_Hz and speedEST_Hz was out of sync. 

when running under FAST estimator + Current Control mode, set IsRef_A to 2.0, I have both EST and HALL Hz as below

when running under FAST estimator + Speed Control mode, set speedRef_Hz to 438, I have speedEST_Hz = 434 and speedHall_Hz which's like Current Control different.

FAST    Current Control mode

IsRef_A = 2.0
speedEST_Hz = 438
speedHall_Hz = 31

FAST    Speed Control mode

speedRef_Hz = 438
speedEST_Hz = 434
speedHall_Hz = 31

now change the estimator to HALL, if IsRef_A set to 2.0, my motor spin like crazy because speedEST_Hz is ramp up to -7495 

HALL    Current Control mode

IsRef_A = 1.45
speedEST_Hz = 423
speedHall_Hz = 30

IsRef_A = 2.0
speedEST_Hz = -7495
speedHall_Hz = 189

HALL    Speed Control mode

speedRef_Hz = 15
speedEST_Hz = -174
speedHall_Hz = 15
IsRef_A = ~1.17

speedRef_Hz = 20
speedEST_Hz = -235
speedHall_Hz = 19
IsRef_A = ~1.32

speedRef_Hz = 120
speedEST_Hz = -7499
speedHall_Hz = 118
IsRef_A = ~1.6

both Speed and Current Control mode under HALL estimator seem to have speedEST_Hz issues

e.g. positive speedHall_Hz have negative speedEST_Hz value, that's noway to make transition !!!!

       what's the 7499 upper limit value ? 

       on HALL + Current Control mode, it's jump to its upper limit 7499 see below IsSet_A set to 1.7 and 1.9

       on HALL + Speed Control mode, speedRef_Hz higher than 100, speedEST_Hz also jump to -7499

IsSet_A     speedHall_Hz  speedEST_Hz

1.4         28            -360
1.5         34            -512
1.6         46            -844
1.7         62            -7499
1.8         190           -7499
1.9         190           -7499

Can anyone help to let me know how to make it in-sync.? 



  • Do you set the correct motor parameters for using FAST estimator in user_mtr1.h and set the right hall angle in hallAngleBuf[] according to the motor you used?

    You may try to run the motor in build level 2 and 3 first to verify the settings.

    BTW, if you run the motor without speed close-loop, just use the torque control loop by setting the IsRef_A value, the feedback/estimation speeds (speedEST_Hz , or  speedHALL_Hz ) of the motor will not follow the reference speed (speedRef_Hz ), which depends on the torque current, the load and friction of the motor.

  • Do you set the correct motor parameters for using FAST estimator in user_mtr1.h and set the right hall angle in hallAngleBuf[] according to the motor you used?

    Hi Yanming,

    yes I did many times

    01. change flag_bypassMotorId = false
    02. flagEnableRunAndIdentify = 1
    03. motor start spinning
    04. motor stop, update these values

    #define USER_MOTOR1_TYPE              MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS  (2)    
    #define USER_MOTOR1_Rs_Ohm          (0.434060246f)      
    #define USER_MOTOR1_Ls_d_H          (0.000499680347f)      
    #define USER_MOTOR1_Ls_q_H          (0.000499680347f)     
    #define USER_MOTOR1_RATED_FLUX_VpHz (0.0016203199f)

    06. turn off identify by flag_bypassMotorId = true
    07. change pre-define HALL_CAL_N to HALL_CAL to run HALL_calibrateIndexAngle routine
    08. run CURRENT CONTROL mode by flagEnableSpeedCtrl = 0
    09. start running by flagEnableRunAndIdentify = 1
    10. copy thetaCalBuff[7] value to hallAngleBuf[7] as below 

    1->1, 2->2, 3->3, 4->4, 5->5, 6->6, 6->0

    const float32_t hallAngleBuf[7] = { -0.772357106f, 2.16005731f, -1.88054085f, -3.03630972f, 0.258178711f, 1.20954204f, -0.772357106f };

    12. see below 2 pics, both speedEST_Hz and speedHall_Hz are big different

    I remember when motor identify is taking place, motor is spinning at 60Hz both speedEST_Hz and speedHall_Hz are in-sync.

    under FAST + SPEED CONTROL, my motor out of control + running fast + noisy ...

    enable HALL_CAL to checked with thetaIndexBuff and thetaCalBuff under FAST + SPEED CONTROL, what's these value tell ? 



  • Seems like the Flux is too low as you mentioned above.

    #define USER_MOTOR1_RATED_FLUX_VpHz (0.0016203199f)


    You may try to tune the identification variables in the file of the user header file according to the motor.  And don't add any load on the motor when run this lab for motor parameters identification, to ensure that the motor spins smoothly during Flux measurement and Ls identification states.

    #define USER_MOTOR1_RES_EST_CURRENT      (1.5f)                               // A -  10-30% of rated current of the motor

    #define USER_MOTOR1_IND_EST_CURRENT      (-1.0f)                             // A -  10-30% of rated current of the motor,  just enough to enable rotation

    #define USER_MOTOR1_MAX_CURRENT            (5.0f)                               // A -  30~150%  of rated current of the motor

    #define USER_MOTOR1_FLUX_EST_FREQ_Hz     (40.0f)                            // Hz - 10~30% rated frequency of the motor

  • Hi Yanming,

    yes, i changed this to 0.03 as Anaheim BLY172S 24v

    do you know why motor identify result was 0.00162573601.f such as big different, also my other 6 inches motor identified 0.00298329326f