Problem:
When Im running computer intensive tasks, I want the fans to cool my processor. When Im not, I want the fans to be quiet. I know that fan controllers exist that you can buy, but I wanted to learn more about control systems, so I decided to design one myself.
Context:
Im starting from a project I did a while ago where I used ductwork to route air through my PC. 5 diameter dryer duct hose connects the front and back fans (Silverstone FM121 - http://www.silverstonetek.com/product.php?pid=118&area=usa) to the heat-sink (CoolerMaster Hyper 212+ http://www.coolermaster.com/product.php?product_id=3096) that is mounted on the processor.

Solution:
Essentially, a PLC (I chose the Arduino Uno http://arduino.cc/en/Main/ArduinoBoardUno, because it is cheap and easy to program) will read the temperature, generate an output based on a comparison between the temperature and the set-point, and translate that output into the appropriate fan speed. I read the temperature in two stages: 1) to get from the PLCs voltage input to the thermistors resistance, I used a voltage divider circuit and 2) to get from the thermistors resistance to the temperature, I used the Steinhart-Hart equation. I used a PID algorithm to generate an output based on a comparison between the set-point and the temperature. I used PWM to translate the algorithms output into the appropriate fan speed.



Results:
Here are a couple of questions I would like your input on:
---
www.jeffsinventions.com
When Im running computer intensive tasks, I want the fans to cool my processor. When Im not, I want the fans to be quiet. I know that fan controllers exist that you can buy, but I wanted to learn more about control systems, so I decided to design one myself.
Context:
Im starting from a project I did a while ago where I used ductwork to route air through my PC. 5 diameter dryer duct hose connects the front and back fans (Silverstone FM121 - http://www.silverstonetek.com/product.php?pid=118&area=usa) to the heat-sink (CoolerMaster Hyper 212+ http://www.coolermaster.com/product.php?product_id=3096) that is mounted on the processor.

Solution:
Essentially, a PLC (I chose the Arduino Uno http://arduino.cc/en/Main/ArduinoBoardUno, because it is cheap and easy to program) will read the temperature, generate an output based on a comparison between the temperature and the set-point, and translate that output into the appropriate fan speed. I read the temperature in two stages: 1) to get from the PLCs voltage input to the thermistors resistance, I used a voltage divider circuit and 2) to get from the thermistors resistance to the temperature, I used the Steinhart-Hart equation. I used a PID algorithm to generate an output based on a comparison between the set-point and the temperature. I used PWM to translate the algorithms output into the appropriate fan speed.



Results:
- When doing tasks that are not processor-intensive, the computer runs at 39 dB instead of 57 dB as measured by the Sound Meter app on my phone when my phone is on my desk.
- While the primary purpose of the project was reducing sound, I was curious to see if it also resulted in power savings. It turned out not to change power usage much. I estimate that the computer will use about 8 less kW-h per year (the PC uses 72 W @ 100% fan speed and 58 W @ 40% fan speed as measured by the kill-a-watt meter that I plugged my computer into. Assuming 3 hours of use per day split evenly between computer intensive and computer un-intenstive tasks, 72 W - 58 W = 14 W; 14 W * 1.5 hr / day * 365 days / yr * 1 kW / 1000 W = about 8 kW-h per year). At $0.15 per kW-h my utility bills me, I will save a whopping $1.20 per year. In testing so far, the computer has used an average of 0.38 kW-h per day without the controller and 0.37 kW-h per day with the controller. 0.01 kW-h / day * 365 days / year = about 4 kW-h per year.
Here are a couple of questions I would like your input on:
- Where can I put the sensor such that running the CPU exhaust fan doesnt interfere with it?
- What tunings should I use for gs for my PID algorithm? (I've seen a couple of strategies by googling around, but I wonder what your experience suggests).
- How can I add a tolerance to the set-point? For example, the controller currently adjusts the fan speed if the temperature is 22.07 degrees C, when I would be fine with anything in the 21-23 degrees C range.
- How should I change the wire colors to make the circuit easier to read?
---
www.jeffsinventions.com