Electronic – How to reduce the PWM noise of a blower motor

inductormotorpwm

I've built a ventilation box which utilizes a blower motor from an old Subaru Impreza 1996, which I was gifted from a friendly mechanic.

The flow volume is amazing, but it's a bit too noisy and too powerful.
The motor draws about 20A peak on start, and then operates at 7A at 12V.

But when using PWM, the motor basically sounds like a screaming alien, no matter if the duty cycle is 90% or 10%. I'm using Arduino to send a pwm signal and an IRF3205 MOSFET.

I've tried a low frequency (using delay and delayMicroseconds, 10-1000 Hz), and high frequency (using 32bit and 8bit prescaler of Atmega328). It only changed the pitch of the sound, but it was still very audible. The least noisy was at the low frequency, but then the motor was unstable.

Should I use a capacitor or an inductor? (or both). I haven't worked with inductors before. And I imagine the capacitor won't do much good…

Video: https://youtu.be/kHZ0b0wFjaw

schematic

simulate this circuit – Schematic created using CircuitLab

Source code:

digitalWrite(pin11, LOW);
delayMicroseconds(50);
digitalWrite(pin11, HIGH);
delayMicroseconds(100);

Best Answer

Like most power MOSFETs the IRF3205 has a large Gate capacitance which must be charged and discharged, requiring about 50nC of charge to turn on properly. In your circuit this charge trickles through R1, distorting your nice 12V square wave into a sawtooth that gets smaller as the PWM frequency is increased. To get a good Gate drive waveform at 20KHz you should reduce R1 to about 500Ω (to charge the Gate faster) and R2 and R3 to about 1k (to ensure that Q1 turns on fully).

The 1N4001 is a mains frequency rectifier diode with slow switching action - not suitable for high frequency PWM. You should use a Schottky diode rated for at least 3A continuous.

Software PWM created with DelayMicroseconds() is not very accurate as it doesn't take into account loop overhead, so the PWM frequency will be lower than you expected. Also you must not have any interrupt code running (eg. timer, serial) or the PWM waveform will suffer from glitches that could be audible. If you can still hear it, it's not 20KHz!

With good Gate drive, a fast flyback diode, and true 20KHz PWM, you should get quiet motor operation.