Este documento describe una incubadora diseñada para controlar automáticamente la temperatura y voltear los huevos cada 6 horas. La incubadora incluye un control de temperatura ajustable, dos lámparas para mantener la temperatura, un motor para voltear los huevos 1/4 de vuelta cada 6 horas, y un circuito electrónico para controlar la temperatura y el giro del motor.
2. Realizado por : Joaquín Berrocal Piris. Visitar; http://iesccp.comze.com/
2
INCUBADORA
Autor: JOAQUÍN BERROCAL PIRIS
Fecha : 2001.
► DISPONE DE:
◊ UN TERMÓMETRO PARA VERIFICAR LA TEMPERATURA DE
LA INCUBADORA.
◊ UN CONTROL DE TEMPERATURA AJUSTABLE MEDIANTE
POTENCIÓMETRO
(dispone de NTC 47K un TRIAC T2801D y un Diac BR100/03))
◊ ACTÚA SOBRE DOS LÁMPARAS (del tipo usado en laboratorios
fotográficos de 60W cada una) LAS CUALES SE ILUMINARÁN MÁS O
MENOS MANTENIENDO LA TEMPERATURA ADECUADA. (37,8ºC
para los huevos de gallinas)
◊ UN MOTOR de 12V DC (sacado de un motor de ralentí de un
sistema de inyección monopunto Renault 19)
◊ UN CIRCUITO ELECTRÓNICO QUE CONTROLA LAS VUELTAS
QUE DA EL MOTOR.
◊ EL SISTEMA HACE QUE EL MOTOR GIRE LAS VUELTAS
NECESARIAS PARA HACER VOLTEAR LOS HUEVOS 1/4 DE
VUELTA CADA 6 HORAS . LO QUE HACE QUE DEN UNA VUELTA
COMPLETA CADA 24 Horas.
(de esta manera se calientan por igual en toda su superficie.)
◊ UN HIGRÓMETRO PARA EL CONTROL DE LA HUMEDAD. “SE
ACONSEJA MANTENER UNA HUMEDAD DEL 65 % EN EL
INTERIOR. Para conseguirlo tan sólo hemos de colocar uno o dos
tapes pequeños con agua en la parte inferior del habitáculo.
◊ UN VENTILADOR DE LOS USADOS EN LOS PC’S PARA
PROVOCAR UNA CORRIENTE DE AIRE QUE SIRVE PARA
HOMOGENIZAR EL NIVEL DE TEMPERATURA Y HUMEDAD EN
TODO EL RECINTO.
► CONDICIONES DE TRABAJO PARA HUEVOS DE GALLINA:
◊ Temperatura; 38ºC ◊ Humedad; 65 %
◊ Tiempo de gestación ; aprox. 21 días
◊ Dos días antes desconectar el motor DC con su interruptor “Led
rojo desconectado” Esto es para posicionar los pollitos y no queden
atrapados en una posición inadecuada.
12. Realizado por : Joaquín Berrocal Piris. Visitar; http://iesccp.comze.com/
12
ESQUEMA ELECTRÓNICO:
1-. Del Regulador de Temperatura
-. con triac T2810D(400V-6A)
-. con Diac BR 100/03
-. NTC 47K y Potenciómetro 200K
2-. Circuito Activación del motor
-. Cada 6 horas hará que los huevos
Se desplacen ¼ de vuelta. Lo que supone
unas 35 vueltas del motor
3-. PROGRAMA EN PICBASICPRO para quien
desee modificarlo a su propio interés.
NOTA: No es el original montado en la incubadora.
Pero perfectamente válido.
En este esquema se utiliza un PIC16F628A
( en el montaje real utilicé un 16F873)
15. '******************************************
'* Nombre : INCUBADORA.pbp *
'* Autor : Joaquín Berrocal *
'* Copyright : Copyright *
'* Fecha : ABRIL-2013 *
'* Versión : 1.0 *
'******************************************
;***************OBSERVACIONES PREVIAS:***************
;PIC 16F628A (2k memoria flash) pero se puede utilizar otros más pequeños
;frecuencia a 4 MHZ
;*************************************************
;-----------------FUNCIONAMIENTO--------------------------
'utilizo estas patillas por no usar las que el PBP utiliza por
'defecto para el manejo de una LCD --> A4-B3-A0 a A3
'RB3 --
'RB0/INT --'Entrada de los pulsos del giro del motor DC (0V sector negro)
'entrada de pulsos del motor através del sensor optico ECG3100
'para contar las vueltas. Ver pag 87 3ª edicion
'RB1 -- Activación transistor/Relé Giro Adelante
'RB2 -- Activación transistor/Relé Giro ATRÁS
'RB3 -- Entrada de Final de Carrera FC1 (activa por 0V al ser pulsado)
'RB4 -- Entrada de Final de Carrera FC2 (activa por 0V al ser pulsado)
'NOTA: EL TIEMPO LO TENGO PUESTO SÓLO PARA 6 Sdos. en lugar de 6 H. para
'poder ver y simular en el PROTEUS. PARA APLICARLO CAMBIAR LA RUTINA
'TIEMPO_6H:
'REALIZADO POR TECNICA PULLING es decir por sondeo constante de los pines
'conectados a los finales de carrera FC1 = RB3 y FC2 = RB4
'Evito con ello el problema de hacerlo con interrupciones:
'''PROBLEMAS AL HACERLO CON INTERRUPCIONES '''
'-. Si se pulsara cualquier Final de Carrera, aunque no
'-. fuese de forma permanente; al terminar la espera de 6H. haría la
interrupcion
'-. y de ahí "Interrupcion" y volvería a INICIO volviendo a hacer
'-. otra espera de 6H.
'**********************************************************
'DEFINICIONES INICIALES. Fusibles de configuración.
define Osc 4 ' Define el Oscilador para un Cristal
' de 4 Mhz.
' Configuración de Puertos:
'NOTA ADCON1 = 7 para los pic que tienen conversores A/D como el
'PIC16F87X SUSTITUIR POR CMCON = 7 si lleva comparadores y no conversores A/D
'como sucece en los 16F628A (ver pag 43 3ªedicion)
CMCON = 7'PARA CONFIGURAR EL PUERTO A COMO ENTRADA/SALIDA (no lleve este pic
'conversore A/D y sí comparadores por ello poner
'CMCON = 7 en lugar de "ADCON1 = 7"
'en los pic el RA4 esta a colector abierto conectarlo a
'pull-up (+) su salida a nivel 0 ok pero flotará cuando
'su salida se active a nivel 1.
'El RA5 sólo puede ser configurado como ENTRADA. ver pags
'38-43-77
'NOTA PREFIERO CONFIGURAR COMO SALIDA TODOS LOS PINES QUE NO UTILIZO
'PARA EVITAR PROBLEMAS CON CONVERSORES ANOLOGICOS DIGITALES DE LOS PUERTOS
Page 1 of 5
16. 'RA5 DEBE SER SIEMPRE CONFIGURADO CONO ENTRADA en estos PICS 16F628A
'(ver pag 77 3ª edicion)
TRISA = %00010000
'los demás pines del PuertoA los configuro
'como salida por seguridad Pero NO ES NECESARIO
TRISB = %00011001 ' Configura RB0/INT como entrada para contaje vueltas motor
'entrada de los pulsos del optoacoplador ECG3100
'que cuenta las vueltas del motor. nivel 0 sector negro.
'RB1 --- Salida para activar la marcha_Adelante a nivel 0
'RB2 --- Salida para activar la marcha_Atras a nivel 0
'RB3 Y RB4 como entrada de los finales de carrera FC1 y FC2
' Declaramos las variables:
Marcha_Adelante var Portb.1 'RB1para activar T1/RELE 1 Marcha Adelante
Marcha_Atras var Portb.2 'RB2 para activar T2/RELE 2 Marcha Atrás
X var word ' Variable para el contaje del tiempo espera 6 horas
Contaje var byte 'Variable para el contaje de vueltas del motor DC
'considerando que el Diámetro de un huevo es de unos
'50 mm ,que la varilla roscada es de paso 1,25 mm
' y dejando una holgura de unos 10 mm y otros 10 mm
'por desfases en el desplazamiento de los huevos.
'el recorrido total que debe hacer el carro para rotar
'completamente los huevos será:
'longitud = 3,14 x 50 mm = aprox 155 mm
'155 mm + 10mm holgura + 10 mm posibles resbalam. = 175 mm
' 175 mm : 1,25 mm paso = 140 vueltas : 4 = 35 vueltas
'de la varilla roscada para mover 1/4 de vuelta los huevos.
'cada 6 horas realizará 1/4 de vuelta de los huevos
'para que en 24 horas se hayan dado una vuelta completa.
'NOTA. los Flags se grabaran en posición EEPROM 1 Y 2 Respectivamte.
'Los utilizo para que si se va la luz una vez vuelva se sepa hacia donde
'debe seguir desplazandose el motor.
Flag_FC1 var byte 'flag indicador de estar pulsado el Final de Carrera 1
Flag_FC2 var byte 'flag indicador de estar pulsado el Final de Carrera 2
FC1 var PortB.3 'para designar los Finales de carrera FC1 y FC2
FC2 var PortB.4 'activos a nivel 0 V
Option_Reg = %00000000 'RBPU# = 1 Pull-up Desactivadas
'RBPU# = 0 Pull-up del Puerto B Activadas
'++++++ INICIO +++++
INICIO:
high Marcha_Atras 'Desactivado con HIGH activado con LOW
high Marcha_Adelante
Contaje = 0 'Inicializa el contaje
call TIEMPO_6H 'Lo primero hacer el tiempo de 6 horas. para luego
'Crear y Guardar los flags para saber donde debe girar.
'Si es FC1 activo escribe 170 en posición 1 y 0 en posición 2
Page 2 of 5
17. if FC1 = 0 then
high Marcha_Atras 'Desactivado con HIGH activado con LOW
low Marcha_Adelante
''''EEPROM 1,[170,0] 'LO ANULO PORQUE DA PROBLEMAS SIMULACIÓN PROTEUS
'al utilizar dos veces esta instrucción en la MISMA RUTINA "INICIO"
write 1,170
write 2,0
goto Espera_Suelte_FC 'y de ahí irá a "CONTAJE_VUELTAS"
endif
'Si es FC2 Activo escribe 0 en posición 1 y 170 en posición 2
if FC2 = 0 then
'EEPROM 1,[0,170]' lo quito por no aceptar esta instrucción 2 veces
'en la misma RUTINA "INICIO
high Marcha_Adelante 'Desactivado con HIGH activado con LOW
low Marcha_Atras
write 1,0
write 2,170
goto Espera_Suelte_FC 'y de ahí irá a "CONTAJE_VUELTAS"
endif
read 1,Flag_FC1 'lee la posición 1 de la EEPROM y la guarda
'en la variable "Flag_FC1"
read 2, Flag_FC2 'lee la posición 2 y lo guarda en Flag_FC2"
if (FC1 = 1) and (FC2 = 1) and (Flag_FC1 = 170) then
high Marcha_Atras 'Desactivado con HIGH activado con LOW
low Marcha_Adelante
goto CONTAJE_VUELTAS
endif
if (FC1 = 1) and (FC2 = 1) and (Flag_FC2 = 170) then
high Marcha_Adelante 'Desactivado con HIGH activado con LOW
low Marcha_Atras
goto CONTAJE_VUELTAS
endif
'En caso de no tener ningún flag indicador ir hacia adelante:
'Marcha_Adelante y guardar en la EEPRON los valores de los Flag_FC1-2
'para que así ya pueda saber en qué sentido debe girar hasta el próximo
'Final de Carrera que se encuentre.
if (FC1 = 1) and (FC2 = 1) and (Flag_FC1 <> 170) and (Flag_FC2 <> 170) then
high Marcha_Atras 'Desactivado con HIGH. Activado con LOW
low Marcha_Adelante
' EEPROM 1,[170,0]
write 1,170 'Guardamos para el flag de Marcha Adelante
write 2,0
goto CONTAJE_VUELTAS
endif
Page 3 of 5
18. '-----------------------------------------------------------
goto INICIO 'en principio sobra, pero por si acaso lo dejo.
'-----------------------------------------------------------
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++++ RUTINA PARA EL CONTAJE DE TIEMPO: 1 minu x 360 = 6 Horas +++++
TIEMPO_6H: 'lo pongo de 6 sgdos para las pruebas
for X = 1 to 6''360 'bucle de 360 ciclos de 1 minuto = 6 Horas
pause 1000'60000 'variable WORD puede contar de 0 a 65535 ms
next
return 'Retorno
'RUTINA PARA ESPERAR SE SUELTE EL EL FC O LOS PULSOS DEL GIRO DEL MOTOR
'Y EVITE ASÍ EL INCREMENTO DESCONTROLADO DE LA VARIABLE "Contaje"
Espera_Suelte: 'aquí son los pulsos del giro del motor
pause 20 'para estabilizar tensión evita rebote de contactos
if PortB.0 = 0 then goto Espera_Suelte
return
'-----------------------------------------------------
'RUTINA PARA QUE SALGA DEL FINAL DE CARRERA y vaya al
'"CONTAJE_VUELTAS". De esta manera estará operativa
'sin problemas el chequeo de los Finales de Carrera FC1 y FC2
'para detener de forma instantánea el motor.
Espera_Suelte_FC:
pause 20 'para estabilizar tensión evita rebote de contactos
'Hasta que no salga de los Finales de carrera no hacer el contaje.
if FC1 = 0 or FC2 = 0 then goto Espera_Suelte_FC
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++++ RUTINA PARA EL CONTAJE DE LAS VUELTAS DE GIRO DEL MOTOR +++++
'POR RB0 recibe los pulsos del optoacoplador ECG3100 pag 87 3ª edic.
'""CADA VEZ QUE PASE POR LA FRANJA NEGRA DARÁ UN PULSO (0)""
CONTAJE_VUELTAS:
'Se daran en 24 Horas un giro completo de los huevos
'haciendo un recorrido total de 175 mm
'Cada 6H habra 1/4 de recorrido haciendo un contaje de
'35 vueltas x 1,25mm paso = 43,75 mm
'haciendo como ya dije al cabo de las 24H un total de 175 mm
'y una vuelta completa de los huevos.
if PortB.0 = 0 then 'Es cero cuando pasa la banda negra por el sensor
call Espera_Suelte 'espera suelte tecla para volver a contar
Contaje = Contaje + 1 'incrementamos variable "Contaje"
endif
'----No es un rebote, verifica cual FC1-2 ha sido pulsado -------
'Chequeo pulling de los finales de carreara para parar de forma inmediata
'el giro del motor
if FC1 = 0 then
Page 4 of 5
19. write 1,170 'valor del Flag_FC1
write 2,0
pause 30 'para evitar los rebotes 30 ms (se puede suprimir)
goto INICIO ' Se envía a INICIO donde se inicia el "Contaje",
' Se PARA el MOTOR, y se hace la espera de los
' 6 Horas antes de volver a poner en marcha el motor
endif
if FC2 = 0 then
write 1,0 'valor del Flag_FC1
write 2,170
pause 30 'para evitar los rebotes 30 ms (se puede suprimir)
goto INICIO 'se envia a INICIO donde se inicia el "Contaje",
' Se PARA el MOTOR, y se hace la espera de los
' 6 Horas antes de volver a poner en marcha el motor
endif
'-------------------------------------------------------------------
'PARA PODER PROBAR Y SIMULAR SÓLO PONGO 6 vueltas en lugar de 35
if Contaje>=6 then '¡¡¡ cuando llegue a (6 vueltas!!)activar !!!
goto INICIO 'se hace la espera de 6h (6 segdos) y se chequea los FC1-2
else
goto CONTAJE_VUELTAS 'Si no se ha llegado a las 35 vueltas
'seguir seteando el contaje
endif
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
end 'fin del programa
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Page 5 of 5