Hi everyone,
I am trying to control a fan using UNO and n-channel MOSFET and I have trouble with annoying fan buzzing at low speeds. You can see my diagram in the here.
It is classic 2 wire brushless 12VDC fan. I tried setting pwm frequency to around 31kHZ but it doesn't help much. Any suggestions appriciated.
void setup() {
// put your setup code here, to run once:
TCCR2B = TCCR2B & B11111000 | B00000001;
}
void loop() {
// put your main code here, to run repeatedly:
analogWrite(3,200);
}
As you know, that fan has electronics in the hub to create the three-phase power to turn the fan. It is designed for continuous 12 volts DC not on and off DC because it destroys the ability of the fan circuit to create the power to turn the motor. That is causing the buzzing. There is nothing you can do to fix the problem other than use a fan with brushes.
I once made a commersial design for the need for 0, 25, 50, 75 or 100% using PWM. We used a very low frequency of some 25 Hz I think. It worked perfectly.
You are right but.... Suppose You connect the positive of the fan to the supply and make a short, in time, negative contact. The fan will start a short, in time, lasting rotation. Repeat the short time contacting.... There You have it!
So my only option would be to change to fans that can be controlled via PWM? Like 4 wire ones that have speed feedback and PWM control pins? Then I can just connect PWM control pin directly to the Arduino PWM pin? And I presume no other components are needed as the fan already has everything on its side?