In the last log we showed how the physical inverter design came about, lets look at the motor control signals are generated.
We keep going on about sinusoidal control. Here is why.
Brushless DC (BLDC) motors are called so because they followed on historically from brushed DC motors, they are in fact a type of AC synchronous motor and are electrically similar. AC motors usually have 3-windings, driven by 3 sinusoids, each 120 degrees out of phase with the next. this generates a rotating magnetic flux in the motor to which the magnets synchronize, resulting in rotation.
Most small brushless motor controllers approximate these sinusoids with a much easier to generate 6-step trapazoid. They can get away with it because BLDC motors are constructed in a slightly different way to your normal AC machine. A lot of literature states that BLDC motors are inherently trapazoidal, and should be driven in such a way. this is only partially true, BLDC motors are constructed using concentrated windings, meaning each winding is confined to it's own stator tooth, AC machines on the other hand have their windings distributed over many teeth, this effectively averages out mechanical cogging effects in the motor and leads to a less distorted sinusoidal EMF profile but it also requires longer lengths of wire and results in heavier motors.
BLDC motors with concentrated windings still produce good approximations of sinusoidal EMF when rotated (hook one up to an oscilloscope and see for yourself)
To make a motor spin you essentially have to produce a voltage that overcomes and advances the phase of any EMF the motor is producing resulting from rotation, therefore you want to match the voltage to the emf profile of the motor. Feeding a trapazoid into a BLDC motor results in wasted current, rough rotation and noise (cogging).
It’s similar to using stepper motors with full-step drivers vs microstepping drivers (which are actually sinusoidal drives)
So by driving our motor with sinusoidal waveforms we can increase efficiency and reduce torque ripple. The cost of doing so is extra computing power and requiring a voltage and current sensor on each phase.
This brings us to the selection of control silicon.
After a few iterations of design, at first using an arduino (only trapazoidal control was attempted), then a fairchild chip, finally a low-power DSP microcontroller - the Piccolo F28027F - from TI is in the current design. Why? Well TI have put a lot of work into making a hugely flexible sinusoidal field-oriented control (FOC) system which is capable of identifying a huge range of motors on the fly and driving them flawlessly, it can meet all of our requirements when paired with custom designed power electronics. TI call their solution InstaSpin-FOC. FOC is a very difficult scheme to implement so by using TI's chip and the software they give away with it, we will cut the development time significantly (decades of man years would have gone into this software/hardware solution). They also provide a $60 dev kit for testing on low power motors which really lowers the barrier and makes debugging our own hardware a lot easier. Their software must be used with specific TI chips as they contain the core IP (motor flux estimator, the bit that makes it sensorless) in protected ROM on-chip. apart from this, majority of the code is released under license and the control implementation is completely open for editing.
We believe this is a fair compromise and consider this proprietary on-chip software to be part of the silicon (most if not all motor control chips are completely proprietary hardware).