Motor control basics

Three-phase BLDC Motor


This is not an electric motors tutorial. This is more like a resumed reference.
Here we have the graphical model of the three-phase BLDC Motor. At each terminal A, B and C we can connect the Battery (Bat) , connect the Ground (Gnd) or none of them. When we connect the Battery we show the terminal as positive (A+, B+ or C+). When we connect the Ground we show the terminal as negative.
At right we have all the 12 positions we can command the motor to go, at 30º intervals. Each position is consequence of the motor terminal connections.

In the two illustrations below we have the usual 6 commands, 3 in each of them.
In each of them one phase is connected to the Battery (the positive), the other to the Ground (the negative), and the last one is used for sensing the motor phase in sensorless control. This is the most common method of sensorless control of a three-phase BLDC motor.


With only 6 commands we get 6 positions, with 60º intervals.
But there are other possibilities, like the third diagram (the one before Power Stage) which shows the needed connections to obtain the C+A-B- position. The possibilities of control will not be discussed in this page but they will be in Forum.


Forcing the motor to go for the next position is the basis of the speed control. We control mainly 2 variables: the time for the next commutation and the voltage. The voltage is controlled with the PWM.
Now we have all the basics we need to program a BLDC motor ESC compatible hardware and we don't need a big know how about hardware or about motors. See the AVR ESC page.


It's time to describe our reference Power Stage. The "Power Stage" figure represents the situation where all the control signals, A+, A- and so on, are at "0" level. The control signals open (0) or close (1) the switch that connects the motor terminals A, B and C to the Battery (Bat) or Ground (Gnd).
As you can see there is a short circuit between the Battery and Ground if both A+ and A- are set to 1. Manipulating the 6 control signals we can force the motor to go to the positions defined at the beginning of this page. If we follow the sequence of the figure (A+,A-,B+,B-,C+,C-) we will get the following for some of the examples at the top of this page: C+A-=010010, A+B-=100100, and C+A-B-=010110.


If we want the motor turns clockwise we can try the following control sequence: C+A-, C+B-, A+B-, A+C-, B+C-, B+A-. And C+A- to begin another electrical rotation. And so on.

Well, if it is so easy, it means that we are prepared to write a little program that moves the motor? Of course, if you have an Atmel and a compatible power stage. For little motors like the hard disk ones 1 Amp is enough to control the motor, so you don't need the proposed electronics from the reference project.

In the Downloads page there is an assembler program, the
TestHWStep.asm- Normal steps that you can see working in the video. The program simulates PWM with consecutive positive control lines ON and OFF. It begins at A+B- position, turning clockwise, and stays in each position 30x(4+16)=600 ms. You can change the instruction "ldi loopa,30; " and choose the number of repetitions for each loop. If you chose "ldi loopa,1 ; " the motor stays in each position 1x(4+16)=20 ms and it will turn much quicker. This program is very important because it is quite independent from the hardware and it can be valuable to the initial hardware tests.

The PWM version of this program is TestHWStepPWM.asm and it is a good starting point for this ESC project.
You can see the video here.


Agile- Sensorless Theory of Operation
Agile- Sensorless BLDC Control
freescale- PWM

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License