I'm looking at making a BLDC controller with an MCU, and have be reading through the atmel guide AVR444 which steps through a design and software needed for a sensorless back-emf timing controlled driver.

I'm broadening my understanding of the subject. The application I am looking at is for a RC quadcopter, so the level of speed precision isn't critical as long as the overall thrust can vary with a pretty quick response. The load isn't going to vary much either. The motor will be 3 phase (Y windings), around 5-10V, <10A I imagine.

I understand the concept of back-emf in the floating windings to sync up rotating the electrical field. However, my understanding is also that the torque experienced at the rotor is proportional to difference in rotation between the electrical field and the permanent rotor field. So the rotor usually lags slightly behind, causing torque to force it to try and catch up.

The AVR444 app note designs the software to drive the motor blind (using a fixed timings) to begin with, and speed it up to a point then let the back-emf control software to take over. This makes perfect sense to me, but what I am curious about is what is the limitation of driving the motor blind?

As long as there isn't a huge difference between the rotor rotational speed and the electrical field rotational speed, the torque will speed up the rotor and force it to match the electrical field. Since the electrical field is controlled by the software, what would be the issue with blindly driving the electrical field and assuming the rotor keeps up? It is likely to slip rotations every now and then I imagine, but at reasonably high speeds (1000 to 5000rpm) and with some degree of inertia, surely this will average out? If the speed varies by say 100rpm back an forth, I'm not too fussed.

Using a fixed voltage for the motor drive, and a fixed rotation frequency, I expect the current in the windings to vary with the amount of torque needed for the rotor to match pace with the electrical rotation. A current limiter on the power supply could stop anything too crazy.

Thoughts? I realize the preferred method is to use back-emf in a control loop, but I'm looking for an idea as to what the limitations of not using a control loop and blindly driving a BLDC motor would be.

EDIT: In addition to being an interesting research point, it also has practical use. Blindly driving BLDC motors is a fairly trivial task, that a single control MCU could perform. The current design I'm looking at requires small, separate MCUs to run tight control loops per motor. In a design with 4 motors (possibly more), it's the difference between 1 and 5 MCUs on the board.

  • \$\begingroup\$ "At a glance" I'd say you'd take a severe performance loss over proper control. The reason for open loop startup is that there is no feedback available - unlike in sensor based systems where you have closed control all the way from stationary. With closed loop back-emf feedback you can drive the motor to close to its maximum possible performance by allowing the angle between driving and driven fields to increase to some limit that you decide will not cause slippage. with no fedback you have no idea whatsoever what the rotor is doing. ... \$\endgroup\$
    – Russell McMahon
    Apr 15, 2014 at 11:29
  • \$\begingroup\$ ... Comment: I 'played with BLDC motor control about 2 years ago with not much hands on experience since. My comments are based on practical but time faded recollections | Digging into far past memory: It's not just a matter of "slipping rotations" which implies a ongoing drive in the desired direction. When you slip the drive direction will reverse and the rotor is subject to decelerating forces. As the field continues to rotate relative to the rotor you'll enter a region of forward drive and then if still slipping go into reverse drive again etc. ... \$\endgroup\$
    – Russell McMahon
    Apr 15, 2014 at 11:35
  • \$\begingroup\$ ... The motor may synch up well and quickly, but may not. You are liable to get bursts of drive oscillation each time you slip. | I doubt that it is really a 1 or 5 MCU decision - if you valued having one MCU with remote motors it should be doable. But, the cost of an MCU is utterly minimal compared to all other costs and replicating a proper design multiple times costs only cheap hardware. \$\endgroup\$
    – Russell McMahon
    Apr 15, 2014 at 11:37
  • \$\begingroup\$ I take your point. When slipping a rotation, it won't coast until the next one - it will experience negative torque causing it to decelerate, liable to cause oscillations. \$\endgroup\$
    – Oliver
    Apr 15, 2014 at 11:56
  • \$\begingroup\$ @Oliver: Not quite. Once it slips, your average torque suddenly goes to zero, and the motor will completely stall. You basically can't recover without some other feedback. Think about what a slip is. You tried to drive the motor faster than it could go. In the very short term it will see negative torque, so things get worse. There is no mechanism then to speed up the motor to get it into sync again. Why not use Hall sensors? That would allow for efficient drive, which matters when running from battery power. \$\endgroup\$ Apr 15, 2014 at 12:41

