Jos van Eijndhoven have constructed simple but effective PC fan speed controller. He used PIC 16F676 microcontroller to read temperature sensors and provide PWM for three independent channels. Potentiometers control fan start temperature for each fan.
The controller is programmed linearly to increase fan speed when temperature increases and decrease fan speed slowly even if temperature drops fast, in order to avoid instability in control. In Schematic he used switching power MOSFETs BUZ72 to control speed of fans with PWM and LM60 temperature controllers. Also there are ability to connect several fans in parallel to one channel if needed. Code is written in C and compiled to hex with CC5x compiler.