AntiHielo
Mi amigo Alberto, tiene unos frutales en el pueblo. Un día hablando con el me comento.
- El año pasado no me dieron nada los frutales, se me helaron las flores y no tuve cosecha. Por qué no me ayudas y hacemos un sistema como las grandes bodegas para que no se hiele la uva. Una especie de ventiladores que se ponen en marcha cuando baja la temperatura.
Pensé durante un rato y le comente.
- No te preocupes, este año vamos a montar un sistema antihielo para que no se te hielen los frutales. Como las grandes bodegas jajaja.
Nos pusimos manos a la obra, él busco unas mangueras eléctricas y unos ventiladores viejos, y yo me puse a diseñar un proyecto con arduino para controlar la temperatura y los ventiladores.
Al cabo de unos días, ya teníamos todo preparado, y este fue el resultado.
Materiales:
REUTILIZADO: (ordenados según imagen)
- Fuente de alimentación de pc (que no funciona).
- Cables de fuerza (reciclados de la fuente de PC).
- Cargador de móvil 7v / 12v. (Reciclado)
- Cable de potencia, para la fuente de alimentación.
- Tornillos con tuerca de 3mm.
NUEVO: (ordenados según imagen)
- Arduino NANO.
- Expansión para arduino NANO.
- Sensor de temperatura DHT22.
- Rele 220v 10A
- Potenciometro de 10K.
- Clemas eléctricos.
- Cables hembra / hembra para arduino.
- Pantalla Nokya5110.
- Clavija alimentación arduino.
- Enchufe de pared exterior.
- Bridas.
OTROS:
- Silicona caliente.
- Aislante para el fondo de la fuente.
- Mástil de madera de 25cm de largo y 1,5x1,5 de perfil.
HERRAMIENTAS :
- Pistola de silicona caliente
- Alicates de corte.
- Destornilladores.
- Dremel con disco de corte.
SOFTWARE :
Necesitamos un equipo con el IDE de arduino para poder compilar el programa y subirlo al arduino NANO.
Preparación De La Fuente De Alimentación.
(foto1) - Primero abrimos la fuente de alimentación, cortamos todos los cables y desmontamos la placa, y el ventilador. Dejando la fuente vacía.
Dejamos montada la entrada de corriente, para utilizarla de entrada de potencia de 220v.
(foto2) - Creamos la ventana para la pantalla Nokya-5110, mediante una pequeña dremel. Y para el potenciometro limamos entre los barrotes, para que entre el potenciometro.
La pantalla está pegada con silicona caliente y un poco de espuma aislante. Y el potencimetro con su tuerca y le ponemos un cabezal.
Cableado Entre Piezas
Tenemos dos circuitos bien diferenciados.
1.- El circuito de arduino (5v)
Aunque en la imagen se utiliza un arduino uno, este proyecto se ha realizado con un arduino nano, que las conexiones son iguales.
Conectaremos la pantalla nokya 5110 a los PINes digitales 6, 7, 8, 9 y 10, ademas de a 5v y GND.
Conectaremos el Relé al PIN digital 5, ademas a 5v y GND.
Conectar el sensor de temperatura DHT22 al PIN digital 4 ademas de a 5v y GND.
Conectar el potenciometro al PIN analógico A0 ademas de a 5v y GND.
2.- El circuito de alterna (220v)
Conectar la entrada de 220v de la fuente con una clema al alimentador de móvil. (La clema tiene que ser lo suficientemente grande como para que entren las papillas del cargador). Ahora a la salida del cargador acoplamos el JACK para alimentar arduino.
Por otro lado, conectamos también la entrada de 220v con la salida de 220v, pasando uno de los cables a través del RELE, para que pueda controlar el flujo de corriente, nuestro arduino.
Instalación De Los Componentes Dentro De La Caja
1.- Empezaremos colocando el enchufe de salida de 220v, atornillado a la regilla del ventilador, mediante los dos tornillos de 3mm, con su arandela y tuerca. Antes hemos instalado los cables negro/rojo, azul y amarillo (para la masa). La masa la atornillamos con uno de los tornillos que acabamos de poner y así la tendremos en contacto con la caja. El azul lo llevamos directamente, con una clema, a la entrada de 220v. Y el negro/rojo lo reservamos para pasarlo por el RELE. (imagen-1)
2.- Ponemos en el suelo un poco de aislante para impedir que los componentes toquen la parte metalica de la caja. Pegamos con silicona caliente este aislante. (imagen-1)
3.- Ahora, metemos los componentes de superficie, el arduino con su expansión, el RELE y el transformador. Todo pegado con silicona caliente al aislante. (imagen-2)
4.- Conectamos la entrada de 220v, con una clema, al transformador y unimos también la salida de 220v (azul) a la misma clema. La entrada de 220v (rojo/negro) la dividimos, mediante otra clema, para llevarla al transformador y a la entrada del RELE. Y desde la salida del RELE la llevamos a la salida de 220v.
5.- Ahora instalamos la pantalla en su hueco y también el potenciometro. La pantalla la sujetamos con silicona caliente y un poco de aislante y el potenciometro con su arandela y tuerca. (imagem-3,4,5) Imagen de la instalación de la pantalla y potenciometro. (imagen-6)
7.- Nos queda por instalar el sensor DHT22, que mediante unos cables un poco mas largos, que sacamos por uno de los huecos de la carcasa, lo llevamos a un pequeño mastil, para que este fuera de la caja y la lectura sea algo mas real. (imagen-7) Este mastil lo sujetamos a la caja, con un pequeño tornillo rosca chapa y una brida. y el sensor en la punta del mastín, con otra brida.
NOTA: La pantalla en cuanto se la deje a mi amigo alberto. Puso los dedos sobre ella para cojer la caja, y hundio la pantalla. Así que, para sujetarla un poco más. La puse por detras un pequeño listón, como ves en las imagenes 4 y 5.
Programación
Conecta tu cable USB a tu equipo y a arduino, que vamos a empezar a programar nuestro AntiHielo.
Iniciamos nuestro código incluyendo las librerias necesarias para el manejo de la pantalla nokya y el sensor DHT22.
#include <SPI.h> // comunicacion con la pantalla.<br>#include <Adafruit_GFX.h> // Manejo de la pantalla. #include <Adafruit_PCD8544.h> // Manejo de la pantalla. #include "DHT.h" // lectura sensor DHT.<br>
Ahora definimos nuestras constantes.
#define DHTPIN 4 // Pin donde está conectado el sensor.<br>#define RELE 5 // Pin para el rele. #define DHTTYPE DHT22 // Tipo de sensor = DHT22. int sensorPin = A0; // entrada analógica del Poteciometro.
Y nuestras variables.
int TempDefi = 0; // Valor para la temperatura definida. int TempMinima = 0; // Valor nuevo para la temperatura definida.
Necesitamos crear nuestro objeto sensor.
//Creamos el objeto DHT22<br>DHT dht(DHTPIN, DHTTYPE);
Y nuestro objeto pantalla.
// Creamos el objeto pantalla<br>Adafruit_PCD8544 display = Adafruit_PCD8544(10, 9, 8, 7, 6);
Continuamos con nuestra función setup. En la que iniciamos los distintos componentes, fijate en los comentarios para seguir el proceso.
void setup() { Serial.begin(9600); // Inicia la comunicación serie a 9600 baudios.<br> Serial.println("Iniciando..."); // Imprimimos "Iniciando..." por el puerto serie. dht.begin(); // Iniciamos el objeto dht. pinMode(RELE, OUTPUT); // Iniciamos el PIN del rele de salida. display.begin(); // Iniciamos la pantalla. display.setContrast(50); // Contraste. display.display(); // Presentación del display. delay(2000); // Espera 2 segundos. display.clearDisplay(); // Borra la pantalla. display.setTextColor(BLACK); // Ponemos el color del texto. display.clearDisplay(); // Borra la pantalla. }
Y comenzamos con la función loop. Todo lo que continua va dentro de dicha función.
Empezamos con una espera de 2 segundos y la lectura de los datos del sensor DHT22, humedad, temperatura en grados celsius y grados fahrenheit.
Aunque solo vamos a utilizar la temperatura en Celsius, los demas datos los mostraremos por el puerto serie mientras probamos nuestro "AntiHielo".
delay(2000);<br> // Leemos los datos del Sensor. float h = dht.readHumidity(); //Leemos la Humedad float t = dht.readTemperature(); //Leemos la temperatura en grados Celsius float f = dht.readTemperature(true); //Leemos la temperatura en grados Fahrenheit
Mostramos por el puerto serie todos los datos que hemos extraido del sensor. Nos mostrara un mensaje parecido a este, "Humedad 60.5 % Temperatura: 12.4 *C - 50.4 *F"
//--------Enviamos las lecturas por el puerto serie-------------<br> Serial.print("Humedad "); Serial.print(h); Serial.print(" % "); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" *C - "); Serial.print(f); Serial.println(" *F");
Y enviamos solo los datos necesarios a la pantalla Nokya5110. Fijate en los comentarios para seguir el programa.
//--------Enviamos los datos necesarios a la pantalla-------------<br> display.clearDisplay(); // Borramos la pantalla. display.setTextSize(2); // Ponemos el tamaño de la letra. display.setCursor(0,2);display.println(t); // Posicionamos el cursos y escribimos la temperatura. display.setTextSize(1); // Cambniamos el tamaño de la letra. display.setCursor(59,2);display.println("*C"); // Posicionamos y escribimos '*C'. display.display(); // Activamos lo escrito.
Ya nos queda poco, primero encender o apagar el RELE dependiendo de la temperatura que le hemos marcado.
//si la temperatura es menor que xx activa RELE.<br> if (t < TempDefi){ digitalWrite(RELE, HIGH); delay(1000); }else{ digitalWrite(RELE, LOW); delay(1000); }
y ahora marcarle el mínimo mediante el potenciometro. Solo le dejo ejegir entre 0º y 30º, pero puedes cambiarselo si lo necesitas en la función map.
//Lectura del Potenciometro.<br> TempMinima = map(analogRead(sensorPin),0,1023,0,30);
Si hemos cambiado la temperatura mínima. Es decir hemos movido el potenciometro, cambiamos la variable TempDefi, que lleva nuestra temperatura mínima definida. Y enviamos al puerto serie el nuevo dato.
if (TempDefi != TempMinima){<br> TempDefi = TempMinima; //--------Enviamos la temperatura mínima al puerto serie------------- Serial.print("--Temperatura Minima: "); Serial.print(TempDefi); Serial.println(" *C"); }
Por último, mandamos a la pantalla Nokya5110, los datos de la temperatura mínima que hemos definido.
//--------Enviamos la temperatura mínima a la pantalla-------------<br> display.setTextSize(1); display.setCursor(2,35); display.println("Min:"); display.setTextSize(2); display.setCursor(32,30);display.println(TempDefi); display.setTextSize(1); display.setCursor(55,30);display.println("*C"); display.display();
Downloads
Instalación Final
Una vez finalizado el proyecto solo nos queda probarlo en su sitio real.
Nos trasladamos a la finca de mi amigo Alberto y buscamos un lugar bajo techo para la instalación. Debajo de un porche que tiene cerca de los frutales. Este es un buen sitio.
En una de las columnas de madera le hacemos una plataforma, sobre la que ponemos nuestro AntiHielo y lo sujetamos con unas bridas.
Cerca tenemos una toma de corriente de 220v a la que enchufamos nuestro AntiHielo, y por el lado de la salida de 220v. Hemos preparado una manguera eléctrica con buena protección por si nos llueve, que llevamos hasta el centro de los frutales. En esta posición y debajo de una mesa de plastico instalamos los ventiladores que a preparado Alberto. Ademas los hemos anclado al suelo con unas piquetas, por si el viento las intenta tirar.
Ya solo nos queda realizar la primera prueba.
La primera prueba es facil. Una vez enchufado todo, ponemos la temperatura mínima a 30º y el RELE se tiene que encender. Efectivamente vemos que se enciende, y los ventiladores se ponen a girar.
Ahora, colocamos el minimo en 4º centigrados y lo dejamos toda la noche para ver si se enciende el sistema. Pero, no hemos previsto nada para saber si se enciende, así que buscamos un programador analógico que teniamos por casa y lo intercalamos entre el antihielo y la manguera eléctrica de los ventiladores. Le dejamos en posición de encendido y así veremos, que ha corrido el tiempo, si se enciende.
A la mañana siguiente comprobamos con alegría que el programador a corrido más de media hora. ¡Se ha encendido! ya podemos estar tranquilos por nuestras frutas. A sido todo un exito.
Para la versión 2.0 ya me ha comentado Alberto que tenemos que mejorar el tema de los ventiladores y la pantalla que dice, que él ve mal.