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.

Very first step of every TI sensorless motorware lab: angle calibration

Other Parts Discussed in Thread: TMS320F28052F

Hello everyone,

I am working on a software for sensorless motor control. The software (state machine etc.) is complex but as for the motor control it seems like the code contains every step of the lab contents.
Though we have a problem : sometimes it works perfectly well (our motor rotates at the wanted speed and stops whenever it detects an obstacle) but sometimes it rotates in the wrong direction and does anything but what it was supposed to do.
We believe it might concern a sort of rotor angle calibration that would not be done correctly at the very beginning. What make us think so is that with the labs we can see the motor doesn't rotate right away at SpdRef. First there is some current running in the motor phases, then we can see a very small rotation and only then the motor starts rotating.

I looked eveywhere in the lab code to find where and what could lead to this very first step of rotor angle calibration but couldn't find it.

An information could be useful :
I ran labs 2 and 3 first with the motor alone (no load) and then on our whole structure (no negligible load) and I got very different values of Rs/Ls and Flux. In both cases is used these values :
USER_MOTOR_RES_EST_CURRENT = 3.0
USER_MOTOR_IND_EST_CURRENT = -3.0

When running lab2 with the load I got these values which are incorrect (couldn't run lab 3) :
Rs = 0.398371309
Ls = .00000000280963386
Flux = 0.253554195

So I continued with the values I got from lab2 without load :
Rs = 0.423598498
Ls = 0.00102948234
Flux = 0.165455088

Which influence do you think this could have ?

We are using :
- a microcontroler TMS320F28052F
- a 2 poles BLDC motor

If you need any more information to help me i would be glad to provide them.
Thank you very much in advance for your help and have a nice day !
Isabelle

  • As mentioned in instapsin lab's guide or user's guide, the identification lab (lab02a/b/c) must be worked without loading to make sure that the motor can run without vibration or stall during the identification process. It seems like the motor was not identified properly when you run the lab02 with a load. 

    Please don't add any load on the motor for identification, and set the correct identification variables value in the file of the 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     (xx)                               // A - 10-30% of rated current of the motor

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

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

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

  • Dear Yanming Luo,

    Thank you very much for your answer!

    The only reason I tried the identification with the load was that the motor wasn't running ok with the values I got without any loading (I have to admit it wasn't my best idea ever but I was kind of out of suggestions...). So basically when I ran the labs without loading I guess I got the right identification values, which I then put in my user.h. But still something must be wrong because sometimes the motor rotates the right way and sometimes not, depending on the beginning motor/rotor position.

    Best regards

    Isabelle

  • Good news : I finally got my motor rotating.

    I confirm there is nothing specific to do before the rotation : my problem came from a hidden rest of encoder value though I was trying to run it sensorless.

    Have a nice day,

    Isabelle