PC fan interfacing

I want to make a pc fan controller were it can change the speeds of the fans and i have a few questions. 1. how do i run the 12v fans on a full 12v not the 3.3v and 5v the arduino unit has? 2. what is the third wire for on the fan? 3. How would i make the arduino find out the fan speed if i want it to display it.

you would use a transistor (bipolar or mosfet) to control the fan. There are designs that will allow you to feed the full 12 volts. You could use PWM to control fan speed. The third wire is used to dertermin fan RPM. It "ticks" when the fan revolves. Count the ticks... know the fan speed.


thanks that helps alot

I just took apart the breadboarded circuit I had that interfaced to a PC fan. I used a TIP120 darlington transistor and a few other components. It worked pretty well, but it was noisy because the 490Hz PWM signal seemed to kind of turn the fan into a speaker at low speeds. An RC filter on the PWM pin output helped, but there is probably a better way.

I'll post a schematic of what I did.

Here is another good example of controlling a PC fan with an Arduino.


optical isolation is not a bad idea if available, definitely. I have a feeling there are problems with my setup.

The problem with PWM for a motor is that the manufacturers don't recommend you do this for maximum reliability. They suggest a changing DC level. This circuit takes the PWM and smooths it to be a DC voltage. Due to the high impedances you only need small capacitors. Scott's schematic will not smooth the PWM signal due to the high gain of the darlington used.