Electronic – BLDC speed and position from back-emf

back-emfbrushless-dc-motorcontrolmicrocontrollermotor controller

I'm trying to make my own sensorless speed controller and I need to know the speed and the position.

What are the basic techniques used to determine the speed and position of a BLDC motor from the Back-EMF.

Best Answer

In addition to the links supplied by @suha in the answer to the question linked by @Scott Winder, as well as my own excellent answer to the same question (shameless self plug), the following Freescale paper is also worth reading as it specifically references position sensing:

AN1913 3-phase BLDC Motor Control with Sensorless Back-EMF ADC Zero Crossing Detection using 56F80x

In a nutshell, it comes down to counting the number of zero-crossings and measuring the timing between them. For a 3-phase BLDC motor, one phase will be high voltage, one phase will be low voltage and one phase will be off. You will know which is which because you will be providing it. You will also know how many poles the motor has. Combining this information with your measurement of when the off phase crosses the mid-point between the high and low phases (the zero crossing), you can determine speed and position.

By looking at each phase state, you can determine what your electrical angle is:

Electrical Angle

You can then convert the electrical angle to a mechanical angle by taking into account the number poles using the following equation:

$$\theta_{electrical} = \dfrac{p}{2}\theta_{mechanical}$$

Where: \$p= \text{number of poles}\$

electrical to mechanical

Then, by timing and counting the number of zero crossings, you can determine how long it takes to complete 360° of mechanical rotation which can then be converted into a speed in RPM.

Related Topic