Folks,

I design wearable electronic gizmos for my day job, so embedded system design is a reasonable task for me. Have been experimenting with inexpensive BLDC motors from China. Typical example is a 6-12vdc unit, with a 150X planetary gear reduction output, 0-60rpm, fraction of 1amp at fairly heavy load, with Hall sensors, about 1" dia, 3" long (all for $5). Lots of possible applications, including small CNC tools, even replacing steppers in 3D printers. The one I'm particularly interested in is using these motors for OS (Open-Source) educational robotics projects, in a series of sizes.

A number of semiconductor companies (e.g., TI, ST-Micro, Renasas, etc.) offer single-chip or simple solutions for controlling this class of motor. So far, so good. But they're usually designed for non-servo applications, i.e., where only speeds from 10% to 100% are needed, and absolute position is not controlled. For robotics I need full position, velocity and acceleration control, down to "single stepping" at fine angular resolution.

One possible approach is to use an MCU-based controller with the vendor's normal motor control SDK to provide trapezoidal (sinusoidal not needed) waveform power to the motor (with FOC or Hall-sensor feedback) in the normal 10-100% speed range. Below 10%, the motor can be treated as if it was a stepper and I can program the MCU to treat it that way. Note that with 9 poles on the motor described above and a 150X gear train, micro-stepping is not required to get sub-degree position control. Also, with one of the new Hall-effect rotational sensors (separate from the 3 Hall-sensors on the motor) accurate sub-degree position feedback can be easily provided to drive a full PID control loop.

Issues:
1. Each semiconductor vendor offers a unique solution, some ARM MCU based, others unique (e.g., TI's C2000). All have different SDKs (and possibly IDEs). Each requires a significant amount of effort to get "your head wrapped around" so that you can use it effectively.
2. Some of the solutions involve fancy 3rd-party motor control algorithms, often implemented in protected firmware, and definitely adding to unit cost. Not clear if it's necessary for this application class, or how to decide that question.
3. While each vendor has a "great story" about their solution, I haven't found any comparisons between them (especially for this class of application and low-cost goals).

Any relevant experience or advice out there? Would love to hear about it.

Mike

PS: Just for fun, you folks might want to check out the Mechaduino HackADay project (mechaduino | Search Results | Hackaday) which has somewhat similar goals for closed-loop stepper control, and uses the Hall-effect rotation sensor mentioned above.