Well, I got a new case for my server and it took 120mm fans, so I had to buy new fans for it. I got a nice blue LED fan for the front but one of the LED's was burned out and it didn't look good, plus the fan was loud and I was out of controllable channels on my motherboard. I got a free replacement for the bad LED, but I already had my mind set on converting the fan with the bad LED into something much better using what I'd learned about microcontrollers last Fall. The plan? A self-contained, digital, full control fan controller based around an AVR microcontroller that could have fine control over the fan's speed, read back the RPM, and control not just the brightness of the LEDs but also the color. Having seen a lot of cool projects using RGB (red-green-blue) LED's online, I figured it would be a good project.
Remove these ads by
Signing UpStep 1: Find a suitable fan for modification.
Things you want:
Clear plastic. Tinted plastic may give unwanted effects (but if you want to try, go ahead, it may produce a neat effect, I tried one RGB LED on a blue-tinted fan and it looked OK). Black plastic won't give you the same effect, though I've seen LED fans that have black plastic and they do give the LED lines when spinning.
3rd wire (RPM sensor wire). This wire (usually yellow or white) is what fan controllers use to count RPM. It pulls low (connects to ground) twice per revolution of the fan, so you count falling edges per minute and divide by 2 (or count falling edges per second, divide by 2, and then multiply by 60).
3-pin connector. The 3-pin connector is a PC fan standard, it's the connector that motherboards use and it's the connector I designed my controller to use. Some newer fans that use 4 pin connectors won't work for this project. It may have a 4-pin Molex (power supply) connector, I just cut it off and used that connector to connect the fan controller to my computer's power supply.

















































Visit Our Store »
Go Pro Today »




The new framing is:
0x00 0xFF
This is a write operation, for a read, a value of 0x01 is used instead for the start byte. To prevent collisions or framing errors, the value may NOT be 0x00, 0x01, or 0xFF (as if these were allowed, a misaligned frame could be read incorrectly as valid). As for the internal register address, the new scheme sets up a virtual register bank which consists of pointers to code variables, allowing quicker, simpler reads and writes of values without a long chain of if/else or switch/case statements. In tests it is performing well, and I got my Processing audio script up and running with it which looks epic. I need to clean up the code and revise the initialization sequence to get the save-to-EEPROM and fade-in operations fixed, then push the code to my 3 FanBus controllers in my desktop to do a multi-unit test. Just goes to show that hardware isn't the only thing, a nice software/firmware update can make a HUGE difference!
The new framing is:
0x00 (device internal address) (device hardware address) (value to write) 0xFF
I used less-than/greater-thans which were not shown for some reason.
For some reason the embedding didn't work, but here's a video of my new RGB fan system in my new computer. The Processing script processes the audio output and uses the fan LED's for audio visualization.
I would recommend learning to code first before trying to make boards. Start by learning the Arduino and then try working with a bare AVR chip alone (the Arduino uses a different programming environment than AVR C).
Also, if you don't have one yet, buy a breadboard. They are incredibly useful tools for wiring up projects.
and dont feel bad about your case, look at mine:
-Intel celeron 400mhz processor
-256mb SDRAM, hoping to bump up to 512
-2 10GB hard drives (IDE)
-350W power supply
-64MB PCI graphics card
Its a shame, i know :(
What's the circuit board hanging out the side of your PC for?
+2 Internets for etching your own board, +5 for using an oscilloscope during prototyping ;)
You also made it on Hack-a-day, http://hackaday.com/2010/03/03/led-and-fan-controller/
I filmed a video of the fan controller in action with a new "color wheel" program I wrote. It isn't perfect yet but it works nicely (the program randomly stops after several hours though, don't know why as it's in a while(1) loop).
Awesome! (FYI, I found this instructable via Zedomax: "http://zedomax.com/blog/2010/02/25/pc-fan-diy-how-to-make-a-nexus-one-pc-fan/")
A video would be nice.
http://www.youtube.com/watch?v=TJ_oJXBIyJ4
Can't wait to see the final version of the program!