Arctic F12 PWM PST toggles repeatedly

Hey guys,

I just tried to control a F12 PWM by PWM. I tried a Nano and an ESP32.
The wiring was:

  • of fan to + of 12V DC power supply
  • of fan to GND of 12V DC power supply
    GND of controller to GND of 12V DC power supply
    PWM pin of controller to PWM pin of fan

I powered the controller via USB from my MacBook and the fan via a 12V DC power supply.
I also tried replacing the fans power supply by using my cars cigarette lighter.

The code ended up very simple after I ran in the same problem after a lot of trying and minimizing the code:

const int pwmPin = 5;

void setup() {
    pinMode(pwmPin, OUTPUT);
    digitalWrite(pwmPin, LOW);
}

void loop(){
    digitalWrite(pwmPin, LOW);
    delay(2000); // even with this delay the error keeps occurring 
}

But even with this simple code the fan repeatedly turns on for like half a second and turned off again for about 3 seconds.
Even after I removed the power of the Arduino this problem keeps on occurring.

Does someone have an idea what the problem could be?

No one? I’m really desperate…

Hi,
Can you post a circuit diagram please?
Have you got the specs for the fan, it should tell you what frequency the PWM signal should be?

Tom.. :slight_smile:
PS, As most of the forum members are located all overt the world, 24hours to wait for an answer can at times be typical.
What is a "Arctic F12 PWM PST" ??????
A better worded subject might have helped.

I put a circuit in the attachments. In the official datasheet I did not find any information about the frequency...

Hi,
Thanks for the circuit.
Google
4 pin fan pwm frequency

It will tell you the "standard" for the PWM speed control signal for most 4pin Fans.

Tom... :slight_smile:

If this is only issued by the frequency, why is the problem still occuring when I remove the power supply for my Arduino? Actually there shouldn’t be any PWM signal, right?
And controlling the speed with analogWrite(pin, dutyCycle) works properly, only dutyCycle=0 is problematic.

Hi,
What happens when you disconnect the PWM from the Nano?
What happens when you disconnect from the Nano and gnd the PWM wire?

Have you connected to the correct wire.
The "standard" of sorts is.


Tom... :slight_smile:

TomGeorge:
Hi,
What happens when you disconnect the PWM from the Nano?

The fan runs at full duty.

TomGeorge:
What happens when you disconnect from the Nano and gnd the PWM wire?

The known problem occurs.

TomGeorge:
Have you connected to the correct wire.

Yes, I did (see circuit).

Ideas?

alve89:
Does someone have an idea what the problem could be?

This is not a problem, but a feature.
Computer fans are supposed to run all the time.
The intelligence inside the fan tries to re-start the fan when it's not running.
Less than 20% PWM is AFAIK not specified in the original Intel 4-pin fan specification.
If you want the fan to stop, then use a 'dumb' 3-pin fan, or use a 4-pin fan that is specified to stop.
Some Noctua document, page7.
Leo..

Wawa:
The intelligence inside the fan tries to re-start the fan when it's not running.

That sounds quite propable, because I this morning I tried to remove the controller completely:

Fan+ -> 12V+
FanGND -> GND
FanPWM -> GND

and the problem still occured.

Thank you for your suggestion, but since I already have the F12s I will stop them with a transistor.

alve89:
...but since I already have the F12s I will stop them with a transistor.

Should do that high-side (in the + line). Third diagram here.
Leo..

Wawa:
Should do that high-side (in the + line).

In another thread of this forum I read I should GND the emitter. So I did as seen in the attached circuit.
When I don't plugin the PWM wire (green, from D5), the transistor properly toggles the fan on / off. But when I plug it in, the transistor is constantly "switched on". I don't see what I'm doing wrong here... do you have an idea?

Cause: The transistor switches the GND line, so the PWM is the alternative GND line.

Solution: This circuit works properly for me: High-side switch 24V 6mA control by Arduino - Electrical Engineering Stack Exchange with Arduino_PWM_Pin to Fan_PWM_Pin.