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.

Does anyone know how to align an encoder with the rotor flux vector of a PMSM?

Hello all,

I am implementing a field oriented controller with the eZdsp f28335. When I run the controller the rotor locks up, however I notice that my current errors are going to zero (I am skipping the speed loop for now, and give the two current controllers a static id and iq value). I am using theta in electrical degrees (p*wr) but this is all based on where the index on the encoder is, which I imagine was arbitrary (My encoder is inside my motor housing, motor type = Kolmorgen AKM series). None of the application notes mention how to calibrate the encoder so the rotor flux lines up with the d axis at theta = 0. Has anyone else had this problem? ANy implementation tips for getting FOC to work would be greatly appreciated.

 

Cheers

 

Gideon

 

  • Hi,

    Well... The easy way would be for you to do a constant speed spin test and record what the offset is between your index and the back emf of the motor (30 degrees phase shift if measuring phase to phase...). You can then store that number in non volatile memory and load it at boot time.

    If you don't have a prime mover, you could try to load a sensorless BLDC algorithm and look at offset between zero crossing of unused phase and your index. There are probably tons of other not too precise ways you can do this. You could also try to inject an Id (not too high) and vary the offset until you get no torque, that cheap and easy, but imprecise.

    I hope this helps.