2 Answers 2


Driving a motor blind is a bad idea for several reasons:

  1. It is inefficient. The most efficient way to run the motor is for the magentic field to be 90° ahead of the rotor. Put another way, the torque on the rotor is the cross product of the driving magnetic field and the rotor's magnetic orientation.

    With position feedback, the magnetic field can be kept near the optimum angle, which means the current goes to actually pushing the motor instead of holding it in place. Put another way, the amplitude is just what it needs to be to keep the motor spinning at the desired speed in the maximum torque configuration. When you don't know where the rotor is, you end up over-driving the motor.

    Another way to look at this is that the driving field has a sine and cosine component. Let's say the cosine is the part 90° ahead of the rotor and the sine part is where the rotor currently is. Any phase angle can be thought of as just a different mix of the sine and cosine components. However, only the cosine component moves the motor. The sine component only causes heating and represents wasted power.

  2. Once you loose lock, the game is over. With a fixed drive, the drive angle will only be a little ahead of the rotor at low torque. As the speed increases (and the effective drive voltage automatically decreases due to back EMF) or the load increases, the fixed drive will get up to 90° ahead of the rotor.

    However, at this point it's right on the edge and any change will cause less torque. If the load on the motor increases, the rotor will get more than 90° behind, which causes less torque, which causes it to get even more behind. Over the next 1/4 turn of slip, the forward torque will decrease to zero. Then for the next 1/2 turn after that, the driving torque actually pushes the rotor backwards.

    At this point you're totally screwed. Remember you got into this predicament in the first place because the driving torque couldn't keep up with load, and you've just experienced a net negative drive over the last 3/4 turn. If the load is suddenly removed and if you're very lucky, the rotor might be able to speed up to sync up with the drive in the next 1/4 cycle, but certainly not if whatever condition caused the problem in the first place is still present.

    Once the rotor gets out of sync, the net torque over any one rotation is 0. The product of two sine waves of different frequency always averages to 0 regardless of the phase angle between them.

  • \$\begingroup\$ Would it be worth noting that while stepper motors and brushless motors are conceptually very similar, and the former are generally constructed so that they can safely dissipate 100% of rated operating power as heat, most brushless motors cannot safely be treated in such fashion? \$\endgroup\$
    – supercat
    Apr 15, 2014 at 15:42
  • \$\begingroup\$ @ Olin well after all these years sensorless or blind drive is still grossley inferior .I have not done any work on this so I think you are correct +1 .I remember when I had hair and was not overweight a college associate working on this for his masters .This was 1986 while I had a research post and was repeating a control systems course .I showed him my stuff an he showed me the BLDC motor setup .I did not help him it was all micro stuff .What he did was adequate for a washing machine .It was not perfect .It amazes me that after all these years blind drive has not been perfected. \$\endgroup\$
    – Autistic
    Oct 15, 2016 at 23:06
  • \$\begingroup\$ @Aut: Sensorless and blind drive are totally different. Sensorless is a different way to infer rotor position, but still ultimately uses the assumed position to drive the motor. Sensorless can work quite well if implemented properly. \$\endgroup\$ Oct 16, 2016 at 13:34

so the level of speed precision isn't critical as long as the overall thrust can vary with a pretty quick response

not really how it works, just google at how new escs for quadcopters go beyond the standard servo pwm for speed and precision reasons.

Secondly the "blind start" has the only purpose of getting the rotor to move, randomly but moving, so its initial position can be determined by the back emf it induces

Keep also in mind that BLDC are syncronous motors, "slip" doesnt have a big place here. Great resources to learn the very "mathy" but fundamental theory in a "human" way can be found on "endless sphere" forums :-)


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.