My first thought was to use a 555 timer. And why not? There are tons of PWM application examples in datasheets and around the internet. However, most of these circuits are just variations on the astable multivibrator circuit where a potentiometer is used to vary the duty cycle. We do have a start though.
![]() |
| Astable Multivibrator from TI NE555 datasheet |
Before going any farther I'll mention a little research that led me astray. I had wanted to find an appropriate PWM frequency so I searched the internet for something like "atx fan pwm". I found several articles by hobbyists as well as some white papers by control IC vendors on the subject. It quickly seemed apparent that something around 20kHz was common, as it was outside the audible spectrum. I'll fast forward to the end and tell you that higher frequencies only works on 4-wire fans, and that your typical 3-wire fans need something lower, like 30-200Hz. But that wasn't the only reason my 555 circuit sucked.
So I tuned my 555 circuit for close to 20kHz, fed my sensor voltage (we'll discuss it later, let's just pretend it works for now) into the "Control Voltage" pin of the 555 and powered it up. I'll apologize for not having oscilloscope captures before describing the waveforms...... sorry.
First of all, rather than spinning, the fan kinda kicked a little and gave off a high pitched squeal. Blasting the the sensor (again, a diode) with a heat gun illuminated another problem. I mocked up a 555 circuit in LTSPICE to show what happened:
This one I kinda saw coming. The duty cycle is changed by leaving the off time constant and just extending the on time. And as a consequence, the frequency changes too. All around, not a good plan.
We'll try another circuit in the next part.
![]() |
| Testing with a heat gun. Probably shouldn't leave it on the papers. |


