Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Variable Frequency PWM For BLDC

Status
Not open for further replies.

dknguyen

Well-Known Member
Most Helpful Member
For my BLDC controller, I'm using a sensorless BEMF method that samples the BEMF synchronously with the PWM and as a result my sampling/PWM frequency has to be at least 3x higher than the motor's commutation rate for smooth operation. THe problem is that this increases the switching losses too much.

I was thinking about varying the PWM frequency so that the MCU would adjust the PWM frequency according to the measured commutation frequency after each commutation. THe result would be that the current commutation period would be measured and the PWM frequency would be updated at the beginning of the next commutation so that the sampling/PWM frequency would be 5x faster than the commutation frequency...within limits of course. THe minimum frequency being 10kHz and the maximum being 40kHz.

The reasoning is that when a motor is spinning more slowly it is under higher load and drawing more current and since the commutation is also occuring more slowly, lowering the PWM frequency will reduce switching losses while not affecting smooth commutation. Conversely when spinning faster, higher sampling/PWM frequencies are required to ensure smooth commutation and the motor is also under less load and drawing less current, so increased switching losses can be tolerated.

But I think this might cause increased EMI since the PWM frequency is changing. I'm not entirely sure why it would cause an increased amount of noise relative to fixed frequency PWM method, although the frequency of the noise would be more unpredictable. Does anyone have any knowledge or opinions on this matter?

Audible noise is not an issue, as long as the motor is operating smoothly.
 
Last edited:
I don't understand your question, but from what I can gleam...

For a given load, the duty cycle of the PWM would be varied to control the speed. The problem is if the motor gets more heavily loaded and slows down, more current is being drawn which would overheat the FETs. As the motor slows down, the BEMF sampling frequency (which is the PWM frequency) can be lower and still capture the commutations properly. I want to decrease the PWM frequency as the motor gets more loaded to decrease the switching losses on the FETs. So as the motor slows down in response to whatever load happens to be on it, I want to slow down the PWM frequency as well (independently of the duty cycle) to reduce switching losses as the I2R losses increase due to increased motor current.

But, the PWM frequency is not being varied to control the speed...it's more like it is being varied in reaction to the speed rather than to control it. I'm not attempting to control the speed of the motor by changing the PWM frequency- that's what duty cycle is for. But I do want to reduce the losses in the FETs. I can't do much about the I2R losses resulting from motor current, but I might be able to do something about switching losses.
 
Last edited:
I'm planning it for a quadcopter so the extra weight and space of a shield for each motor controller is a problem. It's much easier for me to shield the control electronics at the center of the platform...but if it interferes with the radio, there's not much choice. One of the reasons I'm trying to figure this out in advance is because if it's a valid idea, then I might be able to use higher resistance MOSFETs that have lower gate voltages which would greatly simplify the gate drive circuitry (allowing me to remove the SEPIC converters which produce the gate drive voltages). As they are right now they are too big and expensive for something like a quadcopter since I originally designed them for a regular helicopter where I would only need one.
 
Last edited:
I would doubt that it would interfere with the radio but it depends on radio quality. I'm with 3v0 on this one. You're not going to know for sure until you try it.

Reading back EMF to determine TACH is a neat concept and I've seen it done. On an auto pilot system no less. But makes the control algorithm much more complicated (as you are finding out.). And you are perhaps sampling the back EMF in a possibly noisy environment (time slice) and can get some really OUT THERE readings at times so you need a REASONABLENESS check on the value, along with some fancy filtering wouldn't hurt.

Can't you get a servo that has a quadrature encoder output on it? And how often are you actually spinning the shaft enough to justify tach feedback on the small servos.? If there is position feedback you can always just differentiate that to get tach.
 
I would doubt that it would interfere with the radio but it depends on radio quality. I'm with 3v0 on this one. You're not going to know for sure until you try it.

Reading back EMF to determine TACH is a neat concept and I've seen it done. On an auto pilot system no less. But makes the control algorithm much more complicated (as you are finding out.). And you are perhaps sampling the back EMF in a possibly noisy environment (time slice) and can get some really OUT THERE readings at times so you need a REASONABLENESS check on the value, along with some fancy filtering wouldn't hurt.

Can't you get a servo that has a quadrature encoder output on it? And how often are you actually spinning the shaft enough to justify tach feedback on the small servos.? If there is position feedback you can always just differentiate that to get tach.


It's also not for a servo nor a tachometer. It is for the main drive motors and is required to properly commutate the brushless DC motor (BLDC) if I do not want to stick hall sensors on it (though it can be used as such since that is inherent to the system, but it would not be reading back the BEMF strength to determine speed- it would be reading how many times per second the motor is commutating to get RPM). Noise for the BEMF commutation is not as sensitive to noise as BEMF tachometers. With commutation, you do not care about the actual analog value of the BEMF...I just care when whether it is above or below a certain threshold.
 
Last edited:
DOH! My bad. All the BLDC's I use have optos built in for that. I thought you were doing it for tach. I'll try to crawl back out of the weeds.:D
But a lot of my OUTPUT still applies. ( Just Luckily :eek: )
Yep halls or opto's and the only important thing you're looking for in commutation is "ARE WE THERE YET?"
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top