To any bored Developer: Smart Fan Controller

This is to any computer enthusiest wanting to get into using the Arduino. Unfortunately I don't have the time to do this myself, I have a huge backlog of projects and lots of RL work that I need to get done so I'm putting it on here in hopes someone finds it useful as an outline to get a project going.

Maybe after completing it you can write up and Instructable and enter it into the Win A Laser Cutter contest on the Instructables site. Just send me some cred and maybe a few free cuts/etches when you win :wink:

Outline of Project:
Use the arduino to PWM control 3 fans via digital or analog temp sensors it should end up similar to mCubed TBalancer.
Now if you look at mCube's webpage the specs that they use for the TBalancer basically screams Arduino in abilities (in fact I think I saw a ATMega logo on their site somewhere).

Possible Ways of Doing it:
Digital Temp Sensors:
Use digital temp sensors to control PC fan, you might want to take advantage of the rpm sensor on some PC fans for logging purposes. Using the hall effect sensor I think will take away an analog pin.
Analog Temp Sensor:
Same as above.

Now you can try to correlate temp to RPM but that will be a lot of trial and error and will be specific to your computer case only.
Another option is to step the control of the fans in one of 2 ways:

  1. have a HIGH, MEDIUM AND LOW setting for the fan and if the temp goes up, the fan steps up until the temp goes down or if the temp still increase, increase the speed.
  2. Determine generic change in temp curves and have the rpm of the fan change as delta temp changes to try and maintain a constant temp range.

Lastly you could have the Arduino act as a controller and bridge between the computer and fan speed, so you can graph and log temp/fan speed and make adjustments when you like. Things to look into for this would be Processing and somehow integrating the Arduino IDE into a modified Processing environment to adjust change in temp curves in almost real time. This would be the hardest, but would be the closest to the mCubed TBalancer as possible.

Please use this thread as discussion, I'm interested in anyone finds this handy and actually makes this. If not, I'll get around to it in a year or so.

Just having the arduino try to maintain a constant temp sounds like it would be easy, and my current project already does temp sensing.

I have a working temp circuit(very simple) and code for it.

I think we could use PWMs connected to relays for the fans. So we would use 12v relays?

this would be a perfect application for one of the boards we developed for the RepRap project: http://www.reprap.org/bin/view/Main/PWM_Driver_1_0

its a board that takes a PWM input, and powers an output. to test it, i actually hooked it up to some little case fans (watch the video at the bottom of the page) as an added bonus, it gets its power from a hard drive power connector... quite simple if you already have a computer right there. this board has separate channels on it... so you could control 3 different fans.

i'm also about ready to order a bunch of simple temp sensor boards, but they're not quite ready. temp sensing is pretty easy with a thermistor + a few components.

plus, the whole deal is cheap and open source. yay!

I think we could use PWMs connected to relays for the fans. So we would use 12v relays?

PWM connected to relays? Eww.
Relays cant switch fast enough I think anyway.

Transistors or Optocouplers I think would be the best way to go.

i agree. the board i suggested is pretty standard: pwm connected to a TIP120. its based on the circuit on tom igoes site. of course you could probably use it as a digital on/off switch for dc current too.

Horah! It's nice to see people discussing this idea. I didn't think it would be hard to do, I just don't have the time until the new year at least, and figured some people would like something like this.

Using the interrupt to read fan RPM:
http://www.arduino.cc/playground/Main/ReadingRPM

I was thinking about controlling the fan speed with a electronic speed controller for RC airplanes.

-Z-

It seems, you might be able to live with something much simpler, like the Microchip TC642 and it's friends (TC646, tc647, TC648, and TC649, as well as the B version of them). (I'm sure maxim and others make a similar dodad.)
The reference design in the datasheet is plainly simple but you'd need another way to monitor the fan speed. You should have no problem simply connecting the tach line from each fan to a motherboard fan connector and using the motherboards own hardware to read the fan speed.