# Noise in sine wave BLDC controller

I am trying to control a 3-phase BLDC motor. I have already done 6-step commutation, which works fine. Now I am going for sinusoidal control with some guidance could make it good.

I had get a good sine wave when it is on no load. When it has a load, I get some noise but the motor runs. Can anyone help me to solve this issue?

I made a sine look up table for 360° for 0 to 2·π rad.

• That's not noise, it is distortion.
– JRE
Commented Nov 10, 2022 at 12:08
– JRE
Commented Nov 10, 2022 at 12:09
• Doesn’t look terrible. Do you have any EMC or performance issues in this setup? Commented Nov 10, 2022 at 12:18
• Where is your ground of the oscilloscope while you're measuring the signal? Commented Nov 10, 2022 at 15:05
• The motor slows down under load. How accurately are you slowing down the sine to match? (commutation)v It looks like you are repeating samples around zero crossings.
– user16324
Commented Nov 10, 2022 at 18:38

There are two issues that commonly cause this type of response.

Permanent magnet brushless motors are wound with a number of slots on the stators and poles on the rotor. Depending on the wind, the magnet spacing, and direction of magnetization the motors may be designed for six-step or sinusoidal operation. If you compare the back-EMF of these motors, some waveforms more closely resemble a trapezoidal waveform, while others more closely resemble a sinusoid. If the motor has slotted laminations, the resulting back-EMF is never exactly sinusoidal, so the motor will not draw a sinusoidal current when a sinusoidal voltage is applied. Rather, there will be periods of higher current and torque interspersed with lower, or the motor may even coast some when lightly loaded.

In your case I think it is more likely that you are seeing the quantizing effect of your lookup table. If the time period between the points on your table is constant, the adjacent values near the zero crossing will have a larger difference than at the peaks, because the slope is highest at the zero crossing point. This results in large steps in value near the zero crossing, so you are not accurately synthesizing a sine wave when loaded.

• It's also possible that there is ripple on the DC bus. Note that the distortion does not stay at the same point on the sine wave. Commented Nov 10, 2022 at 23:52

I don't know what causes the distortion in your case, but the root cause may be the shoot-through protection for the MOSFETs or the PWM dead time to be more precise. It's an intentional dead time in the PWM generation between turning off a FET and turning on the complementary FET to prevent shoot-through.

I once did a little research on this, because it actually was a problem in an application.

So just a couple of hints:

• Maybe your total dead time is too big. I once forgot about the internal dead time generation of my FET driver chip and unnecessarily added additional dead time in the firmware. So make sure your total PWM dead time is just big enough to not cause shoot-through (maybe with a little safety margin).
• Maybe your current controller parameters are too "soft". Try increasing proportional and/or integral gain of your current PI(D)-controller. The effect might not go away completely, but your current controller reacts to the distortion more quickly. You shouldn't degrade the overall performance (e.g. stability) of your current controller, of course.

And there are more fancy things you can do like a feed-forward element for your current controller.