Heatsink Fan and Power LED PWM Controllers

A few weeks ago, I saw a reader’s question about how to run PS3 cooling fans using an external electronics circuit. At the time I was busy with some other projects. The other day, I decided to put my knowledge into practice and started this post.

The main purpose of this article is to give some details about the speed control of PWM (pulse width modulation) cooling fans. However, you will also get the project details of a generic do-it-yourself Heatsink Fan & Power LED PWM controller circuit!

Fan Driver Circuits & Fan Speed ​​Control Techniques

In recent days there has been growing interest in standalone driver circuits for controlling the speed of cooling fans used in various electronic equipments. The simplest two-wire fan driver is an on/off control circuit to start the fan using a drive signal when the temperature of a particular component exceeds the threshold and to stop it when the temperature is under the threshold level. Next the driver circuit employs a linear voltage control circuit where dc voltage applied to the fan is controlled through a voltage regulator.

To run the fan at a lower speed the voltage is decreased, and to run at a higher speed the voltage is increased. The final, and the most widely used driver circuit for controlling the fan speed uses the PWM control technique. In this driver circuit, a pulse width modulated (PWM) drive signal is typically applied to a field-effect transistor (FET), which is connected to the high or low side of the fan. The fan will be on/off at a particular frequency and the speed of the fan is controlled by the duty cycle of the PWM signal.

Note that there are three main types of dc fans: two-wire, three wire, and four-wire. The two-wire fan has two pins – power and ground. This fan can be controlled either by varying DC voltage or by using the low frequency PWM drive signal as pointed above. The three-wire fan has a tacho signal, which indicates the speed of the fan. This fan can also be controlled either by varying the DC voltage or by using the low frequency PWM drive signal. The four-wire fan has a dedicated PWM input too, which can be used to control the fan speed.

PWM Fans & PWM Control Rules

As specified by Intel, a square wave type PWM signal has to be supplied to the PWM input of the fan and must conform to the following specifications:

  • Target frequency: 25kHz, acceptable range 21kHz to 28kHz
  • Maximum voltage for logic low: VIL=0.8V
  • Absolute maximum current sourced: Imax=5mA (short circuit current)
  • Absolute maximum voltage level: Vmax=5.25V (open circuit voltage)
  • Allowed duty-cycle range: 0% to 100% (Non-inverted. 100% PWM duty cycle /5V results in maximum fan speed)

An external pull-up resistor is not necessary here as the signal is pulled up to 3.3V/5V inside the fan. Further, operation below 20% PWM duty-cycle is not officially supported in the Intel specification (undefined behavior). However, it seems most PWM fans can be operated at below 20% and will stop at 0% duty-cycle. The fans operate at full rated speed if there is no PWM input signal!

On a side note, below is the picture of a 3-wire fan. At first, you may be tempted to conclude that this is a regular brushless dc (BLDC) fan with a tacho signal output, but you’d be wrong. Actually, this is a PWM fan (KFB-1412H from Delta Electronics) made for PS3s, and its third wire is the PWM lead to control the speed of the fan. In the real world, things can be different!

If you want to test this fan, simply apply 12V DC across the brown (+V) and black (GND) leads, drive the gray lead (PWM) with a TTL-level (5V) pulse train close to 25 kHz from a signal generator, and vary the duty-cycle of the pulse train (0-100%) to adjust the speed. That’s it!

WARNING: Connecting 12V supply voltage to the PWM lead will instantly damage the fan!

It is not easy to find a pragmatic datasheet for this odd 3-wire fan. If you just want to know a few more things about it, then just go to https://www.psdevwiki.com/ps3/Delta_KFB1412H.

Usually a PWM fan’s speed scales broadly linear with the duty-cycle of the PWM signal between maximum speed at 100% PWM and the specified minimum speed at 20% PWM. For example, if a PWM fan has a maximum speed of 2000rpm and a minimum PWM speed of 450rpm, it will run at 2000rpm at 100% PWM, 450rpm at 20% PWM and around 1100rpm at 50% PWM.

As far as I know, there are no special prerequisites for the fan driver circuit that generates the PWM signal for speed control. However, some manufacturers recommend to use a CMOS-inverter type circuit like the one shown below. Oh, this is the very circuit that is used for GPIO pins inside most micro-controllers!

What you see in the lead image of this post is a cheap PS3 external fan controller module. Below is the picture of a variant of that module, again coming from China. These ideas inspired me to create my own version of a similar electronic device. Next are the project details of my crude PWM Fan (& Power LED) controller!

PWM Controller for Heatsink Fan & Power LED

As I loosely mentioned in the first paragraph, my path to build an external PWM fan controller starts with designing a very simple PWM controller circuit which can be used equally for smooth speed governing of heatsink cooling fans and effective dimming of common power LEDs. At first, I designed the circuit for driving and dimming high-power LED strips. You can see the 12V schematic of that design below.

This circuit’s main PWM output is routed to a power transistor (T1) to drive randomly picked 12V LED strips. As you can see, an optional “inverted” PWM output is also available for further applications. In fact, the mighty TIP41C transistor (T1) is a bit superfluous in this design, but it is not harmful. You can choose a different alternative.

Following is a casual oscillogram of the PWM signal output, taken from Pin 4 of the CD40106BE (IC1). The PWM frequency is around 24kHz while the duty-cycle is adjustable from 0 to 100%.

I also used this circuit for “linear” voltage control of a 2-wire 12V BLDC fan, and it worked flawlessly.

Despite my best efforts, I could not find a budget PS3 fan locally. So, I decided to suspend the PS3 Fan Controller project. I think the optional” inverted signal output (or the direct signal) can be used to control the PWM lead of a PS3 fan via a BJT.

Below is a suggestion by Noctua (https://noctua.at/en/) for their PWM fans.

This is an excerpt from another 12V PWM fan datasheet provided by an anonymous reader via email.

The core circuit will now work happily on 5VDC, but with a comparatively lower PWM frequency. However, changing the capacitor C3 will fix it.

CD40106 IC – A Few Words

The CD 40106 Hex Schmitt Trigger is the basis of this DIY project. It is a great chip for our purpose because it’ll work on a wide voltage range. We will not have to worry about powering it.

The CD4016 (CD4016B/CD40106BE) contains six inverters that can be used to make simple square wave oscillators with just a single resistor and capacitor. The input is attached to a capacitor that goes to ground and a resistor goes from the output to the input. And, with one potentiometer and two diodes we can change the duty-cycle or pulse width of the square wave. The potentiometer changes how the feedback flows through the two diodes which causes it to oscillate asymmetrically.


The simple and adaptable design presented here can be used to drive various types of fans and lamps. The CD40106 IC square wave generator generates the PWM control signal based on the frequency and duty cycle set by the associated RC timing components. The final output signal can further be used in multiple ways provided it’s tweaked right for the proposed application. Development, you might need to develop an extra circuitry at the output using a few components to complete the design.

That’s all for now. I guess at least there is plenty of room to evolve, grow and improve. All awakenings are good!

Credits & References:

Leave a Comment