Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROYECTO DE INGENIERIA ELECTRONICA I Y II CONTROL DE TEMPERATURA PARA UN INVERNADERO UTILIZANDO EL MICROCONTROLADOR PIC16F877A
ALUMNOS: ULISES TERAN JURADO DAVID HERNANDEZ ZARAGOZA JUAN CARLOS PANTOJA HERNANDEZ CUAUHTEMOC DANIEL FUENTES PEA
ASESOR: Dr. FAUSTO MARCOS CASCO SANCHEZ FECHA DE ENTREGA: JULIO de 2010
NDICE 1. 1.1 1.2 1.3 2. 2.1 2.2 2.3 2.4 2.5 2.6 3.0 3.1 3.2 3.3 4.0 4.1 4.2 4.3 5.0 5.1 5.2 5.3 5.4 Objetivos e Introduccin. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Objetivos Generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Objetivos Particulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Introduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Antecedentes Tericos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Microcontroladores PIC.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Familias de microcontroladores PIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Microcontroladores de gama baja. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Microcontroladores de gama media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Microcontroladores de gama alta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Unidad aritmtica y lgica y el registro W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Seales de entradas y salidas analgicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Funciones bsicas en los sistemas de medida y control. . . . . . . . . . . . . . . . . . . . . . . . . 7 Mdulo de conversin A/D de 10 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Arquitectura del mdulo de conversin A/D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 El Sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Tipos de sensores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Caractersticas y manipulacin de la seal enviada por el sensor. . . . . . . . . . . . . . . . . . .12 El sensor de temperatura LM35DZ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Etapa de potencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Optoacopladores y funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Tipos de Optoacopladores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 El Triac y su funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Control mediante el optoacoplador MOC 3031. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 2
5.5 6.0 6.1 6.2 6.3 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 9.0 10.0
Funcionamiento etapa de potencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Pantalla de cristal lquido LCD 16 x 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Caractersticas generales de un LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Modos de operacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Comandos de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Microcontrolador PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Caractersticas del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Arquitectura del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Arquitectura Interna del PIC 16F877A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Organizacin de la memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Desarrollo del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Implementacin fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Cdigo generado en MPLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 Esquema del circuito de diseo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Bibliografia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.3 Introduccin
Hoy en da, la electrnica ha avanzado a pasos agigantados, en su mayora los sistemas que se desarrollan son digitales. Existen muchos dispositivos que permiten realizar diversos diseos de cualquier clase, existen dos dispositivos muy utilizados: Los microprocesadores y los microcontroladores. Los microprocesadores son dispositivos los cuales se pueden configurar como el usuario lo desee, posee ms instrucciones y ms capacidad que los microcontroladores, generalmente estos dispositivos se utilizan para disear proyectos donde se requiere mucho procesamiento de los datos. La marca lder en microprocesadores es Intel. Los microcontroladores son dispositivos de menor capacidad pero estos son ideales para el diseo y sus instrucciones son ms fciles de manipular y son econmicos. Los ms comercializados son los AVR y los PIC. En nuestro caso decidimos trabajar con los PIC, ya que son los dispositivos ms utilizados hoy en da. Existe una gran variedad de estos dispositivos, elegimos uno de gama media el PIC16F877A, este dispositivo cumple con nuestras especificaciones de diseo. Ya elegido el PIC, diseamos nuestra etapa de potencia, aqu utilizamos un SCR un dispositivo semiconductor de cuatro etapas y por ltimo buscamos el sensor.
Los microcontroladores tambin se agrupan en cinco grandes familias: PIC10, PIC12, PIC16, PIC17 Y PIC18. Los PIC10 contienen 6 terminales. La familia de los PIC12 agrupa a los microcontroladores disponibles con encapsulados de 8 terminales o pines. La familia de los PIC12 y PIC16 tienen subfamilias que tienes dispositivos de gama baja y media. Los PIC17 y PIC18 son de gama alta o mejorada.
(2048) palabras de 12 bits y est organizada en pginas de 512 palabras cada una. La memoria de datos est formada por registros de 8 bits y se organiza en bancos de 32 registros cada uno. Familia de microcontroladores PIC de gama baja: Los PIC16X5xx Los PIC12X5xx Los PIC10
Los PIC tienen un repertorio de 58 instrucciones de 16 bits cada una. La memoria de programa puede ser de hasta 64k (65 536) palabras de 16 bits cada una y la memoria de datos puede tener hasta 1k (1024) registros de 8 bits. La memoria de programa de los PIC17 es EPROM, ROM u OTP. Estos microcontroladores disponen de una amplia gama de dispositivos de entrada y salida: puertos paralelos, puerto serie, temporizadores, convertidor A/D, etc.
procesamiento hay una accin con un actuador, que convierte una seal elctrica en la accin fsica deseada, por ejemplo activar un motor para poner en marcha un calefactor.
En la conversin A/D indirecta, consiste cuando un circuito genera, por ejemplo un intervalo de tiempo de duracin proporcional a la tensin de entrada, y dicha duracin se compara con la de un intervalo de tiempo generado a partir de la tensin de referencia y el mismo circuito. Ambos intervalos se miden con el mismo contador digital. Otros convertidores obtienen una frecuencia proporcional a la tensin de entrada, y luego miden la frecuencia con un contador digital.
Este mdulo puede tener hasta ocho entradas analgicas que estn disponibles como funciones alternativas de las terminales de los puertos paralelos. El nmero de entradas analgicas o canales de entrada depende del PIC en particular. El amplificador de muestreo y retencin est compuesto bsicamente por un condensador (sin amplificadores de entrada ni de salida), que empiezan a cargarse en cuanto se selecciona en el multiplexor el canal deseado. La tensin en el condensador sigue la evolucin de entrada (modo track), y cuando se da una orden el condensador se desconecta de la entrada analgica y empieza la conversin. El resultado de la conversin se deposita en los registros ADRESH Y ADRESL. Dentro del espacio de 16 bits conformado por este par de registros, los 10 bits resultantes de una conversin se pueden depositar justificados a la izquierda o a la derecha como se muestra en la figura. La opcin de depositar el resultado justificado a la izquierda resulta muy apropiada para operar el CAD como convertidor de 8 bits, con el resultado de la conversin en el registro ADRESH.
Figura 3. Resultado de una conversin A/D se depositan en los registros ADRESH Y ADRESL. La tensin de referencia para la conversin A/D puede ser la tensin de alimentacin del microcontrolador o una tensin externa que se aplique a las terminales AN3/VERF+ y AN2/VERF- . La seleccin se hace por software con los bits PCFG3:PCFG0 del registro ADCON1. En la opcin por defecto, la tensin se toma de la alimentacin del microcontrolador. Las conversiones A/D se realizan en sincrona con una seal de reloj. Este reloj se obtiene del oscilador principal del microcontrolador mediante un divisor programable, o bien de un oscilador interno de frecuencia fija. Con los bits ADS1 Y ADCS0 del registro ADCON0 se selecciona la fuente del reloj y se programa el divisor de frecuencia si la fuente es el oscilador principal del microcontrolador. 10
Para iniciar la conversin A/D hay que activar el bit de control GO. Cuando ha terminado la conversin, se activa el bit de estado DONE#. GO y DONE estn en el mismo bit del registro ADCON0. El programador debe poner a uno este bit para iniciar la conversin A/D y cuando este bit toma el valor de cero, el resultado de la conversin est en los registros ADRESH y ADRESL. Cuando finaliza la conversin A/D, se activa el bit ADIF del registro PIR para solicitar la interrupcin del microcontrolador para esto el bit GIE del registro INTCON es uno la solicitud de la interrupcin se hace vlida.
En el registro ADCON1, el bit ADFM determina la justificacin a la derecha o a la izquierda del resultado de la conversin A/D en los registros ADRESH y ADRESL. Los bits PCFG3: PCFG0 configuran las terminales del microcontrolador utilizadas por el mdulo de conversin A/D como entradas analgicas del mdulo o como entradas digitales de los puertos paralelos correspondientes.
4.0 El sensor
Es un dispositivo diseado para poder captar informacin de alguna magnitud como: Qumica, Fsica y transformarla en magnitud elctrica lo cual nos facilita para poder manipular y cuantificar la informacin recabada.
(diodos LED, diodos laser etc.) y fuentes receptoras de dicha seal como pueden ser fotodiodos, fototransistores etc. Otros tipos como sensores de contacto, su funcionamiento es simple se activa o desactiva si se encuentra en contacto con un objeto, sensores de movimiento que son utilizados en robtica para medir la evolucin de las diferentes partes mecnicas etc.
proporcional a la escala de grados centgrados. Es decir, la salida es lineal y equivalente a 10mV/C, por ejemplo si se tiene una lectura de 150mV esto equivale a tener 15 C. Posee una precisin aceptable adems que es de bajo costo. El sensor LM35DZ se alimenta a partir del los 5 Volts hasta los 30 Volts. En nuestro caso lo alimentamos con 5 Volts.
13
Opto tiristor: Diseado para el preciso aislamiento de la red elctrica y seal lgica.
Figura 7. Smbolo de Triac. No es necesario que estn presentes las dos ambas polaridades en la compuerta ya que el Triac puede ser activado por una seal positiva o una seal negativa de compuerta. En la prctica la sensibilidad vara de un cuadrante a otro, normalmente el Triac opera en el primer cuadrante I (voltaje y corriente de compuerta positivos) o en el tercer cuadrante III (voltaje y corriente negativos) como se muestra en la Figura 8.
de sistemas lgicos con equipos que tienen alimentarse con los 120V de AC. Su caracterstica ms importante es: Pequeo y econmico encapsulado DIP 6. Su tensin de aislamiento de 400 V la cual garantiza el aislamiento entre la red elctrica y el microcontrolador. Su Fototriac interno permite el control del triac. Cuenta con un detector de paso por cero interno, lo que permite reducir una cantidad de componentes externos.
15
Figura 10. LCD 2 x16. Este tipo puede manejar de una a dos lneas de 8 caracteres cada una, cuando la pantalla es mayor se utilizan otro driver (el HD44100) el cual aumenta la capacidad de este a ocho caracteres por lnea. El mdulo ms utilizado es el LCD LM016L, este utiliza un controlador HD44780 y un driver HD44100 el cual maneja una pantalla LCD de 2 lneas con 16 caracteres cada una. El microcontrolador HD44780 maneja una memoria RAM la cual sirve para almacenar los cdigos ASCII de hasta 80 caracteres alfanumricos, esta memoria funciona de manera circular para manejar los datos (En una memoria circular, una vez que se ha alcanzado la posicin final, la lectura o escritura de un nuevo dato se realiza en la posicin inicial de la memoria). Tambin el HD44780 contiene una memoria ROM la cual almacena la matriz de puntos de cada caracter y una CGRAM la cual permite definir caracteres que no estn diseados por el microcontrolador. Las caractersticas principales que maneja este tipo de LCD, se muestran a continuacin:
16
Se puede conectar a puertos paralelos de 4 u 8 bits. Almacenamiento de hasta 80 caracteres de 80 bytes cada una. Generador de caracteres en la ROM. Generador de caracteres en la RAM. Muy bajo consumo de energa (debido a que utiliza tecnologa CMOS). Circuito de Reset. Amplio repertorio de rdenes.
Para conectar el LCD con el microprocesador, nos tenemos que basar en la tabla que viene en la hoja de especificaciones del LCD para poder configurarlo en el microcontrolador PIC. Para conectar el LCD a microcontroladores de clase media se pueden utilizar los puertos paralelos A y B. Mediante el software adecuado se generan las seales con la secuencia correcta. Las seales a considerar son las siguientes: RS (Register Select, datos/control#) Esta seal indica al mdulo LCD, si la seal que se enva es un dato (RS=1) o una orden (RS=0). R/W# (Read/Write, lectura/escritura#) Esta seal indica si hay lectura (si est en 1) o en escritura (si est en 0) E (Enable, habilitar) Con esta seal en 1 se habilita el dispositivo. La captura de datos u rdenes por el mdulo LCD se realiza con el flanco de cada de esta seal. DB0 a DB7 (Data bus, bus de datos) Por estas lneas transitan las rdenes y los datos en ambas direcciones.
17
Tiempo de ejecucin: 1.64 s HOME Coloca el cursor en la posicin de inicio (direccin 0) y hace que el display comience a desplazarse desde la posicin original. El contenido de la memoria RAM de datos de visualizacin (DD RAM) permanecen invariables. La direccin de la memoria RAM de datos para la visualizacin (DD RAM) es puesta a 0. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1 X
Tiempo de ejecucin: 1.64 s ENTRY MODE SET Establece la direccin de movimiento del cursor y especifica si la visualizacin se va Desplazando a la siguiente posicin de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o CGRAM. Para visualizar normalmente poner el bit S a '0". Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 1/D S
Tiempo de ejecucin: 40 s
18
DISPLAY ON/OFF CONTROL Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este ltimo debe o no parpadear (B). Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B
Tiempo de ejecucin: 40 s CURSOR OR DISPLAY SHIFT Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualizacin DD RAM. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L X X
Tiempo de ejecucin: 40 s FUNCTION SET Establece el tamao de interface con el bus de datos (DL), nmero de lneas del display (N) y tipo de carcter (F). Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F X X
Tiempo de ejecucin: 40 s SET THE CG RAM ADDRESS El mdulo LCD adems de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir 4 u 8 caracteres grficos. La composicin de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carcter grfico definido por el usuario se compone de 16 u 8 bytes que se almacenan en sucesivas posiciones de la CGRAM.
19
Mediante esta instruccin se establece la direccin de la memoria CG RAM a partir de la cual se irn almacenando los bytes que definen un carcter grfico. Ejecutado este comando todos los datos que se escriban o se lean posteriormente, lo hacen desde esta memoria CG RAM. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 Direccin de la CG RAM
Tiempo de ejecucin: 40 s
SET THE DD ADDRESS Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada DD RAM para de aqu pasar a la pantalla. Mediante esta instruccin se establece la direccin de memoria DD RAM a partir de la cual se irn almacenando los datos a visualizar. Ejecutado este comando, todos los datos que se escriban o lean posteriormente los hacen desde esta memoria DD RAM. Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primer rengln y de la C0h a la CFh con los 16 caracteres del segundo rengln, para este modelo. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 Direccin de la DD RAM
Tiempo de ejecucin: 40 s READ BUSY FLAG ET ADDRESS Cuando el mdulo LCD est ejecutando cualquiera de estas instrucciones, tarda un cierto tiempo de ejecucin en el que no se le debe mandar ninguna otra instruccin. Para ello dispone de un flag llamado BUSY (BF) que indica que se est ejecutando una instruccin previa. Esta instruccin de lectura informa del estado de dicho flag adems de proporcionar el valor del contador de direcciones de la CG RAM o de la DDRAM segn la ltima que se haya empleado. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 20
BF
Tiempo de ejecucin: 40 s WRITE DATA TO CG OR DD RAM Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y que sern los diferentes cdigos ASCII de los caracteres a visualizar. Igualmente se escribe en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres grficos a gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento DD RAM o la de direccionamiento CG RAM. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 Cdigo ASCII o byte del carcter grfico
Tiempo de ejecucin: 40 s READ DATA FROM CG OR DD RAM Mediante este comando se lee de la memoria DD RAM los datos que haya almacenados y que sern los cdigos ASCII de los caracteres visualizados. Igualmente se lee de la memoria CG RAM los diferentes bytes con los que se ha confeccionado un determinado carcter grfico. El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento de la DD RAM o la de direccionamiento CG RAM. Cdigo: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 1 Cdigo ASCII o byte del carcter grfico
Tiempo de ejecucin: 40 s Abreviaturas Se listan a continuacin las abreviaturas empleadas en los cdigos anteriores y su significado: S = 1 Desplaza la visualizacin cada vez que se escribe un dato S = 0 Modo normal I/D = 1 Incremento del cursor 21
I/D = 0 Decremento del cursor S/C = 1 Desplaza el display S/C = 0 Mueve el cursor R/L = 1 Desplazamiento a la derecha R/L = 0 Desplazamiento a la izquierda BF = 1 Mdulo ocupado BF = 0 Mdulo disponible DL = 1 Bus de datos de 8 bits DL = 0 Bus de datos de 4 bits N = 1 LCD de 2 lneas N = 0 LCD de 1 lnea F = 1 Carcter de 5x10 puntos F = 0 Carcter de 5x7 puntos B = 1 Parpadeo de cursor ON C = 1 Cursor ON D = 1 Display ON X = Indeterminado
22
En la Figura 11, se muestra las terminales con que cuenta el pic 16F877A.
23
DESCRIPCION Entrada para el oscilador o cristal externo. Salida del oscilador. Este pin debe conectarse al cristal o resonador. En caso de usar una red RC este pin se puede usar como tren de pulsos o reloj cuya frecuencia es 1/4 de OSC1. Este pin es el reset del microcontrolador, tambin se usa como entrada o pulso de grabacin al momento de programar el dispositivo. Puede actuar como lnea digital de E/S o como entrada analgica del conversor AD (canal 0). Similar a RA0/AN0 Puede actuar como lnea digital de E/S o como entrada analgica del conversor AD (canal 2) o entrada negativa de voltaje de referencia. Puede actuar como lnea digital de E/S o como entrada analgica del conversor A/D (canal 3) o entrada positiva de voltaje de referencia. Lnea digital de E/S o entrada del reloj del timer 0. Salida con colector abierto. Lnea digital de E/S, entrada analgica o seleccin como esclavo de la puerta serie sncrona. Puerto B pin 0, bidireccional. Este pin puede ser la entrada para solicitar una interrupcin. Puerto B pin 1, bidireccional. Puerto B pin 2, bidireccional. Puerto B pin 3, bidireccional o entrada del voltaje bajo para programacin. Puerto B pin 4, bidireccional. Puede programarse como peticin de interrupcin cuando el pin cambia de estado. Puerto B pin 5, bidireccional. Puede programarse como peticin de interrupcin cuando el pin cambia de estado. Puerto B pin 6, bidireccional. Puede programarse como peticin de interrupcin cuando el pin cambia de estado. En la programacin serie recibe las seales de reloj. Puerto B pin 7, bidireccional. Puede programarse como peticin de interrupcin cuando el pin cambia de estado. En la programacin serie acta
MCLR/VPP/THV (1)
RA3/AN3/VREF+ (5)
RA4/T0CKI (6)
RB4 (25)
RB5 (26)
RB6/PGC( 27)
RB7/PGD (28)
24
como entrada de datos. RC0/T1OSO/T1CK1 (11) RC1/T1OSI/CCP2 (12) Lnea digital de E/S o salida del oscilador del timer 1 o como entrada de reloj del timer 1. Lnea digital de E/S o entrada al oscilador del timer 1 o entrada al mdulo captura 2/salida comparacin 2/ salida del PWM 2 E/S digital. Tambin puede actuar como entrada captura 1,/salida comparacin 1/ salida de PWM 1. E/S digital o entrada de reloj serie sncrona /salida de los mdulos SP1 e I2C. E/S digital o entrada de datos en modo SPI o I/O datos en modo I2C. E/S digital o salida digital en modo SPI. E/S digital o patita de transmisin de USART asncrono o como reloj del sncrono. E/S digital o receptor del USART asncrono o como datos en el sncrono. Las ocho patitas de esta puerta pueden actuar como E/S digitales o como lneas para la transferencia de informacin en la comunicacin de la puerta paralela esclava. Solo estn disponibles en los PIC 16F874/7. E/S digital o seal de lectura para la puerta paralela esclava o entrada analgica canal 5. E/S digital o seal de escritura para la puerta paralela esclava o entrada analgica canal 6. E/S digital o seal de activacin/desactivacin de la puerta paralela esclava o entrada analgica. Tierra. Fuente (5V).
RC2/CCP1(13)
RC3/SCK/SCL (14)
RC7/RX/DT (18)
RE0/RD#/AN5 (8)
RE1/WR#/AN6 (9)
datos en forma separada. En la Figura 12 se muestra la arquitectura Von Neumann frente a la Harvard: Arquitectura de Von Neumann: Bus de direcciones INSTRUCCIONES UCP (PROCESADOR)
Bus de datos
DATOS
INSTRUCCIONES
UCP (PROCESADOR)
DATOS
Bus de datos
bus de datos
Figura 12. Arquitecturas Neumann y Harvard. En la Figura 12 se observa ambas arquitecturas son bloques de memoria, cada bloque tiene posiciones y cada posicin un valor. Para recoger o dejar un valor en una determinada posicin es necesario primero indicar cul es la direccin a leer o escribir en la memoria, en consecuencia hay un grupo de lneas que nos permite hacer esa funcin conocida como el bus de direcciones, tambin existe un bus de datos que son lneas paralelas por donde los valores de cada direccin. En el caso de la arquitectura Von Neumann se puede apreciar que existe un nico bus de direcciones y de datos. Como se observa cada posicin de memoria tiene una direccin a su vez la memoria se divide en memoria de programa (conocida como ROM) y memoria de datos (conocida como RAM). En el caso de la arquitectura Harvard tiene dos bloques de memoria separados. Un bloque para instrucciones y otro para datos. Tiene dos buses independientes de direcciones el bus de instrucciones solo tiene una direccin, a diferencia del bus de datos que tiene la caracterstica de ser bidireccional.
26
La arquitectura Harvard tiene un mejor ancho de banda porque el bus de datos es de 14 bits en comparacin con el bus de 8 bits de la arquitectura Von Neumann. Por lo tanto en una sola lectura puede llevar una mayor cantidad de datos. 7.3 Arquitectura interna del PIC 16F877A Anteriormente se ha mencionado que el microcontrolador posee varios elementos en forma interna: el procesador, memoria de programa, memoria de datos, perifricos, contadores. En la Figura 13 se observa el diagrama de bloques del PIC16F877A. En el diagrama podemos identificar la memoria del Programa en la parte superior izquierda con 8Kposiciones por 14 bits, tambin esta presenta la memoria de datos (RAM) de 368 posiciones por 8 bits. La memoria EEPROM 256 posiciones x 8 bits. El procesador propiamente dicho est formado por la ALU (unidad aritmtica lgica) el registro de trabajo W. Tenemos los perifricos I/O Port A, B, C, D, E el TMR0 (temporizador contador de eventos), TMR1 y TMR2 entre otros mdulos. Tambin contamos con un registro de instruccin que se carga cada vez que la ALU solicita una nueva instruccin a procesar. En la parte intermedia encontramos algunos bloques como son el Status Reg. que es el registro de estado encargado de anotar el estado actual del sistema, cada vez que se ejecuta una instruccin se llevan a cabo cambios dentro del microcontrolador como desborde, acarreo, etc. Cada uno de esos eventos est asociado a un bit de este registro. Existe un registro de vital importancia que se llama el Program Counter o contador de programa este registro indica la direccin de la instruccin a ejecutar. El registro en cuestin no es necesariamente secuencial, esto es no se incrementa necesariamente de uno en uno ya que puede darse el caso en el que salte dependiendo si hay una instruccin de bifurcacin de por medio o puede haber alguna instruccin de llamada a funcin y/o procedimiento. Tambin observamos el bloque de la pila, la funcin de la pila es ser un buffer temporal en el que se guarda el contador de programa cada vez que se suscita una llamada a un procedimiento y/o funcin (incluyendo interrupciones). Por tanto el nivel de anidamiento es de hasta 8 llamadas. Tambin est presente el FSR reg. Que es el registro que cumple una funcin similar a la del contador de programa direccionando en este caso la RAM, el FSR es un puntero a una direccin de la RAM. La aparicin de multiplexores se debe a que los datos pueden tener diferentes fuentes. Cuando se programa el microcontrolador se debe tener en mente que es lo que l hace. Cuando lo prendemos asume un valor por defecto, el contador de programa asume la posicin cero por tanto el microcontrolador toma la instruccin que se encuentra en esa posicin en la memoria de programa y la ejecuta. Al momento de ejecutarla procede a informar si se ha llevado a cabo alguna operacin en particular registrndola en el registro de estado (STATUS). Si la instruccin es de salto o bifurcacin evaluar las condiciones para saber si continua o no con la siguiente instruccin, en caso que no sea as saltar a otra posicin de memoria. En caso el programa haga un llamado a una funcin guardar en la pila el valor del 27
contador de programa ejecutar la rutina y al momento que termina restituir el valor correspondiente para seguir con la siguiente instruccin.
28
29
30
31
Una vez incrementado la temperatura y permanecer dentro del intervalo de la temperatura ideal el sistema de control deja de funcionar permaneciendo desactivado como se puede apreciar en la figura 16, los diodos Led se encuentran apagados se registra en esos momentos una temperatura de 25C.
Figura 16. El sistema se encuentra desactivado. Cuando se registra una temperatura mayor a los 28C, el sistema de control activar el ventilador para disminuir la temperatura. Como se muestra en la figura 17. El diodo Led en color rojo indica que se encuentra en funcionamiento el ventilador, pues se registra en esos momentos una temperatura de 29C como se puede visualizar en el display.
32
Figura 17. El sistema de control registra una temperatura de 29C. A continuacin se muestra el programa en ensamblador del cdigo que se realiz para el diseo del proyecto.
ORG 0x00 GOTO EMPEZAR ORG 0x05 EMPEZAR BSF STATUS,RP0 ;banco 1 BSF TRISA,0 ;entrada de sensor BSF TRISA,3 ;voltaje Ref=5.1 CLRF TRISB MOVLW b'11111100' MOVWF TRISC ;salidas para LEDs CLRF TRISD BSF ADCON1,0 ;para permitir ingreso de Vref=5.1V BCF OPTION_REG,7 ;resistencias Pull Up activada BCF STATUS,RP0 ;banco_0 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;CONFIGURACION DEL CONVERTIDOR A/D ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOVLW B'01000001' ;RA0=entrada de sensor MOVWF ADCON0 CLRF PORTC ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% INICIO BSF ADCON0,GO ;INICIAR CONVERSION BTFSC ADCON0,GO GOTO $-1 ; MOSTRAR EN LCD CALL RETARDO ; MOVF ADRESH,0 ;W=Temperatura CALL inicio_LCD ; inicio de LCD MOVF ADRESH,0 CALL Hex_Ascii ;conversin de HEXADECIMAL a ASCII MOVLW 'T' CALL EnviaCarLCD MOVLW '.' CALL EnviaCarLCD MOVLW 'A' CALL EnviaCarLCD MOVLW '.' CALL EnviaCarLCD MOVLW 'U' CALL EnviaCarLCD MOVLW 'A' CALL EnviaCarLCD MOVLW 'M' CALL EnviaCarLCD 34
MOVLW '-' CALL EnviaCarLCD MOVLW 'I' CALL EnviaCarLCD MOVLW '=' CALL EnviaCarLCD MOVLW ' ' CALL EnviaCarLCD MOVF ASCII_H,0 ; enva las centenas de temp. CALL EnviaCarLCD MOVF ASCII_M,0 ; enva las decenas de temp. CALL EnviaCarLCD MOVF ASCII_L,0 ; enva las unidades de temp. CALL EnviaCarLCD MOVLW 0xDF ; smbolo de grados celsius CALL EnviaCarLCD MOVLW 'C' CALL EnviaCarLCD MOVLW DISP_ON_NOCURSOR ; apaga el cursor del LCD CALL EnviaCmdLCD CALL COMPARAR ;checa el rango de temperatura CALL RETARDO ;retardo de 20ms para el ADC CALL RETARDO CALL RETARDO MOVLW .22 ;TEMP. INICIAL DEL S.POINT BAJO MOVWF TEMPERATURA_L MOVLW .28 ;TEMP. INICIAL DEL S.POINT ALTO MOVWF TEMPERATURA_H CALL MUESTRA.S.POINT GOTO PRINCIPAL ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;"TEMPERATURA S.POINT": MUESTRA LA TEMPERATURA S.POINT Y LA ;TEMPERATURA ACTUAL GUARDADO EN TEMPERATURA Y TEMP_ACTUAL ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MUESTRA.S.POINT MOVLW DISP_LINEA2 ; establece el cursor en 2a fila CALL EnviaCmdLCD MOVLW 'L' CALL EnviaCarLCD MOVLW '=' CALL EnviaCarLCD MOVLW .50 SUBWF TEMPERATURA_L,W BTFSS STATUS, Z GOTO FINAL2 MOVLW .99 GOTO IMPRIME2 FINAL2 MOVF TEMPERATURA_L,W IMPRIME2 35
CALL MOVF ADDLW CALL MOVF ADDLW CALL MOVF ADDLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW SUBWF BTFSS GOTO MOVLW GOTO FINAL1 MOVF IMPRIME1 CALL MOVF ADDLW CALL MOVF ADDLW CALL MOVF ADDLW CALL MOVLW CALL MOVLW CALL RETURN PRINCIPAL BTFSC GOTO GOTO
BIN_A_BCD CENTENAS,W '0' EnviaCarLCD DECENAS,W '0' EnviaCarLCD UNIDADES,W '0' EnviaCarLCD 0XDF EnviaCarLCD 'C' EnviaCarLCD 0X20 EnviaCarLCD 0X20 EnviaCarLCD 'H' EnviaCarLCD '=' EnviaCarLCD .50 TEMPERATURA_H,W STATUS,Z FINAL1 .99 IMPRIME1 TEMPERATURA_H,W ; ESTA FUNC IMPRIME LA TEMP ACTUAL BIN_A_BCD CENTENAS,0 '0' EnviaCarLCD DECENAS,0 '0' EnviaCarLCD UNIDADES,0 '0' EnviaCarLCD 0XDF EnviaCarLCD 'C' EnviaCarLCD PORTB,2 S.POINT INICIO 36
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;RUTINA PARA GENERAR EL RETARDO DE 20ms. ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% RETARDO ; 20ms MOVLW .10 MOVWF 20H LAZO DECFSZ 20H,1 GOTO LAZO RETURN ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;RUTINA PARA HACER LA COMPARACION ENTRE LAS TEMP. INF Y SUP ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COMPARAR MOVF TEMPERATURA_L,0 DECF TEMPERATURA_L,0 MOVWF T_1 MOVF ADRESH,0 ;W=TEMPERATURA ACTUAL SUBWF T_1,0 ;W=T_1-TEMPERATURA BTFSC STATUS,C ;C=0? (TEMP>T_1) GOTO LED_1 ;NO GOTO SIGUIENTE ;SI LED_1 MOVLW B'00000001' MOVWF PORTC RETURN SIGUIENTE MOVF TEMPERATURA_H,0 MOVWF T_2 MOVWF TEMPERATURA_H MOVF ADRESH,0 ;W=TEMPERATURA ACTUAL SUBWF T_2,0 ;W=T_2-TEMPERATURA BTFSC STATUS,C ;C=0? (TEMP>T_2) GOTO LED_2 ; NO GOTO LED_3 ; SI LED_2 MOVLW B'00000000' MOVWF PORTC RETURN LED_3 MOVLW B'00000010' MOVWF PORTC RETURN ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;RUTINA PARA CONVERTIR DE HEXADECIMAL A ASCII ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Hex_Ascii ;cargar en W el dato hex. MOVWF HEXADECIMAL CLRF ASCII_H ;Para BCD D'0' CLRF ASCII_M ;Para BCD D'0' 37
CLRF ASCII_L ;Para BCD D'0' Centenas MOVLW d'100' ;D'100' --> W SUBWF HEXADECIMAL,W ;HEXADECIMAL - D'100' --> W BTFSS STATUS,C ;es menor que D'100' ? GOTO Decenas ;Si MOVWF HEXADECIMAL ;Salva el resto INCF ASCII_H,F ;Inc. el cont. de centenas BCD GOTO Centenas ;Vuelve por otros D'100' Decenas MOVLW d'10' ;D'10' --> W SUBWF HEXADECIMAL,W ;HEXADECIMAL - D'10' --> W BTFSS STATUS,C ; es menor que D'10' ? GOTO Unidades ;Si MOVWF HEXADECIMAL ;Salva el resto INCF ASCII_M,F ;Inc. el cont. de decenas BCD GOTO Decenas ;Vuelve por otros D'10' Unidades MOVF HEXADECIMAL,W ;El resto pertenece MOVWF ASCII_L ;a las unidades BCD CLRF HEXADECIMAL ;en cero el registro HEXADECIMAL Bcd_A_Ascii MOVLW H'30' ;H'30' --> W IORWF ASCII_L,F ;Convierte de BCD a ASCII IORWF ASCII_M,F ;Convierte de BCD a ASCII MOVF ASCII_H,F ;ASCII_H --> F BTFSC STATUS,Z ;? ASCII_H es D'00' ? GOTO Espacio ;Si MOVLW H'30' ;H'30' --> W IORWF ASCII_H,F ;Convierte de BCD a ASCII RETURN ; Espacio MOVLW '0' ;A' ' --> W MOVWF ASCII_H ;A' ' --> ASCII_H RETURN ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;ESTA RUTINA SOLO GENERA LA VARIANZA DEL S.POINT ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% S.POINT CALL RETARDO BTFSC PORTB,2 GOTO $-1 SALTO BTFSC PORTB,0 GOTO MENOS BTFSC PORTB,1 GOTO MAS BTFSC PORTB,2 GOTO FIN.S.POINT 38
GOTO MENOS CALL DECF CALL BTFSC GOTO GOTO MAS CALL INCF CALL BTFSC GOTO GOTO FIN.S.POINT CALL BTFSS GOTO GOTO RETURN
SALTO RETARDO TEMPERATURA_L,F MUESTRA.S.POINT PORTB,0 $-1 SALTO RETARDO TEMPERATURA_L,F MUESTRA.S.POINT PORTB,1 $-1 SALTO RETARDO PORTB,2 PRINCIPAL FIN.S.POINT
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;PROGRAMA QUE CONVIERTE UN NUMERO DECIMAL A BCD ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BIN_A_BCD CLRF CENTENAS CLRF DECENAS MOVWF UNIDADES BCD_RESTA MOVLW .10 SUBWF UNIDADES,W BTFSS STATUS,C GOTO BIN_BCD_FIN BCD_DECENA MOVWF UNIDADES INCF DECENAS,F MOVLW .10 SUBWF DECENAS,W BTFSS STATUS,C GOTO BCD_RESTA RETURN BIN_BCD_FIN SWAPF DECENAS,W ;En el nibble alto estan las decenas. ADDWF UNIDADES,W ;En el nibble bajo estan las unidades MOVWF PORTB ;Se visualiza en el puerto de salida. ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% INCLUDE <LCD.ASM> INCLUDE <RETARDO.ASM> END 39
RS RW E 4 5 6
1 2 3
RV2
10k
U2(+VS)
U2
13 14 1 2 2 3 4 5 6 7 8 9 10
U1
OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30
10.0
VOUT
LM35
B1
2.55
RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877
7 8 9 10 11 12 13 14
D0 D1 D2 D3 D4 D5 D6 D7
R1
330
CALENTADOR
LED-BLUE
R2
330
VENTILADOR
LED-BLUE
Fig. 18 Conexin del PIC 16F877A en el simulador PSPICE En esta figura se muestran las conexiones que se realizaron en el simulador para el funcionamiento del dispositivo. El LCD se conect al puerto D del microprocesador, la etapa de potencia est en los pines RC0 y RC1 respectivamente y el sensor se conect a la entrada asignada por el microprocesador para el convertidor analgico-digital (o sea RA0).
9.0 Conclusiones
Como se pudo observar los objetivos del proyecto se cumplieron pues logramos desarrollar un sistema digital capaz de monitorear y controlar los niveles de temperatura en un invernadero. Cabe mencionar que cuando estuvimos llevando a cabo el diseo nos encontramos con detalles lgicos que no estaban contemplados o que a simple vista no se detectaron pero que gracias al trabajo en equipo pudimos resolver estos detalles sin demorar 40
demasiado tiempo. La parte de la simulacin fue muy importante, pues al comenzar con el cdigo y cuando aun no contbamos con capital para poder comprar los materiales necesarios compilbamos una y otra vez haciendo uso de los recursos que nos ofrece el simulador PROTEUS. Como se mencion el sistema consisti en una red de sensores en paralelo el cual tenan la finalidad de sensar la temperatura en distintos puntos del invernadero. Por ltimo podemos agregar que si hubisemos contado con el suficiente capital o el apoyo de algn dueo de un invernadero el proyecto lo hubiramos implementado de manera permanente en dicha instalacin. Ahora solo falta agradecer al Profesor Fausto Casco por el empeo y la atencin que tuvo con nosotros al disear, construir e implementar este proyecto.
10.0 Bibliografa
Microchip PIC16F877A Data Sheet. 2001. (Manual de referencia de la familia de los PIC 16F877A). http://www.microchip.com REVISTA SABER ELECTRONICA TODO SOBRE EL PIC 16F877A APUNTES DE SISTEMAS DIGITALES I,II Y III PROF. MOISES QUEZADA NAQUID UAM-I Manual de simulador PROTEUS Manual de operacion MPLAB PC ARCHITECTURE from ASSEMBLY LANGUAJE to C DAVID HERGERT, NANCY THIBEAULT Ed. Prentice Hall, 1998. DIGITAL AND MICROPROCESSOR FUNDAMENTALS Theory and Applications WILLIAM KLEITZ Ed. Prentice Hall, 1997 Specifications for lcd module. MicroElectronics Corporation. http://www.microelect.com MC78XX/LM78XX Data Sheet. Fairchild Semiconductor. http://www.fairchildsemi.com Keypads Data Sheet. Grayhill Inc. http://www.grayhill.com http://www.electronicafacil.net/circuitos/
41