BLDC speed and torque control

I have a question understanding the exact commutation of the sensorless BLDC motors. My motor has 7 pole pairs. Now assuming the 3 phases are - U,V and W ( so that's U+,U-,V+,V-,W+ and W- from the MOSFETS).

Now, the BEMF of the floating phase, is the indicator to be measured. Now, the BLDC motor property states - 1000RP/V. So, as I increase the voltage the rotation/speed increases. This voltage is increased via the PWM duty cycle. Now, if the PWM duty cycle is increased, we also increase the current through the motor, thereby increasing the thrust.

So, if I want the speed to remain at, say 3000rpm, and increase the thrust from, say 400g to 500g, I increase the current through the motor.

I do this by increasing the PWM duty cycle. But, this means the speed will also increase from 3000rpm to a higher value, right? How can this be maintained then?

Next, I was moving my BLDC in a stepper motor like action. The disadvantages being that, it loses thrust as I am not firing my MOSFETs at the right interval. Now, I was studying the BEMF waveform for this stepper motor action in the BLDC. The BEMF is measured in the floating phase of the motor. For e.g - say U and V are supplied and W is floating. The duty cycle is 40%. I observed the following points in this stepper motor action:

1. The BEMF (at the bottom part of the PWM) on the floating phase shows a distinct sine wave action.

2. This sine wave keeps repeating (almost 3 complete cycles) with 3 peaks and 3 valleys.

3. The speed is directly proportional to the amplitude of the BEMF. So, from point 2 I understand that the speed keeps rising and falling.

4. After a series of rises and falls the control goes into the next state.

My questions:

1. In the 1st cycle, when the speed is max (highest amplitude of BEMF), will commutation to next state ensure no loss in speed? I think that would be fine.

2. Regarding thrust. I need the thrust to be constant. Would proper commutation as stated in point 1 above ensure smooth thrust?

3. For greater thrust, I increase the PWM duty cycle. This will increase the speed and hence give me a higher amplitude BEMF. In my code via the ADC, I measure this amplitude and then commutate to next state at the highest ADC value. This will increase speed as the slope and amplitude will be greater with increased PWM duty cycle.

Have I understood the points correctly and am I on the right track please?

• Just to let you know, you don't need to "sign" your post with your name, it's always included automatically by the site. – JYelton May 23 '14 at 16:21
• You need to use a PID loop here. Commutation logic and power control should be separate. Take a look at Microchip AN1160 for an example. – Erik Friesen May 23 '14 at 20:35

1 Answer

So, if I want the speed to remain at, say 3000rpm, and increase the thrust from, say 400g to 500g, I increase the current through the motor. I do this by increasing the PWM duty cycle. But, this means the speed will also increase from 3000rpm to a higher value, right? How can this be maintained then?

You would only want to increase the torque (thrust) if the mechanical load were threatening to slow the motor down - by increasing the PWM to counter that increase in load torque you are largely keeping the motor at constant speed. Remember a simple DC motor (even a brushless type) has a very clear torque-speed characteristic that means, for a given speed at a given torque, an increase in torque of $x$ will reduce the speed largely by $x$ also.

It's a not a perfectly linear relationship and changes entirely when field windings are implemented but it's fairly reliable: -

• This is absolutely clear. I understand. So, sir, my question 1. If I commutate to the next state when the BEMF voltage is max (just before it goes into the lower sine component) , it would retain or not loose speed. Also, what is the importance of '0' crossing. What does '0' crossing imply in motor control. – Board-Man May 24 '14 at 7:07