incubadora.doc

19

Click here to load reader

Upload: mgacha

Post on 11-Aug-2015

41 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: INCUBADORA.doc

1.- AGRADECIMIENTOS

Agradecemos a nuestros padres por brindarnos el apoyo necesario para la elaboración de este proyecto, y a la universidad evangélica boliviana por permitirnos realizarlo

2.- JUSTIFICACION

Hemos realizado este proyecto viendo que los equipos utilizados para la incubación de huevos en las granjas avícolas resultas ser de alto costo, haciendo lo posible por elaborar una incubadora mucho mas económica

3.- OBJETIVO

Realizar una incubadora automatizada con el propósito de reducir los costos de equipo en las granjas avícolas

4.- INTRODUCCION

En el presente proyecto usamos un PIC 16F877A para controlar la temperatura de una incubadora.El micro controlador se ve controlado a su vez por cuatro pulsadores que manejan la programación de la temperatura en el PIC, ósea que marca los limites superior e inferior de la temperaturas que se desea medirLos datos necesarios para controlar el PIC se visualizan en una pantalla LCD que va conectada al microcontrolador.Este proyecto utiliza un sensor de temperatura LM 35 que envía datos analógicos En muchos de los centros avícolas o personas que trabajan con poca cantidad de aves la adquisición de una incubadora es bastante cara y se emplean otro tipo de sistemas de poca precisión y de un monitoreo erróneo Es por eso que se ha realizado este proyecto para así poder controlar la temperatura de un ambiente que puede ser tratado como incubadora

5.- ELABORACION DEL PROYECTO

5.1.- EL TECLADO

Dispositivo de entrada de datos que consta de 3 teclas o pulsadores, dispuestos e interconectados

1

Page 2: INCUBADORA.doc

Figura 1.1 Conexión y configuración del teclado

En la figura, vemos el esquema de conexionado del teclado y sus correspondientes pines a los que este proporciona datos. Cuando se presiona un pulsador se esta enviando un cero lógico que luego explicaremos su interpretación. También podemos ver el conexionado típico con el puerto A del µC

Las resistencias de son necesarias para poder compartir controlar el flujo de corriente ya que para que el puerto A pueda tener lectura se necesita un cero logico y este se obtiene haciendo un corte a tierra. Durante la fase de lectura del teclado se produce un cortocircuito y tan solo circularía una pequeña corriente y el puerto del µC no correría ningún riesgo.

Si no se tuviera las resistencias en la conexión al hacer el cortocircuito provocaríamos un gran flujo de corriente y el PIC o uC llegaría a dañarse

5.2.- PANTALLA DE CRISTAL LIQUIDA (LCD)

La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivo µControlado de visualización grafico para la presentación de caracteres, símbolos o incluso dibujos (en algunos modelos), es este caso  dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixels), aunque los hay de otro número de filas y caracteres. Este dispositivo esta gobernado internamente por un microcontrolador Hitachi 44780 y regula todos los parámetros de presentación, este modelo es el mas comúnmente usado y esta información se basará en el manejo de este u otro LCD compatible.

Características principales:

Pantalla de caracteres ASCII, además de los caracteres Kanji y griegos.

Desplazamiento de los caracteres hacia la izquierda o la derecha.

Proporciona la dirección de la posición absoluta o relativa del carácter.

Memoria de 40 caracteres por línea de pantalla.

Movimiento del cursor y cambio de su aspecto.

Permite que el usuario pueda programar 8 caracteres.

2

Page 3: INCUBADORA.doc

Conexión a un procesador usando un interfaz de 4 u 8 bits Para comunicarse con la pantalla LCD podemos hacerlo por medio de sus terminales de entrada de dos maneras posibles, con bus de 4 bits o con bus de 8 bits, este último es el que explicare y la rutina también será para este. En la figura 2.8 vemos las maneras posibles de conexionar el LCD con un pic16f84.

Figura 3.3 conexiones

Como puede apreciarse el control de contraste se realiza al dividir la alimentación de 5V con una resistencia variable de 10K. Las líneas de datos son triestado, esto indica que cuando el LCD no esta habilitado sus entradas y salidas pasan a alta impedancia.

La descripción de pines se lo puede observar en la tabla 2.3

PIN Nº

SIMBOLO DESCRIPCION

1 Vss Tierra de alimentación GND

2 Vdd Alimentación de +5V CC

3 Vo Contraste del cristal liquido. ( 0 a +5V )

4 RSSelección del registro de control/registro de datos:RS=0 Selección registro de controlRS=1 Selección registro de datos

5 R/WSeñal de lectura/escritura:R/W=0 Escritura (Read)R/W=1 Lectura (Write)

6 EHabilitación del modulo:E=0 Modulo desconectadoE=1 Modulo conectado

7-14 D0-D7 Bus de datos bidireccional.

Tabla 3.1 Descripción de pines

3

Page 4: INCUBADORA.doc

5.3.- SENSOR DE TEMPERATURA LM35

El LM 35 es un sensor de temperatura que tiene una salida proporcional en grados centigrados. Este sensor no necesita calibramiento alguno y puede testear temperaturas desde los -55 a 150°C.

Es un sensor de bajo costo y confiable que avanza a 10mV/°C, trabaja desde los 4 a 30 V y consume 60uA

Figura 3.6LM35 configuraciones

5.4.- DIAGRAMA.

Figura 3.7 Diagrama del proyecto Como se puede observar que los pulsadores presentan valores que varian entre 0 y

5 V y estan conectados a el pic junto a sus respectivas resistencias En la parte de potencia se puede observar que se esta utilizando un optoacoplador el

cual dispara el triac y enciende el generador de temperatura El uC esta trabajando con un oscilador de 4 Mhz

4

Page 5: INCUBADORA.doc

Figura 3.8 Diseño de la placa

5.5.- SOFTWARE DEL MICROCONTROLADOR PIC 16F877

list p=16f877A#include <p16F877A.inc>

pcl equ 0x02 ;Contador de programa (Parte baja)estado equ 0x03 ;Registro de estadosptoa equ 0x05 ;Puertos de E/Sptob equ 0x06ptoc equ 0x07intcon equ 0x0B ;Controlador de interrupcioneseedata equ 0x0C ;Registro de datos de la EEPROMeeaddr equ 0x0D ;Registro de direccion de la EEPROMadres equ 0x1E ;Resultado de la conversión A/D (HIGH / LOW)adcon equ 0x1F ;Configuración del conversor A/Duni equ 0x20 ;Usados para manejar los datos a mostrar en displaydec equ 0x21cen equ 0x22tiempo1 equ 0x23 ;Usados para temporizartiempo2 equ 0x24letra equ 0x25 ;Usado para apuntar la letra a colocar en el LCDmenor equ 0x26 ;Temperatura de activaciónmayor equ 0x27 ;Temperatura de desactivaciónbuffer equ 0x28 ;Usado como registro temporal

#define CARRY estado, 0 ;Bit de acarreo#define CERO estado, 2 ;Flag indicador de resultado cero#define ADGOadcon, 2 ;Bit que inicia la conversión (1) / Indica finalización (0)#define EEREAD eedata, 0 ;Bit que inicia la lectura de la EEPROM#define EEWRITE eedata, 1 ;Bit que inicia la escritura de la EEPROM - Indica finalización#define EEWREN eedata, 2 ;Bit que habilita la escritura en la EEPROM#define EEAREA eedata, 7 ;Bit que selecciona el área de EEPROM a utilizar (0=AREA DE DATOS)

5

Page 6: INCUBADORA.doc

#define MINS ptoa, 1 ;Sube el punto mínimo#define MINB ptoa, 2 ;Baja el punto mínimo#define MAXSptoa, 3 ;Sube el punto máximo#define MAXB ptoa, 4 ;Baja el punto máximo#define BUZZER ptoc, 3 ;Salida al aviso acústico#define RELE ptoc, 4 ;Relé que maneja la carga (calefactor / enfriador)#define LCDE ptoc, 6 ;Habilitación del LCD#define LCDRS ptoc, 7 ;Selección de modo del LCDORG 0goto INICIO

INICIO bsf estado, 5 ;Pasa a página 1bcf estado, 6movlw b'00011111' ;Configura puerto Amovwfptoaclrf ptob ;Puerto B completo como salidas (bus del LCD)clrf ptoc ;Puerto B completo como salidasmovlw b'10001110' ;Configura los pines del Puerto Amovwfadcon ;AN0 como única entrada análogabsf estado, 6 ;Pasa a página 3bcf EEAREA ;Selecciona el banco de EEPROM de datosbcf estado, 6 ;Pasa a página 0bcf estado, 5movlw b'01000001' ;Enciende y configura el convertidor A/D - Selecciona

AN0 como entradamovwfadcon

clrf ptoa ;Apaga todoclrf ptobclrf ptoc

bsf estado, 6 ;Pasa a la página 2 de memoriaclrf eeaddr ;Direcciona la primera posición de la EEPROMbsf estado, 5 ;Pasa a la página 3 de memoriabsf EEREAD ;Inicia la lectura de la EEPROMbcf estado, 5 ;Vuelve a la página 3 de memoriamovf eedata, 0 ;Dato Leído de la EEPROM -> Wmovwfmenor ;Guarda el dato leído de la EEPROM en MENOR

