This implementation of Arduino based PWM Fan Controller is simple circuit that allows controlling fan speed by varying the duty cycle of the output signal. For PIC16F684 version click here. I’ve tested with Deepcool 120mm fan
I/O Pin 9 on the Arduino board
This design can be further simplified by removing 2 of the speed setting buttons and controlling the fan with only one, one click – Low speed, 2 clicks – Medium and 3 for High speed fan operation. In this case some modification to the sketch are needed.