BLDC trapezoidal control with DSPIC33 could not reach full speed

Thread Starter

Nbsundaram Balu

Joined May 24, 2016
2
Hello, with my little motor control experience, I’m trying to work on the BLDC motor control for washing machine application with 3 hall sensor position information.

The motor name plate says it can go up to 10000 RPM at around 210 VDC (DC bus voltage). But I could run only 3000RPM at 210 VDC (DC bus voltage).

I’m trying to control the motor with trapezoidal control with DSPIC33 operating at 70MIPS.

Sampling frequency or PWM frequency if 20KHZ

Can anyone please help me, I can provide you more information as we kick of our discussion.

Thanks in advance for the help
 

Papabravo

Joined Feb 24, 2006
21,225
There are a couple of things to consider. As you know torque is proportional to current. It is not voltage that drives a motor, but current. I mention this because it seems from your post that you think it is voltage that drives a motor. My first thought is that your power source does not have sufficient current to accelerate the rotor to high speed. The next thing to consider is that the faster you go the less torque you can create. When you run out of torque you can no longer accelerate the rotor. Thirdly, if there is any mismatch in your timing of the commutation signals you could be constantly accelerating and braking the rotor while it spins. This would make it virtually impossible to reach top speed. This also means that you must reduce the time between sensing the position of the rotor and firing the next phase pulse as the angular velocity increases. This is not a trivial algorithm; are you sure you have it right?

One more thing. The starting current might be up to four times the running current.

You didn't mention anything about the load. The nameplate might be for the motor with no load.
 

benta

Joined Dec 7, 2015
101
I think you do not have the delays from Hall sensor to output commutation after the DSPIC under control.
At RPMs that you want to work with, they can be significant, and result in the output not going active at the right time according to what the sensors indicate is needed. Your algorithm needs to have a lead-angle compensation to take care of this.
Look at your code, and see how much execution time is needed between the sensors demanding commutation, and when the controller actually can deliver this.

@Papabravo: DC motors, brushed or nonbrushed are speed controlled through the supplied DC voltage.
The load defines the torque, which again defines the load on the motor, which again results in the current demanded by the motor.
Also, starting current from a DC motor can in theory be infinite. Your "four times" is relevant to induction motors, where 4...7 times run current is normal.

Benta.
 

Papabravo

Joined Feb 24, 2006
21,225
I think you do not have the delays from Hall sensor to output commutation after the DSPIC under control.
At RPMs that you want to work with, they can be significant, and result in the output not going active at the right time according to what the sensors indicate is needed. Your algorithm needs to have a lead-angle compensation to take care of this.
Look at your code, and see how much execution time is needed between the sensors demanding commutation, and when the controller actually can deliver this.

@Papabravo: DC motors, brushed or nonbrushed are speed controlled through the supplied DC voltage.
The load defines the torque, which again defines the load on the motor, which again results in the current demanded by the motor.
Also, starting current from a DC motor can in theory be infinite. Your "four times" is relevant to induction motors, where 4...7 times run current is normal.

Benta.
My knowledge of BLDC motors comes from building disk drives and I stand by my statement. Our motors had 8 poles. You are correct to challenge the implementation of the commutation algorithm and it's relation to the sensors.
 

Thread Starter

Nbsundaram Balu

Joined May 24, 2016
2
There are a couple of things to consider. As you know torque is proportional to current. It is not voltage that drives a motor, but current. I mention this because it seems from your post that you think it is voltage that drives a motor. My first thought is that your power source does not have sufficient current to accelerate the rotor to high speed. The next thing to consider is that the faster you go the less torque you can create. When you run out of torque you can no longer accelerate the rotor. Thirdly, if there is any mismatch in your timing of the commutation signals you could be constantly accelerating and braking the rotor while it spins. This would make it virtually impossible to reach top speed. This also means that you must reduce the time between sensing the position of the rotor and firing the next phase pulse as the angular velocity increases. This is not a trivial algorithm; are you sure you have it right?

One more thing. The starting current might be up to four times the running current.

You didn't mention anything about the load. The nameplate might be for the motor with no load.

Hello Benta/Bravo,

Thank you for your inputs,

sorry I did not mention the load conduction, right now I'm my aim is to run at no load,
I can understand what you are saying on current torque relation thanks for making me to think in other direction.

I was mentioning the bus voltage because, the reader should understand that I have enough voltage to over come the back EMF and pump the current.....

One more doubt I have is can we run the BLDC motor with the trapezoidal control with sensor feed back and run the motor at such high RPM's

As per the DSPIC document in the very first page top right corner we can go p to 7K rpm with sensor less => controller is capably.

http://ww1.microchip.com/downloads/en/AppNotes/en019525.pdf

The calculation I did even if I want to run at 5000 RPM with sampling time of 50 usec @20Khz ,
as i'm using 4 pole pare machine
@5000 rpm mechanical frequency is 83.333hz => electrical frequency is 333.333hz (4 times the Mech frequency)
in one electric cycle it has 6 state changes which => 2000 per sec => one state change for every 500 usec.
this 500 us will become 250 us at 10K rpm that means I have only 5 PWM ISR's to pole And for 5K rpm I have 10 PWM ISR to pole the signal change.

The only reason I'm not using the the edge trigger mechanism for hall sensors because, I'm worried of false triggering due to noise.

Kindly lets us continue our discussion so that I can get some clarity to move a ahead.


once again thanks fro your time and help....

Have a great day.... Njoy....
 
Top