(punto de activación del relé)incf eeaddr ;Direcciona a la segunda posición de la EEPROMbsf estado, 5 ;Pasa a la página 3 de memoriabsf EEREAD ;Inicia la lectura de la EEPROMbcf estado, 5 ;Vuelve a la página 3 de memoriamovf eedata, 0 ;Dato Leído de la EEPROM -> Wmovwfmayor ;Guarda el dato leído de la EEPROM en MAYOR

(punto de desactivación del relé)bcf estado, 6 ;Pasa a la página 0 de memoria

movlw b'00111000' ;Comunicación con el LCD a ocho bits - Dos líneas de texto

6

Page 7: INCUBADORA.doc

call CONTROLmovlw d'2'call DEMORA ;Demora 2msmovlw b'00000110' ;Mensaje estático, se desplaza el cursor hacia la

derechacall CONTROLmovlw d'2'call DEMORA ;Demora 2msmovlw b'00001100' ;Enciende el display - Oculta el cursor - Caracter fijocall CONTROLmovlw d'2'call DEMORA ;Demora 2msmovlw b'00000001' ;Limpia la pantalla y pone cursor en posición inicialcall CONTROLmovlw d'2'call DEMORA ;Demora 2ms

clrf letra ;Coloca el título en el LCDOTRA movf letra, 0 ;Letra actual -> W

call LINEA1 ;Obtiene el caracter a colocar desde la tablacall DATO ;Envía el caracter al LCDincf letra, 1

movf letra, 0 ;Comprueba si ya envió los 16 caracteres del títulosublw d'16'btfss CEROgoto OTRA ;Si no llego a la letra 16 sigue enviando

movlw 0xC0 ;Posiciona el cursor en la 2da. lineacall CONTROLmovlw d'1'call DEMORA ;Demora 1ms

clrf letra ;Coloca el título en el LCDOTRA2 movf letra, 0 ;Letra actual -> W

call LINEA2 ;Obtiene el caracter a colocar desde la tablacall DATO ;Envía el caracter al LCDincf letra, 1

movf letra, 0 ;Comprueba si ya envió los 16 caracteres del títulosublw d'16'btfss CEROgoto OTRA2 ;Si no llego a la letra 16 sigue enviando

call VERINF ;Coloca en el LCD la temp. inferior (de activación)

call VERSUP ;Coloca en el LCD la temp. superior (de desactivación)

CICLO bsf ADGO ;Inicia la conversión A/D

7

Page 8: INCUBADORA.doc

btfsc ADGO ;Espera que termine de convertirgoto $ -1

bsf estado, 5 ;Pasa a página 1 (para acceder a los ocho bits bajos del resultado)

movf adres, 0 ;Resultado de conversión -> Wbcf estado, 5 ;Pasa a página 1

movwfbuffer ;Guarda el dato obtenido de ADRESL en el buffer temporal

bcf CARRY ;Limpia el CARRYbtfsc adres, 0 ;Mira el bit menos significativo de ADRESH

(Bit 8)bsf CARRY ;Si está en 1 pone en uno el carrybcf buffer, 1 ;Hace desaparecer el bit 0 de ADRESL, mete el bit 0

de ADRESH por el 7 de ADRESL

movf menor, 0 ;Punto de activación -> Waddlw d'1' ;Suma 1 a Wsubwf buffer, 0 ;W = Temp. Actual - (Menor + 1)btfss CARRY ;Si dio negativo es porque la temp. medida es

igual o menor al punto de activaciónbsf RELE ;Si dio negativo (si carry = 0) acciona el relé

movf mayor, 0 ;Punto de desactivación -> Wsubwf buffer, 0 ;W = Temp. Actual - (Mayor)btfsc CARRY ;Si dio negativo es porque aún no alcanzó la

temp. de desactivaciónbcf RELE ;Si dio positivo (si carry = 1) desactiva el relé

movf buffer, 0 ;Dato digitalizado -> Wcall DECIMAL ;Obtiene UNI, DEC y CEN con el agregado de 30h

para la tabla ASCII

movlw 0x8D ;Coloca el cursor en la posición 0Dh de la pantalla.call CONTROL

movf cen, 0 ;Coloca en el LCD las centenascall DATOmovf dec, 0 ;Coloca las decenascall DATOmovf uni, 0 ;Coloca las unidadescall DATO

btfss MINS ;Mira el pulsador de incremento en temp. de activación

