Fan controller for Re:Load Pro

ATtiny microcontroller fan controller, with configurable control variables over the USB interface.

Similar projects worth following
The Fan Controller controls the fan speed dependent on the temperature of the heat sink. Make the load capable of dissipating around 55W continuous depending on fan and ambient temperatur.

Via the Re:Load Pro USB interface is it possible to change the control variables, to you application and you needs.

Use a of the chelf boost converter to generate 12V to the fan.

Single sided pcb with very few components make it easy to make you self.

This project is a guide or inspiration to make your own fan controller to your Re:Load Pro.

It uses the expansion slot on the PCB, so no need to hack to get the fan controller PCB connected to the Re:Load Pro pcb. Macked on the image below.

This expansion slot have both power and TX and RX from the FTDI chip, and it got me to thinking whether the UART interface could be used to something useful. And the idea I got was to make the control variables customizable via the USB interface. The RX line was already used by the uC on the Re:Load Pro, and I didn't wanted to interrupt any communication from the load to the PC. So only the TX line is available that means that the fan controller on can receive data from the USB interface.

When the USB not could be used to give response back that the a control variable was successfully sent and received, and I did not want to add any other components, did I only have one other another solution. The only solution to the problem was to use the fan to give a "OK" received response. This is done by setting the fan on with full power for 500ms, and this give with the fan I use a notable audio feedback.


The fan I use is a PWM controlled fan where the fourth pin on the connector is used to set the fan speed, with a PWM signal. This PWM signal is generated by the ATtiny uC with a frequency on 21kHz, and this is just within the acceptable operational range. For what I could find on the internet how to control a PWM controlled fan, is the PWM frequency range: 21 kHz to 28 kHz.

This fan is 60mm x 60mm x 14mm and just fit the dimensions of the heat sink on the back on the case, that also is 60mm high. On this heat sink there is two M3 threads that just exactly fit to two of the holes of the fan. For mounting the fan to the heat sink you just need two M3 bolts, this just hold the fan in one side, but if your want you could also glue it in the other side, but I think it's rigid enough with only two screws.

Boost Converter

The boost converter I use is just one I found on ebay that is reasonable small to fit inside the box with plenty of space to spare. This can deliver 370mA with 5V as input and should be enough to the most 60mm fans. This board has also a pin capable of switching the converter on or off by setting the pin high or low, and this feature make the fan controller capable of switching the fan completely on or off .

It has a 90° header that I removed, and solder some solid wire in instead, so it could be soldered to the pcb I had made.

Temperature Sensor

The temperature sensor used is a DS18B20 that provides a 12-bit temperature measurements in a of range of -55°C to +125°C over a 1-Wire bus. This is mounted on the heat sink behind the fan.



The uC i choose to use to this project is a ATtiny2313A and have 2KB flash memory.

The code the uC is executing get the temperature reading from the temperature sensor and from that calculate if the fan should be switch on or off and how fast it should be spinning. This is done by 5 values:

1. MAX: The temperature where the fan is running at max speed (100% duty cycle).

2. MIN: The temperature where the fan is running at min speed (MIN DUTY).

3. START: The temperature where the fan is turned on.

4. OFF: The temperature where the fan is turned off.

5. MIN DUTY: The minimum duty cycle the fan can get when turned on.

These 5 values is fully customizable in a range of 0-99°C except of the last that sets the minimum duty cycle in %.

When the measured temperature is between MIN and MAX. The duty cycle will be set to a value determined by a linear regression by these two temperature values. As shown here:

In this diagram your can also see it is possible to use hysteresis based switching to turn the fan on or off.

Through the USB interface of the front of the Re:Load Pro can all of these 5 values be set. The values is set by sending text based commands as follows:

"FA2_37": This command set value 2 (MIN) to 37°C.

"FA5_09": This command set value...

Read more »

  • 1 × DIY PCB (single sided)
  • 1 × 60mm PWM Controlled PC Fan (4-Wire) Fan
  • 1 × Boost converter (from 5V to 12V) Bought on ebay
  • 1 × ATtiny2313A 8-bit Microcontroller
  • 1 × DS18B20 digital thermometer Sensors / Temperature, Thermal

View all 13 components

  • Heat dissipation test

    Rune11/22/2014 at 17:06 0 comments

    This is a little test to see how good the heat dissipation is with the new fan installed. The test was run for 10 minutes without any overtemp protection warnings.

    As you can see, it is able to dissipates 60W.

  • First test

    Rune11/22/2014 at 16:10 0 comments

    When first testing the board I had a problem with the boostconverter. The problem was when the uC was when switching the boostconverter on, that it drew too much current resulted in a big voltage drop. The voltage drop was big enough to reset the uC. When the voltage recovered enough to turn on the uC, did it switched off the boostconverter before it realized the temperature was too high, which made the whole process to repeat itself.

    This test was done with a external power source with a long leads, this was maybe some of the problem, but with a long USB cable will probably do the same. To solve the problem did I changed the C2 capacitor to a 220uF which solved the problem.

View all 2 project logs

  • 1
    Step 1

    Make you the PCB and get the components and any standard 60mm 4-wire fan will probably do the job. I used a JMC "6015-12HB APW" that I had lying around. The exact the same fan is readily available on eBay.

    I used eagle to design my PCB, and the files is available on my GitHub.

  • 2
    Step 2

    Solder the components to the board. To connect the fan controller PCB to the expansion slot I used solid wire because the holes in the expansion slot is not wide enough to support a standard 2.54mm pin header.

    To program the micro controller I used a STK500 kit with the ISP header connected to a breadboard. The programming files is file available on my Github so you can program it you self.

  • 3
    Step 3

    Solder 3 wires to the DS18B20 chip, and use heat shrink around the exporest wires so they not short. To the connection to the board I do not recommend to use a female header connector because off the hight to the case. I used it on one of the headers and it could just fit in the case, with the wires rubbing against the case top. Instead I recommend to solder the wires directly on to the headers or the PCB.

    Now you could test the circuit to see if it is working by connecting to an external 5V source before solder it to to the load. If you set the MIN, OFF and START control values to a value little over the ambient temperature, and by touching the temperature sensor the fan will turn on and begin to run faster the more you heat it.

    IMPORTANT the fan can not directly be connected to the fan by the header of the PCB so you need so sort of converter.

View all 5 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates