You are on page 1of 55

Proyecto de Ingeniera

Electrnica I y II

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.
Objetivos e Introduccin. .. . . . . . . . . . . . . . . . . . . . . . .
...........................4
1.1
Objetivos Generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................4
1.2
Objetivos Particulares. . . . . . . . . . . . . . . . . . . . . . . . . . .
...........................4
1.3
Introduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .4
2.
Antecedentes Tericos. . . . . . . . . . . . . . . . . . . . . . . . . .
...........................5
2.1
Microcontroladores PIC.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .5
2.2
Familias de microcontroladores PIC. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .5
2.3
Microcontroladores de gama baja. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .5
2.4
Microcontroladores de gama media. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .6
2.5
Microcontroladores de gama alta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .6
2.6
Unidad aritmtica y lgica y el registro W. . . . . . . . . . . . . . . . . . . . . . .
...............7
3.0
Seales de entradas y salidas analgicas. . . . . . . . . . . . . . . . . . .
...................7
3.1
Funciones bsicas en los sistemas de medida y control. . . . . . . . . . .
...... .... . ...7
3.2
Mdulo de conversin A/D de 10 bits. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .8
3.3
Arquitectura del mdulo de conversin A/D. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .9
4.0
El Sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .11

4.1
Tipos de sensores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 11
4.2
Caractersticas y manipulacin de la seal enviada por el sensor. . . .
. . . . . . . . . . . . . . .12
4.3
El sensor de temperatura LM35DZ. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .12
5.0
Etapa de potencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .13
5.1
Optoacopladores y funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .13
5.2
Tipos de Optoacopladores. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3
El Triac y su funcionamiento. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.4
Control mediante el optoacoplador MOC 3031. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .14

5.5
Funcionamiento etapa de potencia. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .15
6.0
Pantalla de cristal lquido LCD 16 x 2. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 16
6.1
Caractersticas generales de un LCD. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .16
6.2
Modos de operacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
6.3
Comandos de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 18
7.0
Microcontrolador PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .22
7.1
Caractersticas del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 23
7.2
Arquitectura del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 25
7.3
Arquitectura Interna del PIC 16F877A . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 27
7.4
Organizacin de la memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 29
8.0
Desarrollo del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
8.1
Implementacin fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 31
8.2
Cdigo generado en MPLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .33
8.3
Esquema del circuito de diseo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .40
9.0
Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 40
10.0
Bibliografa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 41

1.0 Objetivos e Introduccin


1.1 Objetivos Generales
Desarrollar un sistema digital que sea capaz de monitorear y controlar
los niveles de temperatura en un invernadero utilizando el microcontrolador
PIC16F877A de la familia Microchip.

1.2 Objetivos particulares


El sistema digital realizar el monitoreo mediante una red de sensores
de temperatura analgicos los cuales estarn conectados en paralelo, los
datos recolectados sern procesados al mdulo convertidor analgico digital
del microcontrolador el cual se encargar de digitalizar la informacin, una
vez digitalizados los datos se har una comparacin con un rango de
temperatura establecido para as controlar una etapa de potencia que
habilitar un sistema de calefaccin o de enfriamiento segn sea el caso que
se requiera para estabilizar los niveles de temperatura.

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
confgurar 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 especifcaciones 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.

2.0 Antecedentes Tericos


2.1 Microcontroladores PIC
Un microcontrolador es un circuito integrado programable que est
integrado por una serie de elementos necesarios para controlar el
funcionamiento de una tarea determinada, como por ejemplo el control de
una lavadora, una impresora, un sistema de alarma, el control de las bolsas
de aire (airbags) de un automvil, en equipos de comunicaciones y de
telefona en instrumentos electrnicos, en equipos mdicos e industriales, en
juguetes etc. Un sistema con microcontrolador dispone de una memoria
donde se almacena el programa es decir, una serie de instrucciones que
gobierna el funcionamiento del mismo que, una vez programado y
confgurado, solo sirve para realizar la tarea asignada. La utilizacin de un
microcontrolador en un circuito reduce notablemente el tamao y el
nmero de averas y el volumen y el peso de los equipos entre otras
ventajas.
En el mercado hay una gran cantidad de ellos, con multitud de
posibilidades y caractersticas. Cada tipo de microcontrolador sirve para
una serie de casos y es el diseador del sistema quien debe decidir cul es
el microcontrolador adecuado a sus necesidades.

