Some thoughts on zero crossing detection in sensorless brushless DC motors

A sensorless brushless DC motor senses motor position for the purpose of commutation timing by using the voltage induced in the unused winding at the time. Reliably sensing the motor position for a range of motor constructions and speeds proves a challenge.


Above is a grab from Simon Kirby showing the motor wires on Ch1-3 (‘sense’ wire on Ch3), and on Ch4, the output of the comparator used to compare the sense wire with the synthesised ‘neutral’ point of the motor connection. ChM is (Ch1+Ch2+Ch3)/3-Ch3 the sum of the motor wires, the comparator correspond to whether this voltage is greater than zero or not,

Firstly, it looks like ChM crosses zero (ZC) at the middle of the display (7 div), so the timing instance to be detected is at 7 div.

It is interesting that the Ch4 waveform is not approximately symmetric to that point, it is offset to the right by perhaps 0.2div… not a lot, but a little bias.

The thing we are actually sampling is Ch3, and it most valid in a small region of each PWM cycle as highlighted. I estimate noise voltage to be say, 500mV RMS.

The full sweep of ChM is not visible, it is estimated to be about 5V representing 60°, so the slope is around 83mV/°.

Now returning to the ChM noise voltage of 500mV RMS, it can be expressed as equivalent to 6° RMS error.


The plot above shows the probability of a ZC detect under a range of successive samples taken under the above assumptions. These are calculations of the binomial mass for n or more successes from m trials, my notation is n+/m.

1+/1 is equivalent to checking the comparator just once… and you can see the probability of an early trigger is high, 10% chance of 7° or earlier.

5+/5 is looking for 5 successes in a row, a common debounce approach… n trials without failure. Note the slope is steeper, but there is bias (about 7° late).

Some other combinations have zero bias and are interesting. 3+/5 is steeper than the simpler approaches, 4+/7 better and 6+/11 a little better again. A lot more trials doesn’t help a lot.

So, 4+/7  would require accepting 4 or more true results from 7 successive trials (compares) compares, reject if 4 or more false results.

This might be an unbiased method to reduce phase jitter in commutation timing.