I'm looking at the article posted here, and I'm trying to figure out what it is that they're controlling and how. Specifically, Dave Wilson from TI gave a presentation called "Teaching Old Motors New Tricks" and has posted the slides as well. In this PDF on page 9, he gets into the work required to implement the observer. Basically, you implement the transfer function of the motor, feed in the voltage into your model, calculate the currents that would be coming out of it, and compare that to the actual current measurements....That error goes into a PI loop and smashes the error to zero...What's left over must be the BEMF. Then, that signal (from both the alpha and beta channels) are fed into a beat-frequency generator (also in the code) to extract angle information, similar to how a resolver works.
That's fine, but I want to use the algorithm that's posted in the first link's research paper because I have some C code as a reference that already implements it. I just don't understand what/how they're using what they can measure as well as what they know about the motor beforehand (flux-linkage, for instance) to infer the angle of the rotor.
Any help in decoding that paper would be greatly appreciated. Also, if you have time, how do they calculate flux linkage? I found this post here that states that the flux linkage is
lambda = 60 / (sqrt(3) * pi * kv * pole_num)
but this seems hand-wavy to me.