Sensor de Temperatura para la Regadera

Con este sensor se disminuye el consumo de agua en el hogar. En vez de esperar a que la regadera saque humo para meternos a bañar el sensor nos muestra cuando el agua ya esta a la temperatura que queremos y así no desperdiciamos toda el agua al no saber cuando ya se calentó.

 

 

 

Este dispositivo muestra la temperatura a la que se encuentra el agua mediante leds. Los leds van encendiendo cuando la temperatura del agua va subiendo. Para que el aparato se ajuste a cada persona se agrego una perilla (potenciometro) con el cual se puede modificar la sensibilidad de los leds a la temperatura. Así al tener la temperatura deseada se puede ajustar a que los leds prendan solo hasta que esa temperatura se alcance.

<div style=»position:relative;height:0;padding-bottom:82.5%»><iframe src=»https://www.youtube.com/embed/bA7NOoTL4Aw?ecver=2″ style=»position:absolute;width:100%;height:100%;left:0″ width=»436″ height=»360″ frameborder=»0″ allow=»autoplay; encrypted-media» allowfullscreen></iframe></div>

Conoce nuestra nueva pagina de tutoriales de electrónica en español!

Tekespin.com

Materiales:

  • 1 Arduino UNO
  • 7 leds rojos
  • 3 leds verdes
  • 10 resistencias de 220ohms
  • 1 batería de 9 volts
  • 1 baquelita de cobre
  • 1 sensor de temperatura tmp36 o lm35
  • 1 potenciometro

Este es el dispositivo. Esta hecho con fritzing como un shield (o capa) de arduino. Así se puede integrar mas fácilmente al arduino. Las conexiones son simples, cada led se conecta a un pin de arduino y la otra pata se conecta a una resistencia y ésta a tierra.
El sensor de temperatura y el potenciometro se conectan de la misma manera. El voltaje, la tierra y la pata de en medio va a un pin analógico de arduino.

El codigo

//declaramos los pines en lo que van a ir el potenciometro y el sensor de temperatura
const int potenciometro= A1;
const int Temperatura= 0;

//declaramos los pines de cada led
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;

//declaramos las variables donde se guardaran los valores del pot y de la temperatura
int pot_regulador= 0;
int ajuste_de_temp= 0;

//señalamos que los pines led son salidas
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);

}

//ese es el programa principal

void loop() {

//se lee la temperatura y se convierte a grados centigrados
int reading = analogRead(Temperatura);
float voltage = reading * 5.0;
voltage /= 1024.0;
float TemperaturaC = (voltage – 0.5) * 100 ;

//esta parte se agregó para poder tener un control sobre la temperatura
//En este programa tenemos el valor del potenciometro entre 30 para tener 30 grados de regulacion
//si se divide entre 100 se tienen 10 grados de regulacion
// y entre 50 se tienen 20 grados de regulacion

pot_regulador=analogRead(potenciometro);
ajuste_de_temp=pot_regulador/30;
delay(50);

//Se lee la temperatura y se prender los leds correspondientes

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)){
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);
}
}

/*Existen otras formas de hacer este programa, pero se hizo de esta manera para que fuera mas fácil
para todos leerlo y modificarlo a su gusto. Si tienen algun comentario o pregunta no duden en enviarla al correo o por la sección de contacto*/

Archivos

Aquí están los archivo del pcb listos para imprimir. Solo hay que descargar el pdf e imprimirlos para pasarlos directos a la tablilla

Descarga los archivos del proyecto aqui:

medidor_de_temperatra_para_regadera

Instalación

Para instalar el sensor en la regadera hay que asegurarnos de que todas las piezas estén aisladas del agua. El sensor tmp36 o lm35 son muy buenos para medir la temperatura pero no son a prueba de agua. Lo que hay que hacer es ponerle un pequeño extensor de cobre a la regadera y adherir por fuera el sensor de temperatura, así la medición sera mas exacta.

El sensor debe pegarse con silicon frio (para evitar que se despegue después por el calor de la regadera si usamos silicon caliente), y asegurarse de aislar las patitas del sensor con silicon también.

También hay que asegurarnos de que la caja de los circuitos este bien sellada.

Esperamos que hayan disfrutado este proyecto.

Recuerden:

  • Aislar bien todos los componentes del contacto con el agua
  • Ahorrar agua en todo momento que les sea posible

Conoce nuestra nueva pagina de tutoriales de electrónica en español!

Tekespin.com

Si te gustó este proyecto compártelo!