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.

TMS320F280041C: FAST Estimator providing incorrect estimated speed at higher motor speed

Part Number: TMS320F280041C
  • We have noticed that the FAST estimated angle sawtooth shape degrades with higher speed. We have run the motor ID lab to determine the motor parameters, and at least Rs corroborates with our measurements
  • Commanding 350 Hz (2625 RPM for our 8 pole-pair motor) results in the following:

Ch1 (yellow) is estimated angle, cyan (ch3) is Hall sensor output.

The FAST estimated speed is approx 350 Hz but motor is in reality spinning at 370 Hz. Estimated angle cycle is also at 370 Hz. We believe the rounded portion is due to the 1 KHz RC filter we added at the output of the PWM and not related to the estimator speed error.

 

  • Increasing commanded speed to 375 Hz results in the following scope trace:

Estimated angle is even more distorted and estimated speed is even further off from real speed of 400 Hz. Angle is also cycling at 400 Hz, but estimated speed is approx 375 Hz (same as commanded)

 If we command 320 Hz or lower, the estimated speed corresponds to the commanded and Hall sensor speeds. Is there some input parameter or something else we could adjust in the FAST estimator to increase estimated speed accuracy at higher speeds?

  • Which board are you using? A TI EVM kit? Or your own board?

    Did you have any current waveforms during the motor runs with a load at low speed or rated speed?

    Could you please try the latest motor control SDK?

    MotorControl software development kit (SDK), http://www.ti.com/tool/c2000ware-motorcontrol-sdk

  • We are using our board and latest SDK. We will attach current waveforms,  but what we can now say is that the sinusoidal phase current changes shape at the higher speeds beyond 320 Hz. It looks more triangular with possibly other harmonics.

    In tuning the speed loop we can't seem to get beyond a 1.5 Hz crossover with an unloaded motor. The documentation talks about a LPF on the speed feedback path. Do you know what is its time constant? Our current loop was measured 550 Hz crossover so we were hoping for at least 10-20 Hz speed loop crossover.

  • It looks like the current shape you showed above is not good. So we want to know the current shape at low/rated speed, you have to tune the current and voltage sensing if the waveform is still as the one tested at the high speed. 

  • We have improved the current and voltage feedback by making it cleaner, but it appears that the estimator speed issue persists, but now the other way. When we command 350 electrical Hz, the speed estimate is 350 Hz, but the actual electrical motor speed is around 270 Hz as shown below. Green is phase current and yellow is the estimated angle. The angle cycle does have the same frequency as the motor, although the estimator thinks the speed is 350 Hz, and the speed loop is closed around 350 Hz but actual speed is 70 Hz. Are there any other estimator parameters that need to be adjusted so that the speed estimate is more accurate?

  • Try to run the identification lab (lab05) to identify the motor parameters again, make sure the motor runs without loading and spins smoothly without vibration and stalling during the identification process.

    Please don't add any load on the motor for identification, and set the correct identification variables value in the file of user.h according to the specification of the motor, to make sure the motor spins smoothly during Flux measurement and Ls identification states.

     

    #define USER_MOTOR_RES_EST_CURRENT     (1.0)                               // A - 10-30% of rated current of the motor

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

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

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (20.0)                           // Hz - 10~30% rated frequency of the motor

    And please try to use the latest motor control SDK that has a patch library for high speed. 

    MotorControl software development kit (SDK)

    http://www.ti.com/tool/c2000ware-motorcontrol-sdk

  • We ran the motor ID with parameters within the ranges mentioned and got results close to what they were before. One thing that made an impact in the accuracy of the estimated speed was the USER_VOLTAGE_FILTER_POLE_Hz setting.

  • We ran the motor ID with parameters within the ranges mentioned and got results close to what they were before. One thing that made an impact in the accuracy of the estimated speed was the USER_VOLTAGE_FILTER_POLE_Hz setting.