Control de temperatura de heladera doméstica

Buenas tardes!

Quiero hacer un control de temperatura de una heladera domestica con un arduino uno. La idea es tocar lo menos posible el propio sistema de la heladera y buscando encontré un proyecto bastante sencillo (tengo conocimientos, aunque básicos de electrónica y programación) que modifiqué un poco. Pero antes de llevarlo a la práctica me gustaría cerciorarme de que funcione correctamente y no provoque daños al electrodoméstico.

Bien, el proyecto usaría lo siguiente:

-Placa Arduino UNO
-Sensor de temperatura LM35
-Relés con sistema de control a 5v y salida para 220v

Con el siguente código:

//Control de temperatura

const int tmax=20; //Declarar constante de temperatura máxima
const int tmin=15; //Declarar constante de temperatura mínima
const int hel=2; //Declarar pin heladera
int AN4=A4; //Declara entrada analogica en pin 4

void setup()
{
pinMode(hel, OUTPUT);
pinMode(AN4, INPUT);
}
void loop()
{
AN4=analogRead(A4); //Conexion analogica del LM35
AN4=(AN4*500.0)/1024.0; //Calcula la temperatura en ºC
Serial.println(AN4);
if(AN4>tmax) //Si la temperatura es mayor a 20ºC 
{
digitalWrite(hel, HIGH); //Activa el rele de la heladera
}
else
if(AN4<tmin) //Si la temperatura es menor a 15ºC
{
digitalWrite(hel, LOW); //Desactiva el rele de la heladera
}
delay(180000); //Retardo entre medicion y medicion de 3min
}

El objetivo con esto es modificar los límites de temperatura de la heladera con lo que su valor se mantendrá entre los valores fijados como tmax y tmin.

Lo ideal para hacer esto es utilizar un control de temperatura digital, pero si puedo hacerlo de esta manera me puedo evitar un gasto grande.

Tuve en cuenta varios puntos para asegurarme que funcione correctamente:

  • La tmin que programe debería ser mayor a la temperatura mínima de la heladera misma (alrededor de 10°C), de lo contrario el propio sistema de la heladera cortaría su funcionamiento. Es decir, sería el limite inferior
  • Si la temperatura ambiente es menor que tmin no se podría cumplir el rango programado ya que el interior de la heladera tendería hacia ese valor y el control de arduino cortaría la corriente
  • La placa arduino iria conectada a una fuente de 5V como puede ser un cargador de celular para darle autonomía
  • En caso de corte de luz, el sistema volvería a tomar una medición con el sensor y actuaría en funcion de su valor (activando o desactivando el paso de la corriente)

Gracias por leer de antemano y agradeceré sus opiniones o sugerencias!
Saludos!

conexiones-electricas.jpg

lm35-arduino.jpg

Hi, No se que presicion necesitas controlar la temperatura pero yo le quitaria el delay y le aumento un grado hacia arriba uno hacia abajo. Al bajar /subir un grado mas/menos te va dar un delay en lo que baje/sube. En tres minutos pueden pasar muchas cosas. Asi puedes leer la temperatura constantemente y no te va a prender el compressor constantemente. Este forma que te sugiero se usa en los aire acondicionados. Algunos tienen seting de hasta 3 grados para arriba/abajo.

tauro0221: Hi, No se que presicion necesitas controlar la temperatura pero yo le quitaria el delay y le aumento un grado hacia arriba uno hacia abajo. Al bajar /subir un grado mas/menos te va dar un delay en lo que baje/sube. En tres minutos pueden pasar muchas cosas. Asi puedes leer la temperatura constantemente y no te va a prender el compressor constantemente. Este forma que te sugiero se usa en los aire acondicionados. Algunos tienen seting de hasta 3 grados para arriba/abajo.

La presicion no es una exigencia, puede ser +/- 1°C. Y comparto la idea de evitar prender el compresor reiteradas veces. Es por eso que puse el delay, asi cuando la temperatura este cerca del límite de encendido, absorba posibles errores de medición que pueden darse al tomar entre dos instantes muy cortos de tiempo. Por eso no comprendo la idea de bajar/subir un grado mas a los límites y sin delay, quiza ni entendí bien la idea

Hi, Te lo voy a tratar de explicar con el ejemplo del air acondicionado. Normalmente si tienes el setting a 75 grados en el programa de control lo va a apagar cuando llega a 74 grados y cuando llega a los 76 lo va a prender. Esto es lo que se llama "dead band". Se hace para evitar que el aire acondicionado este prendiendo cada vez que sube/baja de 75 grados. Esto te va a dar un delay dinamico en vez de los 3 minutos fijos. Porque lo vaz a prendes cuando la temeperatura llegue a los 76 y lo vaz a apagar cuando la temperature baje a 74 grados. Estas usando el systema del tiempo que toma la temperatura subir a 76 grados y bajar a los 74 grados como un delay dynamico y no 3 minutos fijo. Espero que ahora lo entindas mejor.

tauro0221: Hi, Te lo voy a tratar de explicar con el ejemplo del air acondicionado. Normalmente si tienes el setting a 75 grados en el programa de control lo va a apagar cuando llega a 74 grados y cuando llega a los 76 lo va a prender. Esto es lo que se llama "dead band". Se hace para evitar que el aire acondicionado este prendiendo cada vez que sube/baja de 75 grados. Esto te va a dar un delay dinamico en vez de los 3 minutos fijos. Porque lo vaz a prendes cuando la temeperatura llegue a los 76 y lo vaz a apagar cuando la temperature baje a 74 grados. Estas usando el systema del tiempo que toma la temperatura subir a 76 grados y bajar a los 74 grados como un delay dynamico y no 3 minutos fijo. Espero que ahora lo entindas mejor.

Claro un delay con temperaturas en vez de tiempo.

Hi, Eso es correcto. Recuerda que mientras estes en el delay tu programa deja de funcional hasta que termina. En la forma que te sugiero puedes leer la temperatura constantemente.