With a tip o' the hat to Paul McCartney and John Lennon, here's some good info on driving brushless DC (BLDC) motors. I'm constantly looking at manufacturers' sites and culling out interesting data sheets and apps notes. This one qualifies as a good one to read if you're doing (or planning on doing) any designs based around a BLDC.
A BLDC is a permanent magnet motor with the magnets as part of the rotor. Since there are no connections needed to the rotor (no electromagnets) the motor is brushless. There are electromagnets as part of the stator. The field they produce must rotate, of course, or you'd have a non-rotating rotor.
You'd like an easy way to make the magnetic field rotate. Since these brushless motors are usually 3-phase devices, a 3-phase H-bridge is the way to go:
As you can see, that allows you to apply power as needed. You can force current into any one phase and draw it out of any other one. The H-bridge allows this current sourcing and sinking.
Next, you need to control the three phases' low-side and high-side power FETs. Those are the lines labeled A through C, L (low) and H (high). Since these are PWM (pulse-width modulated) rather than linearly controlled, and since there can be an overlapping of the current sourcing or sinking, carefully controlled timing of the drive signals is needed. Add to that the need for monitoring the phase voltages and current monitoring, and you'll have your hands full designing this system.
Or perhaps not. If you look at a recent app-note from Silicon Labs, “C8051F850 BLDC Reference Design Kit,” you find pretty much all you need to know. The App Note provides good background info, some basic motor theory, and then goes into the particular product. Silicon Labs would like you to use its devices, but even without going down that path, the app-note will quickly educate you.
The app-note goes into a detailed description of how the Reference Design Kit (RDK) works and what it allows you to do. As noted above, you can monitor the phase voltages to the motor and the overall current draw. You can also monitor back-EMF and detect the proper commutation point — the point where you should switch power to the next phase of the motor. And you can detect an overload or locked rotor condition.
While the app-note does not directly speak to the issue of dynamic braking, it looks as if it might be possible to do that with the RDK. We'll leave that as an exercise for the student. Here's a block diagram of the RDK:
Have you worked with BLDCs before? What problems did you encounter? What work-arounds did you implement?