Using Arduino to Control Speed of PWM Fans

Hi there,

I’m working on a research project where I would like to expose different substances to a range of air speeds. I figured that using a PWM fan in a small wind chamber I constructed would be a good way to carry this out. I learned about Arduino semi-recently and thought that it would be great to try to use it as a way to interface with the fan.

I understand that my PWM fan has 4 wires {Blue=PWM, Green=Tachometer/Sense, Yellow=12V,and Black=Ground}. I know that the Blue wire will go into one of the PWM pins in my Arduino and that the Black Pin will need to share a common ground with the Arduino and my external power supply.

I have googled around for quite some time for help with coding for an application that I thought would be fairly straightforward but given my limited coding experience I’ve found extremely daunting.

Basically, I have two questions:

  1. Is it possible to have a simple setup comprised of just the Arduino UNO, an external PSU, and a 12V PWM fan controlled by the Arduino? Or will I need to add other electrical components into my circuit(i.e.resistors) to make it work? I’ve found conflicting opinions on this matter.

  2. Most of the projects I’ve found online deal with powering multiple fans. I just need to power a single fan. Could someone point me in the right direction of a functional Arduino sketch? I’ve tried modifying and understanding several pieces of code I’ve found online but none of them seem to work once I reduced them to a single fan instead of multiple of them.

This is the fan I’m trying to use:

I have a Keithley 2450 Sourcemeter to power my fan:

and I’m using the Arduino UNO.

I reiterate, my ultimate goal is to control the fan speed using the Arduino. I would like to essentially be able to turn the fan on and off as well as be able to control the fan speed.

Thank you for any and all help.

Hi vmm,

Thats an odd name but a very nice fan :)

1) Is it possible to have a simple setup comprised of just ...

I believe it is however I haven't done it yet. I'm working on a fan control project too. I haven't gotten arduinos in hand yet so I can't answer anything definitively. The first step I intend to take when I do get an arduino in hand is to put together the simple setup you described and wire in a pot (potentiometer) which would be analogRead() and that value would be used to determine the duty cycle value given to the fan.

2) Pointers

You might be interested in this. Arduino's PWM outputs usually function at 480Hz, the carrier frequency use in PWM fan control is 25KHz.

A small pile of links I have on the topic, I'm not really sure the quality of the info in these links.,16612.0.html#4

Good luck and keep posting so we can follow each other's progress and maybe help each other out. I should be ordering some hardware soon. Here's my project thread: