viernes, 25 de marzo de 2016

Refrigerador con Arduino UNO y dos sondas DS18B20


Llevo tiempo apartado de este blog porque la obligación está por encima de la devoción. De todos modos, espero compensar ese retraso con la entrega de esta nueva entrada, fruto de la colaboración entre un buen amigo y especialista de frío industrial y yo.
Con un shield de Arduino, el LCD Keypad Shield, un módulo de relés y dos sondas digitales de temperatura DS18B20, controlamos el funcionamiento de un refrigerador, cuyo software nos permitirá controlar su punto de trabajo y producir el desescarche automático del evaporador. Modificando simplemente unos parámetros podremos adaptar el software para trabajar como congelador o refrigerador, ajustando la temperatura desde -20 ºC hasta 15 ºC. El método para deshacernos de la escarcha que se forma en el serpentín del evaporador en un circuito de enfriamiento se denomina desescarche, y el que utilizaremos es el de calentamiento con una resistencia eléctrica. Una sonda detectara la presencia de una capa de hielo en el serpentín del evaporador, que actúa como aislante dificultando el paso del aire a través de los tubos, reduciendo así el coeficiente de transferencia de calor; en ese momento se parará el compresor y entrará en funcionamiento una resistencia eléctrica que calentará el evaporador hasta que la capa de hielo desaparezca, retomando luego el sistema el funcionamiento normal del refrigerador.
En la siguiente imagen os muestro el evaporador que usamos en nuestro frigorífico experimental:


En la siguiente imagen se muestra la primera prueba en el taller del frigorífico experimental controlado por Arduino. Todo un éxito.


Esquemáticamente, el circuito es como sigue:



En el siguiente vídeo podéis ver como trabaja el software sobre Arduino  UNO y el LCD Keypad Shield (Música de Jon Maurer: Burning Bright. Gracias Jon por compartir. Jon thanks for sharing)




En el vídeo observamos que inicialmente el sistema activa el desescarche, luego de calentar el evaporador vuelve al funcionamiento normal. Aquí trabaja con parámetros de prueba con temperatura de ambiente, así pude evaluar que funcionaba correctamente el software final sin tener que recurrir al taller y conectarlo al sistema de frío creado por mi amigo Jero. Intentaré describir los elementos importantes del software, pero ya con parámetros razonables para trabajar con un sistema de frío doméstico.

Comentaré de pasada el programa que esbocé para controlar el sistema. Sé que es un poco complicado para neófitos, pero no tengo mucho tiempo para los detalles, y si se quiere aprender tendrán que currárselo analizando "a pelo" el código que les doy.
En la imagen siguiente muestro el código con el que creé el carácter º(Grado) para visualizarlo en el display, ya que directamente no se puede con el juego de caracteres que posee; cada vez que arranca el sistema lo guarda en un lugar de la memoria del display, y luego lo llamamos para que se imprima en el mismo.



La botonera del LCD Keypad Shield está conectada a la entrada analógica de Arduino A0 a través de un divisor resistivo, y según el umbral de tensión que aplicamos a la entrada analógica al pulsar una tecla, el programa selecciona la acción con la estructura de control Switch Case según el valor que guarda en la variable "tecla" de la entrada A0, asignado un número a la variable "caso", activando así una acción para cada tecla. ¿Fácil no?


En el apartado "default:" de la estructura de control Switch Case se encierra el meollo principal. Ahí se envía al display la información oportuna de la temperatura, se activa y desactiva el compresor, se llama al subprograma de desescarche, se imprime el asterisco en el display durante el ciclo de histéresis  de enfriamiento. Les recuerdo que el módulo de relés HL-54S actúa con lógica inversa, es decir, se activa a nivel bajo y se desactiva a nivel alto en sus entradas.

El subprograma de control de temperatura y el de desescarche creo que están claros con los comentarios contenidos. Para cualquier aclaración agradecería lo hicieran a través de un comentario en este blog.

El código del programa para Arduino UNO (.ino) lo podéis bajar desde aquí.

La librería Dallas de control de temperatura la podéis bajar en zip desde aquí.

La última versión del protocolo de un hilo de Dallas Semiconductor (Dallas Semiconductor's 1-Wire Protocol) la podéis bajar desde aquí.

En el siguiente vídeo podemos ver las primeras pruebas en el taller.

6 comentarios:

  1. Eduardo Arbetman Argentina22 de enero de 2018, 14:54

    No logro ver cómo arranca el desescarchador. En algunos equipos es por tiempo ( 6 u 8 horas ). Yo quiere experimentar con un sensor optico reflectivo activado por la escarcha. Me agustaria tu comentario (y sugerencia tambien )

    ResponderEliminar
    Respuestas
    1. Hola Eduardo. Antes de nada, agradecerte el interés mostrado por el contenido de este blog. En fin, casi dos años pasaron ya de esta experiencia, y tuve que echar mano de algo más que la memoria para poder contestarte. El desescarche trata de evitar que se acumule hielo grueso en los tubos y aletas del evaporador. Los cristales de escarcha no son preocupantes, porque actúan como una extensión de la superficie mejorando el intercambio de calor, pero el problema surge cuando hay un montón de hielo que no favorece el funcionamiento del sistema. En mi caso, arranca el desescarche cuando en las aletas hay -5ºC (hielo), activando una pequeña resistencia para derretir el hielo, y cuando llega a 5ºC la temperatura de las aletas y tubos del evaporador, toma el control de nuevo el sistema, trabajando como normalmente lo haría un refrigerador. Un sistema automático de desescarche muy simple es un temporizador, de tal modo que se para el sistema periódicamente durante un momento para evitar que se produzca el hielo, y luego se vuelve a activar. El sensor óptico puede funcionar activando un temporizador que tenga asignado un tiempo suficiente para derretir el hielo, y luego activar de nuevo el sistema, pienso yo. De todos modos, en Internet puedes encontrar un montón de ideas interesantes sobre esto, que pueden iluminarte para realizar un sistema automático para controlar el desescarche. Muchas gracias. Un saludo

      Eliminar
  2. Hola Nacho! creo que algo mal está en el esquema, puede ser? no sale de la primer pantalla a menos que toque las teclas de reset y select a la vez. Creo que los sensores están mal conectados. Gracias!

    ResponderEliminar
    Respuestas
    1. Hola Corelc. Gracias por interesarte por este blog. No, lo que te está pasando es que debido a la importante tolerancia de los resistores empleados en el divisor del teclado, los valores obtenidos en la entrada A0 pueden variar. Mira el siguiente artículo de este blog para verificarlo, por eso tienes que pulsar varias teclas para lograr el valor correspondiente.
      https://cotidianaplace.blogspot.com.es/2016/01/verificando-los-valores-del-teclado-del.html
      Un saludo

      Eliminar
  3. hola, a mi refrigerador se le quemo la tarjeta por un rayo hace un año. y un amigo me sujirio ponle un arduino y eso hice. pero no he podido controlar el sistema de deshielo. como puedes notar no soy mu ducho pero si emprendedor. puse el refrigerador a trabajar en nevera 4 a 7 cc y en congelador -1 a 3 para evitar la acumulacion de hielo. mi pregunta puedo usar tu programa de control en el arduino leonardo. gracias de ante mano mi correo jemrpmila@gmail.com

    ResponderEliminar
    Respuestas
    1. Hola Juan. Creo que es posible, pero deberías verificar que las entradas y salidas tengan una adecuada correspondencia con el programa indicado para el Arduino UNO. En fin, quizás solo probando sabrás si te sirve tal como está. De todos modos, puedes adaptarlo o crear uno nuevo basándote en él. Muchas gracias por interesarte por este blog. Un saludo

      Eliminar