Introduction: Arduino Temp Controlled Fan. (Keeping My Stereo Receiver From Overheating After Long Uses)
So my stereo receiver doesn't have an active fan on it. Onkyo probably expected with mostly made of metal, and the top a giant heat sync this wouldn't be a problem, and usually it isn't actually a problem. Unfortunately with our closet the heat can be trapped in the receiver, this led to an issue twice when the receiver was left on for at least one entire day. In those cases, I had to turn it off, let it cool down, and then it worked when turned it back on. This did give me some concern until I realized it had been left on, and was trying to figure out why my TV wasn't working.
While the best solution would be to make sure it is turned off when not in use, we watch two teenage boys during the winter, and even if I convince them to turn it off, which is hard, the next set of boys would have to be re-trained. So I decided to save myself the hassle and created a backup plan. I hooked up a Arduino to a tempurture sensor and five 5V computer fans. I bought 10 fans but found that five gave enough airflow. An Arduino uses very little power, and by using the usb port on the receiver it only turns on when the receiver is actually powered up. The temperature sensor is used to tell when the heat is high enough to run on the fans and then turn them back off if the temperature goes back down.
Step 1: Step One: Wire Up the Temperature Sensor and the The OpAmp to Run the Motors.
For this step I used a prototype board. I could have soldered this on a printed PCB, but for a quick project like this I just used a prototype board.
This was based on Adafruit's Arduino examples, I just combined the motor controlling one, with the Temp Sensor. To see the original guides: https://learn.adafruit.com/tmp36-temperature-senso...
In the pictures you can see how I routed the the connections from the pins to the temperature sensor, and the motor controller.
The power is coming from an old USB cable that I stripped the wires off of, and connects to the ground, and power lines on my board. It powers the Arduino through the power input line on pinout. I put the temperature sensor on the top of the board so that it has less influence from the heat produced by the Arduino itself.
I created a breadboard layout in Fritzing to show how the Prototype board is wired, I may try using it to actually create a PCB that could get printed if there is any interest.
Step 2: Attach the Fans Together.
I needed the fans to stay standing when the run, and not fall over. I also wanted to keep all five fans together. So I bought a small square dowel rod and screwed the fans in. The tricky part of this step, was the dowel rod had to be big enough to fit the screw through, and be strong enough to keep the fans straight, but had to be small enough that it didn't obstruct the airflow of the fans. I then trimmed the ends so that the wood didn't stick out past the end of the fans.
Step 3: Software
As I stated before this projected started with the example code for the temperature sensor. I then changed the main loop to turn on the motor if the temperature was above a set thresh hold, and turn it off if it dropped back below that threshold. I left serial port logs, and turning on an LED on the board to help with the initial debugging, and since it doesn't adversely affect the running hardware.
Step 4: Final Assembly.
I plugged the fans into the prototype board and put it on top of my receiver. I routed the wires from the fans along the wooden dowel to keep them out of the way.
Since I didn't create a case for the prototype board, and Arduino, I used electrical tape on the bottom to make sure there were no connections to the receiver it is sitting on top of.
I tested it by putting my fingers on the sensor to make sure it went up in temperature to the threshold, and turned on the fans. I then let go of the sensor so that it stopped the fans.
The receiver hasn't been left on long enough to actually need this since it was built, but I fee confident that when it is needed, I'll be ready this time.
Step 5: Parts List
1.) Fans, ( I used 5V computer fans, but you can use a bigger or smaller one, just make sure the voltage applied to the NPN matches the Fans)
2.) 2.2K resistor
3.) TMP36/LM35 (One is calibrated to Fahrenheit, one is Celcius. I didn't care since I just had one point I cared about, HOT, if you want to be more accurate, it may be important for your project.)
4.) 2N222 or similar NPN general amplifier. (this is so that I can control the fan speed, if you just want to turn them on, than a relay or a transistor would work also.)
5.) A Diode. When a motor turns off, it can feed power backwards into the system. With my board directly powering the Arduino this could damage it. The diode is wired backwards so any current running the wrong direction is just shorted out.
6.) Sacrificial USB cord, I cut the cord to power both my fans and my Arduino. You can power the Arduino directly off USB, and then power the fans off the 5V of the Arduino, but your likely to burn something out since it isn't expected to work with that much current.
7.) Arduino Uno.