Silent fan driver summary

SilenFan blank3

To control the fans speed of a 3D printer a common solution is to supply them by a PWM signal.

This is not an effective fan speed control nor a silent solution, it’s just simple and cheap.

This driver uses PWM to DC voltage conversion.

Advantages of DC voltage control instead of PWM:

  • Lower fan noise

  • Better speed control

  • Longer fan lifetime

  • Lower fan vibrations

  1. Operation Theory and description

First, we need to understand that the radial or axial fans we mostly use in 3D printers are not like a heater or a DC motor.

They are actually two phased Brushless DC motors, with tiny electronics inside with a rotor position sensor, which converts the supplied DC voltage into AC voltage which supplies the coils of the fan, so it generates a rotating magnetic field which leads to the spinning of the FAN rotor with blades attached.

Having internal electronic circuits they do not like to be supplied by a constantly turning ON and OFF power supply as in case of PWM control. 

The below picture show the simple schematic used for PWM fan control.


This PWM control method is very simple but has some disadvantages like, the PWM frequency is in the audible range and increases the noise generated by the fan.

Low PWM frequency gives good speed control but results in a low humming noise of the fan.

Higher PWM frequency ca be heard as high hissing noise, Setting the PWM frequency over 16Khz the hissing noise is out of the audible range but most of the fans cannot work with such high frequency pulsating supply voltage, the internal electronics operation is highly disturbed. As end effect either the fan does not work at all or the speed control is completely ruined.


Note: there are fan types which has integrated speed controller and do not require a PWM modulated or adjustable DC supply voltage. The speed of the fan is controlled using a PWM input signal.

This kind of fans are most used in more critical applications like PC microprocessor cooler. 

  2. Dc-DC BUCK converter fan drive 

A simple solution is to replace the PWM fand driver with an open loop BUCK DC-DC converter circuit. This board fits into one driver slot of the printer boards and can control two fans.

Each of the BUCK cannels can drive up to 250mA current. The first channel can be populated with a bigger inductor to drive currents up to 1A. The module on the right side is equipped for 1A max fan current.


Control input signal of the first channel is the STEP, for the second is the DIR input signals of the driver slots. Next picture shows the schematic of one channel:


Below you can find the gerber files for PCB ordering. I have ordered them from Price was 2$ for five pieces plus shipping and import duties. Order the PCB's without silk screen on the bottom side. There is no space for components references there.

  3. Bill of materials

  4. How it works

The fan supply voltage is controlled by PWM signals applied to STEP and DIR inputs. The PWM signal is converted into an equivalent DC voltage.

As example having 24V power supply 10% PWM duty cycle would mean 2,4Vdc fan voltage, 50% PWM duty cycle would mean 12VDC etc.

With this BUCK converter solution, it is possible to use 12V fans with 24V power supply, the maximum PWM duty cycle in this case shall be limited to 50%, in other words maximum fan speed 0,5.

A small drawback of this method is that a minimum PWM duty cycle is needed for the fan to work. As example a typical 24V fan would work with a minimum supply voltage of about 3.6-5Vdc. This means the minimum PWM speed shall be about 0,15 / 15% duty cycle. This would be equivalent to zero speed. Below this the fan will not turn. However, the control range between 15-100% PWM duty cycle gives control over the whole speed range of the fan.


  5. Firmware configuration

The driver is designed for operation with Klipper. To use it you have to define a fan. Define the pin name and PWM frequency. The PWM frequency shall be set to 20Khz -> cycle time of 0.00005s

Klipper configuration example:

[heater_fan hotend_Fan]

pin: PD3      # you need to define your own pin

heater: extruder

cycle_time: 0.00005

heater_temp: 75

hardware_pwm: False  #can be enabled if the pin supports hardware PWM feature

shutdown_speed: 0.0

fan_speed: 0.5


pin: PE1      # you need to define your own pin

max_power: 1.0

shutdown_speed: 0.0

cycle_time: 0.00005

kick_start_time: 0.5

hardware_pwm: False #can be enabled if the pin supports hardware PWM feature

Pinout of the driver board:

  6. Performance evaluation

I measured the noise generated by the fan using standard PWM control @133Hz and compared it with the fan noise controlled by the BUCK DC-DC converter. In the next graphs it clearly visible that the peak around 133 HZ is completely gone -> no humming noise anymore. 

The peak noise envelope line is lower when supplying the fan from the BUCK converter.

This test was performed using 75% PWM duty cycle.


Of course the amount of noise reduction really depends on the fan type you have. If you run your fan always @100% PWM this circuit has no effect, since the fan is already supplied with a DC voltage.

One of my concerns was that the small drive MOSFETs could overheat due to higher current and heat coming from the inductors from the other side of the PCB. Therefore, I have done some MOSFETs switching behavior and thermal analysis. 

The result shows that the channel for 1A current capability indeed reaches pretty high temperature, over 80°C. Therefore, it is advised to attach a small heatsink over the top of the coil this way limiting the maximum temperature to about 52°C (measurements done @ 23°C room temperature). If you have active cooling for your stepper driver, and the air passes through the fan driver as well, the additional heat sink is not needed. 

The units for low current fan drive do not show any thermal issues, temperature do not exceed 42°C, therefore they do not require any heatsink or active cooling.

Next pictures show some of the thermal shots I have performed.

Thermal evaluation pictures of the low current (250mA) fan driver unit
SM-A520F, Android 8.0.0

Inductor temperature

SM-A520F, Android 8.0.0

Driver MOSFET temperature

Thermal evaluation pictures of the high current (1A) fan driver unit
SM-A520F, Android 8.0.0

Inductor temperature

SM-A520F, Android 8.0.0

Driver MOSFET temperature