escuela politÉcnica nacional - repositorio...
TRANSCRIPT
i
ESCUELA POLITÉCNICA NACIONAL
ESCUELA DE FORMACIÓN DE TECNÓLOGOS
DISEÑO Y CONTRUCCIÓN DE UN PANEL DIGITAL PARA
CONTROLAR 25 FUNCIONES UBICADAS EN LA CABINA DE
CONDUCCIÓN DE LOS AUTOBUSES INTERPROVINCIALES CINCO
ESTRELLAS.
PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE TECNÓLOGO EN
ELECTRÓNICA Y TELECOMUNICACIONES
CALERO SUNTASIG HENRY DANIEL
DIRECTOR: ING. COSTALES ALCÍVAR
Quito, Septiembre del 2010
ii
DECLARACIÓN
Yo CALERO SUNTASIG HENRY DANIEL, declaro bajo juramento que el trabajo
aquí descrito es de mi autoría; que no ha sido previamente presentada para ningún
grado o calificación profesional; y, que he consultado las referencias bibliográficas
que se incluyen en este documento.
A través de la presente declaración cedo mis derechos de propiedad intelectual
correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo
establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la
normatividad institucional vigente.
CALERO SUNTASIG HENRY DANIEL
iii
CERTIFICACIÓN
Certifico que el presente trabajo fue desarrollado por CALERO SUNTASIG HENRY
DANIEL, bajo mi supervisión.
Ing. ALCÍVAR COSTALES
DIRECTOR DE PROYECTO
iv
AGRADECIMIENTOS
Quiero agradecer a todas las personas que hicieron posible la culminación de este
proyecto en especial al Niño Isinche por sus bendiciones y por darme la salud
suficiente para culminar mi meta planteada
A mi madre y mi padre por brindarme todo su apoyo y acompañarme en todo
momento de mi vida
A la Corporación TELEVID por permitirme cumplir una de mis metas en sus
instalaciones y brindarme todas las facilidades para la culminación del proyecto.
Daniel C.
v
DEDICATORIA
Este trabajo va dedicado:
A mis padres por darme la fuerza y el coraje de seguir adelante para alcanzar mis
objetivos trazados
A Jacqueline Aracelly que en todo el tiempo que nos conocemos supo brindarme
toda su comprensión, apoyo y es una persona muy importante en mi vida y siempre
estará en mi corazón.
Daniel C.
vi
INDICE PRESENTACIÓN ................................................................................................................................................ IX
1. CAPÍTULO I: FUNDAMENTOS TEÓRICOS ......................................................................................... 1
1.1 MICROCONTROLADOR 1 ............................................................................................................... 1
1.1.1. INTRODUCCIÓN 1 .......................................................................................................................... 1 1.1.2. DEFINICIÓN 1 ................................................................................................................................. 1 1.1.3. APLICACIONES DE LOS MICROCONTROLADORES 1 ................................................................ 2 1.1.4. ARQUITECTURA BÁSICA 1 ............................................................................................................ 3 1.1.5. EL PROCESADOR O CPU 1 ............................................................................................................ 3 1.1.6. MEMORIA 2 ...................................................................................................................................... 4 1.1.7. ROM CON MÁSCARA 2 ................................................................................................................... 5 1.1.8. OTP (ONE TIME PROGRAMMABLE) 2 .......................................................................................... 5 1.1.9. EPROM 2 .......................................................................................................................................... 6 1.1.10. EEPROM 2 ........................................................................................................................................ 6 1.1.11. FLASH 2 ............................................................................................................................................ 7 1.1.12. PUERTAS DE ENTRADA Y SALIDA 2 ............................................................................................. 7 1.1.13. RELOJ PRINCIPAL 2 ....................................................................................................................... 8
1.2. RECURSOS ESPECIALES ................................................................................................................ 8 1.2.1. TEMPORIZADORES O "TIMERS" 2 ................................................................................................ 9 1.2.2. PERRO GUARDIÁN O "WATCHDOG" 2 ........................................................................................ 9 1.2.3. PROTECCIÓN ANTE FALLO DE ALIMENTACIÓN O "BROWNOUT" 2 ................................... 10 1.2.4. ESTADO DE REPOSO O DE BAJO CONSUMO 2 ....................................................................... 10 1.2.5. CONVERSOR A/D (CAD) 2 ............................................................................................................ 10 1.2.6. CONVERSOR D/A (CDA) 2 ............................................................................................................ 10 1.2.7. COMPARADOR ANALÓGICO 2 .................................................................................................... 11 1.2.8. MODULADOR DE ANCHURA DE IMPULSOS O PWM 2 ........................................................... 11 1.2.9. PUERTOS DE E/S DIGITALES 2 ................................................................................................... 11 1.2.10. PUERTOS DE COMUNICACIÓN 2 ............................................................................................... 11
1.3. DISPOSITIVOS ELECTRÓNICOS ................................................................................................ 12 1.3.1. CONDENSADORES 3 ..................................................................................................................... 12 1.3.2. REGULADORES DE VOLTAJE 4 .................................................................................................. 13 1.3.3. DISPLAY LCD 16 * 2 5 .................................................................................................................. 15 1.3.4. RELÉ 6 ............................................................................................................................................ 16
1.3.4.1. Tipos de relés 6 ...................................................................................................................... 17 1.3.5. TECLADO MATRICIAL7 ................................................................................................................ 18
1.3.5.1. Decodificador de teclado 7 .................................................................................................... 19
2. CAPÍTULO II: LENGUAJE DE PROGRAMACIÓN ............................................................................ 20
2.1. LENGUAJE DE PROGRAMACIÓN BASCOM AVR .................................................................. 20
2.1.1. INICIO ............................................................................................................................................ 21 2.1.2. COMPILADOR ............................................................................................................................... 21 2.1.3. SIMULADOR .................................................................................................................................. 22 2.1.4. EMULADOR SERIAL ..................................................................................................................... 23 2.1.5. CONEXIONES PRINCIPALES ...................................................................................................... 23 2.1.6. GRABANDO EL MICROCONTROLADOR ................................................................................... 24
vii
2.1.7. INSTRUCCIONES BÁSICAS DE BASCOM AVR ........................................................................... 26 2.1.7.1. $regfile .................................................................................................................................. 26 2.1.7.2. $crystal .................................................................................................................................. 26 2.1.7.3. Config ................................................................................................................................... 26 2.1.7.4. Wait, Waitms, Waitus ........................................................................................................... 27 2.1.7.5. Do – Loop ............................................................................................................................. 27 2.1.7.6. Do – Loop Until .................................................................................................................... 27 2.1.7.7. Toggle ................................................................................................................................... 28 2.1.7.8. Dim ....................................................................................................................................... 28 2.1.7.9. Alias ...................................................................................................................................... 28 2.1.7.10. LCD (Display de cristal liquido) ........................................................................................... 29
2.1.7.10.1. Mediante comando tenemos ............................................................................................. 29 2.1.7.10.1.1. Config Lcd ................................................................................................................ 29 2.1.7.10.1.2. Config Lcdpin ........................................................................................................... 29 2.1.7.10.1.3. Config lcdbus ............................................................................................................ 30 2.1.7.10.1.4. Lcd ” ” ..................................................................................................................... 30 2.1.7.10.1.5. Locate x,y ................................................................................................................. 30 2.1.7.10.1.6. Shiftlcd ...................................................................................................................... 30
2.1.7.10.2. Mediante cuadro de dialogo tenemos .............................................................................. 31 2.1.7.11. DDRx, PORTx, PINx ............................................................................................................ 32 2.1.7.12. If – Them – Else .................................................................................................................... 33 2.1.7.13. For – Next ............................................................................................................................. 33 2.1.7.14. Select – Case ......................................................................................................................... 33 2.1.7.15. Símbolos operadores ............................................................................................................. 34 2.1.7.16. Estructura de un programa en BASIC ................................................................................... 35
3. CAPÍTULO III : DISEÑO Y ENSAMBLAJE DEL PANEL .................................................................. 37
3.1. DESCRIPCIÓN DEL HARDWARE ............................................................................................... 37 3.1.1. EPECIFICACIONES ...................................................................................................................... 37 3.1.2. TARJETA DE TECLADO ............................................................................................................... 39
3.1.2.1. Descripción de los componentes del teclado ......................................................................... 41 3.1.3. TARJETA DE MONITOREO .......................................................................................................... 42 3.1.4. TARJETA DE CEREBRO ............................................................................................................... 44
3.1.4.1. Descripción ........................................................................................................................... 44 3.1.4.1.1. Características ATMEGA-1612 ....................................................................................... 44
3.1.4.1.1.1. Distribución de pines del ATMEGA 16 12 ................................................................. 47 3.1.4.1.1.2. Descripción de pines13 ............................................................................................... 48
3.1.4.1.2. Registro 74HC595 características 43 ................................................................................. 49 3.1.4.1.3. Características ULN 2803 15 ............................................................................................ 51
3.1.4.1.4. Características del regulador 780516 .................................................................................... 53 3.1.4.2. Fuente de alimentación tarjeta de cerebro. ............................................................................ 54
3.1.5. TARJETA DE RELÉS 17 .................................................................................................................. 60 3.2. DESCRIPCIÓN DE SOFTWARE ................................................................................................... 63
3.2.1. DIAGRAMA DE FLUJO DEL FUNCIONAMIENTO DEL PROYECTO ....................................... 63 3.2.2. DESCRIPCIÓN DE LA FIGURA 3.15 ........................................................................................... 63 3.2.3. DESCRIPCIÓN DE LA FIGURA 3.16 ........................................................................................... 66 3.2.4. DESCRIPCIÓN DE LA FIGURA 3.17 ........................................................................................... 70
3.3. PROGRAMA PRINCIPAL PARA EL MANEJO DEL MÓDULO .............................................. 73
viii
4. CAPÍTULO IV : PRUEBAS Y RESULTADOS .................................................................................... 102
4.1. ELABORACIÓN DE TARJETAS ................................................................................................. 102 4.1.1. TARJETA DE TECLADO ............................................................................................................. 102 4.1.2. TARJETA DE MONITOREO ........................................................................................................ 103 4.1.3. TARJETA DE CEREBRO ............................................................................................................. 104 4.1.4. REGLETA DE CONEXIÓN DEL CEREBRO ............................................................................... 105 4.1.5. TARJETA DE RELÉS ................................................................................................................... 106 4.1.6. ENSAMBLAJE DEL PANEL DIGITAL ........................................................................................ 107 4.1.7. TARJETA DE PRUEBA ................................................................................................................ 108
4.2. RESULTADOS ................................................................................................................................ 108
5. CAPÍTULO V : ......................................................................................................................................... 110
5.1. CONCLUSIONES ........................................................................................................................... 110 5.2. RECOMENDACIONES ................................................................................................................. 111
REFERENCIAS BIBLIOGRÁFICAS.............................................................................................................. 112
ANEXOS ............................................................................................................................................................. 113
ANEXO A ............................................................................................................................................................ 114
ANEXO B ............................................................................................................................................................ 117
ANEXO C ............................................................................................................................................................ 120
ANEXO D ............................................................................................................................................................ 123
ANEXO E ........................................................................................................................................................... 153
ANEXO F ............................................................................................................................................................. 161
ANEXO G ............................................................................................................................................................ 166
ANEXO H ............................................................................................................................................................ 173
ix
PRESENTACIÓN
El desarrollo de la electrónica digital y en general toda la electrónica tiene tendencia
a la reducción del hardware que se utiliza, tomando como una alternativa altamente
eficiente y rentable la implementación de dispositivos programables como son los
microcontroladores los cuales hacen posible la ejecución de aplicaciones de una
forma más sencilla.
Otros de los adelantos tecnológicos que han permitido lograr este objetivo ha sido el
desarrollo de los teclados que son dispositivos por los cuales podemos activar o
desactivar diferentes funciones controladas por un microcontrolador los teclados
generalmente son de tipo matricial los cuales poseen filas y columnas, mediante la
combinación de estas podemos tener cierto número de teclas. Además por su
facilidad de uso se le puede dar una cantidad de aplicaciones.
El desarrollo del proyecto va dirigido a la utilización en las carrocerías del Ecuador
para resolver uno de los problemas que aqueja a cualquier conductor de un autobús
que deba manipular a diario una variedad de funciones en su unidad con la
seguridad de monitoreo de la función como también el estado de la misma.
1
1. CAPÍTULO I: FUNDAMENTOS TEÓRICOS
1.1 MICROCONTROLADOR 1
1.1.1. INTRODUCCIÓN 1
Los microcontroladores están conquistando el mundo. Están presentes en nuestro
trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar
controlando el funcionamiento de los ratones y teclados de los computadores, en los
teléfonos, en los hornos microondas y los televisores de nuestro hogar. Pero la
invasión acaba de comenzar y el nacimiento del siglo XXI será testigo de la conquista
masiva de estos diminutos computadores, que gobernarán la mayor parte de los
aparatos que fabricamos y usamos los humanos
1.1.2. DEFINICIÓN 1
Un microcontrolador es un circuito integrado de alta escala de integración que
incorpora la mayor parte de los elementos que configuran un controlador.
Un microcontrolador dispone normalmente de los siguientes componentes:
Procesador o UCP (Unidad Central de Proceso).
Memoria RAM para Contener los datos.
Memoria para el programa tipo ROM/PROM/EPROM.
Líneas de E/S para comunicarse con el exterior.
Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y
Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico,
etc.).
_____________________ 1 http://www.unicrom.com/Tut_arquitectura_microcontrolador.asp
2
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el
sistema.
Figura 1.1: Esquema de un microcontrolador.
1.1.3. APLICACIONES DE LOS MICROCONTROLADORES 1
Cada vez existen más productos que incorporan un microcontrolador con el fin de
aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su
fiabilidad y disminuir el consumo.
Algunos fabricantes de microcontroladores superan el millón de unidades de un
modelo determinado producidas en una semana. Este dato puede dar una idea de la
masiva utilización de estos componentes.
Los microcontroladores están siendo empleados en multitud de sistemas presentes
en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos,
televisores, computadoras, impresoras, módems, el sistema de arranque de nuestro
coche, etc. Y otras aplicaciones con las que seguramente no estaremos tan
familiarizados como instrumentación electrónica, control de sistemas en una nave
espacial, etc. Una aplicación típica podría emplear varios microcontroladores para
controlar pequeñas partes del sistema.
3
Estos pequeños controladores podrían comunicarse entre ellos y con un procesador
central, probablemente más potente, para compartir la información y coordinar sus
acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.
1.1.4. ARQUITECTURA BÁSICA 1
Un microcontrolador es un dispositivo complejo, formado por otros más sencillos. A
continuación se analizan los más importantes.
1.1.5. EL PROCESADOR O CPU 1
Es la parte encargada del procesamiento de las instrucciones.
Debido a la necesidad de conseguir elevados rendimientos en este proceso, se ha
desembocado en el empleo generalizado de procesadores de arquitectura Harvard
frente a los tradicionales que seguían la arquitectura de von Neumann.
Esta última se caracterizaba porque la CPU se conectaba con una memoria única,
donde coexistían datos e instrucciones, a través de un sistema de buses.
Figura 1.2: Arquitectura von Neumann
En la arquitectura Harvard son independientes la memoria de instrucciones y la
memoria de datos y cada una dispone de su propio sistema de buses para el acceso.
4
Esta dualidad, además de propiciar el paralelismo, permite la adecuación del tamaño
de las palabras y los buses a los requerimientos específicos de las instrucciones y de
los datos.
Figura 1.3: Arquitectura Harvard
El procesador de los modernos microcontroladores responde a la arquitectura RISC
(Computadores de Juego de Instrucciones Reducido), que se identifica por poseer un
repertorio de instrucciones máquina pequeño y simple, de forma que la mayor parte
de las instrucciones se ejecutan en un ciclo de instrucción.
Otra aportación frecuente que aumenta el rendimiento del computador es el fomento
del paralelismo implícito, que consiste en la segmentación del procesador (pipe-line),
descomponiéndolo en etapas para poder procesar una instrucción diferente en cada
una de ellas y trabajar con varias a la vez.
1.1.6. MEMORIA 2
En los microcontroladores la memoria de instrucciones y datos está integrada en el
propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el
programa de instrucciones que gobierna la aplicación. Otra parte de memoria será
tipo RAM, volátil, y se destina a guardar las variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de los
computadores personales:
_____________________ 2 http://www.monografias.com/trabajos12/microco/microco.shtml
5
No existen sistemas de almacenamiento masivo como disco duro o disquetes.
Como el microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay
que almacenar un único programa de trabajo.
La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las
variables y los cambios de información que se produzcan en el transcurso del
programa. Por otra parte, como sólo existe un programa activo, no se requiere
guardar una copia del mismo en la RAM pues se ejecuta directamente desde la
ROM.
Los usuarios de computadores personales están habituados a manejar Megabytes
de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades
de ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20
y 512 bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación
y utilización de los mismos es diferente. Se describen las cinco versiones de
memoria no volátil que se pueden encontrar en los microcontroladores del mercado.
1.1.7. ROM CON MÁSCARA 2
Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la
fabricación del chip. El elevado coste del diseño de la máscara sólo hace
aconsejable el empleo de los microcontroladores con este tipo de memoria cuando
se precisan cantidades superiores a varios miles de unidades.
1.1.8. OTP (ONE TIME PROGRAMMABLE) 2
El microcontrolador contiene una memoria no volátil de sólo lectura "programable una
sola vez" por el usuario. (OTP One Time Programmable). Es el usuario quien puede
6
escribir el programa en el chip mediante un sencillo grabador controlado por un
programa desde un PC.
La versión OTP es recomendable cuando es muy corto el ciclo de diseño del
producto, o bien, en la construcción de prototipos y series muy pequeñas.
Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación
mediante fusibles para proteger el código contenido.
1.1.9. EPROM 2
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable
Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se
realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si,
posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en
su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios
minutos. Las cápsulas son de material cerámico y son más caros que los
microcontroladores con memoria OTP que están hechos con material plástico.
1.1.10. EEPROM 2
Se trata de memorias de sólo lectura, programables y borrables eléctricamente
EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la
programación como el borrado, se realizan eléctricamente desde el propio grabador y
bajo el control programado de un PC. Es muy cómoda y rápida la operación de
grabado y la de borrado. No disponen de ventana de cristal en la superficie.
El número de veces que puede grabarse y borrarse una memoria EEPROM es finito,
por lo que no es recomendable una reprogramación continua. Son muy idóneos para
la enseñanza y la Ingeniería de diseño.
7
Este tipo de memoria es relativamente lenta.
1.1.11. FLASH 2
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y es más pequeña.
A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más
rápida y de mayor densidad que la EEPROM.
La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa
gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos
de escritura/borrado.
Las memorias EEPROM y FLASH son muy útiles al permitir que los micro
controladores que las incorporan puedan ser reprogramados "en circuito", es decir,
sin tener que sacar el circuito integrado de la tarjeta.
1.1.12. PUERTAS DE ENTRADA Y SALIDA 2
La principal utilidad de las patitas que posee la cápsula que contiene un
microcontrolador es soportar las líneas de E/S (entrada / salida) que comunican al
computador interno con los periféricos exteriores.
Según los controladores de periféricos que posea cada modelo de microcontrolador,
las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada,
salida y control.
8
1.1.13. RELOJ PRINCIPAL 2
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.
1.2. RECURSOS ESPECIALES
Cada fabricante oferta numerosas versiones de una arquitectura básica de
microcontrolador. En algunas amplía las capacidades de las memorias, en otras
incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para
aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo
que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el
coste, el hardware y el software.
Los principales recursos específicos que incorporan los microcontroladores son:
• Temporizadores o "Timers".
• Perro guardián o "Watchdog".
• Protección ante fallo de alimentación o "Brownout".
• Estado de reposo o de bajo consumo.
• Conversor A/D.
• Conversor D/A.
9
• Comparador analógico.
• Modulador de anchura de impulsos o PWM.
• Puertas de E/S digitales.
• Puertas de comunicación.
1.2.1. TEMPORIZADORES O "TIMERS" 2
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la
cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a
continuación dicho valor se va incrementando o decrementando al ritmo de los
impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el
que se produce un aviso.
Cuando se desean contar acontecimientos que se materializan por cambios de nivel
o flancos en alguna de las patitas del micro controlador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos.
1.2.2. PERRO GUARDIÁN O "WATCHDOG" 2
Cuando el computador personal se bloquea por un fallo del software u otra causa, se
pulsa el botón del reset y se reinicializa el sistema. Pero un micro controlador
funciona sin el control de un supervisor y de forma continuada las 24 horas del día. El
Perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0,
provoca un reset automáticamente en el sistema.
Se debe diseñar el programa de trabajo que controla la tarea de forma que refresque
o inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se
bloquea, no se refrescará al Perro guardián y, al completar su temporización, "ladrará
y ladrará" hasta provocar el reset.
10
1.2.3. PROTECCIÓN ANTE FALLO DE ALIMENTACIÓN O "BROWNOUT" 2
Se trata de un circuito que resetea al micro controlador cuando el voltaje de
alimentación (VDD) es inferior a un voltaje mínimo ("brownout"). Mientras el voltaje
de alimentación sea inferior al de brownout el dispositivo se mantiene reseteado,
comenzando a funcionar normalmente cuando sobrepasa dicho valor.
1.2.4. ESTADO DE REPOSO O DE BAJO CONSUMO 2
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe
esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le
ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los
aparatos portátiles), los microcontroladores disponen de una instrucción especial
(SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual
los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj
principal y se "congelan" sus circuitos asociados, quedando sumido en un profundo
"sueño" el microcontrolador. Al activarse una interrupción ocasionada por el
acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.
1.2.5. CONVERSOR A/D (CAD) 2
Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden
procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer
de un multiplexor que permite aplicar a la entrada del CAD diversas señales
analógicas desde las patitas del circuito integrado.
1.2.6. CONVERSOR D/A (CDA) 2
Transforma los datos digitales obtenidos del procesamiento del computador en su
correspondiente señal analógica que saca al exterior por una de las patitas de la
cápsula. Existen muchos efectores que trabajan con señales analógicas.
11
1.2.7. COMPARADOR ANALÓGICO 2
Algunos modelos de micro controladores disponen internamente de un Amplificador
Operacional que actúa como comparador entre una señal fija de referencia y otra
variable que se aplica por una de las patitas de la cápsula. La salida del comparador
proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra.
También hay modelos de micro controladores con un módulo de tensión de
referencia que proporciona diversas tensiones de referencia que se pueden aplicar
en los comparadores.
1.2.8. MODULADOR DE ANCHURA DE IMPULSOS O PWM 2
Son circuitos que proporcionan en su salida impulsos de anchura variable, que se
ofrecen al exterior a través de las patitas del encapsulado.
1.2.9. PUERTOS DE E/S DIGITALES 2
Todos los microcontroladores destinan algunas de sus patitas a soportar líneas de
E/S (entrada / salidas) digitales. Por lo general, estas líneas se agrupan de ocho en
ocho formando Puertos.
Las líneas digitales de los Puertos pueden configurarse como Entrada o como Salida
cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su
configuración.
1.2.10. PUERTOS DE COMUNICACIÓN 2
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros
dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses
de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos.
12
Algunos modelos disponen de recursos que permiten directamente esta tarea, entre
los que destacan:
UART, adaptador de comunicación serie asíncrona.
USART, adaptador de comunicación serie síncrona y asíncrona
Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
USB (Universal Serial Bus), que es un moderno bus serie para los PC.
Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
Uno de los factores que más importancia tiene a la hora de seleccionar un
microcontrolador entre todos los demás es el soporte tanto software como hardware
de que dispone. Un buen conjunto de herramientas de desarrollo puede ser decisivo
en la elección, ya que pueden suponer una ayuda inestimable en el desarrollo del
proyecto.
1.3. DISPOSITIVOS ELECTRÓNICOS
1.3.1. CONDENSADORES 3
En electricidad y electrónica, un condensador, capacitor o capacitador es un
dispositivo que almacena energía eléctrica, es un componente pasivo. Está formado
por un par de superficies conductoras en situación de influencia total (esto es, que
todas las líneas de campo eléctrico que parten de una van a parar a la otra),
_____________________ 3http://es.wikipedia.org/wiki/Condensador_el%C3%A9ctrico
13
generalmente en forma de tablas, esferas o láminas, separados por un material
dieléctrico (siendo este utilizado en un condensador para disminuir el campo
eléctrico, ya que actúa como aislante) o por el vacío, que, sometidos a una diferencia
de potencial (d.d.p.) adquieren una determinada carga eléctrica, positiva en una de
las placas y negativa en la otra (siendo nula la carga total almacenada).
La carga almacenada en una de las placas es proporcional a la diferencia de
potencial entre esta placa y la otra, siendo la constante de proporcionalidad la
llamada capacidad o capacitancia. En el Sistema internacional de unidades se mide
en Faradios (F), siendo 1 faradio la capacidad de un condensador en el que,
sometidas sus armaduras a una (d.d.p.) de 1 voltio, éstas adquieren una carga
eléctrica de 1 culombio.
Figura 1.4: Símbolo Condensador Ideal
1.3.2. REGULADORES DE VOLTAJE 4
Dentro de los reguladores de voltaje con salida fija, se encuentran los pertenecientes
a la familia LM78xx, donde “xx” es el voltaje de la salida. Estos son 5, 6, 8, 9, 10, 12,
15, 18 y 24V, entregando una corriente máxima de 1 Amper y soporta consumos pico
de hasta 2.2 Amperes. Poseen protección contra sobrecargas térmicas y contra
cortocircuitos, que desconectan el regulador en caso de que su temperatura de
juntura supere los 125°C.
Los LM78xx son reguladores de salida positiva, mientras que la familia LM79xx son
para voltajes equivalentes pero con salida negativa. Así, un LM7805 es capaz de
14
entregar 5 voltios positivos, y un LM7909 entregara 9 voltios negativos.
La cápsula que los contiene es una TO-220, igual a la de muchos transistores de
mediana potencia. Para alcanzar la corriente máxima de 1 Amper es necesario
dotarlo de un disipador de calor adecuado, sin el solo obtendremos una fracción de
esta corriente antes de que el regulador alcance su temperatura máxima y se
desconecte.
La potencia además depende de la tensión de entrada, por ejemplo, si tenemos un
LM7812, cuya tensión de salida es de 12v, con una tensión de entrada de digamos
20v, y una carga en su salida de 0,5A, multiplicando la diferencia entre la tensión de
entrada y la tensión de salida por la corriente que circulara por la carga nos da los
vatios que va a tener que soportar el integrado:
(Vint - Vout) x Iout = (20 - 12) x 0.5 = 4W
Figura 1.5: Reguladores de voltaje
_____________________ 4http://www.google.com.ec/imgres?imgurl=http://www.ucontrol.com.ar/Articulos/78xx/78xx.h1.jpg&imgrefurl=http://www.ucontrol.com.ar/Articulos/78xx/78xx.htm&h=350&w=329&sz=15&tbnid=iTE0LGt8hevpM:&tbnh=120&tbnw=113&prev=/images%3Fq%3Dreguladores%2Bde%2Bvoltaje&hl=es&usg=__GmFuBxDcWfKqEwwAugJVwK5J_M=&ei=RPv4Srr4DNTinAfrlrCGDQ&sa=X&oi=image_result&resnum=4&ct=image&ved=0CBMQ9QEwAw
15
La tensión de entrada es un factor muy importante, ya que debe ser superior en unos
3 voltios a la tensión de salida (es el mínimo recomendado por el fabricante), pero
todo el exceso debe ser eliminado en forma de calor. Si en el ejemplo anterior en
lugar de entrar con 20 volts solo usamos 15V (los 12V de la salida más el margen de
3V sugerido) la potencia disipada es mucho menor:
(Vint - Vout) x Iout = (15 - 12) x 0.5 = 1.5W
De hecho, con 15v la carga del integrado es de 1,5W, menos de la mitad que con
20v, por lo que el calor generado será mucho menor y en consecuencia el disipador
necesario también menor.
1.3.3. DISPLAY LCD 16 * 2 5
Display LCD 16*2 pantalla de cristal líquido o LCD (acrónimo del inglés Liquid
Crystal Display) es una pantalla delgada y plana formada por un número de píxeles
en color o monocromos colocados delante de una fuente de luz o reflectora. A
menudo se utiliza en dispositivos electrónicos, ya que utiliza cantidades muy
pequeñas de energía eléctrica.
Además es un dispositivo que nos permite mostrar información alfanumérica ó
caracteres diseñados, presentando una ventaja sobre los displays de 7 segmentos.
El manejo de un LCD, se basa en que deben ser enviados desde el microcontrolador,
durante un tiempo determinado por el fabricante. Pero cuando se trata de
programación en alto nivel, este proceso es realizado internamente por el compilador
o por librerías que están previamente hechas en el software.
_____________________ 5 http://es.wikipedia.org/wiki/LCDdisplay _16*2
16
Figura 1.6: Pantalla Display LCD 16*2
1.3.4. RELÉ 6
Un relé es un interruptor accionado por un electroimán.
Un electroimán está formado por una barra de hierro dulce, llamado núcleo, rodeada
por una bobina de hilo de cobre. Al pasar una corriente eléctrica por la bobina en
núcleo de hierro se magnetiza por efecto de campo producido por la bobina,
convirtiéndose en un imán tanto más potente cuanto mayor sea la línea de intensidad
de la corriente y el número de vueltas de la bobina. Al abrir de nuevo el interruptor y
deja de pasar corriente por la bobina, desaparece el campo magnético y el núcleo de
ser un imán.
Figura 1.7: Símbolo Relé
_____________________ 6http://platea.pntic.mec.es/~pcastela/tecno/documentos/apuntes/rele.pdf
17
1.3.4.1. Tipos de relés 6
El relé que hemos visto hasta ahora funciona como un interruptor. Está formado por
un contacto móvil o polo y un contacto fijo. Pero también hay relés que funcionan
como un conmutador, porque disponen de un polo (contacto móvil) y dos contactos
fijos.
Figura 1.8: Partes Relé
El relé simple es aquel que tiene un solo contacto móvil y un solo contacto fijo
Figura 1.9: Símbolo Relé Simple
18
El relé doble es aquel que tiene un solo contacto móvil pero este se caracteriza por
tener dos contactos fijos.
Figura 1.10: Símbolo Relé Doble
1.3.5. TECLADO MATRICIAL7
Los teclados matriciales son ensamblados en forma de matriz, como se ilustra la
figura.
El diagrama muestra un teclado como una matriz de de 4 x 4 – 16 teclas
configuradas en 4 columnas y 4 renglones.
Cuando no se ha oprimido ninguna tecla, (todas las teclas abiertas) no hay conexión
entre renglones y columnas
Cuando se oprime una tecla se hace una conexión entre la columna y el renglón de
la tecla
Figura 1.11: Forma del teclado matricial
_____________________ 7http://galia.fc.uaslp.mx/~cantocar/microprocesadores/EL_Z80_PDF_S/20_TECLAD
O_MATRICIAL.PDF
19
1.3.5.1. Decodificador de teclado 7
Muchos teclados comerciales ya traen incluido su decodificador, que se escanea el
teclado y si, una tecla es presionada, regresa un número que identifica la tecla.
Otra alternativa es adquirir por separado un chip decodificador y conectarlo al
teclado.
El decodificador mostrado tiene 8 entradas; las 4 entradas “X” son conectadas a las 4
columnas del teclado y las 4 entradas “Y” son conectadas a los 4 renglones. No se
muestra los capacitores que gobiernan la rapidez a la que se escanea el teclado.
Cuando se oprime una tecla el código de 4 bits de la tecla (con 16 teclas, los códigos
están entre 0000 y 1111 en binario) aparecerá en las 4 líneas de salida y la línea de
dato disponible (DA) se pone en BAJO. Si se conecta a una línea de interrupción el
microprocesador será interrumpido cuando se oprima alguna tecla. La Rutina de
Servicio de la Interrupción, entonces lee los 4 bits y procesa el dato.
El chip decodificador se encargara de eliminar los rebotes de las teclas, lo que libera
al programador de esta responsabilidad, esto en una ventaja al usar un chip
decodificador.
Figura # 1.12: Decodificador de teclado hexadecimal
20
2. CAPÍTULO II: LENGUAJE DE PROGRAMACIÓN
2.1. LENGUAJE DE PROGRAMACIÓN BASCOM AVR
La herramienta BASCOM AVR desarrollada por la empresa MCS Electronics, sirve
para realizar programas de alto nivel para microcontroladores AVR, el cual posee un
compilador y un ensamblador que traduce las instrucciones estructuradas en
lenguaje de máquina.
PROGRAMACION EN ALTONIVEL (*.bAS)
COMPILADOR
ESAMBLADOR
ARCHIVO*.HEX
ARCHIVO OBJETO
Figura 2.1: Diagrama de bloques de programación estructurada
Luego de instalar el paquete computacional, el cual se puede conseguir como DEMO
en la página del MCS Electronics, podemos apreciar la siguiente pantalla inicial.
Figura 2.2: Ambiente del BASCOM AVR
21
Dentro de ella podemos ver claramente una barra de herramientas, un menú y el
área de trabajo. A continuación se explicara los iconos o atajos más importantes para
manejar la herramienta BASCOM AVR.
2.1.1. INICIO
Presionando NEW, nosotros podemos abrir un archivo en blanco para empezar a
trabajar en nuestro proyecto.
Figura 2.3: Barra de Herramientas File
2.1.2. COMPILADOR
Presionando el icono de la barra de herramientas o F7, nosotros podemos compilar
nuestro proyecto y obtener un archive .HEX, el cual va hacer grabado en el
microcontrolador
Figura 2.4: Icono del compilador BASCOM AVR
Una vez que se a compilado el proyecto puede aparecer el siguiente cuadro de
confirmación.
Figura 2.5: Cuadro de confirmación de compilación
22
En el cual se puede comprobar el porcentaje de memoria utilizada en el
microcontrolador.
2.1.3. SIMULADOR
Una vez que se compila un proyecto, se puede similar con ayuda de BASCOM SIM,
lo cual se realice presionando el icono de simulación de la barra de herramientas F2.
Figura 2.6: Icono del simulador BASCOM AVR
Una vez que se presiona el simulador, aparece una pantalla donde se puede apreciar
el programa principal, espacios de memoria, emuladores de comunicación serial,
emuladores de LCD, etc.
Figura 2.7: Cuadro de simulación en BASCOM AVR
23
Es preferible al momento de usar este simulador, que se vaya realizando el proceso
paso a paso mediante F8, con lo cual observamos una flecha azul en la parte
izquierda del programa, que nos indicara el avance de la simulación
2.1.4. EMULADOR SERIAL
Figura 2.8: Icono del Emulador serial BASCOM AVR
Con este icono se puede hacer uso de un emulador de comunicación serial entre el
microcontrolador y un PC, en el cual podremos observar la siguiente figura, que
emula un terminal no inteligente, el cual recibe o transmite caracteres.
Figura 2.9: Emulador de Comunicación Serial
2.1.5. CONEXIONES PRINCIPALES
Dentro de las conexiones principales de un microcontrolador están: el programador,
el oscilador, la alimentación y el reset. Para la cual se recomienda tomar en cuenta
los siguientes aspectos al momento de armar un circuito.
24
Figura 2.10 Conexiones principales del microcontrolador AVR
2.1.6. GRABANDO EL MICROCONTROLADOR
Una vez que obtenemos nuestro archivo “.HEX”, procedemos a grabar el
microcontrolador, para la cual necesitamos un circuito que active la programación del
microcontrolador y pace todas las instrucciones hacia la memoria de programa del
mismo.
En el mercado encontramos una diversidad de circuitos grabadores de AVR, los
cuales nos muestran principalmente los fusibles y el archivo a cargar en el
microcontrolador.
Por ejemplo dentro de la ayuda de BASCOM, se encuentra un circuito grabador,
llamado STK200-300 (IPS Programmer), el cual utiliza el puerto paralelo (DB25) para
grabar el microcontrolador.
25
Figura 2.11: Circuito de grabación en paralelo (STK 200-300) para el
microcontrolador AVR
Además se puede interactuar con el mismo BASCOM para escribir el programa,
compilar y grabar el micro controlador, ya que si se presiona F4 o el icono de la
barra de herramientas, nos puede dar la opción de utilizar el programador mostrado
anteriormente.
Y podemos visualizar un software propio del BASCOM, que nos permita grabar el
microcontrolador, el cual se observa a continuación.
Figura 2.12: Pantalla de grabación del programa BASCOM AVR
26
2.1.7. INSTRUCCIONES BÁSICAS DE BASCOM AVR
Para iniciar a descubrir cada una de las instrucciones que posee esta herramienta,
empezaremos realizando la respectiva explicación de los comandos de instrucciones
y un ejemplo de cada comando de instrucción.
2.1.7.1. $regfile
Esta instrucción siempre va al inicio de cualquier proyecto que realicemos, ya que
esta se encarga de direccionar el respectivo microcontrolador que vamos a usar.
Por ejemplo si vamos a usar:
ATMEGA 48 —$regfile=”m48def.dat”
ATMEGA 16 —$regfile=”m16def.dat”
ATMEGA 8 —$regfile=”m88def.dat”
2.1.7.2. $crystal
Esta instrucción va a especificar la frecuencia de oscilación con la que va a funcionar
el micro controlador
Por ejemplo:
$crystal=1000000 para 1MHz
$crystal=8000000 para 8MHz
$crystal=11059200 para 11.0592MHz
2.1.7.3. Config
Esta instrucción especifica la configuración de un pin, un puerto o un dispositivo, ya
que pueden ser configurados como estradas o salida de datos.
27
Por ejemplo:
Config portb = output Puerto B como salida
Config pina.0 = input Pin A.0 como estrada
Config LCD = 16 * 2 LCD de 16 caracteres y 2 líneas
2.1.7.4. Wait, Waitms, Waitus
Esta instrucción sirve para crear un retardo, ya sea en segundos, milisegundos y
microsegundos respectivamente.
Por ejemplo:
Wait 3 Espera 3 segundos
Waitms 700 Espera 3 segundos
Waitus 500 Espera 3 segundos
2.1.7.5. Do – Loop
Esta instrucción es un lazo cerrado, en el cual se ejecuta un conjunto de
instrucciones de forma indeterminada.
2.1.7.6. Do – Loop Until
Es un lazo definido por la condición de una variable que está dentro del lazo, la cual
define cuando termina de ejecutarse el conjunto de instrucciones.
Por ejemplo:
Do
A=a+1
Loop Until a= 10 Termina el lazo cuando a=10
28
2.1.7.7. Toggle
Este comando sirve para complementar el estado anterior de alguna variable o pin de
algún puerto.
Por ejemplo:
Toggle Portb.0 Complementa el Portb.0
2.1.7.8. Dim
Dim Sirve para dimensionar el tipo de variable que se va a utilizar, entre los tipos de
variables están en los siguientes:
Tabla 2.1 Dimensiones de variables BASCOM AVR
TIPO DIMENSION
Bit 0 - 1
Byte 0 a 255
Word 0 a 65535
Long -2147483648 a 2147483647
Integer -32768 a 32767
Single 1.5 x 10-45 x 3.4 x 1038
String Cadena de caracteres máximo 254
Array Matriz 65535
Double 5.0 x 10324 a 1.7 x 10308
2.1.7.9. Alias
Sirve para dar un nombre general dentro de un proyecto, ya sea a un puerto o pin de
un puerto.
29
Por ejemplo:
Foco Alias Portb.0 El Portb.0 ahora se llama foco
2.1.7.10. LCD (Display de cristal liquido)
En el caso del BASCOM AVR, podemos controlar al LCD de dos maneras: por
comandos o por configuración en cuadro de dialogo.
2.1.7.10.1. Mediante comando tenemos
2.1.7.10.1.1. Config Lcd
Sirve para configurar la clase de LCD que vamos a utilizar puede ser de 16
caracteres por dos líneas (16x2), de 20 caracteres por 4 líneas (20x4), etc
Por ejemplo:
Config Lcd=16 * 2 (Display de 16 x 2)
2.1.7.10.1.2. Config Lcdpin
Sirve para configurar los pines por los cuales se va a manejar la información la clase
de LCD que vamos a utilizar, puede ser de 16 caracteres por 2 líneas (16 x 2), de 20
caracteres por 4 líneas (20x4), etc
Por ejemplo:
Config Lcdpin= Pin, Db4=Porta.4, Db5=Porta.5, Db6= Porta.6,
Db7=Porta.7, E=Portc.7, Rs=Portc.6
30
2.1.7.10.1.3. Config lcdbus
Esta instrucción sirve para configurar cual será el modo de envió de datos, ya que
puede ser hecho por 4 pines u 8 pines.
Por ejemplo:
Config lcdbus=4 (4 pines de datos)
2.1.7.10.1.4. Lcd ” ”
Sirve para escribir cualquier frase en el LCD, sin importar la localización del cursor.
Por ejemplo:
Lcd= “HOLA”
2.1.7.10.1.5. Locate x,y
Sirve para localizar el cursor en la línea y columna adecuada, para poder empezar a
escribir en el LCD
Por ejemplo:
Locate 1,1 (Localización del cursor en la fila 1, columna 1)
2.1.7.10.1.6. Shiftlcd
Sirve para mover todo el texto del LCD, ya sea para la izquierda o derecha, con las
instrucciones:
Shiftlcd left
Shiftlcd right
31
2.1.7.10.2. Mediante cuadro de dialogo tenemos
BACOM AVR, nos permite interactuar con el hardware, mediante cuadros de dialogo,
a los cuales podemos ingresar mediante el menú de opciones, el mismo que nos
aprueba la configuración de los pines que ocuparemos para realizar la comunicación
de los distintos dispositivos o periféricos de un micro controlador AVR.
Figura 2.13: Cuadro de diálogo del BASCOM AVR para configurar un LCD
La siguiente pantalla nos muestra cómo podemos configurar los pines y el tipo de
LCD que utilizaremos.
Figura 2.14: Cuadro de diálogo del BASCOM AVR para escoger el funcionamiento
de un LCD
32
Es recomendable realizar todas las configuraciones de dispositivos mediante código
y mediante cuadros de diálogo; de esta manera nos aseguramos que la información
de las interfaces de salida estén doblemente escritas y no se pierda en ningún
momento.
2.1.7.11. DDRx, PORTx, PINx
DDR, PORT Y PIN son registros que nos permiten utilizar el puerto como entrada o
salida de datos.
DDR : Con figura el pin como estrada o salida de datos.
PORT : Es el registro de salida de datos.
Pin : Es el registro de entrada de datos.
Las siguientes combinaciones, hacen que los pines funcionen en configuración
especial, como explica a continuación.
Ddrb.x = 0 Entrada alta impedancia.
Portb.x = 0
Ddrb.x = 0 Entrada pull up.
Portb.x = 1
Ddrb.x = 1 Salida a cero (0L) 20 mA.
Portb.x = 0
Ddrb.x = 1 Salida a uno (1L) 20 mA.
Portb.x = 1
Es importante recalcar que cuando se configura un puerto como salida, se debe
ocupar la palabra PORT y si se lo configura como entrada se usa la palabra PIN.
33
2.1.7.12. If – Them – Else
Son sentencias condicionales, las cuales responden a un estado de voltaje (0L, 1L),
de contenido (caracteres), etc.
CONDICION
CASOCONTRARIO
SI
Figura 2.15 Condición Lógica IF-ELSE
2.1.7.13. For – Next
Son instrucciones de repetición, ya que se ejecutan un conjunto de instrucciones,
dependiendo de una variable incremental que se encuentre dentro del lazo.
i=0 ; i<=10 ; i= 10
EJECUTARHASTA QUE i=10
Figura 2.16 Condición de repetición FOR – NEXT
2.1.7.14. Select – Case
Son sentencias que se pueden ejecutar, dependiendo del estado de una variable de
selección.
34
Dentro de este esquema se puede tener un conjunto de casos que pueden ser
ejecutados, dependiendo de las variables en juego.
VARIABLE
CASO 1 CASO 2 CASO3
Figura 2.17 Condición de selección SELECT – CASE
2.1.7.15. Símbolos operadores
Dentro de los operadores, pueden utilizarse los matemáticos, de relación y lógicos.
Además se debe tomar en cuenta que BASCOM nos permite realizar operaciones
únicamente con dos variables a la vez.
A continuación podremos observar los operadores más comunes.
Operadores Matemáticos
Suma: a=b+c
Resta: a=b-c
Multiplicación: a=b*c
División: a MOD b
Operadores Matemáticos
= Igual X=Y
<> No es igual X<>Y
35
< Menor que X<y
> Mayor que X>Y
<= Menor Igual X<=Y
>= Mayor Igual X>=Y
Operadores lógicos
NOT Complemento (Negación)
AND Conjunción (Y)
OR Disyunción(O)
XOR Or Exclusiva
Representación de lógica digital
Para la representación de un número binario o hexadecimal, dentro de BASCOM
AVR, es necesario anteponer el símbolo “&”. En el caso de números decimales, no
es necesario anteponer ningún símbolo.
Ejemplo:
Porta= &HF9 Número Hexadecimal
Porta= &HF9 Número Hexadecimal
Porta= &HF9 Número Hexadecimal
2.1.7.16. Estructura de un programa en BASIC
Este tema es muy importante tocar, ya que cuando se estructura un programa en alto
nivel, es necesario llevar un orden y vinculación de las instrucciones que se realizan.
Es primordial que se tengas estructuradas 4 partes dentro de un programa en
lenguaje de alto nivel.
· Configuraciones y Dimensionamientos de variables y subrutinas
· Programa principal
36
· Subrutinas
· Tablas de datos
El siguiente es un ejemplo de cómo se puede estructurar un programa en alto nivel,
con tipos de instrucciones que se pueden realizar en su respectivo orden.
$regfile=”m16def.dat”
Configuraciones y $crystal=8000000
Dimensionamientos Config Portb.Output
Declare Sub Espera ()
Do
Instrucciones
Programa Principales en
Principal Ciclo repetitivo
Loop
Espera:
Subrutinas Instrucciones
De subrutina
Return
Tablas de Tabla1:
Datos Data &HC0, &HF(
37
3. CAPÍTULO III : DISEÑO Y ENSAMBLAJE DEL PANEL
3.1. DESCRIPCIÓN DEL HARDWARE
3.1.1. EPECIFICACIONES
Se trata de un panel digital para el control de 25 funciones localizadas en las
cabinas de los autobuses interprovinciales las cuales son:
Tabla 3.1: Tabla de funciones controladas por el panel digital
Actividad Función 1 Luces Guías 2 Luces de Retro 3 Ventilación 4 Licuadora 5 Puerta 6 Luces de bodega 7 Neblineros 8 Faldón 9 Video
10 Luces de baño 11 Aire forzado 1 12 Radio 13 Rutero 14 Aire forzado 2 15 Luces de salón 1 (luces de pasillo del autobús) 16 Luces de lectura 17 Luces de grada 18 Bocina 19 Luces de salón 2 (Luces de los costados del autobús) 20 Media luz 1 (Luces normales) 21 Media luz 2 (Halógenos) 22 Luces de cabina 1 23 Luces de cabina 2 24 Plumas lentas 25 Plumas rápidas
38
Se debe tener en cuenta los voltajes que maneja un autobús:
· Batería 24 V
· Contacto de encendido 24V (Encendido)
· Contacto de encendido 0V (Apagado)
· Parada solicitada a 24 V (Sin presionar)
· Parada solicitada a 0 V (Presionado)
· Tierra (GND)
Por lo que para el diseño del panel digital se debe tener las siguientes
consideraciones:
· Las funciones de plumas lentas y plumas rápidas tienen diferente voltaje por lo
que se alimentara mediante una bornera instalada en el módulo, en la tarjeta
de relés, estas funciones serán activadas por relés dobles.
· De igual manera la bocina (PITO) tiene su propio voltaje por lo que esta
función será alimentada mediante la bornera instalada en el módulo, en la
tarjeta de relés, esta función será activada por un relé doble.
· Por otra parte para las funciones de Video, Monitor, Radio funcionan a 12V o
dependiendo de las especificaciones del fabricante por lo que este voltaje
también será colocado en la bornera instalada en el módulo, en la tarjeta de
relés, pero estas serán activadas por relés simples.
· Las funciones restantes operan a 24V (voltaje de batería) y serán activados
por relés simples.
·
Para la activación y desactivación de cada una de las funciones lo vamos a realizar
mediante un teclado, y los datos ingresados serán manejados por el microcontrolador
ATMEGA-16.
39
Para el manejo de datos se utiliza el SIPO (Serial In Paralelo Out) para esto
dependiendo de la tecla presionada en el teclado, el microcontrolador envía datos a
los registros de desplazamiento 74HC595, y de igual manera el microcontrolador
envía datos de actualización de salidas de los registros
Los datos enviados por los registros de desplazamiento tienen que ser amplificados
por lo que se utiliza un amplificador inversor ULN 2803.
Una vez que tenemos amplificada la señal esta activara al relé asignado a la función
y de igual manera se activara el LED de la tarjeta de monitoreo y presentara en el
LCD, indicando que acción se está ejecutando en ese momento (Encendiendo o
Apagando).
Para el manejo de las 25 funciones se realizaran mediante el diseño de cuatro
tarjetas electrónicas:
1. Tarjeta de teclado.
2. Tarjeta de monitoreo.
3. Tarjeta de cerebro.
4. Tarjeta de relés.
3.1.2. TARJETA DE TECLADO
Para el manejo de las 25 funciones debemos contar con un teclado9 matricial que
cuente con 5 filas y 5 columnas, para esto se observo los requerimientos de la
Corporación Electrónica TELEVID y se tuvo el siguiente modelo.
_____________________ 9 Ver Anexo A
40
Fig
ura
3.1
: F
ren
te d
el P
an
el D
igita
l
41
En el gráfico anterior se indica el frente del tablero digital e indica las funciones que
se desea manejar, en el frente se observa 22 teclas por lo que por tres teclas deben
cumplir doble función es decir activar dos funciones.
3.1.2.1. Descripción de los componentes del teclado
El teclado del Panel Digital tiene la siguiente distribución:
Tabla 3.2: Tabla de distribución de teclas en la tarjeta de teclado.
COLUMNA 1 COLUMNA 2 COLUMNA 3 COLUMNA 4 COLUMNA 5
FILA 1 Tecla 1 Tecla 2 Tecla 3 Tecla 4 Tecla 5
FILA 2 Tecla 6 Tecla 7 Tecla 8 Tecla 9 Tecla 10
FILA 3 Tecla 11 Tecla 12 Tecla 13 Tecla 14 Tecla 15
FILA 4 Tecla 16 Tecla 17 Tecla 18 Tecla 19 Tecla 20
FILA 5 Tecla 21 Tecla 22 - - -
Las filas y columnas serán controladas por el microcontrolador (ATMEGA -16) que
se encuentra en la tarjeta del cerebro, el teclado será manejado por 10 pines del
micro controlador, por tener 5 filas y 5 columnas.
Tabla 3.3: Tabla de direccionamiento del teclado hacia el microcontrolador.
CONEXIÓN
PIN MICRO
CONTROLADOR
Columna 1 Pin # 18 (PD4)
Columna 2 Pin # 19 (PD5)
Columna 3 Pin # 17 (PD3)
Columna 4 Pin # 20 (PD6)
Columna 5 Pin # 16 (PD2)
Fila 1 Pin # 14 (PD0)
Fila 2 Pin # 08 (PB7)
Fila 3 Pin # 15 (PD1)
Fila 4 Pin # 07 (PB6)
Fila 5 Pin # 06 (PB5)
42
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
ATMEGA-16ATMEGA16
R5 5k6
R4 5k6
R3 5k6
R2 5k6
R1 5k6
CONEXION TECLADO EN EL ATMEGA-16
COLUMNA 1 COLUMNA 2 COLUMNA 3 COLUMNA 4 COLUMNA 5
FILA 1
FILA 2
FILA 3
FILA 4
FILA 5
Figura 3.2: Diagrama de conexión del teclado hacia el microcontrolador
3.1.3. TARJETA DE MONITOREO
En la tarjeta de monitoreo10 es en donde se visualiza qué función se encuentra
activada o desactivada dependiendo de la tecla que se ha presionado, también
encontramos la pantalla LCD donde nos indicara en forma de mensaje de texto que
se está realizando, encendiendo o apagando una función, los mensajes en el LCD se
visualizaran siempre y cuando el autobús se encuentre encendido, la alimentación
para los LED’s de la tarjeta de monitoreo son de batería, y la alimentación de la
pantalla LCD es del voltaje de contacto del autobús.
Para la activación de los LED’s se realiza mediante la tarjeta del cerebro del panel
digital, por lo que está es la que envía la señal para la activación de los LED’s.
_____________________ 10 Ver Anexo B
43
PA
0/A
DC
040
PA
1/A
DC
139
PA
2/A
DC
238
PA
3/A
DC
337
PA
4/A
DC
436
PA
5/A
DC
535
PA
6/A
DC
634
PB
0/X
CK
/T0
1
PB
1/T1
2
PB
2/IN
T2/A
IN0
3
PB
3/O
C0/
AIN
14
PB
4/S
S5
PB
5/M
OS
I6
PB
6/M
ISO
7
PB
7/S
CK
8
PA
7/A
DC
733
RE
SE
T9
XTA
L113
XTA
L212
PC
0/S
CL
22
PC
1/S
DA
23
PC
2/TC
K24
PC
3/TM
S25
PC
4/TD
O26
PC
5/TD
I27
PC
6/TO
SC
128
PC
7/TO
SC
229
PD
0/R
XD
14
PD
1/TX
D15
PD
2/IN
T016
PD
3/IN
T117
PD
4/O
C1B
18
PD
5/O
C1A
19
PD
6/IC
P20
PD
7/O
C2
21
AV
CC
30
AR
EF
32
AT
ME
GA
16
ATM
EG
A16
D714
D613
D512
D411
D310
D29
D18
D07
E6
RW5
RS4
VSS1
VDD2
VEE3
LCD
1LM
016L
V. C
onta
cto
D1
4004
R23
10 R
R24
1k
CO
NE
XIO
N T
AR
JET
A D
E M
ON
ITO
RE
O
V. B
ATE
RIA
D1
R1
3K3
D2
R1
3K3
D3
R1
3K3
D4
R1
3K3
D5
R1
3K3
D6
R1
3K3
D7
R1
3K3
D8
R1
3K3
D9
R1
3K3
D10
R1
3K3
D11
R1
3K3
D12
R1
3K3
D13
R1
3K3
D14
R1
3K3
D15
R1
3K3
D16
R1
3K3
D17
R1
3K3
D18
R1
3K3
D19
R1
3K3
D20
R1
3K3
D21
R1
3K3
D22
R1
3K3
SEÑ AL TARJETA CEREBRO
SEÑ AL TARJETA CEREBRO
SEÑ AL TARJETA CEREBRO
SEÑ AL TARJETA CEREBRO
SEÑ AL TARJETA CEREBRO
SEÑ AL TARJETA CEREBRO
Fig
ura
3.3
: D
iag
ram
a d
e c
one
xión
ta
rjeta
de
mo
nito
reo
44
El LCD utilizara 6 pines del micro controlador ATMEGA 16 para el manejo de datos.
Tabla 3.4: Tabla de direccionamiento del LCD hacia el micro controlador.
CONEXXION PIN MICRO CONTROLADOR
Enable (LCD) Pin # 39 (PA1)
RS (LCD) Pin # 40 (PA0)
RB4 (LCD) Pin # 38 (PA2)
RB5 (LCD) Pin # 37 (PA3)
RB6 (LCD) Pin # 36 (PA4)
RB7 (LCD) Pin # 35 (PA5)
3.1.4. TARJETA DE CEREBRO
3.1.4.1. Descripción La tarjeta de cerebro11 es donde se encuentra la mayoría de la circuitería electrónica,
en donde encontramos los elementos de manejo de datos, el micro controlador
ATMEGA-16, los registros de desplazamiento 74HC595, los amplificadores ULN
2803, los reguladores de voltaje 7805, etc.
Para lo cual a continuación vamos a nombrar las características principales de cada
uno de ellos
3.1.4.1.1. Características ATMEGA-1612 De alto rendimiento y bajo consumo AVR 8-bit Microcontrolador
Advanced RISC Arquitectura
-131 Instrucciones de gran alcance - la mayoría simple de reloj ciclo de ejecución
_____________________ 11 Ver Anexo C 12http://translate.google.com.ec/translate?hl=es&langpair=en|es&u=http://www.futurle
c.com/Atmel/ATMEGA16.shtml
45
- 32 x 8 Registros de uso general de Trabajo
- Hasta 6 MIPS de procesamiento en 16MHz
- Funcionamiento totalmente estática
- El chip de 2-ciclo Multiplicador
No volátil de datos y programa de recuerdos
- 16K bytes de In-System Self-Programmable Flash
- Opcional con la sección del código de arranque Bits Independiente de bloqueo
- 512K Bytes EEPROM
- Bloqueo de programación de software de seguridad
JTAG (IEEE Std. 1149,1 RoHS) Interfaz
- Límite de escaneo Capacidades De acuerdo con el estándar JTAG
- Amplia on-chip de depuración de Apoyo
- La programación de Flash, EEPROM, fusibles, y los bits de bloqueo a través de
la interfaz de JAGS
Características periféricas
- El chip comparador analógico
- Watchdog Timer programable con distintos on-chip oscilador
- Interfaz de maestro / esclavo SPI Serial
- Dos 8-bit Timer / Contadores con distintos Prescalar, Comparación
- Un 16-bit temporizador / contador con Separa PRESCALER, comparar y
modo de captura
- Tiempo Real Contra el oscilador independiente
- Cuatro canales de PWM
- 8- canales, 10-bit ADC
46
- Byte orientadas Dos cables de interfaz serie
- USART serie programable
Características especiales Microcontrolador
- Power-on Reset y programable Brown-out de detección
- Interior calibrada Oscilador RC
- Interna y externa fuentes de interrupción
- Seis modos de espera: Libre, ADC reducción de ruido, ahorro de energía,
apagado, espera, espera, y extendido
Entradas / Salidas y Paquetes
- 32 Líneas programables entrada / salida
- 40-pin PDIP, 44-DIP plomo, y 44-MLF pad
Voltajes de operación
- 4.5-5.5V para ATMEGA16
Los grados de velocidad
-16 MHz para ATMEGA16
Consumo de energía en 4 MHz, 3V, 35 ° C
- 1.1mA activo:
- Modo de reposo: 0.35mA
- Modo power-down: <1Ua
47
3.1.4.1.1.1. Distribución de pines del ATMEGA 16 12
Figura 3.4: Distribución de pines ATMEGA 16
Tabla 3.5: Tabla distribución de pines ATMEGA-16.
PIN MICRO
CONTROLADOR DESCRIPCIÓN
PIN MICRO
CONTROLADOR DESCRIPCIÓN
Pin # 01 (XCK/T0) PB0 Pin # 21 (CB2) PD7
Pin # 02 (T1) PB1 Pin # 22 (SCL) PC0
Pin # 03 (INT2/AIN0) PB2 Pin # 23 (SDA) PC1
Pin # 04 OC0/AIN1) PB3 Pin # 24 (TCK) PC2
Pin # 05 (SS) PB4 Pin # 25 (TMS) PC3
Pin # 06 (MOSI) PB5 Pin # 26 (TDO) PC4
Pin # 07 (MISO) PB6 Pin # 27 PC5 (TDI)
Pin # 08 (SCK) PB7 Pin # 28 PC6 (TOSC1)
Pin # 09 RESET Pin # 29 PC7 (TOSC2)
Pin # 10 VCC Pin # 30 AVCC
Pin # 11 GND Pin # 31 GND
Pin # 12 XTAL2 Pin # 32 AREF
Pin # 13 XTAL1 Pin # 33 PA7 (ADC7)
Pin # 14 (RXD) PD0 Pin # 34 PA6 (ADC6)
Pin # 15 (TXD) PD1 Pin # 35 PA5 (ADC5)
Pin # 16 (INT0) PD2 Pin # 36 PA4 (ADC4)
Pin # 17 (INT1) PD3 Pin # 37 PA3 (ADC3)
Pin # 18 (OC1B) PD4 Pin # 38 PA2 (ADC2)
Pin # 19 (OC1A) PD5 Pin # 39 PA1 (ADC1)
Pin # 20 (ICP1) PD6 Pin # 40 PA0 (ADC0)
48
3.1.4.1.1.2. Descripción de pines13
VCC: Tensión de alimentación digital
GND: TIERRA
Port A (PA7.. PA0): El pórtico A sirve de las entradas analógicas a los convertidores
A / D.
El pórtico A es un puerto de 8-bit bi-direccional de I / O del puerto, si el convertidor
A / D no se utiliza. Cuando los pines PA0 a PA7 se utilizan como insumos en el
exterior y si la fuerza interna-up resistencias se activan. Los pines de un pórtico se
comportaran como convertidores.
Puerto B (PB7.. PB0): El pórtico B es un puerto de 8-bit bi-direccional de I / O
puerto con resistencias internas (seleccionados por cada bit). El Buffers de salida
del puerto B tiene características de conducción de simetría, Como entradas no se
activan las resistencias internas de pull-up.
Si son activadas las resistencias de pull-up se tiene diferente comportamiento del
pórtico B como interrupciones es importante tener en cuenta, en el pórtico B se
encuentran los pines de grabación de micro controlador los cuales son MISO, MOSI,
SCK
Puerto C (PC7.. PC0): El pórtico C es un puerto de 8-bit bi-direccional de I / O con
resistencias internas (seleccionados por cada bit). El Buffers de salida del puerto C
tiene características de conducción de simetría, Puerto C sirve también de las
_____________________ 13 Ver Anexo D
49
funciones de la interfaz JTAG y otras características especiales de la ATMEGA16,
dependiendo de de las resistencias de pull-up si son activadas o desactivadas se
comporta diferente el puerto C microcontrolador PC5 (TDI), PC3 (TMS) y PC2 (TCK).
Puerto D (PD7.. PD0): El pórtico D es un puerto de 8-bit bi-direccional de I / O con
resistencias internas (seleccionados por cada bit). El Buffers de salida del puerto d
tiene características de conducción de simetría, El puerto D sirve también con
diversas funciones dependiendo si son activadas las resistencias de pull-up como
interrupciones, Tx y Rx con otros microscontroladores conectados.
RESET: Entrada de reset. Un nivel bajo de este pin por más de la longitud de pulso
mínimo generará un restablecimiento en el microcontrolador.
XTAL1: De entrada al amplificador oscilador inversora y la entrada al circuito de reloj
interno de funcionamiento.
XTAL2: Salida del amplificador oscilador inversora.
AVCC: AVCC es el pin de tensión de alimentación para un puerto y el A / D
Convertidor.
AREF: Aref es el pin de referencia analógica para el A / D Convertidor.
3.1.4.1.2. Registro 74HC595 características 43
El circuito integrado 74HC595 es un registro de desplazamiento que tiene ingrese de
datos en serie y la salida de datos en paralelo, para el desplazamiento de los datos el
circuito integrado posee un pin para la señal de reloj y empujar los datos, también
_____________________ 14 Ver Anexo E
50
posee un pin de STROBE para la salida de los datos en paralelo, un pin de ENABLE
para habilitar o deshabilitar el registro, un pin de MASTER RESET el cual limpiara
los datos del registro, un pin de datos de entrada serial, 8 pines de salida de datos en
paralelo, pines de alimentación Vcc y GND en total se tiene 16 pines del circuito
integrado
Figura 3.5: Distribución de pines ATMEGA 16
Tabla 3.6: Tabla distribución de pines 74HC595.
PIN REGISTRO DESCRIPCIÓN PIN REGISTRO DESCRIPCIÓN
Pin # 01 Q1(OUT PARALELO) Pin # 09 DAT OUT (Q7')
Pin # 02 Q2(OUT PARALELO) Pin # 10 MASTER RESET
Pin # 03 Q3(OUT PARALELO) Pin # 11 CLOCK
Pin # 04 Q4(OUT PARALELO) Pin # 12 STROBE
Pin # 05 Q5(OUT PARALELO) Pin # 13 ENABLE
Pin # 06 Q6(OUT PARALELO) Pin # 14 DATA IN (IN SERIAL)
Pin # 07 Q7(OUT PARALELO) Pin # 15 Q0(OUT PARALELO)
Pin # 08 GND Pin # 16 Vcc
51
Figura 3.6: Diagrama de manejo de señales del 74HC595
3.1.4.1.3. Características ULN 2803 15
Este pequeño dispositivo pero de gran ayuda es muy útil cuando usamos los
Microcontrolador.
El ULN2803 tiene internamente 8 transistores Darlingtons con su respectivo diodo de
protección, este maneja una corriente hasta los 500mA, voltaje de salida hasta 50V,
_____________________ 15 Ver Anexo F
52
este circuito integrado tiene 18 pines los cuales 8 son entradas, 8 son salidas, un pin
de GND y un pin de voltaje común para las 8 entradas/salidas.
Figura 3.7: Diagrama de una entrada y salida del ULN2803
Figura 3.8: Distribución de pines del ULN2803
Tabla 3.7: Tabla distribución de pines ULN2803.
PIN ULN2803 DESCRIPCION PIN ULN2803 DESCRIPCION
Pin # 01 IN 1 Pin # 10 COMUN
Pin # 02 IN 2 Pin # 11 OUT 8
Pin # 03 IN 3 Pin # 12 OUT 7
Pin # 04 IN 4 Pin # 13 OUT 6
Pin # 05 IN 5 Pin # 14 OUT 5
Pin # 06 IN 6 Pin # 15 OUT 4
Pin # 07 IN 7 Pin # 16 OUT 3
Pin # 08 IN 8 Pin # 17 OUT 2
Pin # 09 GND Pin # 18 OUT 1
53
3.1.4.1.4. Características del regulador 780516
· Regulador de voltaje +5,0 V, 7805, TO-220-3
· N.º de salidas: 1
· Regulador de voltaje IC Case Style: TO-220
· N.º de Pins: 3
· Rango de temperatura de operación : -0 °C a +150 °C
· SVHC: No SVHC
· Tipo de caja: TO-220
· Temperatura máxima de operación : 150°C
· Temperatura mínima de operación : 0°C
· Número de base: 7805
· Marcador: L7805CV
· Número genérico CI: 7805
· Máximo voltaje de entrada: 35V
· Máxima salida de corriente: 1,5A
· Máxima salida de voltaje: 5V
· Mínimo voltaje de entrada: 7V
· Tolerancia : +4%
· Tensión de salida: 5V
· Tipo de terminación: Agujero pasante
· Tipo de regulador de tensión: Fijo positivo
· Tensión: 5V
_____________________ 16 Ver Anexo G
54
Figura 3.9: Distribución de pines del 7805
Tabla 3.8: Tabla distribución de pines 7805.
PIN 7805 DESCRIPCION
Pin # 01 VOLTAJE IN
Pin # 02 GND
Pin # 03 VOLTAJE OUT
3.1.4.2. Fuente de alimentación tarjeta de cerebro.
Para la alimentación de la tarjeta de cerebro vamos a tener dos alimentaciones de
voltaje, la primera es directamente de la batería y la segunda alimentación del voltaje
de contacto del autobús.
El voltaje de batería del autobús manejara lo siguiente, alimentara al micro
controlador ATMEGA16, a los registros de desplazamiento 74HC595, a los ULN
2803(24 V al pin común del circuito integrado) a las resistencias de pull-up de las
columnas del teclado, a los LED’s de la tarjeta de monitoreo y a las 25 relés simples
y dobles de la de las tarjeta de relés.
Previamente al voltaje de batería se debe reducir a cinco voltios, para el micro
controlador, registro de desplazamiento, y las resistencias de pull-up de las columnas
del teclado.
55
BAT.
AUTO
-BUS
R1 680R
R2 680 R VI
1VO
3
GND2
FUEN
TE D
E CEL
ULAR
FUNE
TE D
E C
ELUL
AR
VI1
VO3
GND2
REG.
7805
7805
C1 10nf
D2 4004
ALIM
ENTA
CION
LED'
s TAR
JETA
DE
MONI
TORE
O
ALIM
ENTA
CION
MIC
RO C
ONTR
OLAD
ORAL
IMEN
ACIO
N RE
G. D
ESPL
AZAM
IENTO
ALIM
ENTA
CION
RES
ISTEN
CIAS
DE
COLU
MNAS
DE
TECL
ADO
D1 4004
24V
AL C
OMUN
ULN
2803
ALIM
ENTA
CION
DE
24V.
DE
BATE
RIA
Fig
ura
3.1
0: D
iag
ram
a d
e a
lime
nta
ción
de
la fu
ent
e d
e b
ate
ría
. m
on
itore
o
56
Para la alimentación de la fuente de batería (24 voltios) se coloca un diodo para
evitar una mala polarización de voltaje, en este punto se envía voltaje a los LED’s de
la tarjeta de monitoreo y al pin común de los ULN 2803, luego pasa por un banco de
resistencias en paralelo de 680 ohm para que exista una caída de voltaje, para que
entre este voltaje a una batería de celular, entra 18 Voltios y a las salida de esta se
tiene 12 Voltios lo cual es ideal para la entrada de voltaje del regulador 7805 y a la
salida de este se tiene ya los 5 voltios que se necesita para la alimentación del
microcontrolador, a la salida del regulador 7805 se filtra la señal con un capacitor de
10 nano faradios para mejorar el factor de rizado del voltaje y filtrar de mejor manera
la señal, se tiene lista la alimentación para el micro controlador, registro de
desplazamiento, y las resistencias de pull-up de las columnas del teclado.
Para la alimentación del voltaje de contacto de igual manera se regular el voltaje,
para la alimentación de la pantalla LCD y también envía una señal a un pin del
microcontrolador para identificar si el auto bus se encuentra encendido o apagado.
De igual manera se debe tener encueta que si el auto bus se encuentra apagado el
voltaje de contacto es 0 Voltios y si se encuentra encendido es de 24 Voltios, por lo
que se coloca un diodo de protección de polarización inversa de voltaje, luego pasa
por un banco de resistencias en serie de 220 ohm, para que exista una caída de
voltaje para tener un voltaje menor de 24 Voltios en la entrada del regulador 7805 y
tener a la salida de este los 5 voltios necesarios.
A la salida del regulador 7805 se filtra la señal por dos condensadores un electrolítico
y un cerámico el condensador electrolítico debe ser de 100 micro faradios a 25
voltios y el cerámico de 10 nano faradios.
57
VOLTA
JE DE
CONT
ACTO
D1 4004
R1 220R
R2 220R
VI1
VO3
GND2
REG 7
805780
5
25 V
100uf
C1 10nf
D2 4004
ALIME
NTAC
ION DE
CONT
ACTO
PANT
ALLA
LCD
PIN HA
CIA EL
MICR
O CON
TROL
ADOR
Fig
ura
3.1
1: D
iag
ram
a d
e a
lime
nta
ción
de
l con
tact
o d
el a
uto
bús
mo
nito
reo
58
A continuación indicamos un resumen de los pines conectados del microcontrolador
esto nos ayudara en la programación del microcontrolador para definir entradas y
salidas de datos.
ATMEGA 16
DATA OUT REGISTRO 1 PB0
PA0 40 RS LCD
PARADA SOLICITADA 2 PB1
PA1 39 ENABLE LCD
ENABLE REGISTRO 3 PB2
PA2 38 RB4 LCD
STROBE REGISTRO 4 PB3
PA3 37 RB5 LCD
CLOCK REGISTRO 5 PB4
PA4 36 RB6 LCD
FILA 5 TECLADO 6 PB5
PA5 35 RB7 LCD
FILA 4 TECLADO 7 PB6
PA6 34 -
FILA 2 TECLADO 8 PB7
PA7 33 -
RESET 9 RESET
AREF 32 -
VCC 10 VCC
GND 31 GND
GND 11 GND
AVCC 30 -
- 12 XTAL2
PC7 29 -
- 13 XTAL1
PC6 28
FILA 1 TECLADO 14 PD0
PC5 27 -
FILA 3 TECLADO 15 PD1
PC4 26 -
COLUMNA 5 TECLADO 16 PD2
PC3 25 -
COLUMNA 3 TECLADO 17 PD3
PC2 24
COLUMNA 1 TECLADO 18 PD4
PC1 23 CONTACTO
COLUMNA 2 TECLADO 19 PD5
PC0 22 NEGATIO DE CHICHARRA
COLUMNA 4 TECLADO 20 PD6
PD7 21 PIN DE RESET MICRO
Figura 3.12: Diagrama de conexión de los pines del microcontrolador ATMEGA-16
59
PA
0/A
DC
040
PA
1/A
DC
139
PA
2/A
DC
238
PA
3/A
DC
337
PA
4/A
DC
436
PA
5/A
DC
535
PA
6/A
DC
634
PB
0/X
CK
/T0
1
PB
1/T
12
PB
2/IN
T2
/AIN
03
PB
3/O
C0/A
IN1
4
PB
4/S
S5
PB
5/M
OS
I6
PB
6/M
ISO
7
PB
7/S
CK
8
PA
7/A
DC
733
RE
SE
T9
XT
AL1
13
XT
AL2
12
PC
0/S
CL
22
PC
1/S
DA
23
PC
2/T
CK
24
PC
3/T
MS
25
PC
4/T
DO
26
PC
5/T
DI
27
PC
6/T
OS
C1
28
PC
7/T
OS
C2
29
PD
0/R
XD
14
PD
1/T
XD
15
PD
2/IN
T0
16
PD
3/IN
T1
17
PD
4/O
C1B
18
PD
5/O
C1A
19
PD
6/IC
P20
PD
7/O
C2
21
AV
CC
30
AR
EF
32
AT
ME
GA
16
AT
ME
GA
16
Q0
15
Q1
1
Q2
2
Q3
3
Q4
4
Q5
5
Q6
6
Q7
7
Q7
'9
SH
_C
P11
ST
_C
P12
DS
14
MR
10
OE
13
RE
G 1
74
HC
595
Q0
15
Q1
1
Q2
2
Q3
3
Q4
4
Q5
5
Q6
6
Q7
7
Q7
'9
SH
_C
P11
ST
_C
P12
DS
14
MR
10
OE
13
RE
G 2
74
HC
595
Q0
15
Q1
1
Q2
2
Q3
3
Q4
4
Q5
5
Q6
6
Q7
7
Q7
'9
SH
_C
P11
ST
_C
P12
DS
14
MR
10
OE
13
RE
G3
74
HC
595
Q0
15
Q1
1
Q2
2
Q3
3
Q4
4
Q5
5
Q6
6
Q7
7
Q7
'9
SH
_C
P11
ST
_C
P12
DS
14
MR
10
OE
13
RE
G4
74
HC
595
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
CO
M10
UL
N 1
ULN
2803
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
CO
M10
UL
N 2
ULN
2803
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
CO
M10
UL
N 3
ULN
2803
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
CO
M10
UL
N 4
ULN
2803
Para
da s
olicit
ad
a (
au
tob
us)
V. R
EG
ULA
DO
DE
BA
TE
RIA
VO
LT
AJE
DE
BA
TE
RIA
24
V
RE
LA
Y 1
4R
EL
AY
12
RE
LA
Y 1
0R
EL
AY
8R
EL
AY
6R
EL
AY
4R
EL
AY
2R
EL
AY
25
RE
LA
Y 2
4R
EL
AY
19
RE
LA
Y 1
7R
EL
AY
15
RE
LA
Y 1
3R
EL
AY
11
RE
LA
Y 9
RE
LA
Y 7
RE
LA
Y 5
RE
LA
Y 1
RE
LA
Y 3
RE
LA
Y 2
3R
EL
AY
22
RE
LA
Y 2
1R
EL
AY
20
RE
LA
Y 1
8
RE
LA
Y 1
6M
ON
ITO
RE
O P
ITO
MO
NIT
OR
EO
PL
UM
AS
MO
NIT
OR
EO
CA
BIN
AS
MO
NIT
OR
EO
SA
LO
N
1142
153
164
175
186
197
208
219
22
10
23
11
24
12
25
13
J? CO
NN
-D25M
RE
LA
Y 3
RE
LA
Y 2
3R
EL
AY
1R
EL
AY
22
RE
LA
Y 5
RE
LA
Y 2
1R
EL
AY
7R
EL
AY
20
RE
LA
Y 9
RE
LA
Y 1
8R
EL
AY
11
RE
LA
Y 1
6R
EL
AY
13
RE
LA
Y 1
4R
EL
AY
15
RE
LA
Y 1
2R
EL
AY
17
RE
LA
Y 1
0R
EL
AY
19
RE
LA
Y 8
RE
LA
Y 2
4R
EL
AY
6R
EL
AY
25
RE
LA
Y 4
RE
LA
Y 2
Fig
ura
3.1
3: D
iag
ram
a d
e c
on
exi
ón d
e s
alid
as d
e
los
relé
s
mo
nito
reo
60
3.1.5. TARJETA DE RELÉS 17 En la tarjeta de relés es en donde mediante un cable DB-25 bajamos con las señales
de la tarjeta del cerebro para la activación y desactivación de las funciones del
autobús.
En la tarjeta de relés debemos considerar los siguientes aspectos:
La función de plumas vamos a manejar con la misma tecla y se tiene plumas lentas y
plumas rápidas y esta función tiene su propio voltaje por lo que debemos alimentar
con el voltaje de plumas a los relés de plumas.
De igual manera para función de bocina (PITO) tiene su propio voltaje por lo que
debemos conectar el relé de bocina a su voltaje adecuado.
Y las funciones de Radio Televisión y Video también tienen su propio voltaje por lo
que se debe conectar al voltaje correspondiente de cada uno de ellos.
Las demás funciones trabajan a 24 Voltios es decir a voltaje de batería por lo que la
alimentación de éstas será la misma.
_____________________ 17 Ver Anexo H
61
1142
153
164
175
186
197
208
219
22
10
23
11
24
12
25
13
DB
-25
CO
NN
-D2
5H
RE
LA
Y 3
RE
LA
Y 2
3R
EL
AY
1R
EL
AY
22
RE
LA
Y 5
RE
LA
Y 2
1R
EL
AY
7R
EL
AY
20
RE
LA
Y 9
RE
LA
Y 1
8R
EL
AY
11
RE
LA
Y 1
6R
EL
AY
13
RE
LA
Y 1
4R
EL
AY
15
RE
LA
Y 1
2R
EL
AY
17
RE
LA
Y 1
0R
EL
AY
19
RE
LA
Y 8
RE
LA
Y 2
4R
EL
AY
6R
EL
AY
25
RE
LA
Y 4
RE
LA
Y 2
DE
MA
S F
UN
CIO
NE
S
VID
EO
TV
RL?
RL?
RL?
D1
40
04
D1
40
04
D1
40
04
D1
40
04
D1
40
04
D1
40
04
D1
40
04
VO
LA
TJE
DE
RA
DIO
VO
LA
TJE
DE
VID
EO
VO
LT
AJE
DE
TV
VO
LA
TE
J D
E B
AT
ER
IA(2
4V
)
VO
LT
AJE
DE
PIT
OV
OL
TA
JE
DE
PL
UM
AS
VO
LA
TJE
DE
PL
UM
AS
L1
L1
L1
L1
L1
L1
L1
L1
2K
2
L1
2K
22
K2
2K
22
K2
2K
22
K2
2K
22
K2
DE
MA
S R
EL
AY
'sR
EL
AY
23
RE
LA
Y 2
1R
EL
AY
22
RE
LA
Y 1
9R
EL
AY
25
RE
LA
Y 2
4
MO
DU
LO
DE
RE
LE
S
Fig
ura
3.1
4: D
iag
ram
a d
e c
on
exi
ón
relé
s
mo
nito
reo
62
Tabla 3.8: Tabla resumen de conexión y manejo de relés.
Nº RELÉS CONECTOR
DB25 ALIAS TECLA
TECLA TABLERO
Nº DE REGISTRO
SALIDA REGISTRO
RELAY 16 PIN 20 RT15 15 MEDIA LUZ 1 1 Q0
RELAY 18 PIN 21 RT19 19 MEDIA LUZ 2 1 Q1
RELAY 20 PIN 22 RT16 16 LECTURA 1 Q2
RELAY 21 PIN 23 RT10 10 TV 1 Q3
RELAY 22 PIN 24 RT9 9 VIDEO (BAÑO) 1 Q4
RELAY 23 PIN 25 RT12 12 MP3 1 Q5
RELAY 03 PIN 13 RT4 4 LICUADORA 1 Q6
RELAY 01 PIN 12 RT11 11 AIRE FORZADO 1 1 Q7
RELAY 05 PIN 11 RT20 20 SALON 1 2 Q0
RELAY 07 PIN 10 RT20A 20A SALON 2 2 Q1
RELAY 09 PIN 09 RT21 21 CABINA1 2 Q2
RELAY 11 PIN 08 RT21A 21A CABINA 2 2 Q3
RELAY 13 PIN 07 RT8 8 FALDON 2 Q4
RELAY 15 PIN 06 RT14 14 AIRE FORZADO 2 2 Q5
RELAY 17 PIN 05 RT17 17 GRADA 2 Q6
RELAY 19 PIN 04 RT13 13 RUTERO 2 Q7
RELAY 24 PIN 03 RT22 22A PLUMAS 3 Q0
RELAY 25 PIN 02 RT22A 22B PLUMAS 3 Q1
RELAY 02 PIN 01 RT6 6 BODEGAS 3 Q2
RELAY 04 PIN 14 RT5 5 PUERTAS 3 Q3
RELAY 06 PIN 15 RT7 7 NEBLINEROS 3 Q4
RELAY 08 PIN 16 RT3 3 VENTILADOR 3 Q5
RELAY 10 PIN 17 RT2 2 RETRO 3 Q6
RELAY 12 PIN 18 RT1 1 GUIAS 3 Q7
RELAY 14 PIN 19 RT18 18 PITO 4 Q0
- - S1 18A MONITOREO PITO 4 Q1
- - S2 22B MONITOREO PLUMAS 4 Q2
- - S3 21B MONITOREO CABINAS 4 Q3
- - S4 20B MONITOREO SALON 4 Q4
63
3.2. DESCRIPCIÓN DE SOFTWARE
3.2.1. DIAGRAMA DE FLUJO DEL FUNCIONAMIENTO DEL PROYECTO
Antes de comenzar a explicar el código principal desarrollado en el programa
BASCOM AVR se explica el funcionamiento en diagramas de flujo, e indica cómo se
realiza la activación y desactivación de cada una de los relés que son utilizados en el
proyecto.
3.2.2. DESCRIPCIÓN DE LA FIGURA 3.15
En la figura 3.15 se indica cómo se realiza la activación y desactivación de las
funciones que manejan las teclas 1 -17 y 19.
Lo primero que se realiza es tener una variable que nos servirá como bandera para
indicar si se activa o desactiva la función de la tecla presionada, en este punto
enviamos a la variable Bandera con el valor de 1.
Luego se realiza una pregunta, el auto bus se encuentra encendido si la respuesta es
positiva entonces se realiza otra pregunta se presiono alguna tecla, si la respuesta es
positiva se verifica que tecla fue presionada, si de las anteriores preguntas se tiene
una respuesta negativa no realiza ninguna actividad el programa y está esperando
que las respuestas sean positivas excepto a la pregunta que si el bus esta
encendido.
Una vez que se verifico que tecla fue presionada tendremos 18 posibles teclas y
preguntas, por fines de explicación solo indicaremos el funcionamiento de la tecla “1”
ya que las demás teclas cumplen con el mismo funcionamiento.
64
Se tiene la pregunta, la tecla presionada es la tecla “1” si es positiva la respuesta
mandamos a leer el estado de la bandera (solo la primera vez al comenzar el
programa vamos a tener la bandera con valor de 1)
Si la respuesta es negativa el programa espera hasta que la respuesta sea positiva,
una vez leída la bandera se realiza la última pregunta la bandera tiene un valor de 1
si es positiva la respuesta activa el relé correspondiente a la función que tiene la
tecla 1, así mismo presenta en el LCD el mensaje “ENCIENDE FUNCION”, y de igual
manera se enciende el LED de la tarjeta de monitoreo indicando que la función de
dicha tecla esta activada y por último la bandera colocamos con el valor de cero, ya
que si lo dejamos en uno no vamos a poder apagar la función.
Si la respuesta de la pregunta bandera es igual a 1 es negativa, por la razón que
enviamos el valor de la bandera igual a cero al encender la función, mandamos a
desactivar el relé correspondiente a la función de la tecla 1, así mismo presenta en el
LCD el mensaje “APAGA FUNCION”, y de igual manera se apaga el LED de la
tarjeta de monitoreo indicando que la función de dicha tecla esta desactivada y por
último la bandera colocamos con el valor de uno, y esta lista nuevamente para ser
encendida.
Pero si el autobús se encuentra apagado, el programa realiza la misma descripción
pero con la acepción que no se observara en el LCD los mensajes de encendido o
apagado de las funciones de las teclas ya que el LCD se encontrará apagado.
65
Fig
ura
3.1
5: A
ctiv
aci
ón y
de
sact
iva
ción
de
las
fun
cion
es
de
las
tecl
as
1 a
la 1
7 y
19
66
3.2.3. DESCRIPCIÓN DE LA FIGURA 3.16 En la figura 3.16 se indica cómo se realiza la activación y desactivación de las
funciones que manejan las teclas 20, 21 y 22, ya que estas realizan doble función.
Lo primero que se realiza es tener dos variables que nos servirá como banderas,
para indicar la activación de la primera función se utiliza la primera bandera y si esta
primera bandera esta activada nos permite la activación la segunda función
mediante la segunda bandera por lo que enviamos en este punto a bandera con
valor de 1 y a bandera1 con valor de cero.
Luego se realiza una pregunta, el autobús se encuentra encendido si la respuesta es
positiva entonces se realiza otra pregunta se presiono alguna tecla, si la respuesta es
positiva se verifica que tecla fue presionada, si de las anteriores preguntas se tiene
una respuesta negativa no realiza ninguna actividad el programa y está esperando
que las respuestas sean positivas excepto a la pregunta que si el bus esta
encendido.
Una vez que se verifico que tecla fue presionada tendremos 2 posibles teclas que
son la tecla 20, 21 y 22 ya que el diseño esta realizado para que estas teclas sean de
doble función, por lo que solo se explicara en funcionamiento de la tecla “21”.
Se tiene la pregunta, la tecla presionada es la tecla “21” si es positiva la respuesta
mandamos a leer el estado de la bandera (solo la primera vez al comenzar el
programa vamos a tener la bandera con valor de 1 y de igual manera bandera1 con
valor de 0)
Si la respuesta es negativa el programa espera hasta que la respuesta sea positiva,
una vez leída la bandera se realiza otra pregunta la bandera tiene un valor de 1 si es
positiva la respuesta activa el relé correspondiente a la función que tiene la tecla
“21”, así mismo presenta en el LCD el mensaje “ENCIENDE FUNCION 1”, y de igual
67
manera se enciende el LED de la tarjeta de monitoreo indicando que la función de
dicha tecla esta activada y colocamos el valor de badera1 en uno y realizamos la
última pregunta bandera1 es igual a 1 si es positiva la respuesta activa la segunda
función que tiene la tecla “21”, así mismo presenta en el LCD el mensaje
“ENCIENDE FUNCION 2”, y de igual manera se enciende el LED de la tarjeta de
monitoreo de forma (intermitente) indicando que la segunda función de dicha tecla
esta activada y por último colocamos el valor de las dos bandera en cero para que
se pueda apagar las funciones , ya que si los dejamos en uno no vamos a poder
apagar la funciones .
Si la respuesta de la pregunta bandera es igual a 1 es negativa, por la razón que
enviamos el valor de la banderas igual a cero al encender las funciones, mandamos
a desactivar el relé correspondiente a las dos función de la tecla 21, así mismo
presenta en el LCD el mensaje “APAGA FUNCION TOTAL”, y de igual manera se
apaga el LED de la tarjeta de monitoreo indicando que la función de dicha tecla esta
desactivada y por último la bandera colocamos con el valor de uno, y esta lista
nuevamente para ser encendida.
Pero si el autobús se encuentra apagado, el programa realiza la misma descripción
pero con la acepción que no se observara en el LCD los mensajes de encendido o
apagado de las funciones de las teclas ya que el LCD se encontrara apagado.
68
INICIO
BANDERA = INTBANDERA1 = INT
BUSENCENDIDO
PRECIONATECLA
VERIFICA TECLAPRESIONADA
BANDERA = 1
TECLA 21 o 22 LEER BANDERA
BANDERA = 1ACTIVA RELE ASIGNADO
A LA FUNCION 1
ACTIVA LEDMONITOREO
IIMPRIME LCD“ENCIENDE FUNCION 1”
BANDERA1 = 1
DESACTIVA RELESASIGNADO A LA
FUNCIONES ACTIVAS
DESACTIVA LEDMONITOREO
IIMPRIME LCD “APAGA FUNCIONES”
BANDERA1 = 0
BANDERA1 = 1
ACTIVA RELE ASIGNADOA LA FUNCION 2
ACTIVA LEDMONITOREO(PARPADEA)
IIMPRIME LCD“ENCIENDE FUNCION 2”
BANDERA = 0
FIN IF
FIN IF
FIN IF
1
2
FIN IF
FIN IF
BANDERA1 = 0
Figura 3.16: Activación y desactivación de las funciones de las teclas de doble
función 20,21 y 22
69
PRECIONATECLA
VERIFICA TECLAPRESIONADA
TECLA 21 o 22 LEER BANDERA
BANDERA = 1ACTIVA RELE ASIGNADO
A LA FUNCION 1
ACTIVA LEDMONITOREO
BANDERA1 = 1
DESACTIVA RELESASIGNADO A LA
FUNCIONES ACTIVAS
DESACTIVA LEDMONITOREO
BANDERA1 = 1
ACTIVA RELE ASIGNADOA LA FUNCION 2
ACTIVA LED MONITOREO(PARPADEA)
BANDERA = 0
FIN IF
FIN IF
FIN IF
1
FIN IF
2
BANDERA1 = 0
Figura 3.16: Activación y desactivación de las funciones de las teclas de doble función 20, 21 y 22
70
3.2.4. DESCRIPCIÓN DE LA FIGURA 3.17
En la figura 3.17 se indica cómo se realiza la activación y desactivación de las
funciones que maneja la tecla “18”.
Lo primero que se realiza es tener una variable que nos servirá como bandera para
indicar si se activa o desactiva la función de la tecla presionada, en este punto
enviamos a la variable Bandera con el valor de 1.
Luego se realiza una pregunta, el autobús se encuentra encendido si la respuesta es
positiva entonces se realiza otra pregunta se presiono alguna tecla, si la respuesta es
positiva se verifica que tecla fue presionada, si de las anteriores preguntas se tiene
una respuesta negativa no realiza ninguna actividad el programa y está esperando
que las respuestas sean positivas excepto a la pregunta que si el bus esta
encendido.
Una vez que se verifico que tecla fue presionada tendremos solo una posibilidad y
una pregunta.
Se tiene la pregunta, la tecla presionada es la tecla “18” si es positiva la respuesta
mandamos a leer el estado de la bandera (solo la primera vez al comenzar el
programa vamos a tener la bandera con valor de 1)
Si la respuesta es negativa el programa espera hasta que la respuesta sea positiva,
una vez leída la bandera se realiza la última pregunta la bandera tiene un valor de 1
si es positiva la respuesta activa el relé correspondiente a la función que tiene la
tecla 18, así mismo presenta en el LCD el mensaje “ENCIENDE PITO ALTO”, y de
igual manera se enciende el LED de la tarjeta de monitoreo indicando que la función
de dicha tecla esta activada y por último la bandera colocamos con el valor de cero,
ya que si lo dejamos en uno no vamos a poder apagar la función.
71
Si la respuesta de la pregunta bandera es igual a 1 es negativa, por la razón que
enviamos el valor de la bandera igual a cero al encender la función, mandamos al
relé a la posición inicial función de la tecla 18, así mismo presenta en el LCD el
mensaje “ENCIENDE PITO BAJO”, y de igual manera se apaga el LED de la tarjeta
de monitoreo indicando que la función de dicha tecla esta en el estado anterior y por
último la bandera colocamos con el valor de uno, y esta lista nuevamente para ser
encendida.
Pero si el autobús se encuentra apagado, el programa realiza la misma descripción
pero con la acepción que no se observara en el LCD los mensajes de encendido o
apagado de las funciones de las teclas ya que el LCD se encontrara apagado.
72
Fig
ura
3.1
7: A
ctiv
aci
ón y
de
sact
iva
ción
de
la f
un
cion
e d
e la
te
cla
18
73
3.3. PROGRAMA PRINCIPAL PARA EL MANEJO DEL MÓDULO
En el Capítulo 2 se indicó los comandos básicos del software BASCOM AVR, a
continuación se van a utilizar para la programación del microcontrolador ATMEGA-16
para así lograr el manejo del panel digital
· Lo primero que se debe indicar al iniciar el programa es especificar el
microcontrolador que se va a programar y de igual manera indicar la frecuencia
del cristal y de igual manera habilitamos interrupciones y los timers.
$regfile = "m16def.dat" 'Especificar Micro
$crystal = 8000000
Config Timer0 = Timer , Prescale = 1024
Start Timer0
Enable Interrupts
Enable Timer0
Config Watchdog = 2048 : Start Watchdog
On Timer0 Tiempo
Cls : : Cursor Off Noblink
· En esta parte se indica los pines de entrada y salida de datos del
microcontrolador
************************PINES DE CONTROL DEL 74595**********************************
Ddrb.0 = 1 : Portb.0 = 0 : Dat Alias Portb.0 'Salida de Señal de DATA
Ddrb.4 = 1 : Portb.4 = 0 : Clk Alias Portb.4 'Salida de Señal de CLOCK
Ddrb.3 = 1 : Portb.3 = 0 : Strb Alias Portb.3 'Salida de Señal de STROBE
Ddrb.2 = 1 : Portb.2 = 1 : Ena Alias Portb.2 'Salida de Señal de Enable
'**************************PINES DE TECLADO*********************************************
74
Ddrd.4 = 0 : Portd.4 = 1 : Columna1 Alias Pind.4 'Configura Entrada,
Resistencias Pull up, Alias
Ddrd.5 = 0 : Portd.5 = 1 : Columna2 Alias Pind.5
Ddrd.3 = 0 : Portd.3 = 1 : Columna3 Alias Pind.3
Ddrd.6 = 0 : Portd.6 = 1 : Columna4 Alias Pind.6
Ddrd.2 = 0 : Portd.2 = 1 : Columna5 Alias Pind.2
Ddrd.0 = 1 : Portd.0 = 1 : Fila1 Alias Portd.0 'Configura Salida, salida en 1
Lógico, Alias
Ddrb.7 = 1 : Portb.7 = 1 : Fila2 Alias Portb.7
Ddrd.1 = 1 : Portd.1 = 1 : Fila3 Alias Portd.1
Ddrb.6 = 1 : Portb.6 = 1 : Fila4 Alias Portb.6
Ddrb.5 = 1 : Portb.5 = 1 : Fila5 Alias Portb.5
Ddrc.0 = 1 : Portc.0 = 1 : Beep Alias Portc.0 'Configura Salida, Salida en 0
Logico, Alias
Ddrc.1 = 0 : Portc.1 = 0 : Contacto Alias Pinc.1 'Configura como Entrada, sin
Resistencia de Pull up,
Ddrb.1 = 0 : Portb.1 = 1 : Pent Alias Pinb.1 'Configurar Entrada, para
Pasada Solicitada
Ddrd.7 = 1 : Portd.7 = 1 : Rst Alias Portd.7
· En esta parte realizamos la declaración de variables que se utilizaran durante la
programación del microcontrolador
'**************************DECLARACIÓN DE VARIABLES********************************
Dim Salida1 As Word , Salida2 As Word , Aux_salidas As Byte
Dim X As Byte , Y As Byte
Dim On_off As Byte
Dim Texto As Byte , Check_tecla As Bit
Dim Publicidad As Word
75
Dim Band As Bit , Band2 As Bit
Dim Beep2 As Word , Beep3 As Byte
Dim Seleccion As Byte
Dim Bandcod As Bit , Bandcod1 As Bit , Bandcod2 As Bit , Bandcod3 As Bit ,
Bandcod4 As Bit , Bandcod5 As Bit , Bandcod6 As Bit , Bandcod7 As Bit , Bandcod8
As Bit , Timecod As Byte
Dim Flash As Byte , Flash1 As Byte , Flash2 As Byte
Dim Teclado_cliente As Bit , Teclado_fecha As Bit , Salir As Bit , Menus As Bit , Anio
As Byte , Mes1 As Byte , Dia As Byte
Dim Ver_mes As Byte , Mes As String * 5
Bandcod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 0 : Bandcod6 = 0 : Bandcod7 = 0 : Bandcod8 = 0
· En esta parte es donde realizamos el control de salidas de datos de nuestras dos
variables que hemos declarado las que son Salida 1 y Salida 2 se hace referencia
a la tabla resumen 3.8.
'**************************CONTROLDE SALIDAS*****************************************
Readeeprom Seleccion , 9
If Seleccion > 20 Then 'Corrige luego de programar
Seleccion = 1
Writeeeprom Seleccion , 9
Waitms 10
End If
Readeeprom Dia , 10
If Dia > 31 Then : Dia = 1 : Writeeeprom Dia , 10 : Waitms 10 : End If
Readeeprom Mes1 , 11
If Mes1 > 12 Then : Mes1 = 1 : Writeeeprom Mes1 , 11 : Waitms 10 : End If
76
Readeeprom Anio , 12
If Anio > 30 Then : Anio = 9 : Writeeeprom Anio , 12 : Waitms 10 : End If
Rt19 Alias Salida1.0 'MEDIA LUZ 1
Rt15 Alias Salida1.1 'MEDIA LUZ 2
Rt16 Alias Salida1.2 'LECTURA
Rt17 Alias Salida1.3 'TV
Rt14 Alias Salida1.4 'VIDEO(BAÑO)
Rt20a Alias Salida1.5 'MP3
Rt21 Alias Salida1.6 'LICUADORA
Rt22 Alias Salida1.7 'AIREFORZADO 1
Rt22a Alias Salida1.8 'SALON 1
Rt18 Alias Salida1.9 'SALON 2
Rt21a Alias Salida1.10 'CABINA 1
Rt20 Alias Salida1.11 'CABINA 2
Rt13 Alias Salida1.12 'FALDON
Rt11 Alias Salida1.13 'AIRE FORZADO 2
Rt8 Alias Salida1.14 'GRADA
Rt4 Alias Salida1.15 'RUTERO
Rt5 Alias Salida2.0 'PLUMAS 1
Rt6 Alias Salida2.1 'PLUMAS 2
Rt7 Alias Salida2.2 'BODEGAS
Rt12 Alias Salida2.3 'PUERTAS
Rt9 Alias Salida2.4 'NEBLINEROS
Rt10 Alias Salida2.5 'VENTILADOR
Rt3 Alias Salida2.6 'RETRO
Rt2 Alias Salida2.7 'GUIAS
Rt1 Alias Salida2.8 'PITO
Rt18a Alias Salida2.9 'MONITOREO PITO
Rt22b Alias Salida2.10 'MONITOREO PLUMAS
Rt21b Alias Salida2.11 'MONITOREO CABINAS
77
Rt20b Alias Salida2.12 'MONITOREO SALON
Readeeprom Aux_salidas , 13
If Aux_salidas > 100 Then
Salida1 = 0 : Writeeeprom Salida1 , 1 : Waitms 10
Salida2 = 0 : Writeeeprom Salida2 , 3 : Waitms 10
Aux_salidas = 1 : Writeeeprom Aux_salidas , 13 : Waitms 10
End If
Readeeprom Salida1 , 1
Readeeprom Salida2 , 3
Readeeprom Flash1 , 5
If Flash1 = 0 Then Rt20b = 0
If Flash1 = 1 Then Rt20b = 0
If Flash1 = 2 Then Rt20b = 1
Readeeprom Flash , 6
If Flash = 0 Then Rt21b = 0
If Flash = 1 Then Rt21b = 0
If Flash = 2 Then Rt21b = 1
Readeeprom Flash2 , 7
If Flash2 = 0 Then Rt22b = 0
If Flash2 = 1 Then Rt22b = 0
If Flash2 = 2 Then Rt22b = 1
Publicidad = 298 : Band = 0 : Band2 = 1 : Bandcod = 0
Gosub Registros_salidas
Gosub Beeps
Ena = 0
78
Menus = 0
· Programa principal aquí se verifican las condiciones en las que se encuentras las
entradas, salidas de datos así también como el estado de las variables
declaradas.
Do
If Bandcod = 1 Then
Fila2 = 0 : If Columna4 = 0 Then Gosub Menu : Fila2 = 1
Fila5 = 0 : If Columna2 = 0 Then Gosub Salir : Fila5 = 1
If Teclado_cliente = 1 Then
Fila3 = 0 : If Columna4 = 0 Then Gosub Tcliente : Fila3 = 1
End If
If Teclado_fecha = 1 Then
Fila2 = 0 : If Columna5 = 0 Then Gosub Day : Fila2 = 1
Fila3 = 0 : If Columna5 = 0 Then Gosub Month : Fila5 = 1
Fila5 = 0 : If Columna1 = 0 Then Gosub Year : Fila5 = 1
End If
Else
If Contacto = 0 And Band = 0 Then : Gosub Apaga_pantalla : End If
If Contacto = 1 And Band2 = 0 Then Gosub Enciende_pantalla
If Pent = 0 Then Gosub Psolicitada
Gosub Teclado_main
End If
Loop
· Fin de programa
79
· De aquí en adelante son subrutinas llamadas por el programa principal
Teclado_main:
Fila1 = 0 : If Columna1 = 0 Then Gosub Tecla1 'TECLA 1
If Columna2 = 0 Then Gosub Tecla2 'TECLA 2
If Columna3 = 0 Then Gosub Tecla3 'TECLA 3
If Columna4 = 0 Then Gosub Tecla4 'TECLA 4
If Columna5 = 0 Then Gosub Tecla8 'TECLA 5
Fila1 = 1
Fila2 = 0 : If Columna1 = 0 Then Gosub Tecla5 'TECLA 6
If Columna2 = 0 Then Gosub Tecla6 'TECLA 7
If Columna3 = 0 Then Gosub Tecla7 'TECLA 8
If Columna4 = 0 Then Gosub Tecla9 'TECLA 9
If Columna5 = 0 Then Gosub Tecla10 'TECLA 10
Fila2 = 1
Fila3 = 0 : If Columna1 = 0 Then Gosub Tecla15 'TECLA 11
If Columna2 = 0 Then Gosub Tecla16 'TECLA 12
If Columna3 = 0 Then Gosub Tecla17 'TECLA 13
If Columna4 = 0 Then Gosub Tecla12 'TECLA 14
If Columna5 = 0 Then Gosub Tecla13 'TECLA 15
Fila3 = 1
Fila4 = 0 : If Columna1 = 0 Then Gosub Tecla19 'TECLA 16
If Columna2 = 0 Then Gosub Tecla20 'TECLA 17
If Columna3 = 0 Then Gosub Tecla21 'TECLA 18
If Columna4 = 0 Then Gosub Tecla22 'TECLA 19
If Columna5 = 0 Then Gosub Tecla18 'TECLA 20
Fila4 = 1
Fila5 = 0 : If Columna1 = 0 Then Gosub Tecla11 'TECLA 21
If Columna2 = 0 Then Gosub Tecla14 'TECLA 22
Fila5 = 1
Return
80
Enciende_pantalla:
Ena = 1 : Band = 0 : Band2 = 1 : Publicidad = 298
Writeeeprom Salida1 , 1 : Waitms 10
Writeeeprom Salida2 , 3 : Waitms 10
Rst = 0
Return
Apaga_pantalla:
Band = 1
Apaga_pantalla1:
Ena = 0
Ddra.0 = 1 : Porta.0 = 0
Ddra.1 = 1 : Porta.1 = 0
Ddra.2 = 1 : Porta.2 = 0
Ddra.3 = 1 : Porta.3 = 0
Ddra.4 = 1 : Porta.4 = 0
Ddra.5 = 1 : Porta.5 = 0
Band2 = 0
If Band = 1 Then
Gosub Rebotes : Gosub Rebotes : Gosub Rebotes : Gosub Rebotes:
End If
Return
Tecla1:
Gosub Verifica_tecla1 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt1 = 1 Then : Rt1 = 0 : On_off = 0 : Else : Rt1 = 1 : On_off = 1 : End If
Texto = 1 : Gosub Textos
If Contacto = 1 Then
Timecod = 0 : Bandcod1 = 1
End If
Return
81
Verifica_tecla1:
Gosub Verifica_tecla : Fila1 = 0 : Waitms 10 : If Columna1 = 0 Then Check_tecla =
1 : Fila1 = 1
Return
Tecla2:
Gosub Verifica_tecla2 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt2 = 1 Then : Rt2 = 0 : On_off = 0 : Else : Rt2 = 1 : On_off = 1 : End If
Texto = 2 : Gosub Textos
Return
Verifica_tecla2:
Gosub Verifica_tecla : Fila1 = 0 : Waitms 10 : If Columna2 = 0 Then Check_tecla =
1 : Fila1 = 1
Return
Tecla3:
Gosub Verifica_tecla3 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt3 = 1 Then : Rt3 = 0 : On_off = 0 : Else : Rt3 = 1 : On_off = 1 : End If
Texto = 3 : Gosub Textos
Return
Verifica_tecla3:
Gosub Verifica_tecla : Fila1 = 0 : Waitms 10 : If Columna3 = 0 Then Check_tecla =
1 : Fila1 = 1
Return
Tecla4:
Gosub Verifica_tecla4 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt4 = 1 Then : Rt4 = 0 : On_off = 0 : Else : Rt4 = 1 : On_off = 1 : End If
Texto = 4 : Gosub Textos
If Bandcod1 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 1
End If
Return
82
Verifica_tecla4:
Gosub Verifica_tecla : Fila1 = 0 : Waitms 10 : If Columna4 = 0 Then Check_tecla =
1 : Fila1 = 1
Return
Tecla5:
Gosub Verifica_tecla5 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt5 = 1 Then : Rt5 = 0 : On_off = 0 : Else : Rt5 = 1 : On_off = 1 : End If
Texto = 5 : Gosub Textos
Return
Verifica_tecla5:
Gosub Verifica_tecla : Fila2 = 0 : Waitms 10 : If Columna1 = 0 Then Check_tecla =
1 : Fila2 = 1
Return
Tecla6:
Gosub Verifica_tecla6 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt6 = 1 Then : Rt6 = 0 : On_off = 0 : Else : Rt6 = 1 : On_off = 1 : End If
Texto = 6 : Gosub Textos
Return
Verifica_tecla6:
Gosub Verifica_tecla : Fila2 = 0 : Waitms 10 : If Columna2 = 0 Then Check_tecla =
1 : Fila2 = 1
Return
Tecla7:
Gosub Verifica_tecla7 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt7 = 1 Then : Rt7 = 0 : On_off = 0 : Else : Rt7 = 1 : On_off = 1 : End If
Texto = 7 : Gosub Textos
Return
Verifica_tecla7:
Gosub Verifica_tecla : Fila2 = 0 : Waitms 10 : If Columna3 = 0 Then Check_tecla =
1 : Fila2 = 1
Return
83
Tecla8:
Gosub Verifica_tecla8 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt8 = 1 Then : Rt8 = 0 : On_off = 0 : Else : Rt8 = 1 : On_off = 1 : End If
Texto = 8 : Gosub Textos
Return
Verifica_tecla8:
Gosub Verifica_tecla : Fila1 = 0 : Waitms 10 : If Columna5 = 0 Then Check_tecla =
1 : Fila1 = 1
Return
Tecla9:
Gosub Verifica_tecla9 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt9 = 1 Then : Rt9 = 0 : On_off = 0 : Else : Rt9 = 1 : On_off = 1 : End If
Texto = 9 : Gosub Textos
If Bandcod2 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 1
End If
Return
Verifica_tecla9:
Gosub Verifica_tecla : Fila2 = 0 : Waitms 10 : If Columna4 = 0 Then Check_tecla =
1 : Fila2 = 1
Return
Tecla10:
Gosub Verifica_tecla10 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt10 = 1 Then : Rt10 = 0 : On_off = 0 : Else : Rt10 = 1 : On_off = 1 : End If
Texto = 10 : Gosub Textos
Return
Verifica_tecla10:
Gosub Verifica_tecla : Fila2 = 0 : Waitms 10 : If Columna5 = 0 Then Check_tecla =
1 : Fila2 = 1
Return
84
Tecla11:
Gosub Verifica_tecla11 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt11 = 1 Then : Rt11 = 0 : On_off = 0 : Else : Rt11 = 1 : On_off = 1 : End If
Texto = 11 : Gosub Textos
If Bandcod3 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 1
End If
Return
Verifica_tecla11:
Gosub Verifica_tecla : Fila5 = 0 : Waitms 10 : If Columna1 = 0 Then Check_tecla =
1 : Fila5 = 1
Return
Tecla12:
Gosub Verifica_tecla12 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt12 = 1 Then : Rt12 = 0 : On_off = 0 : Else : Rt12 = 1 : On_off = 1 : End If
Texto = 12 : Gosub Textos
If Bandcod4 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 1 :
End If
Return
Verifica_tecla12:
Gosub Verifica_tecla : Fila3 = 0 : Waitms 10 : If Columna4 = 0 Then Check_tecla =
1 : Fila3 = 1
Return
Tecla13:
Gosub Verifica_tecla13 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt13 = 1 Then : Rt13 = 0 : On_off = 0 : Else : Rt13 = 1 : On_off = 1 : End If
Texto = 13 : Gosub Textos
Return
85
Verifica_tecla13:
Gosub Verifica_tecla : Fila3 = 0 : Waitms 10 : If Columna5 = 0 Then Check_tecla =
1 : Fila3 = 1
Return
Tecla14:
Gosub Verifica_tecla14 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt14 = 1 Then : Rt14 = 0 : On_off = 0 : Else : Rt14 = 1 : On_off = 1 : End If
Texto = 14 : Gosub Textos
If Bandcod5 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 0 : Bandcod6 = 1
End If
Return
Verifica_tecla14:
Gosub Verifica_tecla : Fila5 = 0 : Waitms 10 : If Columna2 = 0 Then Check_tecla =
1 : Fila5 = 1
Return
Tecla15:
Gosub Verifica_tecla15 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt15 = 1 Then : Rt15 = 0 : On_off = 0 : Else : Rt15 = 1 : On_off = 1 : End If
Texto = 15 : Gosub Textos
Return
Verifica_tecla15:
Gosub Verifica_tecla : Fila3 = 0 : Waitms 10 : If Columna1 = 0 Then Check_tecla =
1 : Fila3 = 1
Return
Tecla16:
Gosub Verifica_tecla16 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt16 = 1 Then : Rt16 = 0 : On_off = 0 : Else : Rt16 = 1 : On_off = 1 : End If
Texto = 16 : Gosub Textos
Return
86
Verifica_tecla16:
Gosub Verifica_tecla : Fila3 = 0 : Waitms 10 : If Columna2 = 0 Then Check_tecla =
1 : Fila3 = 1
Return
Tecla17:
Gosub Verifica_tecla17 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt17 = 1 Then : Rt17 = 0 : On_off = 0 : Else : Rt17 = 1 : On_off = 1 : End If
Texto = 17 : Gosub Textos
Return
Verifica_tecla17:
Gosub Verifica_tecla : Fila3 = 0 : Waitms 10 : If Columna3 = 0 Then Check_tecla =
1 : Fila3 = 1
Return
Tecla18:
Gosub Verifica_tecla18 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt18 = 1 Then : Rt18a = 0 : Rt18 = 0 : On_off = 1 : Texto = 18 :
Else : Rt18a = 1 : Rt18 = 1 : On_off = 1 : : Texto = 23 : End If
Gosub Textos
Return
Verifica_tecla18:
Gosub Verifica_tecla : Fila4 = 0 : Waitms 10 : If Columna5 = 0 Then Check_tecla =
1 : Fila4 = 1
Return
Tecla19:
Gosub Verifica_tecla19 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt19 = 1 Then : Rt19 = 0 : On_off = 0 : Else : Rt19 = 1 : On_off = 1 : End If
Texto = 19 : Gosub Textos
If Bandcod6 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 0 : Bandcod6 = 0 : Bandcod7 = 1
End If
87
Verifica_tecla19:
Gosub Verifica_tecla : Fila4 = 0 : Waitms 10 : If Columna1 = 0 Then Check_tecla =
1 : Fila4 = 1
Return
Tecla20:
Gosub Verifica_tecla20 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt20 = 0 And Rt20a = 0 Then:
Rt20 = 1 : Rt20a = 0 : On_off = 1 : Texto = 20 : Flash1 = 1
Else
If Rt20 = 1 And Rt20a = 1 Then:
Rt20 = 0 : Rt20a = 0 : On_off = 0 : Texto = 20 : Flash1 = 0
End If
If Rt20 = 1 And Rt20a = 0 Then
Rt20 = 1 : Rt20a = 1 : On_off = 1 : Texto = 26 : Flash1 = 2
End If
If Rt20 = 0 And Rt20a = 1 Then
Rt20 = 0 : Rt20a = 0 : On_off = 0 : Texto = 20 : Flash1 = 0
End If
End If
Writeeeprom Flash1 , 5
Gosub Textos
Return
Verifica_tecla20:
Gosub Verifica_tecla : Fila4 = 0 : Waitms 10 : If Columna2 = 0 Then Check_tecla =
1 : Fila4 = 1
Return
Tecla21:
Gosub Verifica_tecla21 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt21 = 0 And Rt21a = 0 Then:
Rt21 = 1 : Rt21a = 0 : On_off = 1 : Texto = 21 : Flash = 1
Else
88
If Rt21 = 1 And Rt21a = 1 Then:
Rt21 = 0 : Rt21a = 0 : On_off = 0 : Texto = 21 : Flash = 0
End If
If Rt21 = 1 And Rt21a = 0 Then
Rt21 = 1 : Rt21a = 1 : On_off = 1 : Texto = 24 : Flash = 2
End If
If Rt21 = 0 And Rt21a = 1 Then
Rt21 = 0 : Rt21a = 0 : On_off = 0 : Texto = 21 : Flash = 0
End If
End If
Writeeeprom Flash , 6
Gosub Textos
Return
Verifica_tecla21:
Gosub Verifica_tecla : Fila4 = 0 : Waitms 10 : If Columna3 = 0 Then Check_tecla =
1 : Fila4 = 1
Return
Tecla22:
Gosub Verifica_tecla22 : If Check_tecla = 0 Then Return : Gosub Beeps
If Rt22 = 0 And Rt22a = 0 Then:
Rt22 = 1 : Rt22a = 0 : On_off = 1 : Texto = 22 : Flash2 = 1
Else
If Rt22 = 0 And Rt22a = 1 Then:
Rt22 = 0 : Rt22a = 0 : On_off = 0 : Texto = 22 : Flash2 = 0
End If
If Rt22 = 1 And Rt22a = 0 Then
Rt22 = 0 : Rt22a = 1 : On_off = 1 : Texto = 25 : Flash2 = 2
End If
If Rt22 = 1 And Rt22a = 1 Then
Rt22 = 0 : Rt22a = 0 : On_off = 0 : Texto = 22 : Flash2 = 0
End If
89
End If
Writeeeprom Flash2 , 7
Gosub Textos
If Bandcod7 = 1 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 0 : Bandcod6 = 0 : Bandcod7 = 0 : Bandcod8 = 1
End If
Return
Verifica_tecla22:
Gosub Verifica_tecla : Fila4 = 0 : Waitms 10 : If Columna4 = 0 Then Check_tecla =
1 : Fila4 = 1
Return
Verifica_tecla: 'Subrutina de confirmacion de tecla
presionada
Fila1 = 1 : Fila2 = 1 : Fila3 = 1 : Fila4 = 1 : Fila5 = 1 : Waitms 90 : Check_tecla = 0
Return
Beeps:
Beep = 0 : Waitms 100 : Beep = 1
Return
Rebotes:
Waitms 250
Return
Textos:
Gosub Beeps
Initlcd : Cls
Locate 1 , 1
Select Case On_off
Case 0 : Lcd " APAGA "
Case 1 : Lcd " ENCIENDE "
End Select
90
Locate 2 , 1
Select Case Texto
Case 1 : Lcd " GUIAS "
Case 2 : Lcd " RETRO "
Case 3 : Lcd " VENTILADOR "
Case 4 : Lcd " LICUADORA "
Case 5 : Lcd " PUERTA "
Case 6 : Lcd " BODEGA "
Case 7 : Lcd " NEBLINEROS "
Case 8 : Lcd " FALDON "
Case 9 : Lcd " VIDEO "
Case 10 : Lcd " BAîO "
Case 11 : Lcd " AIR. FORZADO 1 "
Case 12 : Lcd " RADIO "
Case 13 : Lcd " RUTERO "
Case 14 : Lcd " AIR. FORZADO 2 "
Case 15 : Lcd " MEDIA LUZ 1 "
Case 16 : Lcd " LECTURA "
Case 17 : Lcd " GRADA "
Case 18 : Lcd " PITO "
Case 19 : Lcd " MEDIA LUZ 1 "
Case 20 : Lcd " SALON "
Case 21 : Lcd " CABINA "
Case 22 : Lcd " PLUMAS "
Case 23 : Lcd " PITO ALTO "
Case 24 : Lcd " CABINA 2 "
Case 25 : Lcd " PLUMAS RAPIDAS "
Case 26 : Lcd " SALON 2 "
End Select
Gosub Registros_salidas
Gosub Rebotes : Gosub Rebotes
91
Publicidad = 0
Return
Registros_salidas: 'Control de Datos CD 74595
Strb = 0 :
For Y = 16 To 0 Step -1
Clk = 0 : Dat = Salida2.y : Clk = 1
Next Y
For X = 15 To 0 Step -1
Clk = 0 : Dat = Salida1.x : Clk = 1
Next X
Strb = 0 : Nop : Strb = 1
Return
Psolicitada:
Gosub Verifica_tecla : If Pent = 1 Then Return
Initlcd : Cls
For Beep3 = 1 To 10
If Contacto = 1 Then Cls
Publicidad = 0 : Gosub Beeps
For Beep2 = 1 To 60 : Waitms 1 : Next Beep2
If Contacto = 1 Then
Locate 1 , 1 : Lcd "PARADA "
Locate 2 , 1 : Lcd " SOLICITADA"
End If
Gosub Beeps
For Beep2 = 1 To 400 : Waitms 1 : Next Beep2
Next Beep3
Texto = 30 : Publicidad = 150
Return
Tiempo:
Reset Watchdog
If Bandcod = 0 Then
92
Publicidad = Publicidad + 1
If Bandcod1 = 1 Or Bandcod2 = 1 Or Bandcod3 = 1 Or Bandcod4 = 1 Or Bandcod5
= 1 Or Bandcod6 = 1 Or Bandcod7 = 1 Then Timecod = Timecod + 1
If Timecod = 80 Then
Timecod = 0 : Bandcod1 = 0 : Bandcod2 = 0 : Bandcod3 = 0 : Bandcod4 = 0 :
Bandcod5 = 0 : Bandcod6 = 0 : Bandcod7 = 0 : Bandcod8 = 0
End If
If Bandcod8 = 1 Then
Bandcod8 = 0 : Bandcod = 1
Cls : Lcd " COFIGURACION " : Menus = 0
End If
If Publicidad.3 = 0 And Publicidad.2 = 0 And Publicidad.1 = 0 And Publicidad.0 =
1 Then
If Flash = 0 Then Rt21b = 0
If Flash = 1 Then Rt21b = 0
If Flash = 2 Then Rt21b = 1
If Flash1 = 0 Then Rt20b = 0
If Flash1 = 1 Then Rt20b = 0
If Flash1 = 2 Then Rt20b = 1
If Flash2 = 0 Then Rt22b = 0
If Flash2 = 1 Then Rt22b = 0
If Flash2 = 2 Then Rt22b = 1
Gosub Registros_salidas
End If
If Publicidad.3 = 1 And Publicidad.2 = 1 And Publicidad.1 = 0 And Publicidad.0 = 0
Then
If Flash = 0 Then Rt21b = 0
If Flash = 1 Then Rt21b = 1
If Flash = 2 Then Rt21b = 1
If Flash1 = 0 Then Rt20b = 0
93
If Flash1 = 1 Then Rt20b = 1
If Flash1 = 2 Then Rt20b = 1
If Flash2 = 0 Then Rt22b = 0
If Flash2 = 1 Then Rt22b = 1
If Flash2 = 2 Then Rt22b = 1
Gosub Registros_salidas
End If
If Publicidad = 50 Or Publicidad = 350 Then
Ena = 0
End If
If Publicidad > 1000 Then Publicidad = 300
If Contacto = 1 Then
If Seleccion = 1 Then
If Publicidad = 300 Then
Initlcd : Locate 1 , 1 : Lcd " CARROCERIAS "
Locate 2 , 1 : Lcd " VARMA "
End If
If Publicidad = 600 Then
Initlcd : Locate 1 , 1 : Lcd "CORP.ELECTRONICA"
Locate 2 , 1 : Lcd " TELEVID "
End If
If Publicidad => 900 Then
Initlcd : Publicidad = 299
End If
End If
If Seleccion = 2 Then
If Publicidad = 300 Then
Initlcd : Locate 1 , 1 : Lcd " CARROCERIAS "
Locate 2 , 1 : Lcd " SERMAN "
End If
94
If Publicidad = 600 Then
Initlcd : Locate 1 , 1 : Lcd "CORP.ELECTRONICA"
Locate 2 , 1 : Lcd " TELEVID "
End If
If Publicidad => 900 Then
Initlcd : Publicidad = 299
End If
End If
If Seleccion = 3 Then
If Publicidad = 300 Then
Initlcd : Locate 1 , 1 : Lcd " CARROCERIAS "
Locate 2 , 1 : Lcd " GUZMAN "
End If
If Publicidad = 600 Then
Initlcd : Locate 1 , 1 : Lcd "CORP.ELECTRONICA"
Locate 2 , 1 : Lcd " TELEVID "
End If
If Publicidad => 900 Then
Initlcd : Publicidad = 299
End If
End If
End If
If Publicidad => 900 Then
Initlcd : Cursor Off Noblink : Publicidad = 299
End If
End If
Return
Menu:
Gosub Verifica_tecla : Fila2 = 0 : If Columna4 = 1 Then Return : Fila2 = 1
Gosub Beeps
95
If Menus = 0 Then
Menus = 1
Readeeprom Seleccion , 9
Gosub Cliente :
Gosub Desactiva_teclados : Teclado_cliente = 1
Else
Menus = 0 :
Gosub Desactiva_teclados : Teclado_fecha = 1
Readeeprom Dia , 10
Readeeprom Mes1 , 11
Readeeprom Anio , 12
Cls
Lcd "Conf.FABRICACION"
Locate 2 , 1
Lcd "FECHA: "
Locate 2 , 8 : Gosub Mostrar_fecha
End If
Gosub Rebotes : Gosub Rebotes
Return
Cliente:
Cls : Lcd "Conf.CLIENTE # " : Lcd Seleccion
Locate 2 , 1
If Seleccion = 1 Then Lcd " CAR. VARMA "
If Seleccion = 2 Then Lcd " CAR. SERMAN "
If Seleccion = 3 Then Lcd " CAR. GUZMAN "
Gosub Rebotes : Gosub Rebotes
Return
Salir:
Gosub Desactiva_teclados
Gosub Verifica_tecla : Fila5 = 0 : If Columna2 = 1 Then Return : Fila5 = 1
Cls : Lcd " COFIGURACION "
96
Locate 2 , 1 : Lcd " SALIR "
Gosub Beeps : Gosub Beeps
Bandcod = 0 : Publicidad = 298
Gosub Rebotes : Gosub Rebotes
Return
Desactiva_teclados:
Teclado_cliente = 0 : Teclado_fecha = 0
Return
Tcliente:
Gosub Verifica_tecla : Fila3 = 0 : If Columna4 = 1 Then Return : Fila3 = 1
Gosub Beeps
Readeeprom Seleccion , 9
Incr Seleccion
If Seleccion > 3 Then Seleccion = 1
Gosub Cliente
Writeeeprom Seleccion , 9 : Waitms 10
Return
Day:
Gosub Verifica_tecla : Fila2 = 0 : If Columna5 = 1 Then Return : Fila5 = 1
Gosub Beeps
Incr Dia : If Dia => 32 Then Dia = 1 : Locate 2 , 8 : Gosub Mostrar_fecha
Writeeeprom Dia , 10 : Waitms 10
Gosub Rebotes : Gosub Rebotes
Return
Month:
Gosub Verifica_tecla : Fila3 = 0 : If Columna5 = 1 Then Return : Fila3 = 1
Gosub Beeps
Incr Mes1 : If Mes1 => 13 Then Mes1 = 1 : Locate 2 , 8 : Gosub Mostrar_fecha :
Gosub Rebotes
Writeeeprom Mes1 , 11 : Waitms 10
Gosub Rebotes : Gosub Rebotes
97
Return
Year:
Gosub Verifica_tecla : Fila5 = 0 : If Columna1 = 1 Then Return : Fila5 = 1
Gosub Beeps
Incr Anio : If Anio => 30 Then Anio = 9 : Locate 2 , 8 : Gosub Mostrar_fecha
Writeeeprom Anio , 12 : Waitms 10
Gosub Rebotes : Gosub Rebotes
Return
Mostrar_fecha:
If Dia < 10 Then Lcd "0" : Lcd Dia
Ver_mes = Mes1 : Gosub Meses : Lcd Mes
If Anio < 10 Then Lcd "0" : Lcd Anio : Cursor Off Noblink
Return
Meses:
If Ver_mes = 1 Then Mes = "-Ene-"
If Ver_mes = 2 Then Mes = "-Feb-"
If Ver_mes = 3 Then Mes = "-Mar-"
If Ver_mes = 4 Then Mes = "-Abr-"
If Ver_mes = 5 Then Mes = "-May-"
If Ver_mes = 6 Then Mes = "-Jun-"
If Ver_mes = 7 Then Mes = "-Jul-"
If Ver_mes = 8 Then Mes = "-Ago-"
If Ver_mes = 9 Then Mes = "-Sep-"
If Ver_mes = 10 Then Mes = "-Oct-"
If Ver_mes = 11 Then Mes = "-Nov-"
If Ver_mes = 12 Then Mes = "-Dic-"
Return
Para finalizar con el capitulo se adjunta los diagramas de frente del tablero con los
que se tuvo que diseñar las tarjetas de teclado, monitoreo, se tuvo que regir a las
medidas de los diagramas que se presentan a continuación.
98
Fig
ura
3.1
8: D
iag
ram
a d
e m
edid
as
ho
rizo
nta
les
pa
ra t
arje
ta d
e m
on
itore
o
99
Fig
ura
3.1
9: D
iag
ram
a d
e m
edid
as
vert
ica
les
pa
ra ta
rjeta
de
mon
itore
o
100
Fig
ura
3.2
0: D
iag
ram
a d
e m
edid
as
ho
rizo
nta
les
pa
ra t
arje
ta d
e t
ecl
ado
101
Fig
ura
3.2
1: D
iag
ram
a d
e m
edid
as
vert
ica
les
pa
ra ta
rjeta
de
tecl
ado
102
4. CAPÍTULO IV : PRUEBAS Y RESULTADOS
4.1. ELABORACIÓN DE TARJETAS
4.1.1. TARJETA DE TECLADO
Figura 4.1: Diagrama en Eagle tarjeta de teclado
Figura 4.2: Tarjeta de teclado
103
4.1.2. TARJETA DE MONITOREO
Figura 4.3: Diagrama en Eagle tarjeta de monitoreo
Figura 4.4: Tarjeta de teclado vista porterior
Figura 4.5: Tarjeta de teclado vista frontal
104
4.1.3. TARJETA DE CEREBRO
Figura 4.6: Diagrama en Eagle tarjeta de cerebro
Figura 4.7: Tarjeta de cerebro vista posterior
Figura 4.8: Tarjeta de cerebro vista frontal
105
4.1.4. REGLETA DE CONEXIÓN DEL CEREBRO
Figura 4.9: Diagrama en Eagle regleta de conexión
Figura 4.10: Tarjeta regleta de conexión vista posterior
Figura 4.11: Tarjeta de regleta conexión vista frontal
106
4.1.5. TARJETA DE RELÉS
Figura 4.12: Diagrama en Eagle tarjeta de relés
Figura 4.13: Tarjeta de relés
107
4.1.6. ENSAMBLAJE DEL PANEL DIGITAL
Figura 4.14: Ensamblaje del panel digital vista lateral
Figura 4.15: Ensamblaje del panel digital vista posterior
108
4.1.7. TARJETA DE PRUEBA En esta tarjeta se simula las señales requeridas para la comprobación del buen
funcionamiento del panel digital en esta tarjeta tenemos.
Las señales de Contacto, Parada Solicitada, 24 voltios de Batería y GND.
Figura 4.16: Tarjeta de prueba
4.2. RESULTADOS En el panel se obtuvo los siguientes resultados.
Teclado:
Con la tarjeta de teclado se comprobó que todas las teclas funcionen como se las
diseño y actives los relés asignados en la tarjeta de relés.
109
Monitoreo:
Se activa y se desactiva el LED asignado a cada una de las teclas y este indica si
una función se encuentra encendida o apagada ya este prendido o apagado el
autobús.
En la pantalla LCD se visualiza si se enciendo o apaga una función siempre que el
autobús se encuentre encendido, si se encuentra apagado no se visualiza ningún
mensaje en el LCD.
Con la tarjeta de prueba si puedo realizar las siguientes pruebas.
Pruebas de contacto:
Un interruptor simula el contacto del autobús, cuando se enciende el interruptor
manda apagar todas las cargas activadas y luego de un tiempo hasta que se
restablezca el voltaje de contacto se vuelven a encender las funciones que se
encontraban encendidas.
De igual manera se realizo pruebas con el LCD, se encuentra encendido el
interruptor (Contacto) podemos visualizar los mensajes en el LCD, y cuando se
encuentra apagado el interruptor no se visualiza ningún mensaje en el LCD pero si
nos indica median los LED’s de la tarjeta de monitoreo que se esta activando o
desactivando
Pruebas de parada solicitada:
Se trata de un pulsador que simula la parada solicitada del auto bus si esta
encendido el bus en el LCD nos muestra un mensaje de parada solicitada y
pequeños sonidos de chichara, pero si el auto bus esta apagado y es presionado el
botón solo se escucha los sonidos de advertencia de la chicharra.
110
5. CAPÍTULO V :
CONCLUSIONES Y RECOMENDACIONES
5.1. CONCLUSIONES
· El proyecto desarrollado e implementado es una herramienta para el control de 25
funciones localizadas en la cabina del conductor de los autobuses interprovinciales
facilitando la activación, desactivación de las mismas y monitoreando cada una de
ellas mediante dispositivos visuales y sonoros.
· El proyecto está constituida por tres etapas:
Monitoreo y LCD donde se visualiza las acciones que son ejecutadas por el
conductor.
Micro controlador ATMEGA-16 que es capaz de procesar información
recibida y clasificarla como verdadera o falsa y ejecuta las instrucciones
programadas.
Fuentes de alimentación que energizan todo el panel digital.
· Se utilizó el micro controlador ATMEGA-16 de la familia de los AVR’S por ser una
tecnología poco difundida pero con grandes ventajas, en su estructura interna
(mayor capacidad de memoria, timmers, contadores, líneas de entrada/salida,
etc.), además de ser uno de los más económicos en el mercado.
· Una de las ventajas de utilizar el software BASCOM AVR que al iniciar la
programación de define el tipo de microcontrolador a utilizar, esto permite tener
una ventana adicional que muestra la presentación física del dispositivo que
estamos programando y al colocar el puntero sobre los pines de este se puede
observar sus características.
111
· La utilización de los reguladores de voltaje de tres terminales tiene la ventaja de
que son mucho más económicos, que los componentes discretos necesarios para
hacer una fuente regulada de las mismas características.
· Para la protección de alimentación de voltajes en el panel digital se utiliza diodos
de propósito general y estos solo entran a conducir cuando se encuentren de
forma correcta polarizados, si no lo están no funciona el panel digital.
· El panel digital tiene la opción de entrar al modo de configuración mediante la
pulsación secuencial de 8 teclas donde se configura la fecha de fabricación y se
selecciona la publicidad de la carrocería en la que se va instalar el panel.
5.2. RECOMENDACIONES
· Los reguladores de voltaje de tres terminales que son mucho más económicos,
que los componentes discretos necesarios para hacer una fuente regulada,
· Tener precaución al momento de conectar los voltajes de polarización de las
tarjetas electrónicas.
· Tener en cuenta que todas las funciones no trabajan al mismo voltaje existen
funciones que trabajan a diferente voltaje.
· Los elementos de la tarjeta electrónica de control son sensibles a descargas
electrostáticas, por lo que es recomendable usar una pulsera electroestática.
112
REFERENCIAS BIBLIOGRÁFICAS
MICROCONTROLADOR
1 .-http://www.unicrom.com/Tut_arquitectura_microcontrolador.asp
MEMORIA
2 http://www.monografias.com/trabajos12/microco/microco.shtml CONDENSADORES 3http://es.wikipedia.org/wiki/Condensador_el%C3%A9ctrico REGULADORES DE VOLTAJE 4 http://www.google.com.ec/imgres?imgurl=http://www.ucontrol.com.ar/Articulos/78xx /78xx.h1.jpg&imgrefurl=http://www.ucontrol.com.ar/Articulos/78xx/78xx.htm&h=350&w=329&sz=15&tbnid=iTE0LGt8hevpM:&tbnh=120&tbnw=113&prev=/images%3Fq%3Dreguladores%2Bde%2Bvoltaje&hl=es&usg=__GmFuBxDcWfKqEwwAugJVwK5J_M=&ei=RPv4Srr4DNTinAfrlrCGDQ&sa=X&oi=image_result&resnum=4&ct=image&ved=0CBMQ9QEwAw DISPLAY LCD 16*2 5 http://es.wikipedia.org/wiki/LCDdisplay _16*2 RELÉS 6 http://platea.pntic.mec.es/~pcastela/tecno/documentos/apuntes/rele.pdf TECLADO MARICIAL 7 http://galia.fc.uaslp.mx/~cantocar/microprocesadores/EL_Z80_PDF_S/20_TECLA DO_MATRICIAL.PDF CARACTERÍSTICAS ATMEGA-16 12 http://translate.google.com.ec/translate?hl=es&langpair=en|es&u=http://www.futurle c.com/Atmel/ATMEGA16.shtml
113
ANEXOS
ANEXO A: EAGLE TARJETA DE TECLADO ANEXO B: EAGLE TARJETA MONITOREO ANEXO C: EAGLE TARJETA DECEREBRO ANEXO D: DATASHEET ATMEGA-16 ANEXO E: DATASHEET 74HC595 ANEXO F: DATASHEET ULN2803 ANEXO G: DATASHEET 7805 ANEXO H: EAGLE TARJETA DE RELÉS
114
ANEXO A
EAGLE TARJETA DE TECLADO
115
116
117
ANEXO B
EAGLE TARJETA MONITOREO
118
119
120
ANEXO C
EAGLE TARJETA DECEREBRO
121
122
123
ANEXO D
DATASHEET ATMEGA-16
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
ANEXO E
DATASHEET 74HC595
154
155
156
157
158
159
160
161
ANEXO F
DATASHEET ULN2803
162
163
164
165
166
ANEXO G
DATASHEET 7805
167
168
169
170
171
172
173
ANEXO H
EAGLE TARJETA DE RELÉS
174
175