Introduction: Temperature Sensor for Shower
With this device you diminish the use of water in your house or work. Instead of waiting to see vapor in the shower to get in, this device help you to know when the water its at the temperature you want and you can instantly enter to the shower. In this way you don't waste the water by not knowing when its ready.
This device shows the temperature of the water with a led bar (made from 10 leds). The leds get on when the temperature of the water rise. Because we know that every person likes different temperature while taking a shower we add a knob so you can regulate the led bar to show the amount of light up leds at the temperature you wish. So in this way you can adjust the device to your needs.
If you like this please visit my blog: http://bioespin.com/
Step 1: Material
1 Arduino UNO
7 red leds
3 green leds
10 220ohms resistance
1 9 volts battery
1 copper plaque
1 temperature sensor tmp36 o lm35
1 10kohms potenciometer
Step 2: Circuit
The temperature sensor and the potenciometer are connected equally. Voltage, ground, and the center pin goes to arduino analog in.
If you want the pcb files to download please go to my web page. You can find in there the pcb file in a pdf ready to print and transfer and also you can find the fritzing files if you want them. The link is:
http://www.bioespin.com/temperature-sensor-for-shower.html
Step 3: The Code
/***********************************************************************************/
//Declare the potencimeter and the temperature sensor pins
const int potenciometro= A1;
const int Temperatura= 0;
//declare each led pin
const int led1= 9;
const int led2= 8;
const int led3= 7;
const int led4= 6;
const int led5= 5;
const int led6= 4;
const int led7= 3;
const int led8= 2;
const int led9= 1;
const int led10= 0;
//Declare the variables for the temp regulation
int pot_regulador= 0;
int ajuste_de_temp= 0;
//declare leds as outputs
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
}
//main program
void loop() {
//read voltage from the temp sensor and transform to celsius
int reading = analogRead(Temperatura);
float voltage = reading * 5.0;
voltage /= 1024.0;
float TemperaturaC = (voltage - 0.5) * 100 ;
//This part if for regulating the temperature
//in this program we divide the value of the potenciometer by 30 to have 30 degrees of regulation
//if you divide by 100 you have 10 degrees of regulation
// and divided by 50 you get 20 degrees of regulation
//the values are only aproximate they are not exact
pot_regulador=analogRead(potenciometro);
ajuste_de_temp=pot_regulador/30;
delay(50);
//the temperature is read and the leds light up for the temperature that is measuring
if(TemperaturaC<(10-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(20-ajuste_de_temp) && TemperaturaC>(10-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(30-ajuste_de_temp) && TemperaturaC>(20-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(40-ajuste_de_temp) && TemperaturaC>(30-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(50-ajuste_de_temp) && TemperaturaC>(40-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(60-ajuste_de_temp) && TemperaturaC>(50-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(70-ajuste_de_temp) && TemperaturaC>(60-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(80-ajuste_de_temp) && TemperaturaC>(70-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(90-ajuste_de_temp) && TemperaturaC>(80-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(100-ajuste_de_temp) && TemperaturaC>(90-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
}
}
/****************************************************************************************/
Step 4: Set Up!
The sensor has to be glue with cold glue, because if you use hot glue it can melt down by the temperature of the water and make a short cut.
Also we have to make the circuit case water proof. here you can use the hot glue.