Almost two years ago, a research team showed that it was possible to get fine motor control from cheap, brushless DC motors. Normally this is not feasible because the motors are built-in such a way that the torque applied is not uniform for every position of the motor, a phenomenon known as “cogging”. This is fine for something that doesn’t need low-speed control like a fan motor, but for robotics it’s a little more important. Since that team published their results, though, we are starting to see others implement their own low-speed brushless motor controllers.
The new method of implementing anti-cogging maps out the holding torque required for any position of the motor’s shaft so this information can be used later on. Of course this requires a fair amount of calibration; [madcowswe] reports that this method requires around 5-10 minutes of calibration. [madcowswe] also did analysis of his motors to show how much harmonic content is contained in these waveforms, which helps to understand how this phenomenon arises and how to help eliminate it.
While [madcowswe] plans to add more features to this motor control algorithm such as reverse-mapping, scaling based on speed, and better memory usage, it’s a good implementation that has visible improvements over the stock motors. The original research is also worth investigating if a cheaper, better motor is something you need.