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.

PMSM motor stalling problem and initial angle calibration problem

Other Parts Discussed in Thread: MOTORWARE, TMS320F28069M

Hi all,

I have made a high voltage motor controller using TMDSHVMTRPFCKIT solution and I am using Motorware projects to run the motor with TMS320F28069M control card.

I wanted to run my motor in torque control mode according to my application. It is a traction application. So I chose motorware lab5a to run the motor.  I got rotor position feedback from motor using TI resolver kit and pumped the angle data to motor controller MCU using SPI. I made required modifications to lab5a to absorb the rotor position without using FAST estimated angle.

Since I could not find any method to find out the exact initial angle data (rotor angle aligns with phase zero angle), I followed trial and error method to find the initial angle. With that I found a angle range motor works nicely in no-load condition. That means motor runs at no load condition nicely as well.

But when motor runs at load condition, motor produces a sound and motor stalls. I want to know the reason for this condition. Does it happen because of the wrong initial angle problem?

I monitored PWM pins using oscilloscope, when motor was stalling. I saw that the PWM reached to maximum duties. 

What should be the reasons for this problem. How much accurate position angle is needed to run the motor smoothly in load condition  (in degrees or pu values)?

Is there any method to find the exact zero position ?

Thank you
   

 

  • correct, the issue is that the angle being used in the FOC is incorrect.

    a resolver should be able to produce an accurate electrical angle though...that's the whole purpose.  are you sure the direction / phase matches?  You can try switching two phases to make sure rotor direction agrees with resolver angle direction.

  • Chris,

    Motor can be rotated both directions. Not only by swapping phases, but also using negative iq-ref values, motor can be rotated both directions in load and no-load conditions.

    Chris, what is the minimum accuracy of electrical angle is needed to run the motor smoothly in load-conditions?

    For example, let say actual electrical angle is 90 degrees. Then pu value will be 0.25 (90/360). In this instant moment motor will run nicely, if we put 0.25 as electrical angle. What is the minimum and maximum pu values that can do same smooth run of the motor in the same instant moment (0.25 +/- error). Simply, what is the maximum electrical angle error that can affect to motorware algorithm to create malfunctions ?  I would like to know that how much electrical angle affects to the motor run.

    What I am doing is, I am getting mechanical angle from the resolver kit and and convert it in to electrical angle using number of pole pairs. Then convert it into pu value. Then subtract initial angle offset and make necessary changes to keep the number between 0-1 as below, 

     

    Electrical_Angle= Electrical_Angle- Initial_angle;

    if(Electrical_Angle< _IQ(0.0)){
    Electrical_Angle= Electrical_Angle+ _IQ(1.0);
    }

    Then, I change Initial angel values and inspect the motor behavior. I inspected that Initial_Angle in between 0.4 to 0.505 motor will work fine in no load condition.  But when the load is applied and give higher torque command (iq_ref = 20.0) motor produces sound and stall. 
    What should I do to eliminate this problem?

    Thank you

  • I do not think you have calculated the offset correctly.

    doesn't your resolver give you an electrical angle?

    if it gives you mechanical you need to force the rotor to a zero angle by applying enough Id current to the stator to get the rotor (with any load) to move. THEN you read the resolver and use that as your angle offset.


    the % of torque you can produce is proportional to the sine of the angle between rotor and stator
    sin 90 = 1.0
    sin 82 = 0.99
    sin 60 = 0.87
    sin 45 = 0.71

    once load > amount of torque you can produce you will have issues with start-up.
  • Thank you Chris,

    Thank you for showing me a way to find the zero angle offset. I should try that. Before that I have one more thing to clarify from you.
    I think I can use same Lab5a to apply Id current to the stator by increasing User_IdRef from watch window (Correct me if I am wrong). When I increase the Id current, should I keep Iq current zero? or should it be increased as well?

    Thank you.

  • 5a doesn't have code included that allows you to set an IdRef.

    in proj_lab12 and 13 to do the alignment the RsRecal feature is used. In IS-FOC we tell you to set this to ~10% for motor ID, but when using it for rotor alignment you typically need to increase this to nearly rated current to insure the rotor will move even with heavy load.

    Yes, Iq current is kept to 0 and only a DC current is injected through Id.