I'm driving a BLDC motor with FOC. Right now, I have Space Vector modulation working, where I can give it a magnitude and an angle, and the algorithm will drop the right values into three PWM registers. If I slowly increase the angle argument and call the SVM function periodically, the motor will spin (slowly) open-loop.
I am currently feeding a contrived angle into the function, but in practice I need to know the rotors position so I can perform all my clark/park/PI transform calculations relative to the rotor's angle.
I believe this can be done via a current observer, in which I feed back an error estimate to a SW-implementation of the HW-motor, and thanks to gains and high feedback, I'll be able to drive the BEMF estimate to zero and extract the angle information...But, I'm not sure if I've got that right!
I've read several application notes from TI, NXP, MicroSemi, Microchip as well as Dave Wilson's excellent video series 'Teaching Old Motors New Tricks', and I must say, the terminology and different flavors of doing this have got me a bit confused as where to go from here.
I am trying to go all sensorless by reading shunt resistors off of phase A & B....The current observer/BEMF estimator should be able to close the loop as sufficient speeds, but I'm not sure how to implement that, because it looks like it also needs the Clarke-Park transforms and PI controller to be working...But, I can't get that stuff working if I don't know the rotor angle.
What is the most sensible way to proceed with this development cycle?