Monday, February 29, 2016

Temperature controlled USB fan with Arduino!
Things you will need

 - Arduino
 - Relay Module
 - USB desk fan
 - Thermistor 
 - Resistor 220Ω

Fairly simple concept here, we set the Arduino to kick the fan on if temps exceed 73 degrees Fahrenheit and stay off otherwise. By opening the serial monitor on baud 115200 you can view the current temperature in real time. You can also modify the values in the code to change when the fan kicks on if you like it warmer xP. Here is my layout i created with Fritzing and the code below.
Have fun!







































#include <math.h>         //loads the more advanced math functions
#define RELAY1  6                       

void setup() {            //This function gets called when the Arduino starts
  Serial.begin(115200);   //This code sets up the Serial port at 115200 baud rate
  pinMode(RELAY1, OUTPUT);      

}

double Thermister(int RawADC) {  //Function to perform the fancy math of the Steinhart-Hart equation
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15;              // Convert Kelvin to Celsius
 Temp = (Temp * 9.0)/ 5.0 + 32.0; // Celsius to Fahrenheit - comment out this line if you need Celsius

 if (Temp <= 70){

 digitalWrite(RELAY1,HIGH);        //low temp code here

}
else if (Temp >= 73) {

 digitalWrite(RELAY1,LOW);         //high temp beep code here fan on if over 73

}
return Temp;
}
void loop() {             //This function loops while the arduino is powered
  int val;                //Create an integer variable
  double temp;            //Variable to hold a temperature value
  val=analogRead(0);      //Read the analog port 0 and store the value in val
  temp=Thermister(val);   //Runs the fancy math on the raw analog value
  Serial.println(temp);   //Print the value to the serial port
  delay(1000);            //Wait one second before we do it again
  digitalWrite(RELAY1,LOW);
  digitalWrite(RELAY1,HIGH);
}

No comments:

Post a Comment