This project is to design a variable, heat sensitive fan controller with a presentable enclosure for a home entertainment system. If you are like me and have your home entertainment system tucked away in an enclosed space, you likely have an issue with heat and need a practical way to dissipate the heat away from your components and draw in some nice, fresh air. Also, people like me tend to forget to manually turn on fans and unwittingly barbecue their PlayStations as a result of simple neglect. Therefore, the solution is an always-on option, but I wanted something that is not fully on (noisy) unless thing are actually getting hot. This controller surveys the heat in the cabinet and adjusts the fan speed (and noise) accordingly. There are some very nice, very expensive cabinets with built in exhaust systems, but if you already have a cabinet you want to use, then read on!
TWEAKING THE TEMPERATURE: Seasons change, ambient temperatures change. Instead of having to hook up a laptop to reprogram the temperature values to make the small changes, I instead opted to insert another "constant" variable to the overall temperature calculation. This variable is set to one of 10 positions to "tweak" the value of the temperature. I utilized one of the interrupts to poll the pushbutton. With each push, the tweak value increases one level. After 10 pushes, it cycles back to zero again. The whole purpose of the bar graph LED display is to show the current level of the "tweak" applied to the temperature. Mine adds anywhere from 0 to 20 points.
** Caveat** This design uses 3-pin brushless fans which are very common. Some would argue that the built-in circuitry to drive the brushless DC motors might be stressed out by a pulse-width-modulated power drive. I'm not sure if that's true but it is, nonetheless, worth considering a fan failure in any design, which is why I provided for up to 6 fans on this controller. Someday I might modify a version 2.0 and use 4-pin fans with direct PWM control. In theory, the 4-wire fan could also provide feedback on the tach line to provide an alert for fan failure, but you would need some shift registers to free up some pins.
Step 1: Parts List, Things You'll Need
Processor: Arduino Pro Mini 5V (You can also use the Uno if you can live with the form factor)
Thermistors (any type)
Bar Graph LED display
Pushbutton (I use one with an LED backlight)
Schottky Diode (not pictured)
Resistors (330K, 1K, 10K, 47K)
Resistor array bars (2x 330K)
Aluminum plates 2mm thick
1/2" Aluminum Corner Channel
Screws (#4 and #2), nuts (#2) and rivets
Banana plugs and terminals
12V Power Supply
Step 2: Build Electrical Prototype - Main Board
Pictured is the schematic of the little protoboard used for the processor. It's fairly simple. The center two rows are the Arduino Pro. I soldered male header pins (extended a bit) to the arduino and then pushed them through the back of the board and soldered to the board. As you can see in the picture, I used 90 degree male headers on the programming side of the board. Make sure to mount the board with the 90 degree headers facing the top of the enclosure. Then, if the board needs to be modified after installation, you can simply pop the top and connect the programmer to it.
Keep in mind, the schematic isn't exactly to scale, but the protoboard is only about 2" square. "Therm" labels are the thermistor. G D S is the gain, source and drain for the MOSFET. Digital pins 4-13 simply jumper to a separate board I mounted the LED bar graph on.
The Arduino Pro is programmed with a simple code to monitor the temperature probes continuously in the main loop. The button for the temperature tweak is set up on the interrupt on digital pin 2. The "analog" output, set up on digital pin 3, is really digital pulse width modulation on one of the Arduino's PWM pins and generally takes a value of 0-254. There are a bunch of ways to convert the temperature values to PWM output levels. At first I tried mapping the temp values to a 0-254 range. This produced a smooth transition of values, but I didn't really want a smooth transition, so I abandoned that approach for a distinct 5-tiered level. Each level is activated when a temperature threshold is reached. This is done by a simple comparison operator control structure.
Step 3: Build the Other Boards for the Button, the Bar Graph and the Fan Output Pins.
I used a lighted button, so a 330 ohm resistor is mounted next to it. Just a male header for the positive and negative leads here.
The bar graph is simply 10 LEDs sandwiched together, so each needs it's own resistor. I used 2 LED bars which have 5 resistors in each. The bars make the wiring a lot simpler. Just solder the resistor bars across the negative leads of the LEDS and a male header to each positive lead of the LEDs and that's it.
The last board is just a row of male headers that the 3-pin fans can plug directly into. (Go Niners!)
Step 4: Enclosure: Mitered Trim
First I planned the size of the enclosure. I didn't want it too big, but it's always good to have extra room for wires. With the protoboards finished, it is easier to see how much room you need. Then miter the trim for the top and bottom pieces. I used a chop saw with a ferrous metal blade for this because it gave the cleanest and most accurate cuts.The top and bottom are removable for access. Drill holes big enough for the rivets along one side and holes the right size for the #4 screws to pass through on the side which will be the edge.
Step 5: Enclosure: Attaching the Sides
Next cut the flat panels for the sides, top and bottom. The panels are small and don't need dead-on straightness because of the trim, so I used a band saw and free-handed the cuts. Rivet the edges to the top and bottom panels. I would suggest marking everything on the inside so you can keep things "straight", right? I brushed each of the pieces as I went to give it a better finish. To connect the side panels, drill and tap the panels to accept the #4 screws, as seen above.
Step 6: Mounting the Connectors and Boards
Map out where you want the terminals and switches. The button and bar graph are clearly on the front panel for visibility and access. Placement of the rest goes wherever practical. I drilled some holes with the enclosure intact and disassembled it for wiring and connections. Some of the boards required spacers to keep them off of the sides of the enclosure. Be careful to avoid any short circuits (aluminum is a great conductor!). In the picture of the main board, you can also see a chunk of left over aluminum I screwed to the MOSFET to act as a heat sink, although it doesn't really get very hot. Use a punch to set where you want to drill the smaller holes. I used #2 screws and nuts for the boards. Put a little thread-lock on the to keep them from backing out.
Step 7: Cutting Square Holes
Cutting square holes is a real pain, but is necessary for some of the components. It is needed for a good finished look on the bar graph, the fan terminals and the power switch. drill a series of small holes and then hammer it out. When I hammered it out, it started to warp the aluminum which is pretty thin, so I used a dremel to carve the little holes out a little which made the hammering a lot easier and quicker. The edge will be very jagged and must be smoothed out with a hand file. It's a good workout, but worth it.
Step 8: Cut Side Edge Trim
Next, cut the side edge trim. Just assemble the box and cut each exactly as long as it needs to be. Again, mark each so you don't mix them up. The ends are not mitered, so the cuts are easy, but each piece will have 4 holes to drill. Then, punch and drill and tap the mating holes on the panel pieces.
Step 9: Wire It Up!
With each board, I used male headers so the final hook up only requires a bunch of female-female jumpers. Keep each of the four sides in the same orientation as they will be in when screwed together. I got a couple backward and had to rewire because it got twisted.
Also cut and make whatever custom connectors you need for the fans and whatever length you need. Solder and shrink wrap the thermistors (mine are blue) to a pair of banana plugs, unless you choose to use a different type of connector.
Step 10: Put It All Together and Run Some Tests
Here is mine in its home. I ran some tests before I mounted all the fans. As for power supplies, I am using an ATX PC supply. Good, regulated power and I already had it in place, using the 5V rails for another project. I had the 12V terminal just waiting to be used.
Step 11: Finished
Here is it in it's final spot and a couple of the fans near the PS3/Blueray player. I've already added a fifth fan and am glad I provided for up to six!