Implementación de Alarma Monitoreada en Forma Remota

Anuncio
UNIVERSIDAD AUSTRAL DE CHILE
FACULTAD DE CIENCIAS DE LA INGENIERÍA
ESCUELA DE ELECTRICIDAD Y ELECTRÓNICA
Implementación de Alarma
Monitoreada en Forma Remota
Mediante Fibra Óptica.
Trabajo de Titulación para optar al
Título de Ingeniero en Electrónica
PROFESOR PATROCINANTE:
Sr. Néstor Fierro Morineaud
ALUMNO:
Jonatan Urtubia Ugarte
VALDIVIA 2006
AGRADECIMIENTOS
A los diferentes profesores de nuestra escuela y facultad, principalmente a mi
profesor patrocinante el Sr. Néstor Fierro.
Compañeros de estudio y de deportes por el estimulo entregado, principalmente a mi
pupilo Joel Urtubia Ligarte...mi hermano.
Al constante aliento brindado por mis padres y a Guillermo Valenzuela P., por su gran
apoyo durante estos años, gracias.
A mi novia e hijo, por su cariño, amor y apoyo incondicional.
III
4
ÍNDICE
Resumen
6
Introducción
8
Objetivos Generales
8
Objetivos Específicos
9
CAPITULO I: “MARCO TEÓRICO”
10
1.1
Necesidad y Presentación del Proyecto.
10
1.2
Programas Utilizados.
13
1.2.1 IC-PROG
13
1.2.2 El Mplab.
15
1.2.3 Visual Basic.
19
1.3
1.4
1.2.3.1
El Entorno De Programación Visual Basic 6.0.
19
1.2.3.2
Controles Utilizados.
21
1.2.3.3
El Control Personalizado Microsoft Comm.
23
Interfase De Comunicación
27
1.3.1 Max 232 (TTL a RS-232).
28
1.3.2 Puerto Serie (Conector DB-9).
28
LCD
29
1.4.1
Descripción De Pines.
1.5 Fibra Óptica
1.5.1 Análisis De Un Sistema De Fibra Óptica.
30
32
32
5
1.5.2 Componentes De La Fibra Óptica.
33
1.5.3 Principios Básicos.
34
1.5.3.1
Índice De Refracción.
36
1.5.3.2
Apertura Numérica.
36
1.5.3.3
Modo De Propagación.
37
1.5.3.4 Perfil Del Índice.
37
1.5.4 Tipos De Fibra Óptica.
38
1.5.4.1 Fibra Monomodo.
38
1.5.4.2 Fibra Multimodo De Índice Gradual.
39
1.5.4.3 Fibra Multimodo De Índice Escalonado.
39
1.5.5 Elementos Básicos De Un Sistema De Fibra Óptica.
40
1.5.6 Convertidor De Fibra Óptica A Rs-232/422/485
40
1.5.6.1 Detección De Velocidad Automática.
41
1.5.6.2 Ajuste de los interruptores SW1, SW2 y SW3.
41
1.6 Sensores
42
1.6.1 Detector De Humo.
42
1.6.2 Detector De Movimiento (Pir).
44
1.6.3 Sensor Magnético O Continuidad.
46
1.7 Microprocesadores (Pic).
1.7.1 Instrucciones.
46
47
6
CAPITULO II: “IMPLEMENTACIÓN”
49
2.1 Esquema General del Sistema.
49
2.2 Teclado.
50
2.2.1 Diagrama De Flujo.
52
2.2.2 Diseño (Teclado).
53
2.3 PIC 18F452
54
2.3.1 Organización De La Memoria.
55
2.3.2 Memoria De Programa.
55
2.3.2.1 Contador De Programa.
58
2.3.3 Encapsulado.
59
2.3.4 Oscilador.
60
2.3.5 Modulo De Transmisión Usart.
60
2.3.5.1 Modo Asíncrono De La Usart.
61
2.3.5.2 Transmisor Asíncrono De La Usart.
64
2.3.5.3 Calculo De La Velocidad De Transmisión En Baudios.
65
2.3.6 Temporizador.
2.4 LCD
65
67
2.4.1 Envío De Datos.
68
2.4.2 Diseño (LCD).
71
2.4.3 Funcionamiento General Del Sistema.
73
2.5 Programa VISUAL BASIC
74
7
2.5.1
Elección Del Puerto Y Velocidad.
77
2.5.2
Abrir Y Cerrar El Puerto.
79
2.5.3
Timer.
81
2.6 Instrumento Audible (Buzzer).
84
2.7
Presupuesto.
85
3.1 CONCLUSIONES
86
4.1 Referencias Bibliograficas
88
5.1 Anexo
89
5.1.1 Aeropuerto Comodoro Arturo Benítez.
89
5.1.1.1 ILS.
89
5.1.1.2 Descripción General de los diferentes Sistemas.
96
5.1.2 Desarrollo de programa en Visual Basic.
101
5.1.3 Desarrollo de programa en Mplab.
108
5.1.4 Imágenes de la Implementación.
137
8
RESUMEN
La presente tesis consiste en el diseño e implementación de una alarma monitoreada
en forma remota mediante fibra óptica. Para dicha tarea fue necesaria la utilización de
un microcontrolador (PIC 18F452), detector de humo, sensor magnético, detector de
movimiento, pantalla LCD, dos line driver o convertido de fibra óptica (transmisor y
receptor) y, por ultimo, un computador.
El PIC 18F452 permite el control de acceso, monitoreo de los sensores o detectores,
visualización del estado del sistema (activado, desactivado, intruso, cambio de clave,
etc.), y transmisión de la información.
Este dispositivo se instalara en una de las casetas de radioyudas a la navegación aérea
del aeropuerto de Santiago Comodoro Arturo Merino Benitez, producto que se
encuentran en sectores remotos de dicho recinto. El monitoreo de dicho sistema se
realizara desde la torre de control mediante un enlace de fibra óptica monomodo.. La
velocidad de transmisión del dispositivo es de 9600 baudios, y su visualización será
desarrollada mediante una aplicación del software Visual Basic. Para la programación
del microcontrolador fue necesaria la utilización del software MPLAB y IC-PROG, este
último, encargado de cargar el programa en el PIC.
El proyecto esta enfocado principalmente para técnicos o ingenieros que conozcan el
aérea de las telecomunicaciones, transmisión de datos, programadores, entre otros.
9
SUMMARY
The present thesis consists of the design and implementation of an alarm monitoreada
in remote form by means of optical fiber. For this task the use of a microcontroller was
necessary (PIC 18F452), detector of smoke, magnetic, detector of movement, screen
LCD, two line to driver or turned sensor of optical fiber (transmitting and receiving) and,
finally, a computer.
The PIC 18F452 allows the access control, monitoreo of the sensors or detectors,
visualization of the state of the system (activated, deactivated, intruder, change of key,
etc.), and transmission of the information.
This device settled in one of the houses of radioyudas to the airplane navigation of the
airport of Santiago Commodore Arturo Merino Benitez, product that are in remote
sectors of this enclosure. The monitoreo of this system was made from the control tower
by means of an optical fiber connection monoway. The speed of transmission of the
device is of 9600 bauds, and its visualization will be developed by means of an
application of Visual software BASIC. For the programming of the microcontroller the
use of software MPLAB and IC-PROG was necessary, this last one, ordered to load the
program in the PIC.
The project this focused mainly for technicians or engineers who know the aerial one the
telecommunications, data transmission, programmers, among others.
10
INTRODUCCIÓN
La presente tesis consiste en el diseño e implementación de una alarma que permita
ser monitoreada dentro del Aeropuerto de Santiago, debido a que diversos equipos se
encuentran ubicados en sectores remotos de dicho recinto. El medio de comunicación
utilizado es Fibra Óptica Monomodo, el cual permite abarcar distancias que pueden
llegar a los 70 Km.
Este sistema de alarma incluirá tres tipos de sensores o detectores (sensor magnético o
de continuidad, detector de humo y detector de movimiento), los cuales se conectarán a
un microcontrolador que permitirá la transmisión a un Convertidor de Fibra Óptica
(MODEM de Fibra). Este enlace llegará a la Torre de control y allí se comunicará a otro
convertidor de F.O. el cual se encargará de traspasar los datos a un computador.
Para el presente trabajo, se utilizaron distintos software, entre los cuales se destacan:
Mplab, IC-PROG, Visual Basic y Expres PCB (Diseño de Placa), donde los tres
primeros permitirán programar, cargar al microcontrolador y visualizar en el ordenador
los datos entregados por la alarma.
Las variables a tomar en cuenta para este proyecto son tres: la detección de
intrusos dentro de la caseta, detector de humo en caso de sobrecalentamiento de los
equipos y, por último, visualizar en el computador la pérdida de la comunicación.
OBJETIVOS GENERALES:
•
Implementar un instrumento digital que permita monitorear las variables ya
descritas.
•
Diseñar una Alarma digital más económica que los actuales existentes en el
mercado.
11
OBJETIVOS ESPECÍFICOS:
•
Obtener información oportuna por alguna anormalidad o eventualidad.
•
Desarrollar un programa amigable al usuario, como asimismo entregar ventajas
para la realización de otros proyectos, ya que las bases para implementarlo
entregan una gran versatilidad para realizar diversas funciones.
•
Diseñar un algoritmo en el ordenador, que permita apreciar el estado de los
sensores y la Alarma (Activada o Desactivada).
•
Utilizar un dispositivo audible en caso de producirse un estado de alarma.
•
Diseñar un algoritmo que permita visualizar el estado de la alarma en tiempo real
(incluye: ingreso de clave, error, cambio de clave, alarma activada, alarma
desactivada, etc.).
12
CAPITULO I: MARCO TEORICO
1.1 Necesidad y Presentación del Proyecto.
El Aeropuerto Arturo Merino Benítez cuenta con diferentes sistemas de Radioayuda
(VOR, ILS, Marcador: Medio, Interno y Externo) y ayudas visuales a la navegación
aérea, que permiten el aterrizaje, despegue y localización de las aeronaves.
Actualmente estos equipos delicados y costosos se encuentran en sectores remotos del
aeropuerto que no cuentan con ningún tipo de monitoreo antirrobo o incendio, por lo
tanto el proyecto implementado apunta a satisfacer dicha necesidad.
Descripción de la Situación Actual
Actualmente el aeropuerto cuenta con el siguiente equipamiento:
•
Dos ILS (pistas 17R y 17L)
•
Dos VOR Doppler y DME denominados PDH y AMB.
•
Marcador Interno, Medio y Externo.
•
Casetas de transmisores y receptores.
•
NDB.
•
Sistema de Ayudas Visuales.
•
Transponder.
•
Torre de Control.
El proyecto implementado será ubicado en una de las casetas que posea enlace de
fibra óptica con la torre de control, la cual se aprecia en la siguiente figura (Fig.1-1):
13
(Fig.1-1)
14
Para comprensión del marco teórico, será necesario apreciar el siguiente esquema, en
donde es posible observar los distintos dispositivos asociados al hardware y software
(Fig.1-2):
Fig.1-2
15
1.2 Programas Utilizados.
Debido a que la implementación del control de acceso y transmisión se realizará
mediante un microcontrolador, se programará en lenguaje de máquina, sin embargo,
por la dificultad que esto representa, se utilizó el software MPLAB, que tiene la facultad
de simular y apreciar distintos eventos. Una vez realizada la simulación, el software ICPROG, permitió cargar el microcontrolador con el programa realizado en MPLAB,
mediante la utilización del archivo .hex.
Todo lo dicho anteriormente permite la transmisión; sin embargo, para la recepción, es
necesaria la utilización en el ordenador del programa Visual Basic, que permite trabajar
con los periféricos (COM1, COM2, COM3….Puerto Paralelo) del computador.
A continuación se describen los programas utilizados:
1.2.1 IC-Prog.
Al cargar un programa en IC-Prog se siguen los mismos pasos que cualquier otro
dispositivo, sin embargo, las únicas variaciones dependen de las características
particulares del microprocesador a programar. Los pasos a seguir para cargar un
microcontrolador, son los siguientes:
1- Configurar el tipo de programador:
En la pantalla principal de IC-PROG, se accede a la configuración del hardware de
distintas formas: pulsando el icono
, mediante la pestaña Ajustes y luego el
comando Tipo Hardware, o bien pulsando la tecla F3, de esta manera se accede a la
siguiente pantalla:
16
Fig.1-3
Esta es la configuración que se debió escoger para el correcto funcionamiento del
programador (cargador paralelo), que forma parte de la placa de aplicación. Una vez
elegido el tipo de programador (ProPic 2), se selecciona el puerto serie adecuado (LPT
1 o Com 1). Es importante no olvidar elegir el tipo de Interface como Direct I/O, y en
cuanto al tiempo de retardo, si hubiese problemas, se pueden probar tiempos más
largos.
2- Seleccionar el tipo de dispositivos a programar, es decir, qué modelo de
microcontrolador se va a cargar (PIC-18F452).
3- Abrir el archivo que contiene los datos a programar, el cual posee la extensión .HEX.
4- Ajustar la palabra de configuración (WDT) y el tipo de oscilador (XT). Una vez
cargados los datos del archivo correspondiente, la pantalla del IC-PROG presenta el
siguiente aspecto (Fig.1-4).
17
Fig.1-4
Por último, se activa el icono
icono
(grabar chip) y luego se comprueba mediante el
(leer microcontrolador).
Nota: Producto de qué la computadora utiliza el sistema operativo Windows XP, fue
necesaria la descarga de un drive para el correcto funcionamiento del software.
1.2.2 EL Mplab
MPLAB es un software emulador y programador de los múltiples que existen en el
mercado, formado por un conjunto de herramientas de desarrollo muy completo para el
trabajo o diseño con los microcontroladores (PIC) desarrollados, y fabricados por la
empresa Arizona Microchip Technology (AMT).
MPLAB incorpora todas las utilidades necesarias para la realización de cualquier
proyecto y, para los que no dispongan de un emulador, el programa permite editar el
18
archivo fuente en lenguaje ensamblador del proyecto. Además de ensamblarlo y
simularlo en pantalla, se puede ejecutar posteriormente en modo paso a paso y ver
como evolucionarán de forma real tanto sus registros internos, la memoria RAM y/o
EEPROM de usuario, como la memoria de programa, según se fueran ejecutando las
instrucciones. Además el entorno que se utiliza es el mismo que si se estuviera
utilizando un emulador.
Los pasos a seguir para crear un proyecto en MPLAB son los siguientes:
1- Ir a la opción New o Nuevo en el campo Proyect como se aprecia en la siguiente
figura (Fig.1-5):
Fig.1-5
19
2- Luego se abrirá una ventana en donde se introducirá el Nombre del proyecto y la
carpeta en que deseo guardar dicho archivo.
Fig.1-6
3- Abrir la página donde se escribirá el programa, para lo cual se debe ir al menú File o
Archivo, e ir a la opción New para empezar a escribir dicho programa.
Fig.1-7
20
4- Una vez realizado el programa, es necesario guardarlo mediante la opción Save All,
que se encuentra en el menú File.
Fig.1-8
5- Una vez guardado, se va a la opción Source File.. y se introduce la tecla Add Files.
Con esta última acción se abre el archivo guardado anteriormente, y ya se esta
preparado para compilarlo y utilizar otro tipo de simuladores o eventos necesarios:
Fig.1-9
21
1.2.3 Visual Basic
El software Visual Basic está orientado a la realización de programas para Windows,
en él se pueden incorporar todos los elementos de este entorno informático: ventanas,
botones, cajas de diálogo y de texto, botones de opción y de selección, barras de
desplazamiento, gráficos, menús, etc. En esta ocasión sólo fue necesaria la
programación en caso de producirse eventos, es decir, cuando uno de estos programas
ha arrancado lo único que hace es quedarse a la espera de las acciones del usuario.
1.2.3.1 El Entorno De Programación Visual Basic 6.0
Cuando se arranca Visual Basic aparece en la pantalla una configuración idéntica a la
apreciada en la siguiente figura (Fig.1-10). En ella se distinguen los siguientes
elementos:
Fig.1-10
22
1. En la parte superior de la pantalla se identifica la barra de menús o títulos.
2. En la posición a la izquierda se presenta una caja de herramientas (toolbox) con
diferentes controles disponibles.
3. El encargado de interactuar con el usuario y la entrega de los diferentes eventos es
el Formulario (form) en gris, en que se pueden ir situando los controles (en el centro).
Está dotado de una rejilla (grid) para facilitar la alineación de los controles.
4. La ventana de proyecto se encuentra ubicada en la parte superior derecha, donde se
aprecian los formularios y otros módulos de programas que forman parte de la
aplicación. Ejemplo: definición de las variables.
5. La ventana de Propiedades que se encuentra ubicada al costado derecho, permite
observar las propiedades por defecto que posee el objeto seleccionado en la barra de
herramientas, las cuales pueden ser modificadas a gusto del usuario.
Para el monitoreo del sistema de alarma, se utilizaron diferentes controles, tanto para la
visualización (TexBox), como para el control de velocidad o puerto COM a utilizar. A
continuación, se detalla una lista con las propiedades más habituales utilizadas:
BackColor: Establece el color de fondo de un objeto.
Caption: Establece el texto que aparece dentro o junto al objeto. Tiene el papel de un
título.
Font: Establece las características del tipo de letra del objeto.
ForeColor: Establece el color del texto y/o gráficos de un objeto.
Name: Se refiere al nombre que reciben todos los objetos incluidos en un formulario
para poder referirse a él a la hora de programar y la forma en la cual el debe actuar.
23
1.2.3.2 Controles Utilizados
A- Botón de comando (Command Button)
Este tipo de control se caracteriza por reaccionar mediante el evento click y la utilización
imprescindible de la propiedad Caption, ya que ella permite al usuario identificar la
función que cumple. Las otras propiedades que en si son menos importantes, se
refieren a la posición en que se encuentra (Left yTop) y la apariencia que ella posee
(Height, Width y tipo de letra), sin embargo, no hay que confundir lo que se refiere a
nombre del objeto (Caption), con el nombre que permite identificarlo en la programación
(Name).
B- Cajas de texto (Text Box)
Otra de las herramientas utilizadas para este proyecto son las cajas de Texto, ya que
permiten visualizar el estado de los diferentes sensores. En este tipo de control las
propiedades mas utilizadas son: Caption (propiedad que mencioné anteriormente y que
permite indicar el estado Inicial de la alarma), Name (se refiere al nombre que identifica
el programa para realizar cambios; en mi caso, en caso de producirse un evento
Etiq_.Tex) y, por ultimo, la propiedad Blackcolor para hacer mas visible al usuario
cualquier anormalidad (identifica el color del texto al producirse algún evento).
24
Fig.1-11
C- Etiquetas (Labels)
Esta herramienta permite identificar el puerto y velocidad en que se esta ejecutando el
programa; todo esto mediante las propiedades Name y Caption.
D- Cajas combinadas (ComboBox)
La herramienta ComboBox tiene muchas cosas en común con una lista, sin embargo,
la principal diferencia que presenta es la propiedad llamada Style, que puede adoptar
tres valores (0,1 ó 2) que corresponden a tres distintas formas de presentar una lista,
las que se describen a continuación:
Fig.1-12
25
1. Style=0 ó Style=vbComboDropDown (Dropdown Combo): Éste es el valor
escogido (Style=0) para el programa, ya que permite que sólo se muestre el registro
seleccionado, que es editable por el usuario, permaneciendo el resto oculto hasta que
el usuario despliega la lista completa clicando sobre el botón-flecha.
2. Style=1 ó Style=vbComboSimple (Simple Combo). En este caso, el registro
seleccionado también es editable, sin embargo, muestra una lista no desplegable.
3. Style=2 ó Style=vbComboDropDownList (DropDown List). En este último caso el
registro seleccionado no es editable y la lista es desplegable.
E- Control Timer
Este control permite saber si se produce alguna anormalidad o corte del enlace,
producto que se activa al no recibir información en un tiempo determinado.
1.2.3.3 El Control Personalizado Microsoft Comm
Este control utilizado para el monitoreo de la alarma, posee la característica de
establecer una comunicación con el puerto serie de nuestro computador, mediante la
utilización de una aplicación en Visual Basic. Normalmente el control MSCOMM no se
encuentra disponible en la caja de herramientas, por lo tanto, es necesario introducirlo
mediante el menú Proyecto, Componentes, como se aprecia en la siguiente figura
(Fig.1-13):
26
Fig.1-13
A- Propiedades del control MSCOMM
Existen propiedades las cuales se pueden establecer durante el diseño o la ejecución
del programa. Estas se detallan a continuación:
CommPort
Esta propiedad indica el numero del puerto serie utilizado y admite los valores que van
de 1 a 255, sin embargo, un computador presenta normalmente dos puertos series, si
se indica alguno inexistente, dará un error, por lo tanto el programa por defecto admite
hasta el puerto Nº4 (COM 4).
Settings
En esta propiedad es posible indicar: la velocidad de transmisión o recepción, si tiene
paridad, número de bits de información y cuantos bits de parada se utilizaran.
MSComm1.Settings = "9600, N, 8,1"
Velocidad Paridad
Bits de información
Bits parada
27
Velocidad:
Los valores posibles para establecer la velocidad se establecen en Baudios y
comprenden las siguientes velocidades (La alarma es monitoreada a una velocidad de
9600 Baudios):
50 100 110
300
600
1200
2400
4800
9600
14400 19200 28800
Paridad
Los valores posibles para paridad son:
N - No envía bit de paridad ni hace comprobación de paridad en la recepción.
O - Envía y comprueba paridad, con el criterio de paridad IMPAR.
E - Envía y comprueba paridad, con criterio de paridad PAR.
Bit de Información:
Los valores para el parámetro bits de Información se escogen entre los siguientes:
7 - Se envían / reciben 7 bits por trama de información.
8 - Se envían / reciben 8 bits por trama de información
5 - Se envían / reciben 5 bits por trama de información.
Bit de Parada:
Los valores para el parámetro bits de parada pueden ser:
1 - Se envía un bit de parada
2 - Se envían 2 bits de parada
28
B- Propiedades propias del tiempo de ejecución
PortOpen
Al abrir el puerto serie de nuestro ordenador, es necesario establecer la sentencia True
y False al cerrarlo. Por ejemplo si tenemos un MSComm con el nombre (Name)
MSComm1, para abrirlo se ejecuta la siguiente sentencia:
MSComm1.PortOpen = True y al cerrarlo se ejecuta la sentencia
MSComm1.PortOpen = False
Output
Esta propiedad permite enviar un carácter al Buffer de salida, por lo tanto es necesario
asignarle un signo igual (=) entre Output y él o los caracteres que se desean enviar. Por
lo tanto, la sentencia a ejecutar es la siguiente:
MSComm1.Output = Alarma
Input
Esta propiedad permite leer el Buffer de recepción, donde el número de caracteres
leídos dependerá del valor de la propiedad InputLen; sin embargo, en éste caso se le
asigna por defecto 0, es decir, se lee completo el buffer.
29
1.3 INTERFASE DE COMUNICACIÓN
La comunicación que se realizo entre el MODEM y el microcontrolador es una
transmisión serie asíncrona, es decir, cada dispositivo (microcontrolador y MODEM),
trabajan con su propio reloj. Antes de realizar la transmisión, se configuran los
dispositivos a una misma velocidad de transmisión y recepción para que no se
produzcan errores (en este caso 9600 baudios), donde los datos serie se encuentran
encapsulados de la siguiente forma:
Lo primero que se envía es el bit START, el cual da a conocer que se desea establecer
una transmisión. Luego que se esta preparado para la recepción se envía el Dato (8
bits) y, por ultimo, se envía el bit de Parada o Stop para terminar la comunicación.
En esta figura se puede apreciar un ejemplo de la transmisión del dato binario
10011010, donde la línea en reposo está en un nivel alto:
Fig.1-14
30
1.3.1 MAX 232 (TTL a RS-232).
Este circuito integrado permite adaptar los niveles RS-232 y TTL, permitiendo conectar
el MODEM u computador con el microcontrolador. Sólo es necesario este integrado y 4
condensadores electrolíticos de 22 micro-faradios. El esquema es el siguiente (Fig.115):
Fig.1-15
1.3.2 Puerto Serie (Conector DB9)
En un MODEM o computador, el puerto serie está normalmente asociada a un conector
DB9 (Fig.1-16), el cual posee 9 pines. Por lo tanto, ya que nuestro sistema de alarma
trabaja mediante puerto serie, es necesario conocer en que posición se ubica los pines
de la transmisión, recepción y tierra, como se observa en la siguiente figura:
Fig.1-16
31
La información asociada a cada uno de los pines es la siguiente:
Pin
Señal
Pin
Señal
1
DCD (Data Carrier Detect)
6
DSR (Data Sheet Ready)
2
RX
7
RTS (Request To Send)
3
TX
8
CTS (Clear To Send)
4
DTR (Data Terminal Ready)
9
RI (Ring Indicator)
5
GND
Tabla 1-1
1.4 LCD
Para la visualización del estado de la alarma (activado o desactivado), ingreso de clave,
cambio de clave, error, etc... se utilizó una pantalla LCD o cristal líquido, que es un
dispositivo
µControlado que posee la característica de representar dos filas de 16
caracteres, donde cada carácter dispone de una matriz de 5x7 puntos. Este dispositivo
electrónico es controlado por un microcontrolador que regula todos los parámetros de
presentación.
El principio de operación para establecer la comunicación con el LCD se puede lograr
de dos un bus maneras: con de 4 bits o, en este caso, con un bus de 8 bits. Como se
aprecia en la siguiente figura (Fig.1-17):
32
Fig.1-17
Es posible apreciar que el control del contraste se realiza al dividir la alimentación de
5Volt con un potenciómetro de 10 K ohm. Además de esto, el LCD cuenta con tres
pines de control y ocho pines de datos, como se observa en la siguiente tabla de
descripción:
1.4.1 Descripción de pines
PIN Nº SIMBOLO
DESCRIPCION
1
Vss
Tierra de alimentación GND
2
Vdd
Alimentación de +5V CC
3
Vo
Contraste del cristal liquido. ( 0 a +5V )
Selección del registro de control/registro de datos:
4
RS
RS=0 Selección registro de control
RS=1 Selección registro de datos
Señal de lectura/escritura:
5
R/W
R/W=0 Escritura (Write)
R/W=1 Lectura (Read)
Habilitación del modulo:
6
E
E=0 Módulo desconectado
E=1 Módulo conectado
7-14
D0-D7
Bus de datos bidireccional.
Tabla 1-2
33
El LCD cuenta además con una librería básica de rutinas para su control, en donde los
datos o comandos a enviar al LCD se introducen en el acumulador W antes de hacer la
llamada a cualquiera de las rutinas siguientes.
Genera un pulso de 1µS por PORTB2,
patita 6 (Enable) del LCD. Si se usa una
velocidad de micro diferente de 4MHz,
LCD_E
habrá que ajustar este tiempo.
Chequea si el LCD esta ocupado (BUSY)
LCD_BUSY
y retorna de la rutina cuando ya no lo esté.
Pone al LCD en modo de recibir
comandos , espera a que no este ocupado
LCD_REG
y va a LCD_E.
Pone el LCD en modo datos y manda el
byte presente en W que será mostrado en
LCD_DATOS pantalla.
Inicialización del modulo LCD según los
tiempo marcados por el fabricante. Bus de
8 bits, 2 líneas de visualización y
LCD_INI
caracteres de 5x7 puntos.
Configura los puertos del PIC para ser
LCD_PORT
usados con el LCD.
Tabla 1-3
34
1.5 FIBRA ÓPTICA
Actualmente, el aeropuerto Comodoro Arturo Merino Benítez utiliza una gran gama de
frecuencias asociadas a diversas unidades, por lo tanto, este medio de comunicación
es susceptible a interferencias. Por motivos de seguridad, la fibra óptica se convierte
rápidamente en el método preferido para la transmisión digital. Sus ventajas son su
gran ancho de banda, no son susceptibles a interferencias ni debilitamiento, y las
comunicaciones se pueden realizar con completa seguridad.
El cable de fibra óptica también suele ser un apropiado sustituto a los multipares debido
a su mayor capacidad y menor atenuación. El diámetro también es una característica
importante ya que cada vez existe mayor congestión en las vías de comunicación y,
continuamente, éstas deben ser aumentadas para contener más cables portadores,
tanto para comunicaciones como alimentación.
1.5.1 Análisis de un sistema de fibra óptica
La utilidad que presenta este medio de transmisión en el Aeropuerto, son las siguientes:
•
Menores pérdidas de potencia: Esta característica permite abarcar mayores
distancias, sin la necesidad de utilizar repetidores.
•
Inmunidad al ruido: Producto que la fibra óptica es totalmente dieléctrica, es
inmune a las interferencias de radiofrecuencia y cables de alta tensión, asimismo
no genera interferencias en otros equipos de comunicación.
•
Dimensiones reducidas y bajo peso: La fibra óptica presenta una gran
flexibilidad, por lo tanto, es sencilla su instalación, si se compara con los cables
de alta tensión o multipares.
•
Seguridad: La información entregada mediante un enlace de fibra óptica, es en
tiempo real y sin mayores interferencias. Característica importante dentro de un
aeropuerto.
35
•
Aislamiento eléctrico: Al ser dieléctrica, la fibra asegura el aislamiento eléctrico
entre emisor y receptor, evitando así las puestas a tierra.
•
Gran ancho de banda: Producto que el proyecto consiste en la visualización de
un sistema de alarma, la transmisión de datos no es alta, sin embargo, su
utilización en al aeropuerto se extiende al monitoreo y control de equipos.
•
Rápida reducción de costos y mejoramiento de la calidad: Dentro de la Dirección
General de Aeronáutica Civil (DGAC), el Departamento de Electrónica es el
encargado del mantenimiento y resguardo de los equipos, por lo tanto, es de vital
importancia el monitoreo y control a distancia de todos los sistemas de
comunicaciones.
1.5.2 Componentes de la Fibra Óptica
Los componentes que conforman la fibra óptica son los siguientes:
•
El Núcleo: El núcleo esta formado por un filamento de plástico o cristal (oxido de
silicio y germanio), con un alto índice de refracción.
•
La Funda Óptica: Generalmente de los mismos materiales que el núcleo, pero
con aditivos que confinan las ondas ópticas en el núcleo.
•
El revestimiento de protección: Por lo general está fabricado en plástico y
asegura la protección mecánica de la fibra óptica.
36
Fig.1-
18
1.5.3 Principios Básicos
En una fibra óptica, la señal se propaga a la velocidad de la luz en el vacío; sin
embargo, cuando los rayos luminosos se transmiten de un medio a otro, su velocidad
cambia, sufriendo además efectos de reflexión (los rayos rebotan al cambiar de medio)
y de refracción (la luz, producto que además de cambiar el modulo de su velocidad,
cambia de dirección de propagación).
Dependiendo de la velocidad con que se propague la luz en un medio o material, se le
asigna un Índice de Refracción "n", un número deducido al dividir la velocidad de la luz
en el vacío y la velocidad que experimentara en dicho medio (n = c/v). Los efectos de
reflexión y refracción que se dan en la frontera entre dos medios, dependen de sus
Índices de Refracción, como se aprecia en la siguiente figura (Fig.1-19).
37
Fig.1-19
En la figura previa es posible observar el ángulo de incidencia y, formado por el rayo
incidente y la normal, y el ángulo de refracción k’, formado por el rayo refractado y la
normal. Mediante estos datos es posible entender las siguientes leyes de refracción:
1. El rayo incidente, el rayo refractado y la normal están en un mismo plano.
2. Se cumple la ley de Snell:
Por lo tanto:
De esta manera, la ley nos dice que si el haz de luz incide con un ángulo mayor que un
cierto ángulo límite, el haz siempre se reflejará en la superficie de separación entre
ambos medios. De esta forma se puede guiar la luz de forma controlada tal y como se
ve en la siguiente figura (Fig.1-20):
38
Fig.1-20
1.5.3.1 Índice de refracción
Cuando una onda, o en este caso un haz de luz, se propaga por un medio e ingresa a
otro distinto, parte de este haz se refleja mientras otra parte sufre una refracción
(cambia el haz de dirección). Por lo tanto, para estos casos se utiliza el llamado índice
de refracción del material, que nos permite calcular la diferencia entre el ángulo de
incidencia y el de refracción del haz.
Material
Índice de Refracción
Vació
1
Aire
10.003
Agua
1.33
Cuarzo
1.46
Sal Rocosas
1.54
Diamante
2.42
Tabla 1-4
1.5.3.2 Apertura Numérica
Se denomina apertura numérica al máximo ángulo con que un haz de luz puede
ingresar a la fibra óptica para que se produzca una reflexión total interna. Esta se puede
calcular utilizando los índices de refracción o con el ángulo de aceptación de la fibra.
39
1.5.3.3 Modo De Propagación
El modo de propagación para una fibra óptica depende del número de trayectos que
posee el haz, de luz; si son múltiples caminos se le denomina fibra óptica multimodo y,
en caso de ser sólo un trayecto, se le denomina fibra óptica monomodo, tal como se
aprecia en la siguiente figura (Fig.1-21):
Fig.1-21
1.5.3.4 Perfil Del Índice
Perfil de índice es la representación gráfica correspondiente al eje horizontal del índice
de refracción del núcleo, mientras que el eje vertical representa el radio de dicha fibra.
Fig.1-22
40
Como se aprecia en la figura anterior, existen básicamente dos tipos de índices, los
cuales se denominan escalonado y gradual. Se designa fibra óptica con índice
escalonado aquella fibra cuyo núcleo tiene un índice de refracción uniforme y de menor
magnitud que el núcleo; en cambio, en una fibra óptica con índice gradual, la magnitud
del índice del núcleo es variable, descendiendo gradualmente hasta llegar a igual índice
del revestimiento del núcleo.
1.5.4 Tipos de Fibra Óptica
La fibra óptica se divide esencialmente en tres tipos de configuraciones, las cuales se
denominan: monomodo de índice escalonado, multimodo de índice escalonado y, por
ultimo, multimodo de índice gradual.
1.5.4.1 Fibra Monomodo:
La instalación de la alarma, será realizada mediante la utilización de fibra óptica
monomodo, producto que normalmente el monitoreo de los equipos utiliza este de
medio de transmisión. Esta fibra ofrece mayor capacidad de transporte de información,
y tiene una banda de paso del orden de los 100 GHz/km.. En la siguiente figura (Fig.123), se aprecia que sólo pueden ser transmitidos los rayos que tienen una trayectoria, la
cual sigue el eje de la fibra; por tal razón, se le denomina monomodo (modo de
propagación único). Los elevados flujos que se pueden alcanzar constituyen la principal
ventaja de las fibras monomodo, ya que sus pequeñas dimensiones implican un manejo
delicado y dificultades para su conexión.
Fig.1-23
41
1.5.4.2 Fibra Multimodo de Índice Gradual:
Las fibras multimodo de índice gradual tienen una banda de paso que llega hasta los
500 MHz/km. Su principio se basa en que el índice de refracción en el interior del
núcleo no es único y decrece cuando se desplaza del núcleo hacia la cubierta. Los
rayos luminosos se encuentran enfocados hacia el eje de la fibra, como se puede ver
en el figura 1-24. Estas fibras permiten reducir la dispersión entre los diferentes modos
de propagación a través del núcleo de la fibra.
Fig.1-24
1.5.4.3 Fibra Multimodo de índice escalonado:
Las fibras multimodo de índice escalonado están fabricadas a partir de vidrio o plástico.
Tienen una banda de paso que llega hasta los 40 MHz /km. En estas fibras, el núcleo
está constituido por un material uniforme cuyo índice de refracción es claramente
superior al de la cubierta que lo rodea. El paso desde el núcleo hasta la cubierta
conlleva por tanto una enorme variación del índice de refracción. De ahí proviene su
nombre de índice escalonado.
Fig.1-25
42
1.5.5 Elementos Básicos De Un Sistema De Fibra Óptica
Para establecer una comunicación mediante fibra óptica es necesario contar con tres
elementos primarios, los cuales son:
•
Transmisor: Unidad que debe generar los rayos de luz, que puede ser conectada
y desconectada muy rápidamente y/o modulada por algún tipo de señales que
representen información.
•
Fibra óptica: Medio de transmisión.
•
Receptor: Encargado de reconvertir esos rayos de luz en voltajes y corrientes
analógicas o digitales, de forma que la estación del usuario pueda separar y
utilizar las señales de información que se habían transmitido.
1.5.6 Convertidor De Fibra Óptica A RS-232/422/485
El convertidor de serie utilizado es el TCF-142, el cual está equipado con un circuito de
interfaz múltiple que pueda dirigir RS-232, o interfaces RS-422/485, mediante fibra
monomodo o multimodo. Los convertidores TCF-142 se utilizan para extender la
distancia de transmisión serial hasta 2 kilómetros (fibra multimodo TCF-142-M) o hasta
20 kilómetros (TCF-142-S fibra del monomodo). Como observación, los interfaces RS232 y RS-422/485 no pueden ser usados al mismo tiempo.
Fig.1-26
43
Las características técnicas son las siguientes:
•
Alimentación 12 a 48 VCC; con protección contra inversión de la polaridad.
•
Terminación seleccionable mediante DIP Switch externo (para interfase RS422/485)
•
Amplía la distancia de la transmisión RS-232/422/485 hasta: 20 kilómetros con
fibra monomodo y 2 kilómetros con fibra multimodo.
•
Tamaño compacto.
•
Disminuya las interferencias de la señal.
•
Proteja contra la corrosión electrónica y la degradación química.
•
Velocidad máxima hasta 230.4 Kbps.
1.5.6.1 Detección de Velocidad de transmisión en baudios Automática.
El convertidor (TCF-142) además de trabajar con distintas interfase, incorpora un
método para descubrir automáticamente la velocidad de transmisión en baudios de
señal sucesiva por el hardware, en este caso, 9600 baudios. Esto es un rasgo
sumamente conveniente para el usuario, porque incluso, si la velocidad de transmisión
en baudios de un dispositivo es cambiada, la señal todavía será transmitida por el RS232 o RS-422/485 al convertidor de fibra sin ningún problema.
Fig.1-27
1.5.6.2 Ajuste de los interruptores SW1, SW2 y SW3.
Existen tres interruptores (SW1, SW2 y SW3) en la tapa del convertidor de fibra TCF142). Los interruptores SW1 y SW2 se utilizan para fijar la interfase en serie; el SW3 es
44
utilizado para permitir o inhabilitar la terminación de una resistencia de 120 ohm. Para
efectuar dicho ajuste es necesario referirse a la figura 1-28 y las siguientes tablas 1-5 y
1-6:
Fig.1-28
Conexión Serial
SW1
RS-232
ON
RS-422
OFF
RS-485 4- wire
OFF
RS-485 2- wire
OFF
Tabla 1-5
SW2
OFF
OFF
OFF
ON
Incorporando terminación de
120 ohm
Habilitar
Deshabilitar
Tabla 1-6
SW3
ON
OFF
1.6 SENSORES
En el presente proyecto se utilizaron tres tipos de sensores o detectores (detector de
humo, sensor magnético o continuidad y, por ultimo, un detector de movimiento) los
cuales se describen a continuación:
1.6.1 Detector de humo
El detector de humo utilizado es iónico, producto que es más sensible a este tipo de
sucesos según se aprecia en la siguiente figura (Fig.1-29):
45
Fig.1-29
Los detectores Iónicos de humo se suelen clasificar en dos grupos:
•
Partículas Alfa
•
Partículas Beta
Los sensores iónicos de humo detectan partículas producidas por la combustión de un
incendio, en la cual experimentan una disminución del flujo de corriente eléctrica
formada por moléculas de O2 y N2 ionizadas por una fuente radiactiva entre dos
electrodos.
Estos sensores pueden detectar partículas visibles e invisibles generadas por la
combustión, ya que su rango de operación alcanza partículas entre 1 y 0,01 micras. Las
partículas visibles tienen un tamaño de 4 a 5 micras y tienden a caer por gravedad
excepto en el caso de que haya una fuerte corriente turbulenta en la columna que forma
la llama. Según la fuente radiactiva se dividen en detectores iónicos de partículas alfa y
de partículas beta.
Fig.1-30
46
La marca y el modelo del detector de humo utilizado es SYSTEM SESNSOR 1424; éste
sensor tiene una alimentación nominal de 24 volt DC. con una corriente máxima de
40mA. Debido a que la alarma funciona con una tensión de 12 volt DC., es necesario
contar con un transformador suplementario.
Los terminales de conexión para su alimentación y monitoreo son los siguientes:
Fig.1-31
1.6.2 Detector de Movimiento (PIR)
El sensor PIR “Passive Infra Red”, es un dispositivo piroélectrico, que mide cambios en
los niveles de radiación infrarroja emitida por objetos a una distancia máxima de 6
metros aproximadamente. Como respuesta al movimiento, el sensor cambia el nivel
lógico de un “pin”, por lo cual su uso es extremadamente simple. Adicionalmente es un
sensor de bajo costo y reducido tamaño, muy utilizado en sistemas de alarmas,
iluminación controlada por movimiento y aplicaciones de robótica. Este tipo de sensor
cuenta con tres terminales de los cuales dos se utilizan para la alimentación y, el
tercero, para la detección de movimiento, como se aprecia en la figura (Fig.1-32):
47
Fig.1-32
Estos tipos de dispositivos son fabricados con un material cristalino que genera una
carga eléctrica cuando se expone a la radiación infrarroja; de esta manera, detecta las
variaciones de radiación provocando cambios de tensión, los cuales son amplificados.
Además cuenta con filtros especiales denominado lentes de Fresnel que enfocan las
señales infrarrojas sobre el elemento sensor. Cuando estas señales varían
bruscamente, el amplificador activa una señal durante varios segundos, permitiendo
poder ser detectadas por el microcontrolador. Sin embargo, el PIR requiere un tiempo
entre 10 a 60 segundos para operar en forma correcta, ya que es necesario que se
adapte a las condiciones del medio ambiente donde es instalado.
La marca y el modelo del sensor movimiento utilizado es ORION EL-55; éste sensor
tiene una alimentación que varia entre los 9 y 16 volt DC. con una corriente máxima de
17mA. Debido a que nuestro sistema de alarma funciona con una tensión de 12 volt
DC. éste proveerá la alimentación respectiva. El sensor de movimiento posee un
contador de pulsos que se encarga de controlar el número de pulsos que deberá
detectarse antes que el detector transmita una señal de alarma. Para efectuar dicho
ajuste es necesario referirse a la siguiente tabla (Tabla 1-7):
Posición del Jumper Cuenta de Pulso
Retirado
1
Pines 2 y 3
2
Pines 1y 2
3
Tabla 1-7
48
Los terminales de conexión para su alimentación y monitoreo son los siguientes:
Fig.1-33
1.6.3 Sensor Magnético o Continuidad.
Este sensor trabaja mediante dos imanes (uno al lado del otro), dado que es posible
medir su continuidad, al igual que los sensores ya descritos. Circuitalmente uno de sus
pines se conectará a tierra y el otro al microcontrolador; de esta manera, podrá ser
detectado cuando el circuito se encuentre abierto.
Fig.1-34
1.7 Microprocesadores (PIC)
Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip
Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de
microelectrónica de General Instruments. El nombre actual no es un acrónimo, en
realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como
Controlador de Interfaz Periférico.
49
El microcontrolador está diseñado para que en su memoria de programa se almacenen
todas las instrucciones del programa de control. Como éste siempre es el mismo, debe
estar grabado de forma permanente. Existen algunos tipos de memoria adecuados para
soportar estas funciones, de las cuales se citan las siguientes:
- ROM: se graba mediante el uso de máscaras. Sólo es recomendable para series muy
grandes debido a su elevado costo.
- EPROM: se graba eléctricamente mediante la utilización de un cargador de
microcontroladores y un ordenador (en este caso se utilizó el cargador PG3B).
Disponen de una ventana en la parte superior para someterla a luz ultravioleta lo que
permite su borrado.
- OTP: su proceso de grabación es similar al anterior, pero éstas no pueden borrarse.
Su bajo costo las hace idóneas para productos finales.
- EEPROM: también se graba eléctricamente, pero su borrado es mucho más sencillo,
ya que también es eléctrico. No se pueden conseguir grandes capacidades y su tiempo
de escritura y su consumo es elevado.
- FLASH: se trata de una memoria no volátil, de bajo consumo, que se puede escribir y
borrar en circuito al igual que las EEPROM, pero que suelen disponer de mayor
capacidad que estas últimas. Son recomendables para aplicaciones en las que será
necesario modificar el programa a lo largo de la vida del producto. Por sus mejores
prestaciones está sustituyendo a la memoria EEPROM para contener instrucciones. De
esta forma, Microchip comercializa dos microcontroladores prácticamente iguales que
sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y
la del otro tipo Flash.
1.7.1 Instrucciones
A continuación sé observará algunas de las instrucciones utilizadas para la
programación del PIC. Las restantes se irán viendo en entregas posteriores según vaya
siendo necesario su manejo:
50
Manejo de registros
-
clrf f : limpia el registro f, es decir, pone todos sus bits a 0.
-
Movlw 1: Carga un 1 en el acumulador W.
-
Addwf f, d: Suma W y el registro f. Si d = 0 el destino es W y si d = 1, el destino es
el registro fuente f.
-
Subwf cuenta: Resta el acumulador (W) con el registro f (cuenta) y el resultado lo
guarda en el acumulador.
Manejo de bits
- bcf f,b: pone a 0 el bit b del registro f.
- bsf f,b: pone a 1 el bit b del registro f.
Brinco
- Btfsc f, b: explora el bit b del registro f y salta si vale 0
- Btfss f, b: explora el bit b del registro f y salta si vale 1
Control y Subrutinas
-
Goto: sitúa el cursor del programa (PCL), en una etiqueta sin posibilidad de volver.
-
Call y Return : Sitúa el cursor del programa en una etiqueta. Una vez terminada la
subrrutina regresa a la siguiente instrucción donde empezó, mediante el comando
return.
51
CAPITULO II: “IMPLEMENTACIÓN”
2.1 Esquema General del Sistema.
La implementación es realizada según la siguiente figura (Fig.2-1):
Fig.2-1
52
En la figura anterior se observa que el microcontrolador (PIC) se encarga se encarga
del control del: teclado, pantalla LCD, Buzzer, estado de los sensores u detectores y
transmisión de los datos. La información es enviada en forma continua al convertidor de
fibra o line driver (RS-232 a fibra óptica) mediante el C.I. MAX-232. Los datos son
recibidos en la torre de control por un line driver, traspasando la información a una
computadora.
2.2 TECLADO
Producto que se utilizo el PIC 18F452, el cual contiene 33 líneas de E/S, no será
necesaria la optimización del teclado, producto que para la configuración de dicho
programa se utilizara el puerto: A, B y C.
En la siguiente figura se puede apreciar que el microcontrolador ocupa los pines:
-
RC1 : Numero 1
-
RC0 : Numero 2
-
RA5 : Numero 3
-
RD0 : Numero 4
-
RC3 : Numero 5
-
RC2 : Numero 6
-
RD3 : Numero 7
-
RD2 : Numero 8
-
RD1 : Numero 9
-
RC5 : Numero 0
-
RC4 : Cambio de Clave
-
RD4 : Enter
Fig.2-2
Como se puede observar, cada pulsador se conectara a un pin determinado,
permitiendo entregar un cero lógico (0 volt) mientras él no sea presionado, y un uno
53
lógico (5 volt), en caso contrario. Además, se colocará en cada pulsador una resistencia
de 1,2 K Ohm, para no producir un cortocircuito en la fuente de alimentación.
El programa en el PIC reconocerá cada pulsador y dicho dígito lo guardara en una
variable, para luego compararla con la clave que trae por defecto este sistema de
alarma. Las variables que se utilizaron son las siguientes:
•
Dígito: variable que permite guardar la tecla presionada, para luego ser comparada
con la variable Var.
•
Num1, Num2, Num3 y Num4: Cada uno de estos registros guarda la clave correcta.
•
Var: Se encarga de copiar la clave correcta (Num1 o Num2 o Num3 o Num4) a
medida que se ingresen los dígitos.
•
Cuenta: Variable que permite llevar un registro del número de dígitos ingresados.
54
2.2.1 Diagrama de Flujo
Fig.2-3
Como es posible observar, la primera labor que se realiza es la declaración de las
distintas variables. Luego, se procede a preguntar que tecla o numero se pulsa
indefinidamente; sin embargo, cada vez que vuelve al inicio, transmite en que estado se
55
encuentra la alarma (activada o desactivada). Después de ser presionada la primera
tecla, es copiada en la variable dígito y se incrementa la variable cuenta en uno,
producto que de ésta manera es posible identificar la cantidad de dígitos ingresados.
Las variables Num1, Num2, Num3 y Num4 van a ser copiadas en la variable Var a
medida que la variable cuenta se incremente, para luego ser comparado con el digito
ingresado. Una vez comparado, nuestro diagrama de flujo se dividirá en dos: Subrutina
de Malo (en ella se espera que ingrese cuatro dígitos para volver al comienzo), y
Termino (en ella se pregunta si fueron ingresado los cuatro dígitos). Una vez ingresada
la clave, pregunta que función quiere realizar, cambio de clave o enter.
2.2.2 Diseño (Teclado):
Las siguientes figuras corresponden al circuito impreso para el diseño de las pistas
(Fig.2-4), y la parte superior de dicho teclado (Fig.2-5).
Fig.2-4
56
Fig.2-5
2.3 PIC 18F452
El microcontrolador 18F452 posee dos pines para su alimentación (VDD), y dos a tierra
(VSS); otras dos patitas se utilizan para el cristal de cuarzo (OSC1 y OSC2) que regula
la frecuencia de trabajo, y una más para provocar el Reset (MCLR); las restantes patitas
de un microcontrolador sirven para soportar su comunicación con los periféricos
externos que controla.
Las características principales de este micrcontrolador son las siguientes:
•
Memoria FLASH de 32K.
•
Memoria de datos EEPROM de 256 bytes.
•
Memoria RAM de 1.5K.
•
Treinta y tres líneas de E/S con control individual.
•
Oscilador máximo a 40Mhz
•
Compatibilidad con la Norma RS-232 y RS-485
•
Set de 75 Instrucciones.
•
Ocho pines de entrada A/D.
57
•
I/O Puertas: A,B,C,D,E.
•
Cuatro Timer.
2.3.1 Organización de la Memoria.
Memoria Interna (RAM).
La memoria interna de datos es también llamada archivo de registros (register file).
Cada registro de la memoria tiene una dirección de 12bits; es decir, obtenemos una
capacidad de 4096 bytes. El mapa de memoria se divide en 16 bancos de 256 bytes
cada uno.
La memoria de datos esta dividida en dos áreas. Una de ellas corresponde al banco de
Registro de Propósito General (GPR), y la otra dedicada a los Registros de Funciones
Especiales (SFR), que controla los recursos y periféricos del microcontrolador. Las dos
áreas están repartidas en Bancos, que se seleccionan mediante ciertos bits destinados
a ese propósito, que se hallan en el Registro de Selección de Banco (BSR). Cuando se
realiza un acceso a una posición situada fuera de los bancos se ignoran los bits del
BSR. El Registro de Selección del banco se emplea en conmutación de bancos en el
área de la memoria de datos, y los 4 bits bajos del BSR determinan a que banco se
accederá. (Fig. 2-6)
2.3.2 Memoria de Programa
El contador de Programa tiene un tamaño de 21 bits y proporciona la dirección de la
instrucción a la que se accede. Con 21 bits se puede direccionar hasta 2 Mbytes de
memoria de programa. La memoria de programa la utilizaremos en el proyecto para el
código. Los microcontroladores dotados de memoria EEPROM, una vez instalados en el
circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho
circuito. Para ello se usan “grabadores en circuito”, que confieren una gran flexibilidad y
rapidez a la hora de realizar modificaciones en el programa de trabajo.
58
El número de veces que puede grabarse y borrarse una memoria EEPROM es finito,
por lo que no es recomendable una reprogramación continúa. Son muy idóneos para la
enseñanza y la Ingeniería de diseño.
Fig.2-6
En los microcontroladores tradicionales todas las operaciones se realizan sobre el
acumulador. La salida del acumulador está conectada a una de las entradas de la
59
Unidad Aritmética y Lógica (ALU), y por lo tanto, éste es siempre uno de los dos modos
de operación para cualquier instrucción. Por convención, las instrucciones de simple
operando
(borrar,
incrementar,
decrementar,
complementar),
actúan
sobre
el
acumulador. La salida de la ALU va solamente a la entrada del acumulador; por lo
tanto, el resultado de cualquier operación siempre quedara en este registro. Para operar
sobre un dato de memoria, luego de realizar la operación, siempre hay que mover el
acumulador a la memoria con una instrucción adicional.
En los microcontroladores PIC, la salida de la ALU va al registro W y también a la
memoria de datos; por lo tanto, el resultado puede guardarse en cualquiera de los dos
destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe
estar en el registro W, como ocurría en el modelo tradicional con el acumulador. En las
instrucciones de simple operando el dato, en este caso, se toma de la memoria
(también por convención). La gran ventaja de esta arquitectura es que permite un gran
ahorro de instrucciones ya que el resultado de cualquier instrucción que opere con la
memoria, ya sea de simple o doble operando, puede dejarse en la misma posición de
memoria o en el registro W, según se seleccione con un bit de la misma instrucción.
60
Fig.2-7
2.3.2.1 Contador de programa
Este registro, normalmente denominado PC, es totalmente equivalente al de todos los
microprocesadores y contiene la dirección de la próxima instrucción a ejecutar. Se
incrementa automáticamente al ejecutar cada instrucción, de manera que la secuencia
natural de ejecución del programa es lineal, una instrucción después de la otra. Algunas
instrucciones que llamaremos de control, cambian el contenido del PC alterando la
secuencia lineal de ejecución. Dentro de estas instrucciones se encuentran el GOTO y
el CALL que permiten cargar en forma directa un valor constante en el PC, haciendo
61
que el programa salte a cualquier posición de la memoria. Otras instrucciones de control
son los SKIP o “saltos” condicionales, que producen un incremento adicional del PC si
se cumple una condición específica, haciendo que el programa saltee, sin ejecutar, la
instrucción siguiente. El PC es un registro de 21bits en los 18F452, lo que permite
direccionar 2Mbytes de memoria de programa.
2.3.3 Encapsulado
El PIC18F452 está disponible en varios formatos, en este caso se utilizo el
encapsulado DIP. Este es el encapsulado mas empleado en montajes por taladro
pasante en placa. Este puede ser cerámico (marrón) o de plástico (negro). Un dato
importante en todos los componentes es la distancia entre patillas que poseen, en los
circuitos es de vital importancia este dato, así en este tipo el estándar se establece en
2,54 milimetros.
Fig.2-8
62
2.3.4 Oscilador
Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la
sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj
está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes
exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes
suelen consistir en un cristal de cuarzo junto a elementos pasivos, o bien un resonador
cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en
que se ejecutan las instrucciones, pero lleva aparejado un incremento del consumo de
energía.
Producto que se dispone de cristales de cuarzo, se decidió utilizar uno de 10Mhz,
modelo XT. El siguiente circuito muestra como se conecta dicho cristal a los pines
correspondientes del PIC (OSC1 y OSC2) para establecer la oscilación:
Fig.2-9
El fabricante nos entrega los valores adecuados para los condensadores C1 y C2
(22pF). Cuanto mayor sean los condensadores, más estable será la señal; sin embargo,
el tiempo de arranque será mayor.
2.3.5 Modulo de Transmisión USART
Para que el microcontrolador efectué las tareas de transmisión, es necesario entender
este modulo de transmisión y recepción asíncrono/síncrono universal. De esta manera
el USART puede ser configurado de dos maneras: Full-Duplex o Half Duplex según sea
el caso y el tipo de periférico a utilizar. Para este proyecto se utilizó una transmisión
asíncrona la cual se explicara a continuación.
63
2.3.5.1 Modo Asíncrono De La USART
En este modo, la USART usa el formato de no retorno a cero (un bit de START, 8 o 9
bits de datos y un bit de STOP). El USART transmite y recibe el primer bit menos
significativo, donde los transmisores y receptores de USART son funcionalmente
independientes, pero usan el mismo formato de datos y velocidad en baudios. El bit de
paridad no es soportado por hardware pero puede ser implementado por software. El
modo asíncrono es seleccionado limpiando el bit SYNC del registro TXSTA. Para
entender en que consisten estos bits de configuración, se explicara los siguientes
registros (TXTA y RCSTA) de control:
64
Registro De Control Y Estado De La Transmisión: TXTA
CSRC
TX9
TXEN
SYNC
0
BRGH TRMT
TX9D
CSRC: selección de la fuente del reloj
Modo asíncrono: No usado
Modo síncrono : 1 = modo maestro (reloj generado internamente desde BRG)
0= modo esclavo (reloj desde un fuente externa)
TX9: habilitación de la transmisión de 9 bits
1 = selección de 9 bits para transmitir
0= selección de 8 bits para transmitir
TXEN: habilitación de la transmisión
1 = transmisión habilitada
0 = transmisión deshabilitada
Nota: SREN/CREN pasa a ser TXEN en modo SYNC
SYNC: selección del modo USART
1 = modo síncrono
0 = modo asíncrono
BRGH: selección de la velocidad en baudios
Modo asíncrono: 1 = alta velocidad
0 = baja velocidad
Modo síncrono:
No se usa en este modo
TRMT: Bit de estado del registro de cambio transmitido
1 = TSR vacío
0 = TSR lleno
TX9D: noveno bit del dato a transmitir. Puede ser el bit de paridad
Tabla 2-1
65
Registro De Control Y Estado De La Recepción: RCSTA
SPEN
RX9
SREN CREN
0
FERR OERR RX9D
SPEN: bit de habilitación del
puerto serie
1 = puerto serie habilitado (Configurar pines RX/DT y TX/CK como pines del puerto serie).
0= modo esclavo (reloj desde un fuente externa).
RX9: habilitación de la recepción de 9 bits.
1 = selección de 9 bits para recibir.
0= selección de 8 bits para recibir.
SREN: habilitación de la recepción simple.
Modo asíncrono:
No usado.
Modo maestro síncrono: 1 = recepción simple habilitada.
0 = recepción simple deshabilitada.
Nota: Este bit es limpiado después de que la recepción sea completada.
Modo esclavo síncrono: No se usa en este modo.
CREN: bit de habilitación de recepción continua.
Modo asíncrono: 1 = recepción continua habilitada.
0 = recepción continua deshabilitada.
Modo síncrono: 1 = recepción continua habilitada hasta que el bit CREN es limpiado.
0 = recepción continua deshabilitada.
FERR: bit de error de FRAME.
1= Error FRAME (Puede ser actualizado leyendo el RCREG y recibiendo en próximo byte
valido).
0 = No error FRAME.
OERR: bit de error de desbordamiento.
1 = Error de desbordamiento(Puede ser limpiado limpiando el bit CREN).
0 = No Error de desbordamiento.
RX9D: noveno bit del dato a recibir. Puede ser el bit de paridad.
Tabla 2-2
66
2.3.5.2 Transmisor asíncrono de la USART
Para establecer la transmisión, el registro TSR obtiene los datos desde el buffer de
transmisión de lectura/escritura TXREG. Una vez que se transfiere los datos al registro
TSR, el registro TXREG se vacía y el bit de flag TXIF es puesto a 1.
El estado del registro TSR se aprecia mediante el bit TRMT del registro TXSTA; sin
embargo, este bit es solo lectura y es puesto a un 1 cuando el registro TSR está vacío.
Pasos a seguir para realizar la transmisión Asíncrona:
1-Inicializar el registro SPBRG con la velocidad apropiada. Sí la velocidad deseada es
baja, poner a 0 el bit BRGH
2-Habilitar el puerto serie asíncrono limpiando el bit SYNC y poniendo a 1 el bit SPEN
3-Si se quiere interrupciones, se coloca a 1 el bit TXIE,GIE y PEIE. (Estas no se
utilizaron, producto que no fué necesario).
4-Se realiza una transmisión de 8 bits, por o tanto el bit TX9 se coloca un cero, en caso
contrario se coloca un 1.
5-Luego se procede a habilitar la transmisión poniendo a 1 el bit TXEN el cual también
pondrá a 1 el bit TXIF.
6-Sí la transmisión de 9 bits está seleccionada, el noveno bit debería cargarse en el bit
TX9D.
7-Cargar los datos en el registro TXREG (empezar transmisión).
Según lo apreciado, el registro de transmisión TXTA fue configurado de la siguiente
forma:
Bsf
RCSTA, SPEN
; Habilita el puerto serie.
Bcf
TXSTA, SYNC
; Elige modo asíncrono.
Bcf
TXSTA, BRGH
; Baja velocidad.
Movlw
.64
; Valor para los 9600 Baudios.
67
Movlw
SPBRG
; Carga dicho valor en el registro SPBRG.
Movlw
b'00000001'
; Carga un 1 en binario en el acumulador.
Movlw
TXREG
; Dicho valor lo envía en ascii.
Esto permitió tener siempre habilitada la transmisión, elegir su velocidad (9600 baudios)
y el modo de trabajo (modo asíncrono).
2.3.5.3 Calculo De La Velocidad De Transmisión En Baudios
El registro SPBRG contiene 8 bits, los cuales permiten configurar la velocidad deseada
para la transmisión. En este caso se escogió una velocidad de 9600 Baudios.
Modo Asíncrono:
Sí BRGH = 0 (Baja Velocidad) y SYNC = 0
V(Baudios) = 10 Mhz/(64.(SPBRG + 1))
Sí BRGH = 1 (Alta Velocidad) y SYNC = 0
V(Baudios) = Fosc/16.(SPBRG + 1)
9600 Baudios = Fosc / (16 * (SPBRG + 1))
SPBRG corresponde a 0.64
2.3.6 Temporizador
Debido a la necesidad de adecuar un tiempo para el desalojo y el acceso de usuarios al
lugar de monitoreo, se opto por una subrutina de tiempo mediante la creación de dos
variables paso y contador. La subrutina de tiempo se puede adecuar de 158
milisegundos hasta 170 minutos según la subrrutina de tiempo creada para el PIC, dado
estos datos, se opto por 30 segundos para el desalojo y acceso del lugar.
El tiempo estimado para estas subrutinas viene expresado por la siguiente ecuación:
Temporización
68
Para la programación fue necesario transmitir al ordenador el estado presente de la
alarma en forma indefinida, para una mayor seguridad; esto se realiza cada 158
milisegundos para la seguridad de los equipos. Los pasos para la programación del
temporizador fueron las siguientes:
CLRF
CLRF
MOVLW
Activada la Alarma se realizan las siguientes instrucciones.
contador
Borro contador.
paso
Borro paso.
b'01100000'
ADDWF
contador,1
Cargo contador con 96 en binario.
MOVLW
ADDWF
b'00000010'
paso,1
Cargo paso con 2 en binario.
Goto
INICIO
Va a inicio para ingresar la clave.
INICIO
movlw
SUBWF
BTFSS
GOTO
CALL
GOTO
NOSE
CALL
CALL
GOTO
DONDE
decfsz
b'00000000'
CUENTA1
STATUS,Z
NOSE
APAGADO
INICIO
GOTO
MOVLW
ADDWF
decfsz
ROSOL
b'01100000'
contador,1
paso
ACTIVADOCC
DONDE
INICIO
contador
RETURN
bsf
PORTA,3
MOVLW b'00000010'
ADDWF paso,1
Pregunto que tecla activé.
Pregunto si la alarma esta activada o desactivada
mediante la variable CUENTA1.
La alarma se encuentra activada.
Subrutina para trasmitir que la alarma esta desactivada.
La alarma se encuentra activada.
Subrutina para trasmitir que la alarma esta activada.
Subrutina para decrementar la variable contador y paso.
Decremento contador en uno
y pregunto si el resultado de la
operación es cero.
Si no es cero va a rutina de tiempo.
Cargo contador con 96 en binario.
Decremento paso en uno y
pregunto si el resultado de la
operación es cero.
Si no es cero vuelve a la subrutina NOSE.
Coloca un uno lógico en el pin A3 y activa el buzzer.
Cargo paso con 2 en binario.
69
RETURN
ROSOL
CALL
PDelay
RETURN
CLRF
CLRF
Regreso a la subrutina NOSE.
Subrutina de tiempo de 155 milisegundos.
Desactivada la Alarma se realizan las siguientes instrucciones.
contador
Borro contador.
paso
Borro paso.
Tabla 2-3
2.4 LCD
Para el control, escritura y lectura de datos fue necesaria la utilización del puerto B y
parte del puerto D. La distribución de los pines fue realizada de la siguiente manera:
PIN Nº
PIC
SIMBOLO
DESCRIPCION
1
Vss
Vss
Tierra de alimentación GND
2
Vdd
Vdd
Alimentación de +5V CC
3
Vo
Vo
Contraste del cristal liquido. ( 0 a +5V )
4
D5
RS
Selección del registro de controlregistro de datos:
RS=0 Selección registro de control
RS=1 Selección registro de datos
5
D6
R/W
Señal de lectura/escritura:
R/W=0 Escritura (Write)
R/W=1 Lectura (Read)
6
D7
E
Habilitación del modulo:
E=0 Módulo desconectado
E=1 Módulo conectado
Pin 7-14 B0-B7
D0-D7
Bus de datos bidireccional.
Tabla 2-4
70
2.4.1 Envío de Datos.
Para el envío de cada uno de los caracteres al LCD, se utilizo el siguiente
razonamiento:
Fig.2-10
Producto que fue necesario enviar diferentes tipos de instrucciones al LCD, tanto para
su configuración, control, escritura y lectura, se entregará el conjunto de instrucciones
utilizadas a continuación:
71
CLEAR LCD
Borra el módulo LCD y coloca el cursor en la primera posición (dirección 0). Pone el bit
I/D a 1 por defecto.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
0
0
0
0
0
0
0
0
1
FUNCTION SET
Establece el tamaño de interfase con el bus de datos (DL), número de líneas del display
(N) y tipo de carácter (F).
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
0
0
0
1
DL
N
F
X
X
READ BUSY FLAG & ADDRESS
Cuando el módulo LCD está ejecutando cualquiera de estas instrucciones, tarda un
cierto tiempo de ejecución en el que no se debe mandar ninguna instrucción. Para éllo
dispone de un flag llamado BUSY (ocupado) que indica que se está ejecutando una
instrucción previa. Esta instrucción de lectura informa del estado de dicho flag además
de proporcionar el valor del contador de direcciones de la CG RAM o de la DD RAM
según la última que se haya empleado.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
1
BF Dirección de la CG RAM o DD RAM
72
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).
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
0
0
0
0
0
1
D
C
B
SET THE DD RAM ADDRESS
Los caracteres o datos que se van visualizando, se van almacenando en una memoria
llamada DD RAM para de aquí pasar a la pantalla. Mediante esta instrucción se
establece la dirección de la memoria DD RAM a partir de la cual se irán almacenando
los datos a visualizar. Ejecutando este comando, todos los datos que se escriban o lean
posteriormente lo harán desde esta memoria DD RAM. Las direcciones de la 80h a la
8Fh corresponden con los 16 caracteres del primer renglón y de la C0h a la CFh con los
16 caracteres del segundo renglón, para este modelo de LCD.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
0
1
Dirección de la DD RAM
ENTRY MODE SET
Establece la dirección de movimiento del cursor y especifica si la visualización se va
desplazando a la siguiente posición de la pantalla o no. Estas operaciones se ejecutan
durante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmente
poner el bit S=0.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
0
0
0
0
0
0
1
I/D
S
73
El significado de la abreviatura utilizada, es la siguiente:
1 - Desplaza la visualización cada vez que se
S
escribe un dato
0 - Modo normal
I/D 1 - Incremento del cursor
0 - Decremento del cursor
BF 1 - Módulo ocupado
0 - Módulo disponible
DL 1 - Bus de datos de 8 bits
0 - Bus de datos de 4 bits
N 1 - LCD de dos líneas
0 - LCD de una línea
F
1 - Carácter de 5 x 10 puntos
0 - Carácter de 5 x 7 puntos
B 1 - Parpadeo del cursor ON
0 - Parpadeo del cursor OFF
C 1 - Cursor ON
0 - Cursor OFF
D 1 - Display ON
0 - Display OFF
X Indeterminado
Tabla 2-5
2.4.2 Diseño (LCD):
Se observa en la siguiente figura cómo el puerto B actúa como bus de datos de nuestro
LCD, siendo las líneas de control los pines: RD7 (señal E), RD6 (señal RS), RD5 (señal
R/W). Los diferentes sensores se ubicaron en el puerto A, tal como se aprecia en la
figura. (Fig.2-11). En el se conectaron un detector de humo, sensor magnético y
74
detector de movimiento. Mientras que parte de los puertos C, D y A fueron utilizados
para el teclado, como ya se había mencionado.
Fig.2-11
Nota: El puerto A se consideran los pines: RA0, RA1, RA2, RA3, RA4, RA5. El puerto B
corresponde a los pines: RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 y así
sucesivamente para los demás puertos.
75
2.4.3 Funcionamiento General del Sistema
Al encenderse el sistema aparece en pantalla el siguiente mensaje:
Fig.2-12
Fig.2-13
El mensaje que se aprecia en la figura anterior (Fig.2-12) informa que la alarma se
encuentra desactivada y lista para que sea ingresada la clave (Fig.2-17). Si la clave no
es correcta, la alarma indicara el error, tal como se aprecia en la figura 2-13, en caso
contrario se tendrán dos posibles soluciones: Enter (Fig.2-14) o Cambio de Clave
(Fig.2-15).
Fig.2-14
Fig.2-15
Una vez activada la alarma, se cuenta con un tiempo de 30 segundos para el desalojo
del lugar, en caso contrario ésta se activará y entregará el siguiente mensaje (Fig.2-16):
Fig.2-16
Fig.2-17
Nota: Por defecto la clave inicial para quien utiliza por primera vez el “producto” es
0000.
76
2.5 Programa Visual Basic
Debido a la necesidad de transmitir el estado presente de la alarma al computador, será
necesaria la utilización de un software capaz de traducir la información enviada por el
microcontrolador; por lo tanto, se va a utilizar el software visual basic, que permite
decodificar y visualizar en el computador los datos obtenidos. En la siguiente figura
(Fig.2-18) se aprecia el trabajo terminado, con la visualización de los sensores.
Fig.2-18
Para trabajar con el puerto serie de un computador, es necesario utilizar el control
MSCOMM, tal como se describe en el Marco Teórico. Normalmente este control no está
disponible en la barra de herramientas, por lo tanto hay que introducirlo mediante el
77
menú Proyecto, Componentes y Microsof Comm Control 6.0, tal como se observa en la
siguiente figura (Fig.2-19):
Fig.2-19
Una vez realizada esta operación, se configura el control MSCOMM para la recepción
de datos de la siguiente manera:
•
MSComm1.InputLen = 1
Al leer el buffer de recepción, la propiedad InputLen permite leer solo un carácter,
producto que su valor es igual a uno.(En caso de querer el buffer completo su valor
tiene que ser igual a 0)
•
MSComm1.RThreshold = 1
•
MSComm1.SThreshold = 1
Estas dos propiedades tienen un valor igual a uno, producto que es la cantidad de
caracteres
que deben estar presentes en los Buffer de recepción y transmisión
78
respectivamente, para que se produzca el evento OnComm relativo a la recepción y
transmisión de caracteres.
Después se procede a declarar la variable Valor1 para la recepción de datos, mediante
la instrucción Dim y se identifica como una variable cadena o String (ascii). Una vez
realizada esta labor se debe decodificar esta variable, traspasándola a un número
entero (Integer) y luego se procede a compararlas con las diferentes situaciones.
Private Sub MSComm1_OnComm()
Dim Valor, Valor1 As String
Se declara variable Valo1(ascii).
Dim p, pp As Integer
Se declara variable pp como un Nº entero.
Valor1 = ((MSComm1.Input))
El carácter que es recibido se copiara en
la variable Valor1.
pp = Asc(Valor1)
Valor1 se copia en la variable pp como un
número entero, para luego ser comparado.
Tabla 2-6
79
El diagrama de flujo correspondiente se aprecia a continuación (Fig.2-20):
Fig.2-20
2.5.1 Elección del Puerto y Velocidad
Para la elección del puerto Com y la velocidad de trabajo, fue necesario la utilización de
la herramienta ComBox, producto que es una lista desplegable y editable por el usuario.
Elección del puerto: En ella se declara las variables: viejo_puerto y nro_puerto como
números enteros.
La variable viejo puerto permite guardar el puerto que se había
80
utilizado anteriormente y copiarlo en la variable nro_puerto. En caso de algún cambio
ésta última variable se modificará según el puerto seleccionado y se asignará un
mensaje, tal como se aprecia a continuación:
Private Sub Combo_Puerto_Click()
Dim viejo_puerto As Integer
Declara la variable viejo_puerto como un Nº
entero.
Dim nro_puerto As Integer
Declara la variable nro_puerto como un Nº
entero.
viejo_puerto = nro_puerto
El puerto usado anteriormente pasa hacer el
nuevo puerto.
nro_puerto = Combo_Puerto.ListIndex
Añade un registro nuevo en esa posición y
borrar uno ya existente.
nro_puerto=Combo_Puerto.ItemData(nr Establece un numero especifico para indicar el
o_puerto)
puerto seleccionado.
If (nro_puerto <> viejo_puerto) And
En caso que no sea el puerto antiguo manda
(mensajes_cambios = True) Then
un mensaje.
MsgBox "Debe abrir este puerto antes
de usarlo"
Tabla 2-7
Elección de la velocidad: En ella se declara las variables: vieja_velocidad y velocidad
como números enteros. La variable vieja_velocidad permite guardar el puerto que se
había utilizado anteriormente y copiarlo en la variable velocidad. En caso de algún
cambio ésta última variable se modificará según la velocidad seleccionada y se
asignará un mensaje, tal como se aprecia a continuación:
81
Private Sub Combo_Puerto_Click()
Dim vieja_velocidad As Integer
Declara vieja_velocidad como un Nº entero.
Dim velocidad As Integer
Declara la variable velocidad como un Nº
entero.
vieja_velocidad = nro_puerto
La velocidad usada anteriormente pasa a ser
la nueva velocidad.
velocidad = Combo_Puerto.ListIndex
Añade un registro nuevo en esa posición y
borrar uno ya existente.
velocidad=Combo_Puerto.ItemData(nro_ Establece un numero especifico para indicar
puerto)
la velocidad seleccionada.
If (velocidad <> vieja_velocidad) And
En caso que no sea la velocidad antigua
(mensajes_ cambios = True) Then
manda un mensaje.
MsgBox "Mensaje"
Tabla 2-8
Fig.2-21
2.5.2 Abrir y Cerrar el Puerto
Abrir el Puerto: Para realizar esta tarea se selecciona la herramienta Command Button,
la cual funciona mediante un evento click. Al realizar ésta operación este control
identifica el puerto (MSComm1.CommPort), la velocidad de transmisión y recepción
(9600 Baudios) y por último se configura con un bit de parada y ocho de bits de
información. Una vez abierto el puerto entrega un mensaje al usuario indicando si la
operación se obtuvo con éxito o no, tal como se aprecia a continuación:
82
Private Sub Boton_Abrir_Click()
On Error GoTo manejar_errores
Identifica errores en la operación.
MSComm1.CommPort = nro_puerto
Elijo el puerto.
MSComm1.Settings = Str$(velocidad) +
Configura su velocidad, bits de parada,
",N,8,1"
etc.
MSComm1.PortOpen = True
Intenta abrir el Puerto.
MsgBox ("Puerto COM" + Str$(nro_puerto) + ": Mensaje: Puerto Com X : "Abierto OK".
abierto OK")
Etiq_Puerto.Caption = "COM" +
Indica al usuario el Nº del puerto
Str$(nro_puerto) + ":"
abierto.
Etiq_Velocidad.Caption = Str$(velocidad) + "
Indica la velocidad en Baudios
bauds"
seleccionada.
Etiq_Recepcion.Text = "Recepcion en Espera" Indica que la recepción se encuentra en
espera caja de texto (Etiq_Recepcion
textbox).
Etiq_Recepcion.BackColor = &HFF00&
Se asigna un fondo de color verde en la
caja de texto Etiq_Recepcion textbox.
Etiq_acero.Text = "Abierto"
Indica que el puerto se encuentra
abierto mediante una caja de texto
denominada Etiq_acero.Text.
Etiq_acero.BackColor = &HFF00&
Se asigna un fondo de color verde en la
caja de texto Etiq_acero.Text.
manejar_errores: MsgBox ("Error al intentar
Mensaje: "Error al intentar abrir Com X".
abrir COM" + Str$(nro_puerto))
Tabla 2-9
Cerrar el Puerto: Para realizar esta tarea se selecciona la herramienta Command
Button, la cual funciona mediante un evento click. Al realizar esta operación éste control
cierra el puerto mediante la instrucción MSComm1.PortOpen = False. Una vez realizada
83
la operación, entrega un mensaje al usuario (MsgBox) indicando su resultado. La
programación es la siguiente:
Private Sub Boton_Abrir_Click()
On Error GoTo manejar_errores
Identifica errores en la operación.
MSComm1.PortOpen = False
Intenta cerrar el Puerto.
MsgBox ("Puerto COM" + Str$(nro_puerto) + Mensaje: Puerto Com X : "Cerrado OK".
": cerrado OK")
Etiq_Recepcion.Text = "Recepcion
Indica que la recepción se encuentra
Desabilitada"
deshabilitada mediante la caja de texto
denominada Etiq_Recepcion textbox.
Etiq_Recepcion.BackColor = &HFF&
Se asigna un fondo de color rojo en la
caja de texto Etiq_Recepcion textbox.
Etiq_acero.Text = "Cerrado"
Indica que el puerto se encuentra cerrado
mediante una caja de texto denominada
Etiq_acero.Text.
Etiq_acero.BackColor = &HFF&
Se asigna un fondo de color rojo en la
caja de texto Etiq_acero.Text.
manejar_errores: MsgBox ("Error al intentar Mensaje: "Error al intentar cerrar Com X".
cerrar COM" + Str$(nro_puerto))
Tabla 2-10
2.5.3 Timer
Esta herramienta permite identificar la presencia de transmisión de la alarma hacia el
computador, es decir, ella se encargara de preguntar cada 30 segundos sí a recibido
alguna instrucción de nuestro sistema. En caso de ser positiva la respuesta, indicara
que la recepción se encuentra habilitada (Etiq_Recepcion), en caso contrario
mencionara que se encuentra deshabilitada (Etiq_Recepcion).
84
Para realizar dicha tarea, se creo la variable num(0), que indica si a recibido alguna
instrucción durante un tiempo determinado. Para explicar su funcionamiento se muestra
el siguiente diagrama de flujo:
Fig.2-22
En la herramienta Timer destacan las propiedades enabled e interval, la primera indica
si el Timer esta activado (True) o desactivado (False) y la segunda encargada
establecer el tiempo estimado en milisegundos de cada llamada, como se aprecia a
continuación Fig. (2-23):
85
Fig.2-23
Parte del programa se describe a continuación:
Public num(0) As Integer
Se declara la variable num(0)
como numero entero.
num(0) = 1
Al abrir el puerto.
num(0) = 0
Al recepcionar un dato.
If num(0) = 0 Then
Pregunta sí num(0) = 0. Sí
Etiq_Recepcion.BackColor = &HFF00&
es así escribe en el Tex.box
Etiq_Recepcion.Text = "Recepcion Habilitada"
(Etiq_Recepcion.Text) que la
num(0) = 1
recepción se encuentra
End If
habilitada.
If num(0) = 1 Then
Pregunta si num(0) = 1. Si
Etiq_Recepcion.BackColor = &HFF&
es así escribe en el Tex.box
Etiq_Recepcion.Text = "Recepcion Desabilitada" (Etiq_Recepcion.Text) que
Etiq_Estado5.BackColor = &HFF&
la recepción se encuentra
num(0) = 1
deshabilitada.
End If
Tabla 2-11
86
2.6 Instrumento Audible (Buzzer):
Debido a que nuestro sistema de alarma se encontrara en un lugar remoto del
aeropuerto, cercano a la pista de aterrizaje, se optó por la compra de un buzzer el cual
trabaja con tensiones de 5 a 12 volt. Producto que el microcontrolador trabaja con
tensiones TTL fue necesaria la compra de un relé de 12volt. El relé se ubica en una
placa anexa a la alarma, debido a que entrega una mayor facilidad para su ubicación y
conexión. En la siguiente figura (Fig.2-24) se aprecia el trabajo realizado:
Buzzer (12 volt DC.)
Fig.2-24
87
2.7 Presupuesto
El costo necesario para la realización de dicho proyecto fue asumido por parte de la
Dirección General de Aeronáutica Civil (DGAC) y el alumno responsable. Producto que
actualmente se cuenta con módems y enlace de Fibra Óptica Monomodo para
desarrollar dicho sistema de monitoreo, los materiales utilizados son los siguientes:
Materiales
Microprocesador
Pulsadores
Amplificador O.
Condensadores
Resistencias
LCD
Diodos
Cristal de Cuarzo
Max 232
Detector de Humo
Det. de Movimiento
Detec. Magnético
Caja
Placas
Buzzer
Bus de Datos
Rele 12 volt
Ácido
Precio
8.000
300
800
50
10
10.000
300
1.000
1.000
21.000
10.000
1.000
2.700
1.800
1.200
1.000
7.000
600
Cantidad
Total
1
8.000
12
3.600
1
800
10
500
15
150
1
10.000
5
1.500
1
1.000
1
1.000
1
21.000
1
10.000
1
1.000
1
2.700
1
1.800
1
1.200
1
1.000
1
7.000
1
600
Total:
$72.850
Tabla 2-12
El costo de los módem de fibra óptica alcanzan un precio aproximado de $110.000 c/u;
sin embargo, estos fueron adquiridos por la DGAC para diferentes propósitos.
88
3. CONCLUSIONES
1. La presente tesis entrega ventajas para la realización de otro tipo de proyectos, ya
que las bases para implementarlo entregan una gran versatilidad para realizar otro
tipo de funciones.
2. El PIC 18F452, permite una gran versatilidad de funciones, pudiendo controlar hasta
32 periféricos. Tiene la característica de realizar una comunicación mediante el
módulo USART, pudiendo transmitir y recepcionar datos en forma síncrona y
asíncrona según su configuración.
3. Producto que el microcontrolador trabaja con tensiones TTL (0 a 5 volt.), fue
necesaria la utilización de un adaptador de niveles, que transforma estas tensiones
a +15/-15 volt con los cuales funciona el puerto serie de nuestro computador.
4. El proyecto realizado permite establecer una comunicación con el computador
mediante módem o line driver de FO, sin embargo, es posible la utilización de un
módem GSM que funcione mediante la norma RS232, pero la configuración del
software tendría cambios importantes, sin embargo, el hardware no tendría cambios.
5. El sistema audible consiste en un buzzer, sin embargo, es posible la utilización de
una sirena que funcione con la red domiciliaria. El sistema de conexión se realizaría
entonces con un relé de 5 volt; el costo en el mercado alcanza los $1.500
aproximadamente.
6. Para la visualización en tiempo real del estado del sistema, se optó por una pantalla
LCD, configurada mediante un bus de 8 bits.
7. La simulación del programa se desarrolla mediante el software MPLB, donde es
posible interactuar con los distintos eventos y tiempos de las subrutinas.
8. Este sistema de alarma transmitirá la información cada 30 seg., actualizando el
estado de la alarma en forma indefinida. En caso de que no existir recepción de los
datos, el programa ejecutable desarrollado en visual Basic, detectara una anomalía
indicando al usuario que la recepción esta deshabilitada.
89
9. La aplicación desarrollada en visual Basic, permite identificar si la alarma está
activada o desactivada, que detector u sensor se activó, el puerto que se está
utilizando, velocidad de transmisión, recepción habilitada o deshabilitada.
10. La velocidad de transmisión del sistema es de 9600 baudios, sin embargo, esta
puede ser modificada a gusto del usuario, siempre y cuando las modificaciones se
realicen en el microcontrolador y computador respectivamente.
11. El desafío que significo para mí este proyecto, consiste en la programación de dos
softwares, uno desarrollado en MPLAB y otro en Visual Basic. Cada uno de ellos
cuenta con diferentes instrucciones y métodos de programación; la programación
desarrollada en Visual Basic esta realizada mediante
eventos, mientras que la
programación del PIC (ensambler) se caracteriza por ser mas compleja, producto
que se encarga del monitoreo de los sensores, transmisión de datos e ingreso y
cambio de clave.
12. Se observa en las fotos del anexo, que el diseño e implementación del circuito
impreso presenta diferentes dificultades, producto que la pantalla LCD y teclado son
placas separadas a la placa de control donde se ubica el microcontrolador. Estas se
unieron mediante un bus dato soldado a cada una de las placas.
13. El desarrollo de este trabajo, me ha permitido aprender, conocer y aplicar diferentes
soluciones para la transmisión y control mediante microcontroladores (PIC). Su gran
versatibilidad y la gama de programas que actualmente existen en el mercado hacen
posible el desarrollo de diversas aplicaciones de acuerdo a las necesidades del
mercado.
14. El conocimiento adquirido durante estos seis años de carrera, me han permitido
entender y manejar equipos con diferentes medios de transmisión, estas
herramientas, mas el desarrollo adquirido de autoaprendizaje, me han servido para
enfrentar el mundo laboral.
90
4.1 Referencias Bibliograficas
- Título: Aprenda Visual Basic como si estuviera en primero. Autor: Javier García de
Jalón, José Ignacio Rodríguez y Alfonso Brázales. Escuela Superior de Ingenieros
Industriales, Universidad de Navarra.
- Título: Instalaciones De Fibra Óptica. Autor: Bob Chomycz. Editorial: McGraw-Hill.
- Título: Microcontroladores PIC. Diseño práctico de aplicaciones. Autor: Angulo
Usategui, José María y Angulo Martínez. Editorial: McGraw-Hill.
- Título: Análisis y diseño de circuitos electrónicos- Tomo I. Autor: Donald A. Reamen.
Año: 1999.
- Título: Comunicaciones ópticas. Autor: José Martín Sanz. Año: 1996.
- Título: Diseño de hardware electrónico. Autor: G. C. Loveday. Año: 1995.
91
5.1 Anexo
5.1.1 Aeropuerto Comodoro Arturo Benítez
En el marco teórico se pudo apreciar, que el aeropuerto cuenta con diferentes
radioayudas y ayudas visuales, las que se describirán a continuación para entender la
importancia que estas poseen para dicho complejo:
5.1.1.1 ILS
Para realizar este sistema de aterrizaje (ILS), el Aeropuerto debe contar con el siguiente
equipamiento, consistente en:
a. TX. del Localizador.
b. TX. de la Senda de Planeo.
c. Marcador externo, medio e interno.
Un ILS consiste de dos subsistemas independientes: uno sirve para proporcionar guía
lateral y el otro para proporcionar guía vertical.
Una serie de antenas localizadoras (LOC o localizer) están situadas normalmente a
unos 305 metros del final de la pista y suelen consistir en 8 ó 14 antenas direccionales.
Se transmiten señales portadoras entre los 108 MHz y 112MHz definidas para cada
localizador. Estas portadoras se modulan con 90 Hz y 150 Hz y con distintas fases. Esto
produce el efecto que la señal de 150Hz predomine en el lado derecho de pista y la de
90Hz en el izquierdo. El receptor del localizador en el avión mide la diferencia entre la
modulación entre las señales de 90 Hz y 150 Hz: cuando la diferencia es de cero, la
antena receptora está en la línea central del localizador, lo que normalmente coincide
con el centro de la pista.
Una antena transmisora de la senda de planeo (GS, del inglés: glideslope) se sitúa a un
lado de la zona de la pista donde se produce la toma. La señal GS se transmite a una
92
frecuencia de entre 328.6 MHz y 335.4 MHz, usando una técnica similar a la del
localizador;
la
señal
está
situada
para
marcar
una
senda
de
planeo
de
aproximadamente 3º sobre la horizontal.
Fig.5-1
a) Principios de Modulación Electrónica
Un oscilador se encarga de alimentar las dos etapas moduladoras del transmisor
(Fig.5-2), las cuales se modulan por separado con 90Hz y 150 Hz. A la salida de dichas
etapas se obtendrán dos señales:
Ambas tensiones se suman y restan en la red sub-siguiente. La suma es una portadora
con ambas bandas laterales:
93
Por el contrario la diferencia entrega la supresión de la portadora, es decir, una banda
lateral con la misma fase y otra desfasada 180º:
Para el correcto funcionamiento de los amplificadores de potencia combinados se
requiere la supresión de la portadora en la salida de las SBO (únicamente bandas
laterales). Por lo tanto la compensación necesita que ambas partes de la portadora
tengan la misma amplitud y fase. La fase depende principalmente de la longitud de los
cables desde y hacia los amplificadores de potencia, lográndose corregir unos cuantos
grados mediante condensadores de pequeña capacidad. La estabilidad en amplitud se
logra mediante un bucle de control de alta ganancia. Por lo tanto, es constante el nivel
de la portadora en cada amplificador de potencia.
La estabilidad de amplitud de modulación también es importante, ya que una
profundidad de modulación distinta influye directamente sobre la posición de la
trayectoria. La estabilidad se logra, en primer lugar, mediante la generación de las
frecuencias de 90Hz y 150 Hz con una buena estabilidad de amplitud, sin embargo,
además se demodula la envolvente a la salida de cada amplificador de potencia,
alimentándose con un circuito de realimentación negativa conectado a la entrada del
amplificador de modulación, mejorando de esta manera la estabilidad de la profundidad
de modulación.
94
Fig.5-2
La señal SBO (únicamente bandas laterales) se radia desde el mismo array de antenas
en forma de diferencia con la señal portadora, con lo que el mínimo de la señal
corresponde al eje central de la pista de aterrizaje. Los lóbulos de la diferencia (y por lo
tanto los de 90 y 150 Hz) están en oposición de fase.
95
Fig.5-3
Como se aprecia en la figura anterior (Fig.5-3), en el centro del diagrama donde se
produce un nulo solamente se detectan las bandas laterales con igual amplitud. A
ambos lados del nulo se observa que la señal de Doble Banda Lateral (SBO) crece en
forma rápida, descentrando la señal AM (Modulación de Amplitud). Los parámetro
utilizados para establecer el correcto funcionamiento del equipo provienen de la señal
modulada M que se define como
, donde A y B constituyen la amplitud de los
tonos de 90Hz y 150Hz, respectivamente y C se denomina la amplitud de la portadora.
La diferencia de dichos tonos se denominan Índice de Modulación (DDM) y se define
como:
Los receptores miden la magnitud del índice de modulación (DDM) y calculan la
desviación de la ruta, siendo ésta proporcional al ángulo azimutal de al menos 5º a los
lados de la línea central. Según la Organización Internacional de Aeronáutica Civil
(OACI) se requiere un DDM =
que provoque un fuera de escala de la aguja de
96
desviación, valor que ocurre a una distancia de 107mts. a cada uno de los lados del eje
de aproximación.
b) Ajuste Electrónico De La Anchura Del Rumbo
La función DDM, correspondiente al rumbo, no solo depende del diagrama SBO, sino
además de la potencia de la Bandas Laterales (SBO). Dicho ajuste se puede lograr
combinando los 90Hz y 150Hz, como se aprecia en la figura 5-4.
En esta figura se observa como un generador alimenta a unas redes combinadas,
permitiendo la adición de tensiones que constan de los 90 Hz y 150 Hz, en partes
iguales. Dichas tensiones se llevan a un amplificador operacional, OP.1, que suministra
la misma fase que en el generador, y los 150 Hz desfasados 180º. El potenciómetro
situado en el amplificador operacional OP.2 permite ajustar esta tensión. El factor K,
que se aprecia en la figura, puede adoptar cualquier valor entre +1 y -1. La tensión
restante se conecta directamente a unas redes combinadas y a través de un
amplificador operacional inversor, OP.3, a la otra red combinada.
Fig.5-4
97
c) Categorías ILS
El Sistema ILS se divide en tres categorías (I, II, III), donde cada una de ellas presenta
cierto grado de limitaciones. Un ILS estándar se denomina categoría I, permitiendo
aterrizajes con 732mts. de visibilidad. Los aterrizajes utilizados en la categoría II
permiten realizar el descenso hasta sólo 366 mts, mientras que la categoría III permite
realizar aterrizajes con una visibilidad de 213,4mts. Estas dos últimas categorías
cuentan además con sistemas de ayuda visuales estandarizadas por la OACI.
Fig.5-5 (Equipo Localizador - Aeropuerto Arturo Merino Benítez)
98
5.1.1.2 Descripción General de los diferentes Sistemas.
Para entender mejor el funcionamiento de los demás sistemas se entregara una breve
descripción de cada uno de ellos:
a) VOR Doppler
Se denomina VOR Doppler a un radiofaro omnidireccional VHF, que se ha adoptado
internacionalmente como sistema de ayuda a la navegación por radio para las
aeronaves. Su función consiste proporcionar el ángulo entre la aeronave y el norte
magnético, tomando como referencia la ubicación de la estación terrestre.
Fig. 5-6 (VOR Doppler - Aeropuerto Arturo Merino Benítez)
99
b) DME
DME corresponde a equipo medidor de distancia, que consiste
en un EMISOR-
RECEPTOR UHF con indicación en cabina, que indica numéricamente la distancia a la
estación DME en millas náuticas. Un transmisor de muy alta frecuencia colocado en el
avión, emite una señal codificada que es recibida por una instalación terrestre. Por
medio de la clave emitida, el equipo terrestre devuelve la señal al avión que la generó,
donde el procesador del DME calcula la distancia al equipo terrestre, utilizando un
principio parecido al de un radar.
En la práctica la estación DME se combina con radio ayudas a la navegación como los
sistemas VOR e ILS, permitiendo al piloto apreciar la distancia exacta de las estaciones
en tierra.
Fig. 5-7 (Equipo DME - Aeropuerto Arturo Merino Benítez)
100
c) Marcador Medio, Interno y Externo
Los marcadores son radiofaros encargados de proporcionar la distancia del cauce,
identificando puntos predeterminados a lo largo de la pista del acercamiento. Estos
radiofaros son transmisores de baja potencia que funcionan a una frecuencia de 75MHz
y 3 W. Operan irradiando una viga elíptica hacia el cielo, con una altitud de 305 metros,
tal como se aprecia en la siguiente figura (Fig. 5-8).
Fig. 5-8
d) Casetas de Transmisores y Receptores
Respecto a las comunicaciones, dentro del aeropuerto existen dos casetas encargadas
de recepcionar y transmitir información de las diferentes unidades del aeropuerto, entre
ellas se encuentran los SEI, controladores de transito, AVSEC, etc. Estos equipos son
transmisores y receptores VHF-AM y VHF-FM que funcionan principalmente para la
localización y posicionamiento de las aeronaves.
e) NDB
El NDB (Non Directional Beacom) es el sistema de navegación aérea más antiguo y
sencillo que actualmente se encuentra operativo. Este sistema consiste en un radiofaro
omnidireccional que transmite a una frecuencia fija, mediante un instrumento ADF (en
101
inglés Automatic Direction Finder) a bordo de la aeronave, el piloto puede seleccionar la
frecuencia de ésta emisora y apreciar la aguja del instrumento, que indicara la dirección
en que se encuentra el radiofaro. Los NDB están situados a lo largo de las principales
rutas de navegación aéreas, y sobre todo en las inmediaciones de los aeropuertos,
donde siguen siendo de gran utilidad para los pilotos cuando realizan maniobras de
aproximación con poca o nula visibilidad. La emisión se realiza en frecuencia media y el
alcance es de unos 50 kilómetros.
f) Sistema de Ayudas Visuales
El sistema de ayudas visuales se divide en diversos subsistemas, entre los que
destacan REIL, VASIS y ALS.
El sistema REIL consiste en dos series de luces, que sincronizadamente emiten un
flash a cada lado del último tramo de la pista. Este sistema tiene como objetivo
distinguir la cabecera de la pista en lugares caracterizados por numerosas luces de
suelo, como señales de neon u otras luces que pueden distraer la atención del piloto. El
sistema VASIS es el encargado de indicar al piloto el grado de inclinación que presenta
la aeronave en la aproximación final. Por último, el sistema ALS tiene la función de
indicar la alineación de la aeronave, el balance, el horizonte, el ancho y la posición con
respecto a la cabecera de la pista.
g) Transponders
Un transponder es un dispositivo que emite una señal identificable en respuesta a una
interrogación. El término surge de la fusión de las palabras Transmisor y Respondedor.
Básicamente existe dos tipos de transponder : los pasivos y los activos, estos últimos
son los que operan dentro del aeropuerto ya que permiten la identificación de la
aeronave, así como datos necesarios para la correcta posición de la plataforma (como
altura barométrica, velocidad y demás información de interés). Generalmente los
transponders funcionan bajo demanda, es decir, un interrogador o radar secundario
emite una interrogación (1090 mhz), que el transponder entiende y decodifica, y genera
la respuesta con la información solicitada.
102
h) Torre de Control
La torre de control es un lugar físico, que tiene como objetivo monitorear y guiar el
tráfico aéreo dentro del aeropuerto y sus inmediaciones, es decir, el control del rodaje,
el despegue, la aproximación y el aterrizaje de las aeronaves. Su labor es compleja,
debido a la gran cantidad de aviones que transitan y las condiciones atmosféricas que
pueden alterar dicho tránsito.
La ubicación de los diferentes sistemas se observa en la siguiente figura (Fig. 5-9):
Fig. 5-9
103
5.1.2 Desarrollo de programa en Visual Basic.
Private Sub Boton_Abrir_Click()
On Error GoTo manejar_errores
MSComm1.CommPort = nro_puerto
MSComm1.Settings = Str$(velocidad) + ",N,8,1"
MSComm1.PortOpen = True
MsgBox ("Puerto COM" + Str$(nro_puerto) + ": abierto
OK")
Etiq_Puerto.Caption = "COM" + Str$(nro_puerto) + ":"
Etiq_Velocidad.Caption = Str$(velocidad) + " bauds"
Etiq_Recepcion.BackColor = &HFF00& 'Color verde
Etiq_Recepcion.Text = "Recepcion en Espera"
Etiq_acero.BackColor = &HFF00&
Etiq_acero.Text = "Abierto"
Al pulsar aquí abre un puerto
serial.
Paso 1: elijo el puerto.
Paso 2: preparo parámetros
de Comunicación.
Paso 3: Intento abrir el
puerto. Puedo no lograrlo: si
no existe, o si otro programa
lo está usando. Aquí puede
ocurrir un error y saltaría a la
etiqueta " manejar_errores "
Mensaje que el puerto se
encuentra abierto.
num(0) = 1
GoTo Salir 'Todo Ok, continuar.
manejar_errores:
MsgBox ("Error al intentar abrir COM" +
Str$(nro_puerto))
MsgBox ("Error detectado por Visual Basic: " +
Err.Description)
Resume Salir
Resume me permite
continuar con el programa.
Salir:
End Sub
Private Sub Boton_Cerrar_Click()
Al pulsar aquí cierra un
puerto serial.
104
On Error GoTo manejar_errores
MSComm1.PortOpen = False
Puede haber error si intento
cerrar un puerto que está en
uso por otro programa, entre
otras causas.
MsgBox ("Puerto COM" + Str$(nro_puerto) + ": cerrado Mensaje que el puerto a sido
OK")
cerrado
Etiq_Recepcion.BackColor = &HFF&
Etiq_Recepcion.Text = "Recepcion Desabilitada"
Etiq_acero.BackColor = &HFF&
Etiq_acero.Text = "Cerrado"
Etiq_acdec.BackColor = &HFF&
Etiq_acdec.Text = "Indefinido"
Etiq_Estado1.BackColor = &HFF&
Etiq_Estado1.Text = "Indefinido"
Etiq_Estado2.BackColor = &HFF&
Etiq_Estado2.Text = "Indefinido"
Etiq_Estado3.BackColor = &HFF&
Etiq_Estado3.Text = "Indefinido"
Etiq_Estado4.BackColor = &HFF&
Etiq_Estado4.Text = "Indefinido"
Etiq_Estado5.BackColor = &HFF&
num(0) = 1
GoTo Salir
manejar_errores:
MsgBox ("Error al intentar cerrar COM" +
Str$(nro_puerto))
MsgBox ("Visual basic detectó: " + Err.Description)
Resume Salir
Al producirse un error, este
envía un mensaje al usuario.
Salir:
End Sub
Private Sub Combo_Puerto_Click()
Aquí selecciona el número
del puerto a usar.
Dim viejo_puerto As Integer
Declara viejo_puerto como
entero.
105
viejo_puerto = nro_puerto
nro_puerto = Combo_Puerto.ListIndex
nro_puerto = Combo_Puerto.ItemData(nro_puerto)
Me fijo si el usuario intenta
cambiar de puerto.
If (nro_puerto <> viejo_puerto) And (mensajes_cambios Reviso si el puerto fue
= True) _
cambiado para enviar un
Then MsgBox "Debe abrir este puerto antes de usarlo" mensaje al usuario.
End Sub
Private Sub Combo_Velocidad_Click()
Dim vieja_velocidad As Integer
Declaro la variable
vieja_velocidad como entero.
vieja_velocidad = velocidad
velocidad = Combo_Velocidad.ListIndex
velocidad = Combo_Velocidad.ItemData(velocidad)
If (vieja_velocidad <> velocidad) And
(mensajes_cambios = True) _
Then MsgBox "Cambió la velocidad. Si el puerto ya
estaba abierto," _+ Chr$(13) + " debe cerrarlo y luego
abrirlo antes de usarlo"
Me fijo si el usuario intenta
cambiar la velocidad.
Reviso si la velocidad fue
cambiada para enviar un
mensaje al usuario.
End Sub
Private Sub Form_Load()
mensajes_cambios = False
velocidad = 1200
nro_puerto = 9600
Combo_Puerto.ListIndex = 0
Combo_Velocidad.ListIndex = 0
mensajes_cambios = True
MSComm1.InputLen = 1
Como InputLen vale 1, solo
se recibirá el primer carácter,
ignorando el resto.
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
Estas dos propiedades tienen
un valor igual a uno, producto
106
que es la cantidad de
caracteres que deben estar
presentes en los Buffer de
recepción y transmisión
respectivamente.
MsgBox "Recuerde, debe abrir un puerto antes de
empezar a usarlo"
Envía este mensaje al
usuario.
Etiq_acero.BackColor = &HFF&
Condiciones iniciales, al abrir
nuestro programa.
Etiq_acero.Text = "Cerrado"
Etiq_Recepcion.BackColor = &HFF&
Etiq_Recepcion.Text = "Recepcion Desabilitada"
Etiq_Estado1.BackColor = &HFF&
Etiq_Estado1.Text = "Indefinido"
Etiq_Estado2.BackColor = &HFF&
Etiq_Estado2.Text = "Indefinido"
Etiq_Estado3.BackColor = &HFF&
Etiq_Estado3.Text = "Indefinido"
Etiq_acdec.BackColor = &HFF&
Etiq_acdec.Text = "Indefinido"
Etiq_Estado4.BackColor = &HFF&
Etiq_Estado4.Text = "Indefinido"
Etiq_Estado5.BackColor = &HFF&
End Sub
Private Sub MSComm1_OnComm()
Aquí se interceptan los
eventos que se producen
durante la comunicación
RS232. Cada vez que pasa
algo relativo al puerto COM
en uso, cambia el valor de la
propiedad CommEvent.
Dim VALOR, Valor1 As String
Declaro Valor 1, como
variable String.
Declaro variable pp como
entero..
Dim p, pp As Integer
On Error GoTo malo
Si llega a ocurrir algún error
salta a malo.
107
Valor1 = ((MSComm1.Input))
pp = Asc(Valor1)
If pp = 1 Then '(activado)
Etiq_acdec.BackColor = &HFF00&
Etiq_acdec.Text = "Activado"
Etiq_Recepcion.BackColor = &HFF00&
Etiq_Recepcion.Text = "Recepcion Habilitada"
Etiq_Estado1.BackColor = &HFF00&
Etiq_Estado1.Text = "Normal"
Etiq_Estado2.BackColor = &HFF00&
Etiq_Estado2.Text = "Normal"
Etiq_Estado3.BackColor = &HFF00&
Etiq_Estado3.Text = "Normal"
Etiq_Estado4.BackColor = &HFF00&
Etiq_Estado4.Text = "Normal"
Etiq_Estado5.BackColor = &HFF00&
num(0) = 0
End If
If pp = 2 Then '(desactivado)
Etiq_acdec.BackColor = &HFF00&
Etiq_acdec.Text = "Desactivado"
Etiq_Recepcion.BackColor = &HFF00&
Etiq_Recepcion.Text = "Recepcion Habilitada"
Etiq_Estado1.BackColor = &HFF00&
Etiq_Estado1.Text = "Normal"
Etiq_Estado2.BackColor = &HFF00&
Etiq_Estado2.Text = "Normal"
Etiq_Estado3.BackColor = &HFF00&
Etiq_Estado3.Text = "Normal"
Etiq_Estado4.BackColor = &HFF00&
Etiq_Estado4.Text = "Normal"
Etiq_Estado5.BackColor = &HFF00&
num(0) = 0
End If
Dato entrante por el puerto es
igual a Valor 1.
Pasa el dato en ascii a
número entero.
Según el dato recibido lo
compara uno a uno para
traducir la información
recibida.
108
If pp = 3 Then '(alarma1)
Etiq_Estado1.BackColor = &HFF&
Etiq_Estado1.Text = "Intruso"
Etiq_Estado5.BackColor = &HFF&
num(0) = 0
End If
If pp = 4 Then '(alarma2)
Etiq_Estado2.BackColor = &HFF&
Etiq_Estado2.Text = "Fuego"
Etiq_Estado5.BackColor = &HFF&
num(0) = 0
End If
If pp = 5 Then '(alarma3)
Etiq_Estado3.BackColor = &HFF&
Etiq_Estado3.Text = "Intruso"
Etiq_Estado5.BackColor = &HFF&
num(0) = 0
End If
malo:
If Err.Number = 1117 Then
Exit Sub
End If
End Sub
Si se llega a producir un
error, lo identifica al usuario.
Private Sub Timer1_Timer()
Este timer, permite preguntar
al programa si ha recibido
alguna respuesta del sistema
cada 30 segundos, en caso
de ser negativa la respuesta,
envía un mensaje al usuario
indicando que la recepción
esta deshabilitada.
If num(0) = 0 Then
Etiq_Recepcion.BackColor = &HFF00&
Etiq_Recepcion.Text = "Recepcion Habilitada"
num(0) = 1
End If
109
If num(0) = 1 Then
Etiq_Recepcion.BackColor = &HFF&
Etiq_Recepcion.Text = "Recepcion Desabilitada"
Etiq_Estado5.BackColor = &HFF&
num(0) = 1
End If
End Sub
110
5.1.3 Desarrollo de programa en Mplab.
List
include
__CONFIG
__CONFIG
__CONFIG
__CONFIG
p=PIC18F452
P18F452.INC
_CONFIG1H, _HSPLL_OSC_1H & _OSCS_OFF_1H
_CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_42_2L
_CONFIG2H, _WDT_OFF_2H &_WDTPS_2_2H
_CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
movlw
movwf
b'00000111'
ADCON1
Configuración del puerto A, como
digitales.
movlw
movwf
b'00000000'
TRISB
Configuración del puerto B como
salidas.
movlw
movwf
b'10111111'
TRISC
Configuración del puerto C como
entradas, menos RC6.
movlw
movwf
b'00100111'
TRISA
Configuración del puerto A.
movlw
movwf
b'00011111'
TRISD
Configuración del puerto D.
movlw
movwf
b'00000000'
TRISE
Configuración del puerto E.
cblock
NUM1
NUM2
NUM3
NUM4
CUENTA
CUENTA1
VAR
DIGITO
CASO
COSTO
Tiempo
CounterA
PDel0
0x10
Declaración de las variables.
111
PDel1
PDel2
PDel3
PDel4
PDel5
contador
paso
endc
BSF
BSF
RCSTA,SPEN
RCSTA,CREN
CONFIGURAR
Ingreso de variables como estado inicial.
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
BCF
CUENTA
CUENTA1
VAR
DIGITO
CASO
COSTO
NUM1
NUM2
NUM3
NUM4
PORTA,3
PANTALLA
call
call
call
Se configura pantalla LCD.
inicializa_lcd
Se aprecia en pantalla que la alarma se
mensaje_AlarmaDesactiv encuentra desactivada y lista para el
Ingrese_Clave
ingreso de la clave.
INICIO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
Clave de ingreso: 0000
Rutina que se encarga de preguntar si
ingrese algún digito.
PORTC,1
UNO
PORTC,0
DOS
PORTA,5
TRES
PORTD,0
CUATRO
PORTC,3
112
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
CINCO
PORTC,2
SEIS
PORTD,3
SIETE
PORTD,2
OCHO
PORTD,1
NUEVE
PORTC,5
CERO
movlw
SUBWF
BTFSS
GOTO
CALL
GOTO
b'00000000'
CUENTA1
STATUS,Z
NOSE
APAGADO
INICIO
NOSE
CALL
CALL
GOTO
DONDE
decfsz
GOTO
MOVLW
ADDWF
decfsz
RETURN
bsf
MOVLW
ADDWF
RETURN
ROSOL
CALL
RETURN
UNO
ACTIVADOCC
DONDE
INICIO
contador
ROSOL
b'01100000'
contador,1
paso
Pregunto si la alarma esta desactivada o
activada, para luego enviar el mensaje
correspondiente.
Al estar activada la alarma, va a la
subrutina ACTIVADOCC que se
encarga de transmitir al MODEM que la
alarma se encuentra activada.
Pregunto si se cumplieron los 30
segundos para activar la sirena, en caso
que la alarma se encuentre activada.
PORTA,3
b'00000010'
paso,1
PDelay
Una vez ingresado el digito, este se
113
CLRF
DIGITO
MOVLW
1
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
DOS
CLRF
DIGITO
MOVLW 2
2
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
TRES
CLRF
DIGITO
MOVLW 3
3
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
CUATRO
CLRF
DIGITO
MOVLW 4
4
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
CINCO
CLRF
DIGITO
MOVLW 5
5
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
SEIS
CLRF
DIGITO
MOVLW 6
6
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
SIETE
CLRF
DIGITO
MOVLW 7
7
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
OCHO
carga a la variable DIGITO.
114
CLRF
DIGITO
MOVLW 8
8
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
NUEVE
CLRF
DIGITO
MOVLW 9
9
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
CERO
CLRF
DIGITO
MOVLW 0
0
ADDWF DIGITO, 1 DIGITO, 1
GOTO
CARGAR
CARGAR
INCF CUENTA, 1
Incrementa la variable Cuenta, para
identificar cuantos dígitos se ingresaron.
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000001'
CUENTA,0
STATUS,Z
X
UNOSS
X
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000010'
CUENTA,0
STATUS,Z
XX
DOSS
XX
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000011'
CUENTA,0
STATUS,Z
XXX
TRESS
XXX
MOVLW
b'00000100'
115
SUBWF
BTFSS
GOTO
GOTO
CUENTA,0
STATUS,Z
CARGAR
CUATROSS
GOTO INICIO
UNOSS
call
call
clrf
MOVF
ADDWF VAR, 1
GOTO
DOSS
call
clrf
MOVF
ADDWF VAR, 1
GOTO
TRESS
call
clrf
MOVF
ADDWF VAR, 1
GOTO
CUATROSS
call
clrf
MOVF
ADDWF VAR, 1
GOTO
COMPARAR
ADDWF VAR, 1
SUBWF
BTFSS
GOTO
GOTO
comienzo
clave_x
VAR
NUM1,0
Llama al Lcd para indicar al usuario que
la primera clave fue ingresada.
Carga la primera clave en la variable
VAR.
COMPARAR
clave_xx
VAR
NUM2,0
Llama al Lcd para indicar al usuario que
la segunda clave fue ingresada.
Carga la segunda clave en la variable
VAR.
COMPARAR
clave_xxx
VAR
NUM3,0
COMPARAR
clave_xxxx
VAR
NUM4,0
COMPARAR
DIGITO
STATUS,Z
MALO
TERMINO
Llama al Lcd para indicar al usuario que
la tercera clave fue ingresada.
Carga la tercera clave en la variable
VAR.
Llama al Lcd para indicar al usuario que
la cuarta clave fue ingresada.
Carga la cuarta clave en la variable
VAR.
Compara las variables DIGITO y VAR.
Si es distinta a cero va a una subrutina
malo, en caso contrario pregunta si los
dígitos ingresados llegaron a cuatro.
116
TERMINO
CALL
MOVLW
SUBWF
BTFSS
GOTO
GOTO
PDelay
b'00000100'
CUENTA,0
STATUS,Z
INICIO
ENOCAM
ENOCAM
BTFSC
GOTO
BTFSC
PORTD,4
ENTER
PORTC,4
Pregunta si voy a pulsar cambio de
clave o enter.
movlw
SUBWF
BTFSS
GOTO
CALL
GOTO
b'00000000'
CUENTA1
STATUS,Z
NOXP
APAGADO
ENOCAM
Rutina encargada de transmitir el estado
de la alarma (activada o desactivada).
NOXP
CALL
GOTO
PRENDIO
ENOCAM
ENTER
movlw
SUBWF
BTFSS
GOTO
GOTO
b'00000000'
CUENTA1
STATUS,Z
DESACTIVADO
ACTIVADO
Subrutina de tiempo, para que no se
produzcan rebotes.
En caso de no ser ingresados los 4
dígitos vuelve al INICIO.
Pregunta si debo activar o desactivar la
alarma en caso de que pulse ENTER.
ACTIVADO
CLRF
COSTO
INCF
CUENTA1, 1
CLRF
CASO
CLRF
contador
CALL
CALL
CALL
comienzo
mensaje_AlarmaActiv
PRENDIDO
Envía un mensaje al LCD que la
alarma se encuentra activada.
Subrutina para transmitir al MODEM
que esta activada la alarma.
117
movlw
movwf
CARO
CALL
CALL
CALL
CALL
decfsz
GOTO
CALL
GOTO
b'00001010'
paso
SEGUNDOS
SEGUNDOS
SEGUNDOS
PRENDIDO
paso
CARO
PRENDIO
ACTIVADOCC
PRENDIDO
BCF
TXSTA,BRGH
MOVLW
.64
MOVWF
SPBRG
BCF
TXSTA,SYNC
BSF
TXSTA,TXEN
movlw b'00000001'
movwf
TXREG
COMP_TX
btfss
goto
RETURN
Envía mensaje al MODEM que la alarma
esta activada.
TXSTA,TRMT
COMP_TX
PRENDIO
Envía mensaje al MODEM que la alarma
esta activada.
BCF
TXSTA,BRGH
MOVLW
.64
MOVWF
SPBRG
BCF
TXSTA,SYNC
BSF
TXSTA,TXEN
movlw b'00000110'
movwf
TXREG
COMPRAF
btfss
goto
RETURN
Espera 30 segundos, para que salga el
usuario.
TXSTA,TRMT
COMPRAF
118
ACTIVADOCC
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
PORTA,0
ALA
PORTA,1
ALARM
PORTA,2
ALARMA
movlw
SUBWF
BTFSS
GOTO
b'00000000'
CASO
STATUS,Z
PRENDIDO
CALL
PRENDIDO
GOTO
ACTIVADOCC
ALA
BCF
MOVLW
MOVWF
TXSTA,BRGH
.64
SPBRG
BCF
TXSTA,SYNC
BSF
TXSTA,TXEN
movlw b'00000011'
movwf
TXREG
COMP_TXRE
btfss
goto
GOTO Eclipce
Subrutina encargada de preguntar por
cada uno de los sensores.
Llama a la subrutina prendido para
luego volver al inicio.
Llama a la subrutina prendido, para
luego volver a preguntar por los
sensores.
Subrutina encargada de preguntar por
cada uno de los sensores.
Modo asíncrono de baja velocidad.
Configura la velocidad de transmisión.
Selecciono modo asíncrono.
Inicio la transmisión.
Envió un 3 en binario, para indicar que
el detector de humo se encuentra
activado.
TXSTA,TRMT
COMP_TXRE
Pregunto si finalizo la transmisión.
ALARM
BCF
MOVLW
MOVWF
TXSTA,BRGH
.64
SPBRG
Modo asíncrono de baja velocidad.
Configura la velocidad de transmisión.
BCF
TXSTA,SYNC
Selecciono modo asíncrono.
119
BSF
TXSTA,TXEN
movlw b'00000100'
movwf
TXREG
COMP_TXQT
btfss
goto
GOTO Eclipce
ALARMA
BCF
MOVLW
MOVWF
Inicio la transmisión.
Envió un 4 en binario, para indicar que
el detector de movimiento se encuentra
activado.
TXSTA,TRMT
COMP_TXQT
Pregunto si finalizo la transmisión.
TXSTA,BRGH
.64
SPBRG
Modo asíncrono de baja velocidad.
BCF
TXSTA,SYNC
BSF
TXSTA,TXEN
movlw b'00000101'
movwf
TXREG
COMP_TXPB
btfss
goto
GOTO Eclipce
TXSTA,TRMT
COMP_TXPB
Eclipce
movlw
SUBWF
BTFSS
RETURN
b'00000000'
CASO
STATUS,Z
INCF
CLRF
CLRF
CLRF
BSF
CASO, 1
VAR
DIGITO
CUENTA
PORTA,3
CALL
CALL
comienzo
mensaje_Intruso
CALL
Ingrese_Clave
CALL
SEGUNDOS
Configura la velocidad de transmisión.
Selecciono modo asíncrono.
Inicio la transmisión.
Envió un 5 en binario, para indicar que
el sensor magnético se encuentra
activado.
Pregunto si finalizo la transmisión.
Pregunta si la alarma ya se había
activado con anterioridad, para volver
a la rutina inicio.
Incrementa la variable CASO.
Borra la variable VAR.
Borra la variable DIGITO.
Borra la variable CUENTA.
Envía un uno lógico para activar el
buzzer, mediante el pin RA3.
Subrutina encargada de borra el LCD.
Subrutina encargada de visualizar en
el LCD la palabra intruso.
Subrutina encargada de visualizar en
el LCD las palabras ingrese clave.
120
CALL
BCF
GOTO
SEGUNDOS
PORTA,3
INICIO
Subrutina de tiempo.
Apago el Buzzer.
Vuelvo a INICIO.
CLRF
CLRF
clrf
CASO
COSTO
CUENTA1
Rutina de sistema de alarma
desactivado.
Borra la variable CASO.
Borra la variable COSTO.
Borra la variable CUENTA1.
CALL
APAGADO
DESACTIVADO
CALL
Envía mensaje al MODEM que la alarma
esta desactivada.
comienzo
Subrutina que borra el LCD.
mensaje_AlarmaDesactiv Subrutina encargada de visualizar en
el LCD la palabra alarma desactivada.
Ingrese_Clave
Subrutina encargada de visualizar en
el LCD la palabra ingrese clave.
PDelay
CLRF
CLRF
CLRF
VAR
DIGITO
CUENTA
GOTO
INICIO
call
CALL
call
APAGADO
BCF
MOVLW
MOVWF
TXSTA,BRGH
.64
SPBRG
Configura la velocidad de transmisión.
BCF
TXSTA,SYNC
BSF
TXSTA,TXEN
movlw b'00000010'
movwf
TXREG
Selecciono modo asíncrono.
Inicio la transmisión.
Envió un 2 en binario, para indicar que
la alarma se encuentra desactivada.
COMP_TXSC
btfss
goto
Pregunto si finalizo la transmisión.
RETURN
TXSTA,TRMT
COMP_TXSC
Modo asíncrono de baja velocidad.
121
MALO
Rutina encargada de detectar una
clave errónea.
CALL
MOVLW
SUBWF
BTFSS
GOTO
GOTO
PDelay
b'00000100'
CUENTA,0
STATUS,Z
MALITO
LISTO
LISTO
CLRF
CLRF
CLRF
GOTO
CUENTA
VAR
DIGITO
VICHO
Pregunto si los dígitos ingresados
llegan a cuatro.
NUEVO
CALL
CALL
comienzo
mensaje_Error
CALL
Ingrese_Clave
GOTO
INICIO
VICHO
BTFSC
GOTO
PORTD,4
NUEVO
Pregunto si pulse enter.
movlw
SUBWF
BTFSS
GOTO
CALL
GOTO
b'00000000'
CUENTA1
STATUS,Z
NTEP
APAGADO
VICHO
Pregunto si la alarma esta activada o
desactivada y posteriormente enviar
el mensaje correspondiente al MODEM.
NTEP
CALL
GOTO
PRENDIO
VICHO
MALITO
BTFSC
Indica el termino de la rutina MALO.
Subrutina que borra el LCD.
Subrutina encargada de visualizar en
el LCD la palabra error.
Subrutina encargada de visualizar en
el LCD las palabras ingrese clave.
Vuelve a INICIO.
Rutina encarga de preguntar si pulse
algún digito.
PORTC,1
122
GOTO
REMALO
BTFSC
GOTO
PORTC,0
REMALO
BTFSC
GOTO
PORTA,5
REMALO
BTFSC
GOTO
PORTD,0
REMALO
BTFSC
GOTO
PORTC,3
REMALO
BTFSC
GOTO
PORTC,2
REMALO
BTFSC
GOTO
PORTD,3
REMALO
BTFSC
GOTO
PORTD,2
REMALO
BTFSC
GOTO
PORTD,1
REMALO
BTFSC
GOTO
PORTC,5
REMALO
movlw
SUBWF
BTFSS
GOTO
CALL
GOTO
b'00000000'
CUENTA1
STATUS,Z
NOSEX
APAGADO
MALITO
NOSEX
Pregunto si la alarma esta activada o
desactivada y posteriormente enviar
el mensaje correspondiente al MODEM.
123
CALL
CALL
GOTO
COMO
decfsz
GOTO
MOVLW
ADDWF
decfsz
RETURN
bsf
MOVLW
ADDWF
RETURN
ROSOLES
CALL
RETURN
ACTIVADOCC
COMO
MALITO
contador
ROSOLES
b'11000000'
contador,1
paso
PORTA,3
b'00000010'
paso,1
Envía un uno lógico para activar el
buzzer, mediante el pin RA3.
PDelay
REMALO
INCF CUENTA, 1
MOVLW
SUBWF
BTFSS
GOTO
GOTO
Rutina de tiempo que permite la espera
de 30 segundos para la activación del
buzzer en caso de que la alarma se
encuentre activada.
Rutina encargada de enviar al LCD los
dígitos ingresado, mediante la
identificación de la variable CUENTA.
b'00000001'
CUENTA,0
STATUS,Z
QW
UNOSSXX
QW
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000010'
CUENTA,0
STATUS,Z
QWE
DOSSXX
QWE
MOVLW
SUBWF
BTFSS
b'00000011'
CUENTA,0
STATUS,Z
124
GOTO
GOTO
QRT
TRESSXX
QRT
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000100'
CUENTA,0
STATUS,Z
REMALO
CUATROSSXX
UNOSSXX
call
call
comienzo
clave_x
CALL
GOTO
PDelay
MALITO
DOSSXX
call
clave_xx
CALL
GOTO
PDelay
MALITO
TRESSXX
call
clave_xxx
CALL
GOTO
PDelay
MALITO
CUATROSSXX
call
clave_xxxx
CALL
GOTO
PDelay
LISTO
CAMBIOSS
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
PORTC,1
UNOX
PORTC,0
DOSX
PORTA,5
TRESX
Llama al Lcd para indicar al usuario que
la primera clave fue ingresada.
Llama al Lcd para indicar al usuario que
la segunda clave fue ingresada.
Llama al Lcd para indicar al usuario que
la tercera clave fue ingresada.
Llama al Lcd para indicar al usuario que
la cuarta clave fue ingresada.
Subrutina que pregunta que digito se
ingresa.
125
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
BTFSC
GOTO
PORTD,0
CUATROX
PORTC,3
CINCOX
PORTC,2
SEISX
PORTD,3
SIETEX
PORTD,2
OCHOX
PORTD,1
NUEVEX
PORTC,5
CEROX
CALL
APAGADO
GOTO
CAMBIOSS
UNOX
CLRF DIGITO
MOVLW 1
ADDWF DIGITO, 1
GOTO
CARGARS
DOSX
CLRF DIGITO
MOVLW 2
ADDWF DIGITO, 1
GOTO
CARGARS
TRESX
CLRF DIGITO
MOVLW 3
ADDWF DIGITO, 1
GOTO
CARGARS
CUATROX
CLRF DIGITO
MOVLW 4
ADDWF DIGITO, 1
GOTO
CARGARS
Llama a la subrutina apagado, para
comunicar que la alarma esta
desactivada.
126
CINCOX
CLRF DIGITO
MOVLW 5
ADDWF DIGITO, 1
GOTO
CARGARS
SEISX
CLRF DIGITO
MOVLW 6
ADDWF DIGITO, 1
GOTO
CARGARS
SIETEX
CLRF DIGITO
MOVLW 7
ADDWF DIGITO, 1
GOTO
CARGARS
OCHOX
CLRF DIGITO
MOVLW 8
ADDWF DIGITO, 1
GOTO
CARGARS
NUEVEX
CLRF DIGITO
MOVLW 9
ADDWF DIGITO, 1
GOTO
CARGARS
CEROX
CLRF DIGITO
MOVLW 0
ADDWF DIGITO, 1
GOTO
CARGARS
CARGARS
INCF CUENTA, 1
MOVLW
SUBWF
Cargo el digito en la variables NUM1,
NUM2 NUM3 y NUM4 según la variable
cuenta.
b'00000001'
CUENTA,0
127
BTFSS
GOTO
GOTO
STATUS,Z
Y
UNOSSS
Y
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000010'
CUENTA,0
STATUS,Z
YY
DOSSS
YY
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000011'
CUENTA,0
STATUS,Z
YYY
TRESSS
YYY
MOVLW
SUBWF
BTFSS
GOTO
GOTO
b'00000100'
CUENTA,0
STATUS,Z
CAMBIOSS
CUATROSSS
UNOSSS
call
call
clrf NUM1
MOVF
ADDWF NUM1, 1
GOTO
comienzo
clave_x
DIGITO,0
TERMINOS
DOSSS
call
clave_xx
clrf NUM2
MOVF
DIGITO,0
ADDWF NUM2, 1
GOTO
TERMINOS
TRESSS
call
clave_xxx
128
clrf
NUM3
MOVF
DIGITO,0
ADDWF NUM3, 1
GOTO
TERMINOS
CUATROSSS
call
clrf
MOVF
ADDWF NUM4, 1
GOTO
clave_xxxx
NUM4
DIGITO,0
TERMINOS
TERMINOS
CALL
MOVLW
SUBWF
BTFSS
GOTO
GOTO
PDelay
b'00000100'
CUENTA,0
STATUS,Z
CAMBIOSS
CAMBIO
CAMBIO
BTFSC
GOTO
GOTO
CALL
PORTD,4
REALIZADO
CAMBIO
APAGADO
REALIZADO
CLRF
CLRF
CLRF
clrf
call
call
call
GOTO
VAR
DIGITO
CUENTA
CUENTA1
comienzo
Mando un mensaje al usuario que la
mensaje_AlarmaDesactiv alarma esta desactivada y lista para
Ingrese_Clave
ingresar la clave.
INICIO
PDelay
movlw
movwf
PLoop0
movlw
movwf
Pregunto si fueron ingresados todos los
digitos.
Subrutina de tiempo para anti-rebotes.
.22
PDel0
.113
PDel1
129
PLoop1
movlw
movwf
PLoop2
clrwdt
decfsz
goto
decfsz
goto
decfsz
goto
clrwdt
return
SEGUNDOS
movlw
movwf
Seg
movlw
movwf
PLoop3
movlw
movwf
PLoop4
movlw
movwf
PLoop5
clrwdt
decfsz
goto
decfsz
goto
decfsz
goto
clrwdt
return
decfsz
goto
return
tiempo1
movlw
.125
PDel2
clrwdt
PDel2, 1
PLoop2
PDel1, 1
PLoop1
PDel0, 1
PLoop0
Subrutina para la salida del personal.
b'01000000'
CounterA
.43
PDel3
.226
PDel4
.205
PDel5
clrwdt
PDel5, 1
PLoop5
PDel4, 1
PLoop4
PDel3, 1
PLoop3
CounterA, 1
Seg
Subrutina ocupada para el LCD.
.14
130
movwf
PLoop0w
movlw
movwf
PLoop1w
movlw
movwf
PLoop2w
clrwdt
decfsz
goto
decfsz
goto
decfsz
goto
PDelL1w
goto
PDelL2w
clrwdt
return
DELAY_5MS
movlw
movwf
PLoop1X
movlw
movwf
PLoop2X
clrwdt
decfsz
goto
decfsz
goto
return
inicializa_lcd
call
call
PDel0
.72
PDel1
.247
PDel2
PDel2, 1
PLoop2w
PDel1, 1
PLoop1w
PDel0, 1
PLoop0w
PDelL2w
Rutina de cinco segundos.
.55
PDel0
.181
PDel1
clrwdt
PDel1, 1
PLoop2X
PDel0, 1
PLoop1X
tiempo1
tiempo1
131
call
tiempo1
CALL
BCF
BCF
LCD_PORT
PORTD,5
PORTD,7
START
START_1
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
LCD_E
BSF
NOP
call
BCF
RETURN
LCD_BUSY
BSF
MOVLW
MOVWF
BSF
call
L_BUSY
BTFSC
GOTO
BCF
CLRF
BCF
RETURN
LCD_REG
BCF
MOVWF
CALL
CALL
LCD_INI
Subrutinas encargadas de
inicializar el LCD.
Subrutina encargada de la configuración
del LCD.
Borrar LCD .
b'00000001'
LCD_REG
b'00000110'
LCD_REG
b'00001100'
LCD_REG
Prende el LCD, sin parpadeo ni cursor.
PORTD,7
Activa la señal E.
tiempo1
PORTD,7
Desactiva la señal E.
PORTD,6
.255
TRISB
PORTD,7
tiempo1
Pone el LCD en modo lectura.
Puerta B actúa de entrada.
Activa la señal E.
PORTB,7
L_BUSY
PORTD,7
TRISB
PORTD,6
Chequea el bit BUSY.
Si esta ocupado vuelve a L_BUSY.
Desactiva el LCD (Señal E)
Puerto B actúa como salida.
Pone el LCD en modo escritura.
PORTD,5
PORTB
LCD_BUSY
Desactiva RS (Modo instrucción).
Saca el código de instrucción.
Espera a que se libere el LCD.
132
GOTO
LCD_E
Genera pulso en señal E.
LCD_DATOS
BCF
MOVWF
CALL
BSF
GOTO
PORTD,5
PORTB
LCD_BUSY
PORTD,5
LCD_E
Desactiva la señal RS.
Valor ASCII a sacar por Puerto B.
Espera a que se libere el LCD.
Activa la señal RS (Modo dato) .
Genera pulso en señal E.
LCD_INI
MOVLW
CALL
CALL
MOVLW
CALL
CALL
MOVLW
CALL
CALL
MOVLW
CALL
CALL
MOVLW
CALL
CALL
RETURN
LCD_PORT
CLRF
MOVLW
MOVWF
BCF
BCF
b'00111000'
LCD_REG
DELAY_5MS
b'00111000'
LCD_REG
DELAY_5MS
b'00111000'
LCD_REG
DELAY_5MS
b'00111000'
LCD_REG
DELAY_5MS
b'00111000'
LCD_REG
DELAY_5MS
TRISB
b'00011111'
TRISD
PORTD,5
PORTD,7
mensaje_AlarmaDesactiv
MOVLW
CALL
0x81
LCD_REG
Código de instrucción.
Temporiza 5 ms.
Código de instrucción.
Temporiza 5 ms.
Código de instrucción.
Temporiza 5 ms.
Código de instrucción.
Temporiza 5 ms.
Código de instrucción.
Temporiza 5 ms.
Puerto B se programa como salida.
Desactiva la señal RS del modulo LCD.
Desactiva la señal E del modulo LCD.
Mensaje al LCD que la alarma se
encuentra desactivada.
Manda la dirección en la que
se situara el pulsador.
133
MOVLW
CALL
MOVLW
CALL
'A'
LCD_DATOS
'L'
LCD_DATOS
MOVLW
CALL
0x84
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
return
'D'
LCD_DATOS
'E'
LCD_DATOS
'S'
LCD_DATOS
'A'
LCD_DATOS
'C'
LCD_DATOS
'T'
LCD_DATOS
'I'
LCD_DATOS
'V'
LCD_DATOS
'A'
LCD_DATOS
'D'
LCD_DATOS
'A'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
Ingrese_Clave
MOVLW
CALL
0xC1
LCD_REG
MOVLW
CALL
MOVLW
CALL
'I'
LCD_DATOS
'N'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
134
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'G'
LCD_DATOS
'R'
LCD_DATOS
'E'
LCD_DATOS
'S'
LCD_DATOS
'E'
LCD_DATOS
MOVLW
CALL
0xC9
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'C'
LCD_DATOS
'L'
LCD_DATOS
'A'
LCD_DATOS
'V'
LCD_DATOS
'E'
LCD_DATOS
return
clave_x
MOVLW
CALL
0x83
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'C'
LCD_DATOS
'L'
LCD_DATOS
'A'
LCD_DATOS
'V'
LCD_DATOS
'E'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
135
MOVLW
CALL
0x89
LCD_REG
MOVLW
CALL
return
'X'
LCD_DATOS
clave_xx
MOVLW 0x8A
CALL
MOVLW 'X'
CALL
return
clave_xxx
MOVLW
CALL
LCD_REG
Manda la dirección en la que
se situara el pulsador.
Manda la dirección en la que
se situara el pulsador.
LCD_DATOS
0x8B
LCD_REG
Manda la dirección en la que
se situara el pulsador.
MOVLW
'X'
CALL LCD_DATOS
return
clave_xxxx
MOVLW
CALL
MOVLW
CALL
return
0x8C
LCD_REG
Manda la dirección en la que
se situara el pulsador.
'X'
LCD_DATOS
mensaje_AlarmaActiv
MOVLW
CALL
0x83
LCD_REG
MOVLW
CALL
MOVLW
CALL
'A'
LCD_DATOS
'L'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
136
MOVLW 0x86
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
return
LCD_REG
Manda la dirección en la que
se situara el pulsador.
'A'
LCD_DATOS
'C'
LCD_DATOS
'T'
LCD_DATOS
'I'
LCD_DATOS
'V'
LCD_DATOS
'A'
LCD_DATOS
'D'
LCD_DATOS
'A'
LCD_DATOS
mensaje_Intruso
MOVLW
CALL
0x84
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
return
'I'
LCD_DATOS
'N'
LCD_DATOS
'T'
LCD_DATOS
'R'
LCD_DATOS
'U'
LCD_DATOS
'S'
LCD_DATOS
'O'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
137
mensaje_Error
MOVLW 0x85
CALL
MOVLW 'E'
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
return
LCD_REG
Manda la dirección en la que
se situara el pulsador.
'E'
LCD_DATOS
'R'
LCD_DATOS
'R'
LCD_DATOS
'O'
LCD_DATOS
'R'
LCD_DATOS
mensaje_Cambio_Clave
MOVLW
CALL
0x81
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'I'
LCD_DATOS
'N'
LCD_DATOS
'G'
LCD_DATOS
'R'
LCD_DATOS
'E'
LCD_DATOS
'S'
LCD_DATOS
'E'
LCD_DATOS
MOVLW 0x89
CALL
LCD_REG
MOVLW
CALL
'N'
LCD_DATOS
Manda la dirección en la que
se situara el pulsador.
Manda la dirección en la que
se situara el pulsador.
138
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'U'
LCD_DATOS
'E'
LCD_DATOS
'V'
LCD_DATOS
'A'
LCD_DATOS
MOVLW
CALL
0xC6
LCD_REG
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
return
'C'
LCD_DATOS
'L'
LCD_DATOS
'A'
LCD_DATOS
'V'
LCD_DATOS
'E'
LCD_DATOS
comienzo
MOVLW
CALL
return
end
b'00000001'
LCD_REG
Borrar LCD y Home.
139
5.1.4 Imágenes de la Implementación.
Fig.-5.10
Fig.-5.11
140
Fig.-5.12
Fig.-5.13
Descargar