By Chris Francis
Brushless DC motors (BLDC motors) are quite different to drive compared to brushed DC motors. With a brushed DC motor you simply apply a voltage or pulse width modulated voltage and the motor will start turning (if possible) and increase speed with reducing torque until the torque/speed match the load. A brushless motor will have three sets of windings connected in a star configuration (sometimes called Y configuration) or delta configuration. The motor controller must energize the windings in turn so that the motor turns. In order to control the windings you need to know where the motor is so that you can energize the correct winding(s). The controller may be sensorless which means it relies on detecting the back EMF (electromotive force) of the windings to detect position and provide the sequence information for the controller. A sensorless drive allows the use of a motor without hall sensors on the motor and so the motor will be cheaper and require fewer connections.
While you can design your own controller using a microcontroller, there are many ICs that have been designed for the purpose – for sensorless or sensored motors, star or delta configuration. One simple IC is the Allegro A4941. While it is simple to use, it has a reasonable level of sophistication internally to achieve that ease of use.
This is a sensorless controller for driving fans with a star or delta configuration. In common with most BLDC motor controllers the control signal is a speed control signal, in this case a PWM input signal rather than analog. This particular chip uses internal switches for the motor whereas other controllers may have external transistors for higher current drive. As is the common trend nowadays it uses all NMOS transistors for the motor drive so has a charge pump to generate the gate drive voltage for the high-side NMOS transistors. Being a fan controller it has no direction input – the motor will always turn in one direction. Back EMF is detected on whichever output is not driven – only two of the three windings are driven at a time.
This is a fairly simple controller for a simple application. A more sophisticated controller such as the Toshiba TB6585 is for motors with hall sensors to detect the motor position and uses sinusoidal pulse-width-modulation (sine PWM) for the motor windings.
Sine PWM progressively increases and decreased the drive to each winding to follow a sinusoidal curve in order to try to smooth the drive power and hence produce a smoother motor torque as the motor rotates. Simple on/off control of the windings (which will actually also be pulse width modulated in order to energize the windings at power levels lower than maximum) will produce an uneven torque through the rotation of the motor. It also tends to make more audible noise due to the uneven torque. A trapezoidal PWM drive is similar to sine PWM and will increase the drive to each winding in a straight line based on the motor position and then decrease it in a straight line while increasing the drive to the next winding. To implement trapezoidal or sinusoidal PWM drive, motor controllers need to know (or guess) where the motor rotor is to a higher degree of accuracy than the simple hall effect switch positions. They do this by monitoring the motor velocity and predicting the position with time. While this won’t be perfectly accurate it is considerably better than simple on-off drive.
A trapezoidal drive will be quieter and smoother than a simple on/off drive but not as smooth or quiet as sinusoidal drive. So, in choosing a BLDC driver, you need to answer some questions:
- is audible noise important?
- is smooth torque delivery important?
- do you need the lowest cost solution?
- do you need reversible direction?
After answering those questions you can select sensorless or with hall sensors, and on/off drive, trapezoidal or sinusoidal drive. The Fairchild Semiconductor application note AN-8201 about using their FCM8201 controller has some useful explanations with waveforms.