2.2 Familias de microcontroladores PIC


Los microcontroladores se clasifcan de acuerdo al nmero de
gama instrucciones, en tres
s:

Gama baja: microcontroladores con instrucciones de 12 bits.

Gama media: microcontroladores con instrucciones de 14 bits.

Gama alta: microcontroladores con instrucciones de 16 bits.

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.

2.3 Microcontroladores de gama baja

Los microcontroladores PIC de gama baja disponen de un


repertorio
de
33 instrucciones de 12 bits cada una. La memoria de
programa tiene una capacidad de hasta 2k

(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

2.4 Microcontroladores de gama media


Estos dispositivos tienen un repertorio de 35 instrucciones de 14 bits
cada una. La memoria de programa puede tener hasta 8k (8192) palabras de
14 bits y se organiza en pginas de 2k (2048) palabras cada una. La
memoria da datos est formada por registros de 8 bits y est organizada
en bancos de 120 registros cada uno, con un mximo de cuatros bancos.
Tambin poseen memoria EEPROM de datos. Todos tienen una pila de 8
niveles, donde se almacenan direcciones de programa.
Los microcontroladores PIC de gama media tienen una gran variedad
de dispositivos de entrada y salida. Cuenta con varios puertos paralelos
(puertos A, B, C, D, etc.) para la comunicacin en paralelo con dispositivos
externos, cada uno de estos puertos con caractersticas especficas.
Disponen tambin de hasta tres temporizadores, dos mdulos de captura,
comparacin y modulacin de ancho de pulso (PWM), denominados CCP,
varios tipos de puertos serie para la comunicacin asncrona y sncrona, un
convertidor A/D de 10 bits asociado a un multiplexor con varias entradas
analgicas.
Los PIC de gama media tienen las siguientes familias:

Los PIC16, excepto los PIC16X5xx que son de gama baja.

Los PIC12X6xx, con encapsulado de 8 terminales.

2.5 Microcontroladores de gama alta


Los microcontroladores de gama alta se distinguen por sus
instrucciones de 16 bits, mayor capacidad de pila y un sistema de
interrupciones ms complejo que incluye, adems de las interrupciones
internas de los dispositivos integrados en el microcontrolador, varias
entradas para interrupciones externas entre otras caractersticas. Finalmente
el nmero de dispositivos de entrada y salida es bastante amplio que el de
los PIC de gama media.

Los PIC de gama alta estn disponibles en dos familias, que


comprenden:

Los PIC17

Los PIC18

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.

2.6 Unidad aritmtica y lgica y el registro W


Uno de los componentes fundamentales del CPU del microcontrolador
es la unidad aritmtica y lgica (ALU: Aritmetic and Logic Unit). Tal que
como indica su nombre, la ALU realiza las operaciones aritmticas y lgicas
previstas en el repertorio de instrucciones del microcontrolador. La ALU tiene
asociado un registro que almacena temporalmente uno de los datos que
interviene en la operacin de la ALU y eventualmente el resultado de la
operacin realizada por este registro se denomina Registro de Trabajo (W:
Working Register). Tambin se asocian a la ALU algunos bits que indican
algunas caractersticas del resultado de la operacin (si el resultado es cero,
si se ha producido acarreo o prstamo, el resultado es positivo o negativo,
etc). Estos bits indicadores usualmente forman parte del llamado registro de
estado (STATUS).

3.0 Seales de entradas y salidas analgicas


Las seales analgicas tienen informacin de amplitud o duracin, de
modo que para procesarlas con circuitos digitales, primero hay que
digitalizarlas esto exige adaptar sus caractersticas a las de los circuitos
digitales.

3.1 Funciones bsicas en los sistemas de medida y control


Las seales que se desea medir son magnitudes fsicas o qumicas no
elctricas. Las magnitudes que se desea controlar (como temperatura de un
cuarto, la humedad de la tierra etc.) o seales empleadas para comunicar un
resultado de medida al usuario. Las funciones bsicas en un sistema de
medida son: detectar la magnitud (con un sensor), procesar la informacin y
comunicarla al usuario o a una computadora donde se van registrando
los eventos. Cuando el sistema es electrnico, a estas tres funciones hay que
aadirle el suministro de una alimentacin elctrica y el control u

organizacin de las funciones, como se observa en la fgura 1. Si el


objetivo del sistema es controlar una magnitud, tras la medida y el

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.

Figura 1. Diagrama a bloques de la funcin bsica del sistema de


medida

3.2 Mdulo de conversin A/D de 10 bits


Generalmente las seales que existen en la naturaleza son de tipo
analgico, es decir son seales continuas en el tiempo, por ejemplo las
seales elctricas, de temperatura, etc. Los sistemas digitales son sistemas
discretos, los que se utilizan actualmente en la electrnica son binarios, es
decir solamente se toman dos valores, 0 (cero volts) y 1 (cinco volts). Como
se observa, debe existir una conversin de analgico a digital para poder
procesar la informacin. El teorema de muestreo nos dice como hacer esta
conversin, o sea nos marca un lmite el cual no debemos pasar ya que si no
lo cumplimos podramos perder nuestra seal con la cual estemos
trabajando.
La conversin analgico-digital (A/D) consiste en la comparacin de
una tensin desconocida VX con una tensin de referencia, Vref. En la
conversin A/D directa, consiste en la comparacin entre el VX con
N

fracciones de Vref de valor L x Vref/2 , donde L y N son nmeros enteros.


Esta comparacin se puede hacer de forma simultnea con todos los valores
entre 0V y Vref, o de forma sucesiva con valores fraccionarios elegidos en un
orden de forma que agilice el proceso de decisin (convertidores de
aproximaciones sucesivas). Los CAD integrados en los microcontroladores
suelen ser de aproximaciones sucesivas. La caracterstica de transferencia
de la conversin se muestra en la fgura 2.

Proyecto de Ingeniera Electrnica I y II

Figura 2. Proceso de conversin analgica-digital directa.

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.

3.3 Arquitectura del mdulo de conversin A/D.


Los microcontroladores PIC de gama media tienen convertidores
A/D de aproximaciones sucesivas, normalmente de 10 bits, su estructura
interna simplificada a bloques se muestra en la fgura 3. Los componentes
principales de este mdulo son:

Multiplexor analgico de hasta 8 canales de entrada.

Amplifcador de muestreo y retencin.

Convertidor A/D de aproximaciones sucesivas de 10 bits.

Registros para controlar el mdulo (ADCON y ADECON1) y para


almacenar el resultado de la conversin A/D (ADRESH y ADRESL).

Proyecto de Ingeniera
Electrnica I y II
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 amplifcador de muestreo y retencin est compuesto bsicamente
por un condensador (sin amplifcadores 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 justifcados a
la izquierda o a la derecha como se muestra en la fgura. 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 fja.
Con los bits ADS1 Y ADCS0 del registro ADCON0 se selecciona la fuente del

Proyecto de Ingeniera
Electrnica I y II
reloj y se programa el divisor de frecuencia si la fuente es el oscilador
principal del microcontrolador.

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 fnaliza 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.

Figura 4. Registros de configuracin del convertidor para el


PIC.

En el registro ADCON1, el bit ADFM determina la justifcacin a la


derecha o a la izquierda del resultado de la conversin A/D en los registros
ADRESH y ADRESL. Los bits PCFG3: PCFG0 confguran 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 cuantifcar la informacin recabada.

4.1 Tipos de sensores

Existe una gran variedad de estos dispositivos segn las necesidades


a que se les quiera dar por ejemplo: sensores fotoelctricos que se basan
en la utilizacin de fuentes luminosas

(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.

4.2 Caractersticas y manipulacin de la seal


enviada por el sensor
Las seales de salida de los sensores son por lo general analgicas y
de baja amplitud. Existen
algunos
sensores
digitales,
como
los
codificadores de posicin ofrecen una salida digital, que si bien tiene los
niveles adecuados se pueden conectar directamente a un puerto de entrada
del microcontrolador. Para digitalizar las seales analgicas se utiliza un
convertidor analgico-digital (CAD) (Figura 5). Para adaptar la seal de salida
de sensor al rango de amplitudes de entrada del CAD, se emplea un
acondicionador de seal y, en algunos casos, un procesador analgico por
ejemplo, para obtener un valor eficaz de la seal antes de digitalizar, o para
desmodular su amplitud. La salida del CAD es procesada para obtener la
informacin deseada, por ejemplo el valor medio de una seal durante
un cierto tiempo, o bien combinando la informacin de varios sensores
para tomar una decisin, por ejemplo sobre la presencia o ausencia de un
intruso en un recinto.

Figura 5. Etapa para la adquisicin de seales.

4.3
Sensor
temperatura LM35DZ

de

El sensor LM35DZ utilizado para monitorear la temperatura del


invernadero tiene una precisin calibrada de 1 Centgrado y un rango de
lectura a partir de los 0C hasta + 100C.

Existen diversos tipos de encapsulados, en nuestro caso utilizamos el


encapsulado tipo TO-92 como se muestra en la fgura 6, es un
encapsulado de plstico similar a un tpico transistor con tres terminales
dos de ellas para alimentarlo (+Vs y GND) y la tercera terminal es la que
enva o entrega un valor de tensin (Vout). Esta tensin de salida es
linealmente

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.

Figura 6. Sensor LM35DZ

5.0 Etapa de
potencia
Comnmente utilizamos voltajes de alta tensin (CA). Estos voltajes no
podemos aplicar directamente al microcontrolador pues lo daara; por lo
que es necesario aislarlo elctricamente mediante un dispositivo
denominado optoacoplador.

5.1 Optoacopladores y funcionamiento


Los Optoacopladores son dispositivos acopladores pticos, su
funcionamiento se basa en el empleo de un haz de luz, cuando se aplica un
voltaje VIN circula una corriente por el LED (Diodo Emisor de Luz) que se
encuentra dentro del encapsulado del opto acoplador emitiendo un haz de
luz que incide sobre el transistor y lo satura. Cuando no se aplica voltaje al
LED se encuentra apagado bloqueando el transistor. Es una opcin utilizar
estos dispositivos pues tienen una mayor velocidad de conmutacin sin
causar rebotes en comparacin de los dispositivos rels.

5.2 Tipos de Optoacopladores


Existe una gran variedad de Optoacopladores segn las necesidades
por ejemplo:

Fototransistor: Est compuesto por un optoacoplador con una etapa


de salida formada por un transistor BJT. Por ejemplo el 4N25 y el
4N35.

Fototriac: Se compone por un optoacoplador con una etapa de salida


compuesta por un Triac.

Fototriac de paso por cero: Optoacoplador con una etapa de salida


por un triac de cruce por cero. El circuito interno de cruce por cero
conmuta al triac en los cruce por cero de la corriente alterna. Por
ejemplo tenemos al MOC3031, 3041.

Opto tiristor: Diseado para el preciso aislamiento de la red


elctrica y seal lgica.

5.3 El Triac y su funcionamiento


El Triac (Tiristor AC conductor) es un semiconductor capaz de bloquear
tensin y conducir corriente en ambos sentidos entre las terminales
principales MT1 y MT2 son dispositivos de conmutacin hace la funcin de
interruptor (switch) rpidos, silenciosos sin partes electromecnicas con la
cualidad que se pueden controlar electrnicamente. Su estructura bsica se
muestra en la fgura 7. Dado que el Triac es un dispositivo bidireccional, no
tiene polaridad en sus terminales. Si la terminal MT2 es positiva con
respecto a la terminal MT1, se activar al aplicar una seal negativa en la
compuerta (Gate), entre la compuerta y la terminal MT1.

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.

Figura 8. Modos de operacin


del Triac

5.4 Control mediante Optoacoplador MOC3031


Para el aislamiento entre el microcontrolador PIC16F877A y la carga
motor de AC de

120 V utilizamos el optoacoplador modelo MOC3031, que es un circuito


integrado que incluye diodo LED que controla al Fototriac. Este dispositivo
est diseado para usarse como interface

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.

5.5 Funcionamiento etapa de potencia


Cuando en la terminal de puerto mande una seal TTL (5 V) har
circular una corriente de unos 15 mA por el diodo LED del MOC3031, esta
emitir luz, lo que provocar que el Fototriac entre en conduccin en el
siguiente paso por cero de la tensin de red. Una vez que el Fototriac entre
en conduccin se comporta como un interruptor cerrado que enciende la
carga.
Cuando en la terminal del puerto mande una seal TTL (0 V) el LED
del MOC3031 se apaga. En el siguiente paso por cero de la tensin de red,
el triac dejar de conducir comportndose como un interruptor abierto de tal
forma que la carga dejara de recibir corriente.
La resistencia R1 de 220 conectada al nodo del LED (pin 1 del MOC
3031) garantiza
una corriente de 15 mA.
Cuando en Fototriac entra en conduccin, la resistencia R2 de 180
limita la corriente que pasa por el Fototriac drena la corriente a travs de la
terminal (G) del triac para ste entre en conduccin.

Figura 9. Circuito de etapa de potencia.

6.0 Pantalla de cristal lquido (LCD 2x16)


Las pantallas de cristal lquido LCD o display LCD para mensajes
(Liquid Cristal Display) tienen la capacidad de mostrar cualquier carcter
alfanumrico, permitiendo representar la informacin que genera cualquier
equipo electrnico de una forma fcil y econmica.

6.1 Caractersticas generales de un LCD


Estos dispositivos electrnicos se utilizan para visualizar cualquier
tipo de informacin de un sistema. Los LCD ms utilizados son de cristal
lquido y constan bsicamente de una pantalla o visualizador y un
microcontrolador el cual se encarga de su funcionamiento en hardware y
software. La pantalla consta de dos lneas por el cual pueden pasar
caracteres alfanumricos por lnea. El controlador comnmente utilizado es
el HD44780 (Diseado por Renesas, antes Hitachi).

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 fnal, 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 defnir
caracteres que no estn diseados por el microcontrolador.
Las caractersticas principales
se muestran a continuacin:

que

maneja este tipo

de

LCD,

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 especifcaciones del LCD para poder
confgurarlo 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.

6.2 Modos de
operacin
El LCD tiene 3 modos de funcionamiento principales:
Modo Comando
Modo Carcter o Dato
Modo de lectura del Busy Flag o LCD Ocupada

6.3 Comandos de control


Consisten en diferentes cdigos que se introducen a travs del bus de
datos del mdulo

LCD
:

CLEAR DISPLAY
Borra el mdulo LCD y coloca el cursor en la primera posicin
(direccin 0). Pone el bit
I/D en
" 1" por defecto.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0

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

Tiempo de ejecucin: 1.64 s


ENTRY MODE SET
Establece la direccin de movimiento del cursor y especifca 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

Tiempo de ejecucin: 40 s

1 1/D

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

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

S/C R/L

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

DL

Tiempo de ejecucin: 40 s
SET THE CG RAM ADDRESS
El mdulo LCD adems de tener defnidos todo el conjunto de
caracteres ASCII, permite al usuario defnir 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 defnido por el
usuario se compone de 16 u 8 bytes que se almacenan en sucesivas
posiciones de la CGRAM.

Mediante esta instruccin se establece la direccin de la memoria CG


RAM a partir de la cual se irn almacenando los bytes que defnen 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

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

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

BF

Direccin de la CG RAM o de la DD RAM

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

Cdigo ASCII o byte del carcter grfco

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

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
21

I/D = 1 Incremento del cursor

22

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
disponible

Mdulo

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

7.0 Microcontrolador PIC


16F877A
Existen en el mercado varios fabricantes de microcontroladores
como: Hitachi, Motorola
y Microchip, etc. En nuestro caso utilizamos el
microcontrolador 16f877a de Microchip debido a que hay una mayor
informacin, herramientas como: son los programas de diseo
y
principalmente la versatilidad en el manejo de los parmetros,
alimentacin, consumo, tamao y velocidad entre otras cualidades.

7.1 Caractersticas del PIC 16F877A


Las principales caractersticas con la que cuenta el pic 16F877A son:

Procesador de arquitectura RISC.

Juego o set de instrucciones con 14 bits de longitud.

Frecuencia de 20 Mhz.

Hasta 8K palabras de 14 bits para la memoria de cdigo, tipo flash.

Hasta 368 bytes de memoria de datos RAM.

256 bytes de memoria de datos EEPROM.

Pila con 8 niveles.

Cdigo de proteccin programable.

Voltaje de alimentacin de 2.0 a 5.5 Volts.

Bajo consumo menos de 2 mA a 5 Volts.

En la Figura 11, se muestra las terminales con que cuenta el pic


16F877A.

Figura 11. Microcontrolador PIC 16F877A


Donde:

Proyecto de Ingeniera
Electrnica I y II
PIN

DESCRIPCION

OSC1/CLKIN (9)

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
reloj
cuya
es 1/4
Este
pin eso el
reset
delfrecuencia
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
entradaaanalgica
Similar
RA0/AN0 del conversor AD

OSC2/CLKOUT (10)

MCLR/VPP/THV (1)

RA0/AN0 (2)
RA1/AN1 (3)

RB1 (22)

Puede actuar como lnea digital de E/S o


como
entrada analgica del conversor AD
(canal
o entrada
de de E/S o
Puede 2)
actuar
como negativa
lnea digital
como
entrada analgica del conversor A/D
(canaldigital
3) o entrada
dedel
voltaje
Lnea
de E/S positiva
o entrada
reloj del
timer 0.
Salida con colector abierto.
Lnea digital de E/S, entrada analgica o
seleccin
como esclavo
la puerta serie
sncrona.
Puerto
B pin 0,de
bidireccional.
Este
pin
puede ser la
entrada para solicitar una interrupcin.
Puerto B pin 1, bidireccional.

RB2 (23)

Puerto B pin 2, bidireccional.

RB3/PGM (24)

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
cuandoBelpin
pin6,cambia
de estado.
Puerto
bidireccional.
Puede
programarse
como peticin de interrupcin cuando el
pin cambia de estado. En la
programacin
recibe lasPuede
seales de
Puerto
B pin 7,serie
bidireccional.
programarse
como peticin de interrupcin cuando el
pin cambia de estado. En la

RA2/AN2/VREF- (4)

RA3/AN3/VREF+ (5)

RA4/T0CKI (6)

RA5/SS#/AN4 (7)
RB0/INT (21)

RB4 (25)

RB5 (26)

RB6/PGC( 27)

RB7/PGD (28)

24

Proyecto de Ingeniera
Electrnica I y II
como entrada de datos.
RC0/T1OSO/T1CK1 (11)
RC1/T1OSI/CCP2 (12)

RC2/CCP1(13)

RC3/SCK/SCL (14)

RC4/SDI/SDA (15)
RC5/SDO (16)

Lnea digital de E/S o salida del oscilador


del timer
1 o como
entrada
del timer
1.
Lnea
digital
de E/Sdeo reloj
entrada
al oscilador
del timer
1 o entrada al mdulo captura
2/salida
comparacin
2/ salida
E/S digital.
Tambin puede
actuar como
entrada
captura 1,/salida comparacin 1/ salida
de digital o entrada de reloj serie
E/S
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.digital en modo SPI.
E/S
digital
o salida

VSS(8,19)

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
estnde
disponibles
en la
los
E/S
digital
o seal
lectura para
puerta
paralela esclava o entrada analgica
canal
5. o seal de escritura para la
E/S
digital
puerta
paralela esclava o entrada analgica
canal
6. o seal de
E/S digital
activacin/desactivacin de
la puerta paralela esclava o entrada
Tierra.

VDD(20,32)

Fuente (5V).

RC6/TX/CK (17)

RC7/RX/DT (18)

RD0/PSP0-RD7/PSP7 (19-22, 27-30)

RE0/RD#/AN5 (8)

RE1/WR#/AN6 (9)

RE2/CS#/AN7

7.2. Arquitectura del PIC 16F877A


Los PIC16F877A de Microchip pertenecen al tipo de procesador RICS
que es un procesador de instrucciones reducidas, se caracteriza por que el
nmero de instrucciones es pequeo y adems casi todas se realizan en la
misma cantidad de tiempo, por otro lado posee unidades que trabajan en
paralelo conectadas por tuberas. Este tipo de procesador emplea una
arquitectura Harvard lo que significa que trabaja las zonas de memoria
de programa y
25

Proyecto de Ingeniera
Electrnica I y II
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
UCP
(PROCESAD
OR)

Bus de
datos

INSTRUCCIONES

DATOS

Arquitectura Harvard:
Bus de direcciones

Bus de direcciones

UCP (PROCESADOR)

INSTRUCCIONES
DATOS

Bus de datos

us 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

Proyecto de Ingeniera
Electrnica I y II
direccin, a diferencia del bus de datos que tiene la caracterstica de
ser bidireccional.

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 identifcar 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

contador de programa ejecutar la rutina y al momento que termina


restituir el valor correspondiente para seguir con la siguiente instruccin.

Figura 13. Arquitectura interna del PIC 16F877A

7.4 Organizacin de la memoria


La memoria se divide en memoria de datos y memoria de programa.
Los datos a su vez se divide en:

SFR (Special Funtion Register) Registro de propsito especial, son


registros que ayudan a confgurar el hardware interno, as como
sirven para escribir o leer valores de los diferentes componentes que
constituyen el microcontrolador. Por ejemplo el registro TRISA que nos
permite confgurar el modo de trabajo de las lneas del puerto A.
GFR
(General Funtion Register) Registro de propsito general,
son posiciones de memoria que se puede usar para almacenar
valores que emplean nuestro programa cabe mencionar que la
memoria de datos se divide en cuatro bancos. Las posiciones bajas
estn reservadas para los SFR en tanto que las altas para los GFR.
Tambien tiene una memoria EEPROM
con 256 posiciones, para
acceder a la memoria no se puede leer o escribir directamente es
decir, colocar la direccin y obtener o dejar el valor. Para poder
utilizarla se requiere de otros registros adicionales es decir, se
utiliza indirectamente.

Proyecto de Ingeniera Electrnica I y II

Figura 14. Organizacin de la memoria RAM.

30

Proyecto de Ingeniera
Electrnica I y II

8.0 Desarrollo del proyecto


8.1 Implementacin fsica
El rango o intervalo de temperatura que se estableci para controlar
la temperatura mnima como se puede observar en el display de la figura
15 es de L= 22 C y la temperatura mxima H=28 C. Dentro de este
rango se considera una temperatura ideal para el desarrollo de la
produccin de los Jitomates dentro de un invernadero. Por lo que, fuera de
este rango sera poco propicio para el desarrollo y maduracin del Jitomate.
Por lo tanto, el sistema de control de temperatura entre aqu en
funcionamiento para mantener una temperatura ideal segn nuestras
investigaciones que es dentro del rango de los 22 y 28 Centgrados.
En la primer imagen fgura 15 se observa que el Led (diodo emisor
de luz) de color verde indica que la temperatura est por debajo de la
temperatura de los 22 centgrados como se puede apreciar en el Display
est indicando una lectura del sensor en esos instantes de una temperatura
de 15 centgrados por lo que, el microcontrolador manda una seal que
pasa por la etapa de potencia para que se active el calefactor e incremente
la temperatura.

Proyecto de Ingeniera
Electrnica I y II
Figura 15. El sistema registra una temperatura de 15 C.

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 fgura 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 fgura 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.

Proyecto de Ingeniera Electrnica I y II

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.

8.2 Cdigo generado en MPLAB


LIST P=16F877A
RADIX HEX
INCLUDE <P16F877A.INC>
INCLUDE <MACROPIC.INC>
CONFIG _XT_OSC &_LVP_OFF &_WDT_OFF
TEMPERATURA_H
TEMPERATURA_L
T_1
T_2
CENTENAS
DECENAS
UNIDADES
ASCII_H
ASCII_M

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0x21
0x22
0x22
0x23
0x24
0x25
0x26
0x27
0x28
33

ASCII_L
HEXADECIMAL
Key_var

EQU
EQU
EQU

0x29
0x2A
0x2B

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
MOVLW
'-'
CALL
inicio_LCD
; inicio de LCD
CALL
EnviaCarLCD
MOVF
ADRESH,0
MOVLW
'I'
CALL
Hex_Ascii
CALL
EnviaCarLCD;conversin de HEXADECIMAL a ASCII
MOVLW
'T'
MOVLW
'='
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'.'
MOVLW
' '
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'A'
MOVF
ASCII_H,0
; enva las centenas de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'.'
MOVF
ASCII_M,0
; enva las decenas de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'U'
MOVF
ASCII_L,0
; enva las unidades de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'A'
MOVLW
0xDF
; smbolo de grados celsius
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'M'
MOVLW
'C'
CALL
EnviaCarLCD
CALL
EnviaCarLCD
34

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

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;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
B'00000010'
LED_3 MOVLW
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'

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
MENOS
MAS

G
O
T
O
S
A
L
T
O

CALL
DECF
CALL
BTFSC
GOTO
GOTO
CALL
INCF
CALL
BTFSC
GOTO
GOTO
FIN.S.POINT
CALL
BTFSS
GOTO
GOTO
RETURN

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

8.3 Esquema del circuito de diseo.


LCD1

9 8 7 D1 D0

54
RS RW E

21
VSS VDD VEE

LM016L

RV2
10k

U2(+VS)

U2

U1
13
14
1

10.0
VOUT

2
3
4
5
6
7

LM35

8
9
10

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

RB0/INT
RB1
RB2
RB3/PGM

RA0/AN0
RB4
RA1/AN1
RB5
RA2/AN2/VREFRB6/PGC
RA3/AN3/VREF+
RB7/PGD
RC0/T1OSO/T1CKI
RA4/T0CKI
RA5/AN4/SS
RE0/AN5/RD
RE1/AN6/W R
RE2/AN7/CS

B1

RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
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

2.55

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

R1

CALENTADOR

330

R2
330

LED-BLUE

VENTILADOR
LED-BLUE

PIC16F877

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

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 fnalidad 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
Specifcations 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/

You might also like