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.

TMS320F28062F: Motor didn't start (and damaged) at quick start ramp

Part Number: TMS320F28062F
Other Parts Discussed in Thread: DRV8301-69M-KIT, MOTORWARE

Hello.

We are using an own HW similar to your DRV8301-69M-Kit (D) and LAUNCHXL Board together with motorware 1.01.00.16 and 28062F instead of 28069M. User software is based on your FOC Lab sample codes with the controller module in use.

The motor to be driven is a PMSM at a set-speed range of 500 … 3000 rpm.

Problematic requirement is a startup-time of maximal 150 ms for a 0…3000 rpm start.

This requires high MaxAccel_krpmps and aggressive speed control parameters. Although we meet this requirement in most cases the aggressive start conditions show in some cases a tantalizing motor drawing high currents without any circular movement. Thus the flux angle and the mechanical motor angle are asynchronous.

A test sequence of starting every 2 seconds fails after aprox 10 minutes, thus 150 starts. To prevent the motor from overheating our actually application monitors speed and current and switches the motor off in this problematic start situation (and after 0.5 seconds waiting will re-enable and restart the motor).

For final software we need to prevent this situation in any case. Actually we tried the following without success:

1.       RsOnline disabling / resetting did not help.

2.       Field incease by CTRL_setId_ref_pu before starting (to enforce estimator angle alignment with motor poles) did not help.

3.       Dynamically parameter changing for startup did not help.

4.       Directly driving GPIOs for some msec to position the rotor to a pole position did not help, since the angle read by EST_getAngle_pu   in standstill is too imprecise. Reason for the unprecise angle in standstill seems to be the need to switch of integational part of the speed controller in standstill. Switching off integrational part was a measure to overcome slow motion self-start of the motor after standing still for let say 30 minutes with setspeed 0 rpm.

Also directly driving GPIOs for a manual moving sequence to give an initial torsion does not help since the angle read by EST_getAngle_pu in standstill is too imprecise.

5.       Always performing steps done after “MotorVars.Flag_enableSys = true” in your Lab sample code when halting the motor did not help.

6.       Manually shortcut of all lowside FETs in standstill did not help.

7.       Ramping MaxAccel_krpmps in a smooth sin-squared manner from speed 0 to 3000 in 150 msec did not help.

8.       Ramping SpeedRef_krpm in a smooth sin-squared manner from speed 0 to 3000 in 150 msec did not help.

9.       In standstill setspeed toggeling for some few msec before issuing “MotorVars.SpeedRef_krpm = 3.0” did not help.

10.   50 msec in oposite direction before starting with 3000 rpm speed did not help.

11.   Increasing current sope by EST_setMaxCurrentSlope_pu(obj->estHandle,_IQ(127.99)) did not help.

12.   Using forced angles from the actual 2 Hz to 10Hz (= 150rpm for our 4 pole motor) did not help.

13.   Every main control cycle calling HAL_updateAdcBias does not help.

14.   Manually setting the estimator angle by a sequence similar to:

    OverwriteAngle = EST_getAngle_pu( ((CTRL_Obj *)g_CtrlHandle)->estHandle );

    EST_setAngle_pu( ((CTRL_Obj *)g_CtrlHandle)->estHandle, OverwriteAngle);

    CTRL_setSpd_ref_krpm (g_CtrlHandle, HoldSpeed );

has the high danger of completely loosing flux connection after aprox several 10th start.

15.   When enabling the motor in the EST_State_Rs the estimator forces 1 A in the coil. But the state can't be canceled with a speed command within msec. Additionally starting is failing for aprox 90 % when starting less than half a second after recalibration is finished.

16.   Changing overmodulation with CTRL_setMaxVsMag_pu is not effective without restart, thus can’t be used for the 0-3000 rpm start problem.

To get further to a solution of this problem:

a) What more information do you need to be able to support us?

b) Can you give a hint what other feature of instaSPIN is worth trying?

  • 1. What acceleration do you want to get? How much is the startup load?
    2. Did you have any current waveform of startup?

    You can try to use torque current control without speed control, check the feedback speed, and to switch the control to speed close loop if the feedback speed is near your target speed.
  • Thanks a lot for your torque hint! A really good idea. I forgot about this possibility.

    Using torque gives very good results, but the startup time with torque control is about 500 msec at our nominal 12 V supply (even for Iq 12 A at the 2A nominal motor current). When increasing the supply to about 15 V startup time gets into a range of 200 msec. But then also torque control produces “rotor swinging and high current drawn” startup situation every after some 100 of 0-3000 rpm starts.

    Concerning your questions:

    1. 3000 rpm per 150 msec means 20 krpms per sec. That is the value written into MotorVars.MaxAccel_krpmps.

    Startup load is up to now only a fan-like plastic disk mounted on the rotor shaft (weight of about 150 g), diameter: 15cm

    1. Currents of two of the motor phases in a situation where the motor was just able to successfully start after some oscillations looks like the following:(Scale: 2V=2A)

  • Please refer to chapter 10 and 14 of SPRUHJ1G to improve startup performance, you can try to enable the force angle and Rs recalibration. A accurate stator resistance can improve startup and low speed performance.
  • The two points (force angle and rs recalibration) we have already checked. Unfortunately without success.
    (see #1 and #12 from the list at the first post).

    Do you have a comment or explanation to the phase current, when the motor oscillates?
    Why is a break in the motor current visible?
    Why are positive and negative current components different?
  • Do you have no idea what might be causing the motor to oszillates sometimes at a quick start?
    Please note the motor will be destroyed, if this condition is too long.

    Is this an error in the algorithm from the TMS chip?
  • Not chip error, it's too high acceleration to sensorless -FOC with heavy load, you have to tune the regulator to meet the acceleration. The rotor position is incorrect to run smoothly with heavy load for low speed using sensorless-FOC.
    You can try to use different acceleration for startup, a low acceleration for startup, and switch to your target acceleration when the speed is higher than a setting speed.