# Why not detecting zero crossing of the back EMFs in BLDC by software?

I am reading about the state-of-the-art approaches to detect the zero crossing of the back (trapezoidal) EMFs on a 3-phase BLDC for sensorless control. Even digitally implemented, they use various strategies to detect the zero crossing of the back EMFs (e.g. using Hall sensors to detect the position of the rotor). Since the EMFs are fed back to the controller, I just wonder why the zero crossing has not been so far detected by software; for example by the following pseudocode:

IF EMF_1 == 0  THEN ...


where EMF_1 could be the variable representative of the EMF read from phase 1.

• 'Cause its pretty much guaranteed that you will never measure the voltage at the precise moment that it exactly zero. And, if you did it is quite likely that noise in the system would cause you to measure some value other than zero. – JRE May 21 '18 at 9:53
• It is detected via voltage sensing by all sensorless BLDC drivers. You drive two phases while sensing the third, floating, phase. – jms May 21 '18 at 10:16
• They do. The mechanisms you mentioned are there to fill that pseudo code variable with true or false – PlasmaHH May 21 '18 at 11:52
• If you're thinking of comparing a float, or double, against zero, you'd better re-think your code. – a concerned citizen May 21 '18 at 12:07
• Thanks all for the comments. @concerned-citizen: what do you mean? If I specify the data type, then the repesentative digtal value for zero is given; In general, are there issues to distinguish each EMF from the voltage signal? – cyberdyne May 21 '18 at 12:58