I built a controller with FOC for BLDC motors and it works well for most motors I tested so far, but as it comes to motors with low resistance and inductance, I hear a noise, that sounds like water in a pipe. For motors with higher resistance (>1Ohm) and Inductance (>1mH) I cannot hear anything. The PWM frequency is 32kHz and clearly out of the audible frequencies. I uploaded a video of the noise on youtube:

BLDC Noise

By using a spectrum analyser, I found the following picture. I measure between phase A and GND.


I further used an acoustic spectrum analyzer app, which gave me a different image with two peaks at 2400Hz and 4800Hz:


What I already tried/analyzed:

  • I used different PWM frequencies, also in the audible spectrum, but this did not change the noise frequency.
  • The PWM signals itself look very clean, and it also works on different motors without any noise at all.
  • The gate drive is a DRV8304H (Datasheet), such that dead time handling works just fine.
  • The ADC current measurement triggering works also fine and triggers when the low side is open. I also adjusted there different parameters to test if something changes, but nothing did.
  • I also tried to apply a constant PWM timing to the motor, also here the noise is the same.

I just found nothing, which influences the frequency itself. If it is somehow the motors resonance frequency, I don't know why this only occurs at low resistance and inductance motors. Has anyone an Idea what could be the cause of this noise?

Edit When I only apply a constant timing for PWM and then wait in a loop, I get exactly the same noise, so this is definitely hardware/motor related, but I'm not sure how I really can find the noise source. It will be probably the DRV8304H, since at a constant PWM input, the output is fully determined by this driver and the MOSFETs.


1 Answer 1


Brushless DC (BLDC) motors are somehow similar to stepper motors: they have phases that are switched to engage the next magnetic resting position. BLDC does that in smoother way - lower cogging torque - compared to a stepper motor, where holding torque to assure angular position is the most important. Under no-load condition, both motors present a magnetic indentation and can oscillate around each point of equilibrium. This will depend of the number of (magnetic) poles “Nm” and the number of (stator) slots “Ns” and very well explained and calculated in the site Things-in-Motion.

BLDC Cogging Torque & Frequency: An important point said is that to reduce the Cogging Torque value, it is necessary to increase the Cogging Frequency, resulting in an even larger number of “steps” than an actual stepper motor:

enter image description here

One way to change the acoustic frequency is to change the mechanical natural-frequency of the BLDC rotor. As in a Spring-Mass (or LC) oscillator: “Spring” is related to restoring torques induced by the magnetic forces. “Mass” is related to the inertia of spinning masses. As an analogy to electric resonant systems, Spring/stiffness is like the Capacitance and Mass/Inertia is like the Inductance. In order to reduce the acoustic frequency, you cannot change the intrinsic behavior of the magnetic torque of your motor, so the alternative is to increase the mass of the BLDC rotor, by solidly coupling it to a mechanical flywheel. On the other hand, maybe your assembled device will have enough inertia to change the Cogging frequency or to attenuate and dampen its amplitude to not be heard anymore.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.