I'm aware that a very similar question has been asked here before: https://electronics.stackexchange.com/questions/91015/how-connect-a-4-wire-fan-to-arduino-and-control-the-speed

However, upon checking I have been getting mixed feedback and I have the impression most of it comes from the fact that most people do Fan Speed Control via 2 pins only and expect transistors. So I decided to ask here in hope for some further information.

I currently have my Arduino powered via USB and separately my 12dc Fan with it's own power supply. They share common ground and the PWM line from the fan is connected to the Arduino boars. Nothing else in between (no transistors, resistors or diodes).

My current schematics

It is working correctly, but I haven't had it running for long in fear it may be unsafe.

Should I be concerned about the PWM line connected as such? Can the 12v from the Fan's PSU damage the Arduino with this connection?

Upon research, it seems the PWM line has a 5.25V Max voltage. I'm not entirely sure, but am I right to guess that is the max Voltage that will go through that wire?

I do agree that a diode around the fan is a good idea and will definitelly add that.

*Edit: Thought I'd clarify that I'm using this setup to change the speed of my fan.

  • \$\begingroup\$ Can you link to the document that indicates the connections to the four pins and current consumption. \$\endgroup\$
    – Andy aka
    Commented Nov 18, 2013 at 10:29
  • \$\begingroup\$ electronics.stackexchange.com/questions/62324/… Thats in my mind \$\endgroup\$
    – user16307
    Commented Nov 18, 2013 at 10:53
  • \$\begingroup\$ That's a different fan to the link in the question so how can anyone answer not knowing which fan you mean. Also needed is the current consumption of the fan. \$\endgroup\$
    – Andy aka
    Commented Nov 18, 2013 at 11:31
  • \$\begingroup\$ can you share datasheet of the FAN especially the part which mentions the level the PWM signal have to be \$\endgroup\$
    – User323693
    Commented Feb 28, 2017 at 8:23
  • \$\begingroup\$ The only information I found regarding the subjetc is the document on jonk's response. I tried looking for data sheets for the specific fan but not sure if I found the right information... nmbtc.com/fans/part-numbers/DC-Axial-Fans/4715KL-04W-B46-P00/… \$\endgroup\$ Commented Feb 28, 2017 at 9:34

2 Answers 2


If the fan behaves according to the norm, you can drive its PWM pin with an Arduino.

The PWM pin accepts 5V input, and sources no more than 5mA, so it should be fine. Many fans should work with Arduino´s default PWM. The Norm says you have to use 25 kHz PWM frequency though, which is a bit tricky. See AKA's post in the Control PWM Fan Thread.

Yes, Arduino and the 12V power supply for the fan need to have common ground.

PWM 4pin Norm

Control PWM Fan Thread

moderator note:
This answer have arrived to this thread as a result of a merge. The 4-wire fain in the original thread: AK-FN073.


I've never tried to examine a PC fan pinout before. I use them, but never cared to try and control one of them. So never bothered.

That said, I probably found something similar to what you found: 4-Wire Pulse Width Modulation (PWM) Controlled Fans Specification, September 2005, Revision 1.3. Page 9 seems to have enough information (barely.)

"This signal must be pulled up to a maximum of 5.25V within the fan. Note: New fan designs are strongly encouraged to implement a 3.3V pull up ..."

So the PWM is pulled up inside the fan to a relatively low voltage (much less than the \$12\:\textrm{V}\$ power with which they are also connected.) You simply need a pull-down (active low) switch (most any NPN is fine.) The notes also say:

Absolute maximum current sourced: Imax = 5 mA (short circuit current)

The fact that they say "sourced" adds still more weight to the idea that this input is pulled up, internally. The specified maximum current sourced by the input can be handled by the Arduino outputs. However, Arduinos both sink and source from their supply rails and they do not have an open drain or open collector configuration. This basically means that when LOW they are compatible, but when HIGH there is some modest "concern" (the voltage rail of the Arduino may be different from what a fan designer used as their internal pull-up rail.) So you probably should use an external resistor + NPN BJT or else a logic level NMOS to drive it, correctly.

  • \$\begingroup\$ Thanks for the information. However, I have been trying to learn about all this the past few days amd still struggling to understand some concepts. So you are saying that it will be safer to use resistor and a transistor on the PWM wire? \$\endgroup\$ Commented Feb 28, 2017 at 9:34
  • \$\begingroup\$ @AntsInPants Hmm. I'm saying I'd do it that way. It's hard to predict your exact situation because I cannot measure details about your fan, though. \$\endgroup\$
    – jonk
    Commented Feb 28, 2017 at 17:16
  • \$\begingroup\$ Thank you very much for the informtation. It is incredibly helpful, learned a new things and a great resource for me to further my knowledge and research on the matter, I will do some further homework before I put the final thing together. \$\endgroup\$ Commented Feb 28, 2017 at 21:18
  • \$\begingroup\$ @AntsInPants Do some reading on "open drain" and "open collector." This will help you a lot. Although all logic pretty much works as expected, the exact electrical details for that logic does vary a little depending on circumstances. Not all inputs and outputs are the same and you need to do a little "thoughtful matching up" between them, sometimes. If the voltages on your Arduino rail and the voltages chosen by the fan designer are the same (or close) then it's likely not to cause trouble. \$\endgroup\$
    – jonk
    Commented Feb 28, 2017 at 22:42
  • \$\begingroup\$ Thanks again, I've been reading about it today and despite it is still a little daunting the many conditions there are (let alone all the terminologies haha), but it is still very helpful. I'll see if I can find out about the voltage rails \$\endgroup\$ Commented Mar 1, 2017 at 11:28

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.