I am working on a project to blow air gently through a number of pipes and variable speed. I would like to use a standard PC case fan and have control of whether the fans are on/off and also what speed they spin at. My hope is to attach temperature sensors later and eventually blow are depending on the temperature.

It appears that PC fans on 3-wire and 4-wire systems provide variable speed by changing input voltage ranging from 3-12V (linear voltage regulator) or with PWM set to 3.3V or 5V. Furthermore, it looks like inexpensive products exist to split/copy a single signal to multiple fans (see here).

I am hoping to control 4-8 fan speeds, as independently as possible while using as simple/standard a case fan as possible. What is the best way to drive PC case fans using the Arduino?

Reference: https://en.wikipedia.org/wiki/Computer_fan_control

  • 3
    You can use a PWM breakout board, like the ones normally used for servos. Something like this from Adafruit – chrisl May 27 '18 at 16:38
  • 3
    4 wire fans are best because you don't need any drivers, just a PWM output, and they can report RPMs. You might want to up the PWM frequency from uno speeds to avoid "kick noise", but that's it. – dandavis May 27 '18 at 18:03

To put the comments into an answer:

You can drive most PC fans (which have at least 3 pins) with any PWM source and change their speed through the duty cycle. The Arduino Uno itself has 6 PWM channels. If you want to control more fans, you have to use an extra chip, that provides PWM. You can use the breakout board from Adafruit, but also any other external PWM chip (they are often marked as servo drivers, since servos use PWM signal too).

The speed of most fans can also be changed through providing a different input voltage, but this is not intended for direct variation. Instead this is normally used to set the speed interval, in which the fan should run. For example some PC fans have extra adapters, which lower the supply voltage to let them run more silent. For short term variation you should definitely use PWM. If your fans are too fast at their nominal voltage, you can provide them with a lower voltage permanently.

As dandavis pointed out, the 4th pin is usually connected to a feedback loop. They provide a defined number of pulses per full rotation, so that you can really measure the speed, instead of just estimating. When you don't need this functionality both kinds of fans (3 pin or 4 pin) are good for you.

  • Since the fan linear voltage regular usually goes up to 12V, and the breakout board from Adafruit says it will only support 6V vcc+, what do you think about going with this adafruit.com/product/1455 that says it can go up to 17V? – Steve May 28 '18 at 20:26
  • Yeah, thats good. It has enough outputs, is cheaper and fits to your voltage. I would use it – chrisl May 29 '18 at 6:47
  • note that 3pin PC fans don't support PWM, they report RPM with the 3rd wire. the 4th wire is the PWM control. That's a bummer because 4pin fans cost more, but they are still cheaper/simpler than rolling your own PWM fan controller or even using a mosfet+dioide and all that. You can feed the 4th pin 3.3v for the PWM. – dandavis May 29 '18 at 18:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.