Incubator 3000
Resumen
En este proyecto se va a construir y programar una incubadora desde cero, para ello se utilizarán múltiples sensores y dispositivos conectados a través del Arduino.
La monitorización de estos dispositivos se van a realizar mediante sensores de temperatura y humedad. Los actuadores se componen de un ventilador, una plancha de pelo para producir calor junto dos bombillas, una electroválvula, la cual se encargará de abrir o cerrar el flujo de agua almacenada en el exterior de la incubadora para controlar la humedad, y un motor de un microondas, el cual se sitúa sobre un mecanismo que se va a explicar posteriormente produciendo el movimiento de los huevos.
Todos estos actuadores se encontrarán controlados por un Arduino UNO y un bloque de 4 Relays una vez se hayan establecido los correspondientes parámetros de temperatura y humedad.
Introducción
El proyecto se ha pensado para incubar huevos de ave, aunque modificando los correspondientes parámetros se pueden incubar todo tipo de huevos.
El motivo de realizar este proyecto ha sido debido al interés personal de uno de los componentes del grupo por las aves, ya que durante gran parte de su vida ha estado en contacto con muchas especies de aves y se ha visto interesado en poder ver su nacimiento y evolución.
A esto se le suma el alto precio de las incubadoras comerciales, las cuales oscilan costes que no se pueden permitir.
Los parámetros para que los huevos puedan desarrollarse y eclosionar varían según el tipo de ave. En este caso los huevos con los que se va a realizar la prueba son de gallina. Estos necesitan una temperatura constante entre 37,7oC y 38oC y una humedad entre el 50-65%.
El objetivo es diseñar y construir una incubadora que cumpla con estas necesidades a un precio reducido.
Necesidades del proyecto
Para cumplir los objetivos establecidos, se deben tener en cuenta las siguientes características:
- Espacio suficiente para la incubación de por lo menos 12 huevos.
- El control automático de temperatura.
- La rotación de los huevos, la cual simula el movimiento de la gallina madre (cada 4 horas).
- La humedad será controlada con una electroválvula la cual se activará durante un minuto y medio cada 3 horas.
- La incubadora presenta en el diseño una ventana para poder ver el interior de esta.
- La temperatura y humedad medida por el sensor y el día de incubación serán visualizados en todo momento gracias a una pantalla LCD instalada en la propia incubadora.
Necesidades de los huevos
Para que los huevos de gallina eclosionen, estos deben pasar un periodo de incubación de 21 días.La temperatura ideal para lograr el nacimiento de los pollos es entre 37,7oC y 38oC constantes y un valor de humedad entre el 55-65%, excepto el día 21 el cual este valor subirá hasta los 70-75% para facilitar la rotura de la cáscara.Además, se instalará un ventilador debido a la alta importancia de asegurar la calidad del aire que se genera en el interior de la incubadora aparte de distribuir el calor generado por la plancha de pelo y las bombillas.Por último se tiene que cumplir el movimiento del huevo. Este movimiento se llevará a cabo varias veces al día para evitar que el embrión quede pegado a la pared del huevo.El movimiento de los huevos debe parar a partir del día 19. Desde ese día los huevos se mantendrán estáticos hasta el nacimiento de los pollos con el fin de que se coloquen en una posición cómoda para el momento de su eclosión.
Diseño de la incubadora
Para llevar a cabo el diseño, se van a diferenciar tres etapas, las cuales son las tres patas fundamentales del proyecto:
- Caja incubadora
- Hardware
- Software
Estructura de la incubadora
Se va a detallar la construcción de la caja tanto el interior como el exterior. Elegir los materiales de construcción adecuados es fundamental para para asegurar los parámetros en su interior minimizando el consumo de energía. Esto se consigue aislando el calor y la humedad del interior. Cuanto más estanca sea la incubadora, menos uso habrá que hacer del sistema de calor.
Materiales utilizados
Los materiales que se van a utilizar para la construcción son principalmente madera y una ventana.
Cabe destacar que el material utilizado en la ventana es Climalit. Se trata de un proceso de construcción el cual consta de dos cristales separados por una cámara de aire la cual permite un aislamiento del interior de la incubadora óptimo.
Diseño
Referente al diseño, se ha buscado un diseño simple. Se ha realizado una caja de madera lo suficientemente grande como para abarcar todos los actuadores, la bandeja de depósito de huevos con su sistema de movimiento y el recipiente en el que se va a acumular el agua para mantener los parámetros de humedad.
En el caso de la puerta, se va a colocar dos bisagras laterales y un cierre especial para cajas, el cual ejerce presión suficiente para aislar el interior de la incubadora con el exterior..
Se ha realizado en el centro un agujero y se colocará la ventana rodeada de un marco.
Cabe destacar que como medida extra de protección se han puesto entre el borde de la incubadora y la puerta una tira de fieltro.
Como elemento decorativo, en el borde de la ventana se ha colocado un marco de madera.(Figura 2)
Para finalizar, se ha pintado de un color blanco algodón.
Bandeja de volteo
Para realizar la bandeja de volteo se ha ideado un sistema sofisticado para poder realizar de forma eficiente y eficaz el movimiento de los huevos.
Los materiales utilizados son una plancha de metal perforada, madera, bisagras, dos deslizadores de cajones y palos de pincho moruno para la separación de los huevos.(Figura 3)
Como se observa en la figura 3, se han realizado dos cajas una externa la cual sirve para sostener todo el sistema y una interna que es la que va a contener los huevos.
El mecanismo en funcionamiento es el siguiente: en la caja externa se han instalado a cada lado dos deslizadores los cuales se unen con escuadras a la caja interna. Esto permite el movimiento horizontal de los huevos.
Para la automatización se instala un motor de un microondas con una chapa en la caja externa.
El motor por un sistema de chapas se conecta a la caja interna.
Esto junto el sistema de deslizadores permite transformar el movimiento circular que tiene el motor en un movimiento lineal.
Hardware
En este apartado se va a hablar con detalle de los sistemas necesarios para la construcción de la incubadora. Esto abarca los sensores y actuadores utilizados.
Placa controladora
La placa que se va a utilizar corresponde a la de un Arduino UNO. Nos permite mediante pines digitales, la configuración de la pantalla LCD y el manejo de los actuadores y sensores.
Sensor de humedad y temperatura
La monitorización de la temperatura y la humedad se consigue mediante un sensor DHT11 (Figura 4).
Con este sensor podemos hacer la medición simultánea de ambos valores. Al guardar en memoria la información, como veremos en el código, se tiene que bajar medio grado debido a que tiene un ligero margen de medición.
Este módulo trabaja con una alimentación de 3,3V a 5V y es capaz de medir dentro de los rangos necesarios para la incubadora.
Motor microondas
Para la rotación como se ha explicado en el apartado de diseño, se ha utilizado un motor de microondas reutilizado (Figura 5).
Este motor funciona con corriente alterna, por lo que será controlado mediante un relay.
Como es sabido, el sistema está pensado para realizar un movimiento de vaivén. Para ello se transforma el movimiento circular del motor a uno rectilíneo.
De forma visual se ha calculado el tiempo necesario para que se realice un movimiento impar, es decir que cada vez que el actúe el sistema, termine en una posición distinta a la que tenía anteriormente y verificar que todo funciona correctamente en el proceso de incubación.
Sistema de temperatura
Para generar calor en el interior de la incubadora se ha utilizado dos elementos distintos.
Estos constan de dos bombillas y unas resistencias de una plancha de pelo reutilizada (Figura 6).
Al funcionar con corriente alterna, se van a poder actuar sobre ellas con un relay.
Sistema de humedad
Para el control de la humedad del sistema, se ha instalado un depósito en el exterior de la incubadora. En un primer momento se instaló una botella de leche (Figura 7). Este elemento fue cambiado finalmente por un bote de altramuces, debido a que era más compacto (Figura 8).
El circuito va hasta el interior de la incubadora. Es este se ha instalado una electroválvula que actúa como un grifo, es decir, deja pasar o corta el paso del agua según le llegue corriente.
Para alimentar la electroválvula se necesitan 12 voltios en continua. Esto se consigue instalando otro transformador de alterna a continua y se maneja con el uso de un relay.
En el terminal del sistema se instala un elemento para que en el caso de que el deposito interior de la incubadora se llene, no pueda rebosar (elemento de seguridad).
El mecanismo interior se puede observar en la figura 9.
Ventilación
Para asegurar el correcto flujo de aire, se ha instalado en el techo de la incubadora un ventilador obtenido de una cámara de frío. Encima de este ventilador, se ha hecho un agujero para que entre aire nuevo.
El ventilador funciona con corriente alterna a 220V. Es controlado mediante un relay, ya que solo se activará cuando el relay del calor esté activado. Esto aparte de hacer que renueve el aire de la incubadora, distribuye el calor generado y hace que la temperatura sea homogénea en toda la caja.
Estos son todos los componentes que se van a situar dentro de la caja para garantizar la correcta incubación. En la figura 10 y 11 se encuentra el interior de la incubadora montada.
Relay electromecánico
En cuanto al Hardware situado en el exterior de la incubadora (en la parte superior), destaca el relay electromecánico. Se ha adquirido un banco con 4 relays que permite el control de los elementos anteriormente mencionados.
Este componente (Figura 12) tiene la capacidad de dejar pasar corriente cuando se da la señal a través del Arduino. Es capaz de funcionar como interruptor tanto con corriente alterna (ventilador, calor, movimiento), como en continua (válvula de agua).
Este componente es alimentado por el Arduino a 5 Voltios.
Pantalla LCD
Para recopilar toda la información procedente del sensor (temperatura y humedad) se ha instalado una pantalla LCD para mostrarlos de una forma gráfica.
Se ha aprovechado la caja realizada que tapa toda la parte electrónica para instalarla (Figura 13). Adicionalmente, también muestra el día que lleva de incubación.
Esquema del circuito
En la figura 14 se observa el circuito implementado que se ha realizado para el correcto funcionamiento de la incubadora. En este se puede ver cómo están conectados todos los periféricos al Arduino partiendo de una corriente alterna.
Para la implementación real, se han tenido que utilizar los empalmes por sistema de clemas.
En la figura 15 se puede ver el circuito real que permite el funcionamiento completo del sistema.
Software
En este apartado se va a explicar el programa implementado y cargado en el Arduino con el objetivo de controlar la incubadora de forma automática, desde la lectura del sensor encargado de medir la humedad y la temperatura hasta la activación de los diferentes actuadores pasando por la visualización de los datos por la pantalla LCD.
El entorno de desarrollo utilizado es el del propio Arduino.
Código final
//Se incluyen las librerias #include <TimeAlarms.h> #include <Time.h> #include <TimeLib.h> #include <DHT.h> #include <LiquidCrystal.h> //Se definen los pines necesarios del programa //Sensor de humedad #define sensor 13 //Señales de activacion de relays #define ventilador 10 #define calor 11 #define agua 12 #define movimiento 8 //Señales de la pantalla #define V0 9 #define RS 7 #define E 6 #define D4 5 #define D5 4 #define D6 3 #define D7 2 //Variables que lee el sensor de temperatura y humedad float temperatura; float humedad; //Se declara las variables correspondientes al sensor DHT dht (sensor, DHT11); LiquidCrystal lcd (RS, E, D4, D5, D6, D7); //Variable tiempo para hacer funcionar los recordatorios time_t t = now(); //Contador de dia necesario para la programacion del movimiento int contadorDia = 11; void setup() { //Se declara la fecha y hora de inicio de la incubadora setTime(20, 40, 0, 11, 12, 2020); //Inicializacion de sensor de temperatura y de la pantalla dht.begin(); lcd.begin(16, 2); //Se inicializan los pines como entrada o salida pinMode(V0, OUTPUT); pinMode(sensor, INPUT); pinMode(ventilador, OUTPUT); pinMode(calor, OUTPUT); pinMode(agua, OUTPUT); pinMode(movimiento, OUTPUT); //Se inicializa los relays apagados digitalWrite (agua, HIGH); digitalWrite (ventilador, HIGH); digitalWrite (calor, HIGH); digitalWrite (movimiento, HIGH); //Se pone el valor del contraste del LCD analogWrite(V0, 50); //Se programan las alarmas para hacer funcionar el giro, valvula de agua y el incremento de los dias Alarm.timerRepeat(14400, giro); //Se activa cada 4 horas Alarm.timerRepeat(10800, valvulaAgua); //Se activa cada 3 horas Alarm.timerRepeat(86400, nuevoDia); //Se incrementa el dia cada 24 horas //Mensaje de inicio del LCD lcd.setCursor(0, 0); lcd.print("Bienvenido"); lcd.setCursor(0, 1); lcd.print("Version: 1.2"); //Primer giro de la incubadora giro(); delay(500); } void loop() { //Se incrementa la duracion del loop para incrementar el valor de la alarma para que salte esta Alarm.delay(7000); //Se leen valores de humedad y temperatura humedad = dht.readHumidity(); temperatura = dht.readTemperature() - 0.5; delay(1000); //Imprimen por pantalla los valores de la pantalla imprimirDatos(); delay(1000); //Realiza la comprobacion de temperatura y salta el relay del calor al bajar de 37,7 grados y se apaga //al llegar a los 38 grados if (temperatura < 37.7 ) { calorON(); } else if (temperatura > 38) { calorOFF(); } delay(4000); //Se imprime por pantalla el dia que llevan los huevos incubandose imprimirDia(); delay(1000); } //Funcion para imprimir la temperatura y la humedad por LCD void imprimirDatos() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(temperatura); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Humedad: "); lcd.print(humedad); lcd.print("%"); } //Funcion para imprimir el dia que llevan los huevos incubandose void imprimirDia() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dia: "); lcd.print(contadorDia); } //Funcion para hacer girar los huevos void giro() { if (contadorDia < 19) { calorOFF(); digitalWrite(movimiento, LOW); delay(18000); digitalWrite(movimiento, HIGH); } else { digitalWrite(movimiento, HIGH); } } //Funcion que abre la valvula del agua para mantener la humedad void valvulaAgua() { calorOFF(); digitalWrite(agua, LOW); delay(90000); digitalWrite(agua, HIGH); } //Funcion que activa el calor y ventilador void calorON() { digitalWrite(calor, LOW); digitalWrite(ventilador, LOW); } //Funcion que apaga el calor y el ventilador void calorOFF() { digitalWrite(calor, HIGH); digitalWrite(ventilador, HIGH); } //Funcion que incrementa en 1 el dia void nuevoDia() { contadorDia++; }
Código de prueba
Para comprobar el funcionamiento del sistema tanto de sensores como de relays, se ha realizado aparte un código en el que se ejecutan de forma secuencial las distintas iteracciones.
El único cambio con el código anterior es la inclusión de la función prueba() y para que esta se ejecute, se invoca en la función setup().
//Se incluyen las librerias #include <TimeAlarms.h> #include <Time.h> #include <TimeLib.h> #include <DHT.h> #include <LiquidCrystal.h> //Se definen los pines necesarios del programa //Sensor de humedad #define sensor 13 //Señales de activacion de relays #define ventilador 10 #define calor 11 #define agua 12 #define movimiento 8 //Señales de la pantalla #define V0 9 #define RS 7 #define E 6 #define D4 5 #define D5 4 #define D6 3 #define D7 2 //Variables que lee el sensor de temperatura y humedad float temperatura; float humedad; //Se declara las variables correspondientes al sensor DHT dht (sensor, DHT11); LiquidCrystal lcd (RS, E, D4, D5, D6, D7); //Variable tiempo para hacer funcionar los recordatorios time_t t = now(); //Contador de dia necesario para la programacion del movimiento int contadorDia = 11; void setup() { //Se declara la fecha y hora de inicio de la incubadora setTime(20, 40, 0, 11, 12, 2020); //Inicializacion de sensor de temperatura y de la pantalla dht.begin(); lcd.begin(16, 2); //Se inicializan los pines como entrada o salida pinMode(V0, OUTPUT); pinMode(sensor, INPUT); pinMode(ventilador, OUTPUT); pinMode(calor, OUTPUT); pinMode(agua, OUTPUT); pinMode(movimiento, OUTPUT); //Se inicializa los relays apagados digitalWrite (agua, HIGH); digitalWrite (ventilador, HIGH); digitalWrite (calor, HIGH); digitalWrite (movimiento, HIGH); //Se pone el valor del contraste del LCD analogWrite(V0, 50); //Mensaje de inicio del LCD lcd.setCursor(0, 0); lcd.print("Bienvenido"); lcd.setCursor(0, 1); lcd.print("Version: 1.2"); delay(3000); //Realizacion de pruebas delay(3000); prueba(); } void loop() { humedad = dht.readHumidity(); temperatura = dht.readTemperature() - 0.5; delay(1000); imprimirDatos(); } //Funcion para imprimir la temperatura y la humedad por LCD void imprimirDatos() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(temperatura); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Humedad: "); lcd.print(humedad); lcd.print("%"); } //Funcion para imprimir el dia que llevan los huevos incubandose void imprimirDia() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dia: "); lcd.print(contadorDia); } //Funcion para hacer girar los huevos void giro() { if (contadorDia < 19) { calorOFF(); digitalWrite(movimiento, LOW); delay(18000); digitalWrite(movimiento, HIGH); } else { digitalWrite(movimiento, HIGH); } } //Funcion que abre la valvula del agua para mantener la humedad void valvulaAgua() { calorOFF(); digitalWrite(agua, LOW); delay(90000); digitalWrite(agua, HIGH); } //Funcion que activa el calor y ventilador void calorON() { digitalWrite(calor, LOW); digitalWrite(ventilador, LOW); } //Funcion que apaga el calor y el ventilador void calorOFF() { digitalWrite(calor, HIGH); digitalWrite(ventilador, HIGH); } //Funcion que incrementa en 1 el dia void nuevoDia() { contadorDia++; } //Funcion para imprimir en pruebas void prueba (){ lcd.clear(); lcd.setCursor(0, 0); lcd.print("Realizando"); lcd.setCursor(0,1); lcd.print("pruebas..."); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Probando"); lcd.setCursor(0,1); lcd.print("movimiento..."); giro(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Probando"); lcd.setCursor(0,1); lcd.print("calor..."); delay(1000); calorON(); delay(10000); calorOFF(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Probando"); lcd.setCursor(0,1); lcd.print("agua..."); digitalWrite(agua,LOW); delay(10000); digitalWrite(agua,HIGH); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Pruebas"); lcd.setCursor(0,1); lcd.print("completadas"); delay(3000); }
Pruebas
Para comprobar el correcto funcionamiento de la incubadora se han introducido huevos fecundados y se ha realizado un ciclo de incubación completo. En el video adjunto de esta memoria se puede observar la evolución del periodo de incubación.
En las siguientes figuras se observa en formato fotográfico parte del proceso de incubación.
Presupuesto
Producto | Cantidad | Total |
Bombilla | 2 | 1,5 |
Casquillo | 2 | 3 |
Electroválvula | 1 | 9,2 |
Bloque relay | 1 | 7,99 |
Sensor DHT11 | 1 | 5,5 |
Cables | 40 | 4,9 |
Pintura | 1 | 6,5 |
Cristal Climalit | 1 | 10 |
Clemas | 5 | 1,2 |
Bisagras | 2 | 3 |
Cierre puerta | 1 | 1,5 |
Transformadores | 2 | 12,8 |
Pantalla LCD | 1 | 7 |
Cristal bandeja (con soportes) | 1 | 6 |
Total | 80,09€ |
Teniendo en cuenta que las incubadoras comerciales en el mercado con unas características similares rondan los 150 euros, se puede concluir que es muy buena alternativa.
Conclusión
El tiempo de realización de la incubadora ha sido de un mes más 21 días de incubación para realizar las pruebas pertinentes.
Se ha trabajado de forma conjunta mediante videollamadas y se ha conseguido el objetivo inicial propuesto, es decir, construir una incubadora automática de bajo coste y funcional.
El problema que hemos encontrado en la construcción del proyecto ha sido el poder utilizar la incubadora con único cable que la alimente. Se ha solucionado incorporando dos transformadores conectados en paralelo y con salidas a la alimentación del Arduino y otro con salida para alimentar la electroválvula de agua.
Video del proyecto
Autores
Miguel Gonzalo Pérez González
José Ángel Sánchez Pérez