call SUBEMINbtfss MINB ;Mira el pulsador de decremento en temp. de

activacióncall BAJAMIN

8

Page 9: INCUBADORA.doc

btfss MAXS ;Mira el pulsador de incremento en temp. de desactivación

call SUBEMAXbtfss MAXB ;Mira el pulsador de decremento en temp. de

desactivacióncall BAJAMAX

goto CICLO ;Vuelve a medir y mostrar

LINEA1 addwf pcl, 1 ;Suma el contenido de W al contador de programa (para explorar la tabla)

retlw "T"retlw "E"retlw "M"retlw "P"retlw "E"retlw "R"retlw "A"retlw "T"retlw "U"retlw "R"retlw "A"retlw ":"retlw " "retlw " "retlw " "retlw " "

LINEA2 addwf pcl, 1 ;Suma el contenido de W al contador de programa (para explorar la tabla)

retlw " "retlw " "retlw " "retlw " "retlw " "retlw " "retlw b'01111111' ;Flecha izquierdaretlw "-"retlw "-"retlw b'01111110' ;Flecha derecharetlw " "retlw " "retlw " "retlw " "retlw " "retlw " "

SUBEMIN incf menor, 1 ;Suma 1 a la temp. de activacióncall VERINF ;Actualiza la información en el LCDbtfss MINS ;Espera que suelte el pulsador

9

Page 10: INCUBADORA.doc

goto $ -1goto SAVEMIN ;Una vez que suelta la tecla va a guardar el parámetro

BAJAMIN decf menor, 1 ;Resta 1 a la temp. de activacióncall VERINF ;Actualiza la información en el LCDbtfss MINB ;Espera que suelte el pulsadorgoto $ -1

SAVEMIN bsf estado, 6 ;Pasa a página 2clrf eeaddr ;Direcciona el primer byte de la EEPROMmovf menor, 0movwfeedata ;Temp. Activación -> EEPROMcall EESAVE ;Ejecuta la rutina de grabaciónbcf estado, 6 ;Pasa a página 0goto TIC ;Va a hacer el TIC de teclado

SUBEMAX incf mayor, 1 ;Suma 1 a la temp. de desactivacióncall VERSUP ;Actualiza la información en el LCDbtfss MAXS ;Espera que suelte el pulsadorgoto $ -1goto SAVEMAX ;Una vez que suelta la tecla va a guardar el parámetro

BAJAMAX decf mayor, 1 ;Resta 1 a la temp. de desactivacióncall VERSUP ;Actualiza la información en el LCDbtfss MAXB ;Espera que suelte el pulsadorgoto $ -1

SAVEMAX bsf estado, 6 ;Pasa a página 2movlw d'1'movwfeeaddr ;Direcciona el 2do. byte de la EEPROMmovf mayor, 0movwfeedata ;Temp. Activación -> EEPROMcall EESAVE ;Ejecuta la rutina de grabaciónbcf estado, 6 ;Pasa a página 0goto TIC ;Va a hacer el TIC de teclado

EESAVE bsf estado, 5 ;Pasa a página 3bsf EEWREN ;Habilita la escritura en la EEPROMmovlw 0x55 ;Secuencia de seguridadmovwfeeaddrmovlw 0xAAmovwfeeaddrbsf EEWRITE ;Inicia la grabaciónbcf EEWREN ;Deshabilita la escriturabtfsc EEWRITE ;Espera que termine de grabargoto $ -1bcf estado, 5 ;Pasa a página 2return

TIC bsf BUZZER ;Acciona el buzzer

10

Page 11: INCUBADORA.doc

movlw d'100'call DEMORA ;Deja sonar el buzzer durante 100msbcf BUZZERreturn

CONTROL bcf LCDRS ;Pone en bajo la línea de modo del LCD (Control)

goto ENVIAR ;Se saltea la sig. líneaDATO bsf LCDRS ;Pone en alto la línea de modo del LCD (Dato)ENVIAR movwfptob ;Coloca el dato o control a enviar en el bus del LCD

movlw d'1'call DEMORA ;Demora 1msbsf LCDE ;Habilita el LCDmovlw d'1'call DEMORA ;Demora 1msbcf LCDE ;Deshabilita el LCDmovlw d'1'call DEMORA ;Demora 1msreturn

DECIMAL movwfuni ;Convierte el dato presente en W en UNI, DEC y CENclrf decclrf cenmovlw d'100' ;Determina la cant. de centenas

CENTENA subwf uni, 1btfss CARRYgoto CIENincf cen, 1goto CENTENA

CIEN addwf uni, 1movlw d'10' ;Determina la cant. de decenas

