I am using PWM to control the speed of a DC motor. It’s a powerful 250W fan. I’m using an Arduino to control the duty cycle.
As expected, when the analogWrite function is used with a value of 255, the motor spins at full speed (no whine sound). But, when I reduce the value to 50 or below, the whine increases substantially as the fan slows.
Why does this whine sound happen, and is there a way to reduce or eliminate it?
I thought about perhaps using a capacitor to smooth out the signal, but I guess the motor would pull the current too quickly for the charge to build in the capacitor.
Edit: I found an acoustic noise suppression circuit that aims to solve this. It uses a capacitor so perhaps I’m onto something. Is this the best way to go?
Source: Suppressing Acoustic Noise in PWM Fan Speed Control Systems