I designed three slightly different PWM fan controllers based on the 555 timer, used to control a large server fan – Delta FFB1212EHE, with a peak current of 3A and a normal load of 2A. The other features of these controllers include: boosting the fan to 100% for the first few seconds after power-on, and a “turbo” button to set the fan speed to 100% while pressed.
Version 1 (July 2010) of the controller did not work as expected during startup, staying at 0% instead of 100%. Another problem was that it would occasionally slow down to almost stopping, and I had to reset it to recover normal operation. I don’t know what caused this problem, but it seems to have no effect on later versions.
Version 2 (January 2011) fixed the startup boost problem by using a PNP output transistor. I changed the startup boost timer to reduce component count, but now the timer capacitor has a slow discharge time. Because of this, turning the controller off and back on too quickly would bypass the startup boost, as the capacitor voltage would still be above the 555 reset voltage threshold (~0.7V).
Version 3 (February 2011) is the same as Version 1, but with a PNP output transistor instead of an NPN, which inverted the on/off operation.
In the schematics below, D3 (connected anti-parallel to the fan) may not be necessary for normal PC brushless fans, as they contain many circuits to handle flyback spikes. R4 in v2 and v3 (47K pull-up resistor) may not be necessary if the transistor contains internal resistors between the emitter and base.
Update – July 2012
In these circuits, I used Darlington transistors as the switching devices, TIP122 in the first controller and TIP127 in the last two controllers, with a 2A load and 0.9Vce, they dissipate 1.8W of heat (2A * 0.9Vce = 1.8W) (even more if switching losses are calculated). This requires some form of heat sink, I could have used smaller heat sinks or MOSFETs and no heat sink at all ((0.1R * (2A ^ 2)) = 400mW), but these were designed before I used MOSFETs or knew how to calculate heat loss. Using prototyping board would have been a good idea here.
Fan controllers using AVR microcontrollers and MOSFETs