DECENA subwf uni, 1btfss CARRYgoto DIEZincf dec, 1goto DECENA

DIEZ addwf uni, 1 ;Uni queda con la cant. de unidades (sin decenas ni centenas)

movlw 0x30 ;Le suma 30h a los valores de UNI, DEC y CEN para que queden en ASCII

addwf uni, 1addwf dec, 1addwf cen, 1return

DEMORA movwf tiempo2 ;Demora tantos milisegundos como valor en wTOP2 movlw d'110'

movwf tiempo1

11

Page 12: INCUBADORA.doc

TOP1 nopnopnopnopnopnopdecfsz tiempo1, 1goto TOP1decfsz tiempo2, 1goto TOP2return

VERINF movf menor, 0 ;Temperatura de activación -> Wcall DECIMAL ;Obtiene UNI, DEC y CEN en formato ASCIImovlw 0xC2 ;Posiciona el cursor en el tercer caracter de la 2da.

líneacall CONTROL ;para escribir el punto de activaciónmovlw d'1'call DEMORA ;Demora 1msmovf cen, 0 ;Coloca en el LCD las centenascall DATOmovf dec, 0 ;Coloca las decenascall DATOmovf uni, 0 ;Coloca las unidadescall DATOreturn

VERSUP movf mayor, 0 ;Temperatura de desactivación -> Wcall DECIMAL ;Obtiene UNI, DEC y CEN en formato ASCIImovlw 0xCB ;Posiciona el cursor en el caracter 12 de la 2da. líneacall CONTROL ;para escribir el punto de desactivaciónmovlw d'1'call DEMORA ;Demora 1msmovf cen, 0 ;Coloca en el LCD las centenascall DATOmovf dec, 0 ;Coloca las decenascall DATOmovf uni, 0 ;Coloca las unidadescall DATOreturn

end

12

Page 13: INCUBADORA.doc

6.- COSTO.

No. PARTES Precio $us1. Fabricación PCB $72. PIC 16F628 $103. LCD $124. CAPACITORES $0.255. TRIAC $16. RESISTENCIAS $47. BOTONES $3,008. LM35 $5.009. TOTAL EQUIPO $45.25

Tabla 3.2 Costos

7.- RECOMENDACIÓN.

Para un mayo rendimiento en el testeo del ambiente de la incubadora se recomienda evitar las bolsas de aire con un pequeño cooler.

También recalcamos que tener ligero cuidado con la conexión de los voltajes de alimentación y tierra ya que algún corto circuito que se produzca puede dañar el circuito.

8.- CONCLUSIONES.

Se a conseguido implementar un controlador de temperatura para una incubadora avícola que tiene la posibilidad de monitorear y limitar la temperatura que deseamos obtener

Se pudo acoplar una etapa de potencias para el control de el generador de temperatura

Se lograron alcanzar todos los objetivos planteados.

9.- METODOLOGIA

Para la implementación del proyecto se trabajó en las siguientes etapas metodológicas

Basándose en información obtenida, emitir ideas y soluciones las cuales puedan mejorar al sistema.

Selección de la tecnología más adecuada en lo que se refiere a hardware y software, para la implementación del proyecto.

13

Page 14: INCUBADORA.doc

10.- BIBLIOGRAFÍA.

10.1.- LIBROS 1. Compañía Editorial Electrónica “CEKIT sa” Electronica moderna y automatizacion 2. ANGULO USATEGUI, José M. y

AMGULO MARTINEZ, Ignacio Microcontroladores “PIC” diseño practico de aplicaciones

11. Compañía Editorial Electrónica “CEKIT sa” Curso Básico de Microcontroladores “PIC”. 12. Compañía Editorial Electrónica “CEKIT sa” Curso Avanzado de Microcontroladores “PIC”.

10.2.- INTERNET

Microchip. http://www.microchip.comPágina de Javier Alzate: Microcontroladores PIC16CXX.

http://www.geocities.com/CapeCanaveral/Lab/9827/microcon.htm

El Rincón del Pic. http://members.es.tripod.de/~InfoE/infop.htm Microsystems Engineering: Los autores de los libros de Pics (esp.)

http://www.arrakis.es/~msyseng

Archivos sobre Pics de David Tait. http://www.labyrinth.net.au/~donmck/dtait/index.html

De todo un poco (Electrónica): Algunos circuitos.

http://www.arrakis.es/~ldr2000/manny/circuitos

Dontronics. http://www.dontronics.com Microcontoladores: Información, Herramientas y Prog.

http://www.geocities.com/TheTropics/2174/micro.html

Winkipedia http://es.wikipedia.org/wiki/Triac

14