I am trying to drive BLDC via a custom ESC. I have read that we can control the motor in 2 ways - current control and voltage control. I am using PWM to get them working. Now, I understand that we need to measure BEMF (as it is sensor less). I have been doing this like a stepper motor method. But this does not give good thrust.
I am attaching an image which has 2 waveforms. The yellow wave is of interest to us. If we notice that in the bottom there is a small rise from the bottom (floor). This is the '0' crossing. This is open loop and not closed loop.
I will look at '0' crossing to go into closed loop. Many docs also say that looking at Vcc/2 as a method to detect '0' crossing. In my waveform I am unable to measure Vcc/2 as its always > Vcc/2.
Now, most of the docs state that motor can be controlled via voltage or current. I understand:
- Voltage (PWM duty cycle) controls speed of the motor.
- Current - varying current varies thrust. How is this done? How can I vary current?
- Frequency - is frequency a factor in this. How will frequency change affect thrust/speed(rpm)?