# BLDC zero-cross issue

I am trying to develop a BLDC motor ESC (electronic speed control) for motors in water. This means that the motors will be subject to more load (due to the water). I am going for the sensor less approach. I am initially giving it 35% duty cycle and looking for a specific '0' crossing in the floating phase. The waveform I get is shown below:

In the above image, the blue waveform denotes the float phase, whereas the yellow spikes denotes the areas/regions greater than Vcc/2 (in other words greater than '0' crossing). Now, I measure the time the '0' crossing happens and double it. This doubled value is my new commutation time for the motor (the duty cycle, I keep it constant,though). This is shown in the fig below. It has no slope value

But, the moment I go for new commutation, it fails and the floating phase becomes a constant level. In contrast, when commutation it was a gradation (it had a slope).

Why is it so? I have detected the correct '0' crossing and it is a '0' crossing for that particular duty cycle. Why then does the commutation fail?

The reason, outright, I feel is thus. At 35% duty cycle, the commutation is occurring properly. But, the current required to rotate the motor is insufficient for the motor to drive the motor. But then that defeats the purpose of a '0' cross detection.

• How are you detecting the zero cross? What circuit? Jun 30, 2014 at 8:56
• I am using the ADC. Jun 30, 2014 at 8:59
• What are you using to measure the zero cross - I'm presuming you are measuring the zero cross of current rather than voltage because the motor is an inductive device and voltage zero cross isn't where current is zero. Jun 30, 2014 at 9:11
• hmm.I am actually looking at the voltage one. how can i look at the current crossing. Any tips sir. Jun 30, 2014 at 9:29
• You will need a small value resistor in series with the motor and a differential amp but without knowing your circuit it could be easier or harder. Jun 30, 2014 at 9:46