I have a working custom motor controller for three phase sensorless bldc motors. I've implemented open loop speed control, where the duty cycle is changed to change speed. I've also implemented a closed loop PI speed controller where an RPM is set as a set point. Now I would like to design a controller that closes the loop around torque/current. I know this is possible with Field Oriented Control, but I need to spin at rather high RPM's so I'm trying to avoid this more complex algorithm.

I have been trying to use one phase current measurement to estimate the average current going to the motor and vary the duty cycle based on current error. I am having some problems with stability and can't decide if it's due to a poor estimation of dc current, or if the transfer function from voltage to current might require some more controller design than I actually did(read none).

Main Questions: Is this a valid approach to BLDC torque control, if not why specifically? Are there alternatives to FOC for BLDC torque control?

Edit:Control Loop

With Guy Sirton's info, I suppose I am going about it backwards from what is typical. I hoped that if I only wanted to maintain a constant bus current I could slow the current loop way down (100 - 300 hz)and make it my outer loop. With this in mind I just used the phase current to approximate the current coming from the power supply. It may be true that due to the dynamics of the system, this slow measure of current is not sufficient. It also may be true that I just need to put more thought into the controller, since there is really another integral between the input and the output(speed being proportional to voltage and current proportional to acceleration). What is mentioned in the drivetechinc article at the very end is what I understood to be FOC.

  • \$\begingroup\$ You can do this sort of outer control current loop but the bandwidth should be very low and it would be of limited usefulness (just calibrating your PWM to current). Also keep in mind if you're not moving your average current on one phase isn't going to be a useful measure. \$\endgroup\$
    – Guy Sirton
    Commented Mar 12, 2013 at 23:32
  • \$\begingroup\$ Also consider that during acceleration the current would be much higher than at constant velocity. So "constant bus current" doesn't make much sense. If you need a certain current (power) to maintain a certain velocity your velocity controller will take care of that. \$\endgroup\$
    – Guy Sirton
    Commented Mar 13, 2013 at 3:02
  • \$\begingroup\$ This last comment is what I was thinking when I said speed is proportional to voltage and current is proportional to acceleration. I really just wanted to maintain the same torque output if the load changed. IE, if the load increased the speed would decrease. However, it appears I may have to go back to the drawing board on this one. \$\endgroup\$
    – Matt
    Commented Mar 13, 2013 at 18:06
  • \$\begingroup\$ Right. But you can't have both constant current and constant velocity. Those loops will fight each other. What you're describing is current loop only, which is fine, but you'll probably want two feedbacks and much higher bandwidth. \$\endgroup\$
    – Guy Sirton
    Commented Mar 13, 2013 at 19:52

1 Answer 1


Implementing a current loop should not require field oriented control. You should be able to have a PI controller driven by a current feedback (e.g. see here: http://irtfweb.ifa.hawaii.edu/~tcs3/tcs3/0405_Servo_review/onaka_docs/2000_articles_control.pdf and here: http://www.drivetechinc.com/articles/curbldc3.pdf ). I would think you need two independent loops/feedback for a three phase system. What speed are you running your loop at? What are the stability issues you're seeing? You should tune your current loop with all the other loops disabled.

Since you mention "average" current and measuring on one phase I'm wondering what exactly you're doing. Closed loop current control is traditionally controlling the "instantaneous" current and is the highest frequency/bandwidth, innermost, loop in a closed loop motion control system.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.