Icon

Anuncio
IPN
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACAN
TESINA
IPN
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACAN
TESINA
QUE PARA OBTENER EL TITULO DE:
INGENIERO EN COMUNICACIONES Y ELECTRONICA.
POR LA OPCION DE TITULACION:
SEMINARIO
“CONTROL MODERNO APLICADO A MAQUINAS ELÉCTRICAS ROTATORIAS Y A
SISTEMAS AUTOMATIZADOS”.
REG: FNS5122005/08/2008
DEBERA DESARROLLAR:
MARTINEZ PEREZ CHRISTIAN ULISES
PEREZ ALEJALDRE JOSE LUILLY
TEMA
“INTERFAZ PARA TARJETA DE ADQUISICION DE DATOS Y MICROCONTROLADOR”
CAPITULADO
CAPITULO Introducción
CAPITULO II INTRODUCCION A LOS MICROCONTROLADORES Y LA TARJETA DE
ADQUISICION DE DATOS
CAPITULO III HARDWARE DE ENTRADAS AL MICROCONTROLADOR Y LA TARJETA DE
ADQUISICÓN DE DATOS.
CAPITULO IV DESARROLLO DE HARDWARE PARA SALIDA DE DATOS.
CAPITULO V HARDWARE DE INTERFAZ PARA EL MICROCONTROLADOR Y LA
TARJETA DE ADQUISICÓN DE DATOS.
Fecha: México D.F. a 17de septiembre de 2008
Nombre del Director del Seminario
Nombre del Jefe de carrera a la
que pertenece el Seminario
Nombre del Asesor
INDICE
CAPITULO I
1.1 Introducción
...........................................................5
1.2 Objetivos
………………………….……..…….….6
1.3 Justificación
…………………………….…….…….….7
1.4 Estado del arte
………………………...…………….….8
1.5 Estructura de la tesina ………………………………..……12
CAPITULO II INTRODUCCION A LOS MICROCONTROLADORES Y
LA TARRJETA DE ADQUISICION DE DATOS.
2.1 Introducción a los microcontroladores……………………13
2.1.1 Procesador de un microcontrolador……………..……...13
2.1.2 Memoria de un microcontrolador……………………..…14
2.1.3 puertos de entrada/salida del microcontrolador…….....14
2.1.4 Recursos especiales……………………………...……...15
2.1.5 Arquitectura del microcontrolador……………………... 18
2.1.6 Tipos de microcontrolador……………………….……... 19
2.2 PIC16F84 .…………………………………………...…… . 20
2.2.1 Arquitectura del PIC 16F84A…………………………....20
2.2.2 Diagrama básico del PIC………………………………. 21
2.2.3 Puertos de entrada/salida………………………………. 22
2.2.4 Desarrollo de la programación ………………………… 23
2.2.6 IC-PROG……………………………………………....… 23
2.3 Introducción al sistema de adquisición de datos……….. 26
2.3.1 Sistema de adquisición de datos…………………....... 27
2.3.2 Componentes del sistema de adquisición de datos … 28
2.3.3 Configuración de los sistemas de adquisición de dato.29
2.3.4 Parámetros del sistema de adquisición de datos …… 34
2.3.5 Software……………………………………………..….... 36
2.4 Diseño de la tarjeta propuesta ………………………....... 37
2.4.1 Componentes de la tarjeta de adquisición de datos.....38
2.4.2 C I 74LS245…………………………..............................38
2
2.4.3 El puerto paralelo ……………………………………......39
2.4.4 Programación…………………………………………......42
CAPITULO III HARDWARE DE ENTRADAS AL
MICROCONTROLADOR Y LA TARJETA DE ADQUISICÓN DE
DATOS.
3.1 Desarrollo de Hardware para entradas de datos………..46
3.2 Elementos de entradas para microcontrolador…………. 46
3.3 Elementos de entradas para tarjeta de adquisición de
datos…………………………………………………………………….…..48
3.4 Botón pulsador………………………………................... .. 48
3.5 sensor de presencia …………………………………….…. 51
3.6 Sensor de temperatura……………………………….….… 54
3.7 Sensor de intensidad de luz…………………………….... 57
CAPITULO IV DESARROLLO DE HARDWARE PARA SALIDA DE
DATOS.
4.1 Elementos de salidas para microcontrolador………….... 59
4.2 Motor de CD……………………………………………........ 60
4.3 Motor a pasos……………………………………………..... 60
4.4 Leds de señalización…………………………………...... . 63
4.5 Display de siete segmentos……………………………..… 66
4.6 Zumbador………………………………………………...... 69
CAPITULO V HARDWARE DE INTERFAZ PARA EL
MICROCONTROLADOR Y LA TARJETA DE ADQUISICÓN DE
DATOS.
5.1 Elementos de la interfaz…………………………………. 70
5.2 Funcionamiento del hardware………………………..... 77
3
CAPITULO VI
Conclusiones………………………………………………….…78
BIBLIOGRAFIA……………………………………………………………79
ANEXOS…………………………………………………………………...80
4
CAPITULO I
1.1 INTRODUCCION.
Este proyecto esta dedicado especialmente a visualizar algunos
métodos de la adquisición de datos por computadora, ya que hoy en
día la PC es una herramienta indispensable para el desarrollo
tecnológico y más aun en el campo de la ingeniería.
En la actualidad existen dispositivos muy complejos que dificultan la
tarea de adquisición de datos ya que no son versátiles y su costo es
muy elevado para poder ser adquiridos por un estudiante, tales como
son las tarjetas de adquisición elaboradas por marcas como Keithley,
entre otras que están más enfocadas a aplicaciones de tipo industrial
dado que su costo es alto y presentan gran complejidad para su uso
por alumnos o gente con poca experiencia dentro del ámbito.
Por otro lado los microcontroladores necesitan componentes externos
y un delicado manejo para su implementación práctica, lo cual
representa una amplia perdida de tiempo afectando también la
economía del estudiante, al igual que las tarjetas de adquisición de
datos.
Motivo por el cual nos hemos dado a la tarea de crear un dispositivo
útil y practico para la adquisición de datos por computadora,
haciéndolo a su vez interactivo, didáctico y económico para facilitar
su implementación dentro de la enseñanza.
Para analizar a fondo este tipo de dispositivo se incluye la teoría
electrónica necesaria para comprender su funcionamiento así como
los diagramas electrónicos utilizados para su elaboración.
5
1.2 OBJETIVO GENERAL.
Implementación de los microcontroladores y Tarjeta de Adquisición de
datos en el área práctica de la Ingeniería, minimizando tiempos y
costos, desarrollando un hardware para la realización de las prácticas
más comunes para estos dispositivos.
1.2.1 OBJETIVOS ESPECÍFICOS.
Este proyecto tiene como objetivos principales:
Facilitar la adquisición de datos mostrados por la P.C de
forma veraz y sencilla.
Disminuir los costos y Tiempo de elaboración del hardware
requerido en Laboratorio.
Permitir la interacción del usuario con los diversos
dispositivos de entrada/salida, empleados (aplicados), en las
practicas de adquisición de Datos, donde se emplean
(aplican) los microcontroladores y la tarjeta de adquisición de
datos.
Que el usuario pueda desarrollar con facilidad su habilidad
para resolver de manera practica los problemas mediante la
adquisición de datos por computadora.
Proyectar al estudiante al mundo del control moderno.
Complementar de manera practica los conocimientos
adquiridos en el aula.
Unificar los contenidos de la teoría electrónica y la
programación para la elaboración de secuencias de control y
automatización.
6
1.3 JUSTIFICACION
En la presente tesina se expone una estrategia de bajo costo a seguir
para la implantación de un sistema de adquisición, monitoreo y control
de datos obtenidos de una PC, que pueda ser empleado dentro de un
laboratorio con fines educativos. Resaltando aspectos fundamentales,
como son: objetivos de su aplicación, hardware necesario para la
adquisición de los datos su
monitoreo y control, materiales
necesarios , interacción con el usuario, posibles resultados y
beneficios del sistema, etc.
Todo esto basado en la experiencia adquirida en el laboratorio donde
nos encontramos con limitantes como el alto costo de algunos
componentes que por su constante manipulación se veían afectados
y tenían que ser reemplazados continuamente, así como la perdida
del tiempo empleado en la reconstrucción de los circuitos, que ya sea
por averías de los elementos utilizados o el empleo del protoboard en
otras materias se requerían desconectar, esto por el lado de los
microcontroladores, mientras que para el modo de las tarjetas de
adquisición de datos la problemática consistía en la gran complejidad
que representa el manejar algunas marcas comerciales de tarjetas, la
elaboración del interfaz de potencia y los elementos de entrada, que
pueden cambiar de una práctica a otra, representando un continuo
cambio en el diseño , reflejándose en la pérdida de tiempo que
representa para los alumnos y el constante desembolso de dinero que
realizan para sustituir elementos dañados , razón por la cual nos
hemos dado a la tarea de presentar una alternativa económica y de
simple utilidad, que le permitirá al alumno ahorrar tiempo y dinero.
7
1.4.1 ESTADO DEL ARTE
Hoy en día la ingeniería en general y el control en particular cuentan
con un lenguaje especializado y se apoyan de equipos de cómputos,
sistemas informáticos, simuladores y software.
Algunos autores como Dawn Tilbury {1} mencionan que es necesario
el uso de Internet para el apoyo en la labor educativa, así como la
consulta de tutoriales para que los estudiantes dominen el uso de
dichas herramientas y software.
Hay aplicaciones con métodos y técnicas específicas como el
programa MATLAB y algunos de más reciente incursión en el
mercado como SIMULINK., LABVIEW, TRACERDAQ® 2.0, entre
otros.
La única limitante con este tipo de herramientas es la dificultad que
presentan en su lectura.
Los ejemplos de la aplicación de los software de programación antes
mencionados se muestran a continuación, con un pequeño desglose
de los hardware que requieren para una eficiente implementación.
1.4.2 TARJETA DE ADQUISICION DESARROOLLADA POR
NATIONAL INSTRUMENTS.
Primero comenzaremos analizando el hardware de la plataforma NI
CompactDAQ elaborado por National Instruments el cual incluye 19
módulos (ver Tabla 1) que añaden medidas como E/S de corriente,
RTD , analógicas de ±60 V, analógicas de alta velocidad de 24 bits y
resistencia. El módulo universal NI 9219 de NI CompactDAQ mide
tensión, temperatura, corriente, voltaje y resistencia, todo con
aislamiento entre canales. Todos los módulos son intercambiables en
vivo y auto detectables una vez que se insertan en el chasis USB
plug-and-play cDAQ-9172 de National Instruments. Con estos
módulos, los ingenieros de pruebas, integradores de sistemas y
8
estudiantes pueden construir programas personalizados
adquisición y registro de datos con tecnologías comerciales.
de
También analizaremos el software utilizado por esta tarjeta de
adquisición de datos que es el, LabVIEW SignalExpress LE de
National Instruments ,que ayuda a ingenieros a adquirir, visualizar y
registrar datos a archivos de texto ASCII o exportar a Microsoft Excel
para procesarlos posteriormente.
1.4.3 LABVIEW
El LABVIEW es una herramienta de programación gráfica, esto
quiere decir que utiliza iconos en lugar de líneas de texto, para crear
aplicaciones, a diferencia de otros programas como el C, que utilizan
líneas de códigos para ejecutar acciones, LABVIEW utiliza
programación de flujo de datos, donde el flujo de los datos determina
la acción a ejecutar.
Los programas en LABVIEW son llamados Instrumentos Virtuales (V
I, sus siglas en ingles), debido a que su apariencia y operación
asemeja a un instrumento físico.
LABVIEW es altamente eficaz para la adquisición de datos,
instrumentación y control, además crea una interfaz de interacción
con el usuario conocida como PANEL FRONT (panel frontal) y esta
constituido por una serie de herramientas y objetos.
{1} Dawn Tilbury, Assistnt Profesor Mechanical Engineering and Applied ………
9
1.4.4 PANEL FRONTAL.
El panel frontal de un instrumento Virtual es una combinación de
controles e indicadores que no son más que entradas y salidas
interactivas que asemejan los tipos de dispositivos de entrada/salida
que encontramos en cualquier instrumento convencional como
pueden ser perillas, botones, etc. .por otro lado se cuenta con
indicadores que despliegan la información que ya se proceso. Entre
los que se incluyen gráficas, tablas, indicadores luminosos,
numéricos, booleanos entre otros arreglos que se pueden realizar.
Por lo tanto podemos decir que cuando nos referimos a controles e
indicadores,
estamos citando las entradas y salidas de un
instrumento virtual.
El código se agrega usando una representación gráfica de funciones
para controlar los objetos del panel, llamado diagrama de bloques
(block diagram).
1.4.5 DIAGRAMA DE BLOQUES
El diagrama de bloques es semejante a las instrucciones que
ingresamos en los programas convencionales, solo que en vez de
utilizar códigos se utilizan bloques en donde se determinan el flujo de
los datos. Se cuentan con tres tipos de componentes; terminales,
nodos y líneas de conexión.
Las terminales son todos los controles e indicadores que se plasman
en el panel frontal y aquí aparecen como variables de entrada y
salida respectivamente.
Los nodos son elementos que ejecutan el programa y se dividen
entres tipos: Funciones, Sub VI´s y estructuras. Las funciones se
refieren a las operaciones fundamentales del diagrama de bloques,
los Sub VI´s son Instrumentos virtuales que se configuran dentro de
10
otro instrumento virtual y las estructuras son las que controlan el flujo
del programa por ejemplo FOR, LOOP y WHILE LOOP.
Por último las líneas de conexión, como su nombre lo dice son
enlaces virtuales entre las terminales y los nodos.
1.4.6 TIPOS DE DATOS EN LOS CONTROLES E INDICADORES.
La siguiente tabla muestra los símbolos para los diferentes tipos de
datos que se pueden manejar en los instrumentos virtuales , por lo
que es de gran importancia conocer los datos que se están
manejando, cada dato es representado por un color dependiendo de
lo que se este utilizando, las terminales tienen una flecha y si esta es
de entrada nos referimos a un indicador y si es de salida nos
referimos a un control , el color de las líneas de conexión salientes de
cada una de las terminales de control es correspondiente al color de
tipos de datos que se están manejando( ver tabla anexa).
11
1.5 ESTRUCTURA DE LA TESINA
A continuación se presentan de manera resumida el contenido de
este proyecto con sus características más relevantes:
En el capitulo II se analizaran y propondrán los algoritmos para la
implementación de la manipulación de datos por computadora y su
interacción con el mundo exterior (motores, sensores, actuadotes,
etc.). El análisis se inicia con un elemento primario como es el resistor
continuando con elementos pasivos como el capacitor, elementos
semiconductores como el diodo, elementos de potencia como el
transistor y el triac, así como los elementos de interfaz que nos
permiten realizar la interacción del circuito de control a elementos de
potencia como lo son el opto acoplador (MOC 3011) y el relevador
electromecánico, siguiendo con el microcontrolador PIC 16f84A.
En el capitulo III se analiza el hardware de entradas de datos para la
tarjeta de adquisición de datos y para el microcontrolador, donde
hablaremos de su composición, su funcionamiento y sus aplicaciones.
En el capitulo IV se analiza el funcionamiento y composición del
hardware desarrollado para la salida de datos del microcontrolador y
de la tarjeta de adquisición de datos.
Capitulo V se indican los resultados obtenidos en base a nuestra
experimentación.
Y finalmente en el capitulo VI externamos nuestras conclusiones
12
CAPITULO II
2.1 MICROCONTROLADORES.
2.1.0 INTRODUCCION
El microcontrolador o PIC de sus siglas en ingles (Peripheral
Interface Controller (Controlador de Interfaz Periférico) es un circuito
integrado programable que contiene todos los componentes de una
PC, se emplea para controlar el funcionamiento de una tarea
determinada y debido a su reducido tamaño, suele ser incorporado en
el propio dispositivo que gobierna.
El microcontrolador es una PC dedicada, ya que en su memoria sólo
reside un programa destinado a gobernar una aplicación determinada;
sus líneas de entrada/salida soportan la conexión de sensores y
actuadotes del dispositivo a controlar.
Una vez programado y configurado el microcontrolador solamente
sirve para gobernar la tarea asignada.
2.1.1 El procesador o CPU
Es el elemento más importante del microcontrolador y determina sus
principales características, tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el
código de la instrucción en curso, su decodificación y la ejecución de
la operación que implica la instrucción, así como la búsqueda de los
operandos y el almacenamiento del resultado.
13
2.1.2 Memoria
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.
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 escribir el programa en el
chip mediante un sencillo grabador controlado por un programa desde
un PC.
2.1.3 Puertas de Entrada y Salida
La principal utilidad de los pines que posee la cápsula que contiene
un microcontrolador es soportar las líneas de E/S que comunican la
PC interna 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.
Los microcontroladores fueron diseñados para disminuir el costo y el
consumo de energía de un sistema en particular. Por eso el tamaño
de la CPU, la cantidad de memoria y los periféricos incluidos
dependerán de la aplicación.
14
2.1.4 RECURSOS ESPECIALES
Además los PIC´s cuentan con recursos especiales que dependen de
cada fabricante para ofertar numerosas opciones que satisfagan los
requerimientos.
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.
• Comparador analógico.
• Modulador de anchura de impulsos o PWM.
• Puertas de E/S digitales.
• Puertas de comunicación.
15
Temporizadores o "Timers"
Se emplean para controlar periodos de tiempo (temporizadores) y
para llevar la cuenta de acontecimientos que suceden en el exterior
(contadores).
Perro guardián o "Watchdog"
El Perro guardián consiste en un temporizador que, cuando se
desborda y pasa por 0 (cero lógico), provoca un reset automático en
el sistema.
Protección ante fallo de alimentación o "Brownout"
Se trata de un circuito que resetea al microcontrolador cuando el
voltaje de alimentación (VDD) es inferior a un voltaje mínimo
("brownout").
Estado de reposo ó STAND BY
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.
16
Conversor A/D (CAD)
Los
microcontroladores
(Analógico/Digital)
que
pueden
incorporan
procesar
un
señales
Conversor
A/D
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 los pines del circuito integrado.
Conversor D/A (CDA)
Transforma los datos digitales obtenidos del procesamiento del
computador en su correspondiente señal analógica que saca al
exterior por una de los pines de la cápsula. Existen muchos efectores
que trabajan con señales analógicas.
Comparador analógico
Algunos modelos de microcontroladores 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 los
pines 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.
Modulador de anchura de impulsos o PWM
Son circuitos que proporcionan en su salida impulsos de anchura
variable, que se ofrecen al exterior a través de los pines del
encapsulado.
17
Puertos de E/S digitales
Todos los microcontroladores destinan algunos de sus pines a
soportar líneas de E/S 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.
2.1.5 ARQUITECTURA BÁSICA DEL PIC
Los microcontroladores estan basados en la arquitectura Harvard la
cual dispone de dos memorias independientes una, que contiene sólo
instrucciones y otra, sólo datos. Ambas disponen de sus respectivos
sistemas de buses de acceso y es posible realizar operaciones de
acceso (lectura o escritura) simultáneamente en ambas memorias.
Figura 2.1.
FIGURA 2.1 ARQUITECTURA DEL PIC
18
La arquitectura Harvard dispone de dos memorias independientes
para datos y para instrucciones, permitiendo accesos simultáneos.
.2.1.6 TIPOS DE MICROCONTROLADORES.
En el mercado existen diversos fabricantes de microcontroladores por
lo que cada circuito integrado varia sus características y en el
momento de escoger el microcontrolador hay que tener en cuenta
multitud de factores, como la documentación y herramientas de
desarrollo disponibles , su precio, la cantidad de fabricantes que lo
producen y por supuesto las características del microcontrolador (tipo
de memoria de programa, número de temporizadores, interrupciones,
etc.)
A continuación les presentamos algunos de los microcontroladores
mas utilizados.
PICs más comúnmente usados
PIC12C508/509 (encapsulado reducido de 8 pines)
PIC16F84
PIC16F84A ( funcionan a 20 MHz, compatible 1:1)
PIC12F629/675
PIC16F628
PIC16F88 (sustituto del PIC16F84A con más memoria,
oscilador interno, PWM)
PIC18F2455 y similares con puerto USB 2.0
PIC18F2550
PIC18F452
PIC18F4550
dsPIC30F3011 (Ideales para control electrónico de motores
eléctricos de inducción
PIC32 (Nueva gama de PIC de 32 bits)
19
Así que basados en las características antes mencionadas el PIC que
seleccionamos es el 16F84A ya que cumple con los requisitos
necesarios para incorporarse en la enseñanza, ya que es económico,
versátil, además posee un software de programación que es muy
simple de utilizar, a continuación nos adentraremos más en el uso del
PIC.
2.2 El PIC 16F84
Se trata de un microcontrolador de 8 bits que generalmente se
encuentra encapsulado en formato DIP18 es decir cuenta con 18
pines.
Es un PIC de gama baja, esta fabricado con tecnología CMOS, su
consumo de energía es muy reducido al igual que su juego de
instrucciones, posee dos bancos de memoria separados uno para
el programa y otro para el banco de registro entre otras
características que a continuación se enlistan:
Memoria de 1K x 14 de tipo Flash
Memoria de datos EEPROM de 64 bytes
13 líneas de E/S con control individual
Frecuencia de funcionamiento máxima de 10 Mhz.
Cuatro fuentes de interrupción - Activación del pin RB0/INT
Desbordamiento del TMR0
Cambio de estado en algún pin RB4-RB7
Temporizador/contador TMR0 programable de 8 bits
Perro Guardián o WatchDog
2.2.1ARQUITECTURA DEL MICROCONTROLADOR 16F84A
El microcontrolador 16F84Ase puede interpretar como una serie de
bloques, uno perteneciente a la memoria de programa que es lugar
donde deben alojarse los datos que le indiquen al microcontrolador
que es lo que debe hacer; una memoria de datos donde se ingresan
las señales que debe procesar el programa, una unidad aritmética y
lógica donde se desarrollen todas las tareas, una unidad de control
20
que se encargue de supervisar todos los procesos y por ultimo los
puertos de entrada/salida para que el microcontrolador tenga
contacto con el exterior , como se explica en la figura 2.2
FIGURA 2.2 ARQUITECTURA DEL PIC16F84A
2.2.2 Diagrama básico del PIC 16f84A.
En el siguiente esquema podemos ver el diagrama básico, es decir, el
circuito mínimo para que el PIC empiece a funcionar así como la
configuración de cada uno de sus pines:
FIGURA 2.3 CONEXIÓN BASICA DEL PIC 16F84A
21
- VDD: alimentación
- GND: tierra
- OSC1/CLKIN-OSC2/CLKOUT: conexión del oscilador
- VPP/MCLR: tensión de programación y reset
- RA0-RA3: líneas de E/S de la puerta A
- RA4: línea de E/S de la puerta A o entrada de impulsos de reloj
para TMR0
- RB0/INT: línea de E/S de la puerta B o petición de interrupción
- RB1-RB7: líneas de E/S de la puerta B
Éste diagrama consta básicamente de tres partes:
- Alimentación:
Para alimentar el integrado se emplean los pines: 14 VDD (tensión
positiva) y 5 GND (tierra).
Además se puede incluir un pulsador, conectado al pin 4 que tiene
la función de resetear el PIC, cuando se introduce un nivel alto de
tensión (pulsador abierto) el PIC funciona normalmente y cuando se
introduce un nivel bajo (pulsador cerrado).
- Oscilación:
La lleva a cabo el cristal de cuarzo (de 4 Mhz en nuestro caso) junto
con los dos condensadores cerámicos (27pF). Existen otros tipos de
osciladores, pero su utilización depende del tipo de PIC empleado y
de la aplicación que se le de por momento no los veremos.
2.2.3 PUERTOS DE ENTRADA/ SALIDA.
Este microcontrolador cuenta con dos puertos de entrada y salida
(E/S). El puerto A con 5 líneas que van del puerto RA0 al RA4 y el
puerto B que dispone con 7 líneas de entrada/ salida del pin RB0 al
RB7.
22
2.2.4 DESARROLLO DE LA ETAPA DE PROGRAMACIÓN.
Para transferir el código de un ordenador al PIC normalmente se usa
un dispositivo llamado programador. Existen muchos programadores
de PICs, desde los más simples que dejan al software los detalles de
comunicaciones, a los más complejos, que pueden verificar el
dispositivo a diversas tensiones de alimentación e implementan en
hardware casi todas las funcionalidades. El software de programación
más utilizado es el ICprog, dado que es muy dócil en su
programación.
A continuación se nombran los principales programadores que existen
en el mercado:
PICStart Plus (puerto serie y USB)
Promate II (puerto serie)
MPLAB PM3 (puerto serie y USB)
ICD2 (puerto serie y USB)
PICKit 1 (USB)
IC-Prog 1.06B
PICAT 1.25 (puerto USB2.0 para PICs y Atmel)
WinPic 800 (puerto paralelo, serie y USB)
Terusb1.0
2.2.6 ICPROG
Para que el microcontrolador funcione como nosotros deseamos es
preciso “cargarle” un programa en la “memoria de programa”. El
programa debe estar en un lenguaje comprensible por el
microcontrolador o sea un lenjuage máquina en código binario,
aunque en realidad al microcontrolador debemos introducirle un
programa en código hexadecimal e internamente lo convierte a
binario para realizar su interpretación.
23
Por lo tanto es necesario contar con un software que nos sirva de
interprete para introducir las instrucciones del proceso por lo tanto es
muy importante conocer los software existentes para elegir el mas
adecuado, ya que existen unos muy complejos.
CARACTERISTICAS DEL ICPROG.
El ICPROG es un programa que corre bajo Windows y que permite la
programación de muchos dispositivos. Los parámetros de la línea de
mando pueden ser usados como interfaz con compiladores externos.
INSTALACION DEL SOFTWARE.
Lo primero es conectar el programador a uno de los puertos
disponibles sobre la PC ya sea en el puerto serie o paralelo, hecho
esto procedemos a insertar el microcontrolador en el zócalo
correspondiente dentro del cargador del microcontrolador
cerciorándonos de prevenir descargas electrostáticas que puedan
dañar nuestro microcontrolador.
PANTALLA PRINCIPAL.
La pantalla principal del ICPROG presenta la información necesaria
para programar el dispositivo seleccionado. Todos los dispositivos
tienen al menos un área de código dónde puede ser almacenada
información. El área de código contiene el código que será ejecutado
por el microcontrolador y el área de datos contiene datos fijos como
tablas para cálculos, informaciones, etc, la mayoría de los
microcontroladores tienen un área de configuración.
Las informaciones sobre la configuración se realizan en la fase de
inicio con algunos parámetros que varían según el microcontrolador
utilizado. Las informaciones especificas de estas configuraciones se
24
encuentran en el dataste del microcontrolador., en la figura se
presenta la pantalla principal del ICPROG
AREA DE CODIGO Y DATOS.
En el área de código y el área de datos se presenta la información en
valor hexadecimal y el correspondiente valor ASCII:
La columna del lado izquierdo del área de código y del área de datos
contiene la dirección física de memoria del dispositivo sobre la que se
guarda la información. En el centro del campo se presenta el valor
hexadecimal y la columna de la derecha contiene las mismas
informaciones, pero en valor ASCII. Cada fila en el área de código
presenta dos palabras de 8 bits, o bien una palabra de 16 bits.
25
2.3 INTRODUCCION A LA ADQUISICIÓN DE DATOS.
El propósito de adquisición de datos es medir un fenómeno eléctrico
y físico como voltaje, corriente, temperatura, presión o sonido. La
adquisición de datos basada en PC utiliza una combinación de
hardware modular, software de aplicación y una PC para realizar
medidas. Mientras cada sistema de adquisición de datos se define por
sus requerimientos de aplicación, cada sistema comparte una meta
en común de adquirir, analizar y presentar información. Los sistemas
de adquisición de datos incorporan señales, sensores, actuadores,
acondicionamiento de señales, dispositivos de adquisición de datos y
software
de
aplicación.
FIGURA 2.4 SISTEMA DE ADQUISICION DE DATOS.
La mayoría de las tarjetas de adquisición de datos
realizan
comunicación de daos a través de los puertos serial, paralelo, USB y
otros lo que permite involucrar la instrumentación virtual por medio de
una interfaz gráfica en una PC.
26
El concepto de instrumentación virtual no se limita a una medición de
voltaje o corriente sino que también involucra el procesamiento,
análisis, almacenamiento, distribución y despliegue de los datos e
información relacionados con la medición de una o varias señales
especificas : es decir el instrumento virtual no se conforma con la
adquisición, sino que involucra la interfaz hombre-máquina, las
funciones de análisis y procesamiento de señales, las rutinas de
almacenamiento de datos y la comunicación con otros equipos.
Para poder llevar a cabo el procesamiento de las señales, se suelen
utilizar microcontroladores con interfaces de comunicación hacia la
PC, dichos microcontroladores son los encargados de digitalizar las
señales, procesar la información de acuerdo al protocolo utilizado,
almacenar algunos datos en sus memorias internas e intervienen en
los casos en que se deba realizar alguna acción de control.
2.3.1 SISTEMA DE ADQUISICIÓN DE DATOS
La adquisición de datos se inicia con el fenómeno físico o la
propiedad física del objeto que se desea medir. Esta propiedad física
o fenómeno puede ser el cambio de temperatura de una habitación, la
intensidad del cambio en el cambio de una fuente luminosa, la presión
dentro de una cámara, la fuerza aplicada a un objeto, o cualquier
cambio que se desee monitorear .Un eficaz sistema de adquisición de
datos puede medir todos estos fenómenos o propiedades
Generalmente los datos o variables que se han de captar son de
carácter analógicos, mientras que su tratamiento, almacenamiento y
análisis son mucho más eficaces cuando se hacen digitalmente. Esto
implica la instauración de una serie de módulos electrónicos que
permitan a llevar acabo la trasformación de los datos del campo
analógico al campo digital, sin que por ello se pierdan los aspectos
fundamentales para el proceso que se desea controlar.
27
2.3.2 COMPONENTES DE UN SISTEMA DE ADQUISICIÓN DE
DATOS.
Un sistema de adquisición de datos se compone de diferentes
módulos electrónicos que permiten llevar a cabo la trasformación de
los fenómenos antes mencionados. Su estructura general se muestra
en la siguiente figura.
FIGURA 2.5 COMPONENTES DE UN SISTEMA DE ADQUISICION
DE DATOS.
28
Algunos de los elementos que forman el sistema de adquisición de
datos
se nombran a continuación junto con sus respectivas
funciones:
Sensores o tranductores. Son los encargados en
convertir la variable física a medir (temperatura, presión,
humedad. Etc.) en señal eléctrica. Esta señal eléctrica
suele ser de muy bajo nivel, por lo que generalmente se
requiere un acondicionamiento previo para conseguir así
los niveles de tensión/corriente adecuados para el resto
de los módulos del sistema.
Multiplexor: este modulo se encarga de seleccionar la
señal de entrada que va a ser tratada en cada momento.
En el caso en que solo deseáramos tratar con
únicamente una señal, este modulo no es indispensable.
Amplificador de instrumentación: La función de este
bloque es amplificar la señal de entrada del sistema de
adquisición de datos para que su margen dinámico se
aproxime lo más posible al margen dinámico del
conversor A/D consiguiendo de esta forma la máxima
resolución. En un sistema de adquisición de datos con
varios canales de entrada, cada canal tiene un rango de
entrada distinto, por lo que es necesario que este
amplificador sea de ganancia programable.
S&H (Muestreo y Retención): Este modulo es le
encargado de tomar la muestra del canal seleccionado y
mantenerla durante el tiempo que dura la conversión.
2.3.3 CONFIGURACIONES DE LOS SISTEMAS DE ADQUISICIÓN
DE DATOS.
Los sistemas de adquisición de datos se se clasifican según el
número de canales de entrada que posean, esta clasificación se
muestra a continuación:
29
SISTEMAS MONOCANALES.
Es la configuración más general de un sistema de adquisición
responde al diagrama de bloques de la figura (2.6).
FIGURA 2.6 SISTEMA DE ADQUISICION DE DATOS MONOCANAL.
La señal procedente de la fuente de información (cuya obtención se
realiza por medio de los sensores
apropiados con sus
correspondientes acondicionadores de señal) es aplicada a la entrada
del circuito amplificador de instrumentación, el cual adaptara el nivel
analógico de la entrada al margen dinámico del convertidor A/D.
Como se puede observar en la figura, el sistema monocanal solo
permite la adquisición de una señal de entrada, lo que permite
optimizar su configuración para un tipo concreto de entrada analógica.
SISTEMAS DE ADQUISICIÓN MULTICANAL.
V Cuando se plantea la necesidad de realizar la conversión A/D de
diversas señales, los sistemas de adquisición pueden tener diferentes
30
configuraciones. La configuración a utilizar depende los siguientes
aspectos:
Las características de las señales de entrada (frecuencia,
periodo, rangos, etc.).
La información que se desea obtener de las señales.
La velocidad de conversión que se desea tener.
Y por ultimo el costo que tendrá el sistema.
En un sistema de adquisición multicanal pueden existir distintas
configuraciones que van en función de cómo se realice la distribución
de los módulos del sistema. Esta distribución depende de las
necesidades de cada aplicación, como se muestra enseguida.
SISTEMA DE ADQUSICIÓN MULTICANAL CON MUESTREO
SECUENCIAL DE CANALES
Es la configuración que menos componentes requiere y por lo tanto la
más económica de todos los sistemas multicanal. Su estructura se
muestra en la figura 2.7.
FIGURA 2.7 SISTEMA MULTICANAL CON MUESTREO
SECUENCIAL.
31
El funcionamiento del circuito es bastante sencillo: primero
seleccionamos el canal de entrada del multiplexor y fijamos la
ganancia del amplificador de Instrumentación, el circuito S/H pasa a
modo sample (selección) hasta que se adquiere una muestra de la
señal, momento en el que pasa a modo hold (retención), dando así la
instrucción al convertidor A/D para que inicia la conversión. Una vez
transcurrido el tiempo de la conversión el convertidor A/D lo indica
mediante l señal de fin de la conversión, repitiéndose de nuevo todo
el proceso anterior, ya sea con el mismo canal o con otro distinto.
Esta configuración permite que durante el tiempo de conversión de un
canal, se puede estar seleccionando en el multiplexor,
simultáneamente, el siguiente canal a muestrear. Así el tiempote
establecimiento del multiplexor no influirá en la velocidad de
adquisición final del sistema, siempre y cuando dicho tiempo sea
menor que el tiempo de conversión del convertidor A/D.
SISTEMA DE ADQUISICIÓN MULTICANAL CON MUESTREO
SIMULTANEO DE CANALES
Esta configuración presenta la ventaja de que todos los circuitos de
S/H de entrada conmutan simultáneamente a modo Hold,
manteniendo el valor de la muestra de cada señal de entrada hasta
que el convertidor A/D puede realizar la conversión, cosa que no es
posible en el modelo de muestreo secuencial. Su estructura se
muestra en la figura 2.8.
32
FIGURA 2.8 SISTEMA MULTICANAL CON MUESTREO
SIMULTANEO.
SISTEMAS DE ADQUISICIÓN MULTICANAL PARALELO.
En este caso se puede decir que cada canal constituye un sistema de
adquisición independiente con todos los elementos necesarios para
realizar una conversión A/D completa, con la salvedad de que al
utilizar, generalmente, un solo canal digital de salida es necesario
incluir un multiplexor digital como lo muestra el siguiente diagrama,
figura 2.9.
33
2.9 SISTEMA MULTICANAL CON MUESTREO PARALELO.
En la figura podemos observar que el sistema ofrece una gran
flexibilidad, ya que cada canal puede ser adaptado de forma
independiente, según las necesidades requeridas por la señal a
adquirir (ganancia del amplificador, velocidad de adquisición, etc.).
otra ventaja adicional es que la velocidad del sistema se optimiza
notablemente, ya que pueden realizarse simultáneamente varias
conversiones. Como inconveniente principal cabe destacar que su
costo es muy elevado y por lo tanto la implementación de estos
sistemas en un aula de clases es casi nula.
2.3.4
PARAMETROS CARACTERISTICOS DE LOS SISTEMAS
DE ADQUISICION.
Los parámetros que caracterizan un sistema de adquisición de datos
son básicamente tres:
Numero de canales: esto depende del número de señales
del que se desean adquirir los datos.
Exactitud de la conversión: esta impuesta por los circuitos
utilizados, es decir, multiplexores, amplificadores, S/H,
34
convertidores A/D, esencialmente. Así, a cada uno de estos
módulos les pediremos unos mínimos.
o Multiplexor: baja resistencia de conducción (RON ) y
constante en el margen de variación de las señales
de entrad. Tiempos de establecimiento pequeños.
o Amplificador: mínimas tensiones y corrientes de
offset, así como sus derivas. Tiempo de
establecimiento pequeño, aún con altas ganancias.
Amplio margen para programar la ganancia.
o S/H: pequeña tensión de offset , máxima velocidad de
caída en modo Hold, siempre y cuando la tensión a la
salida del S/H este constante el tiempo necesario
para que el convertidor la digitalice. Tiempos de
apertura, adquisición y de asentamientos mínimos.
o Convertidor A/D: alta resolución, mínimo tiempo de
conversión. Error de linealidad y de ganancia
pequeños.
Velocidad de muestreo: este parámetro especifica la
velocidad a la que el sistema puede adquirir y almacenar
muestras de las entradas. En general debemos identificar la
velocidad de muestreo con el número de muestras por unidad
de tiempo que pueden obtenerse de un canal. Los cuatro
factores a tener en cuenta son:
o
o
o
o
Tiempo de establecimiento del multiplexor.
Tiempo de establecimiento del amplificador
Tiempo de adquisición del S/H.
Tiempo del convertidor A/D.
Hasta que la muestra adquirida llega al conversor, pasa a través del
multiplexor, después por el amplificador de ganancia programable y
finalmente por el S/H. cada elemento de esta cadena requiere un
corto periodo de tiempo de establecimiento para conseguir su mejor
35
precisión. Por tanto, cuando se calcula la máxima velocidad de
muestreo del sistema, debemos incluir el efecto de todos estos
elementos, y no solo el tiempo del convertidor A/D.
Una vez adquiridos los datos por los módulos antes mencionados se
almacenan, visualizan y analizan en una PC, ya sea utilizando el
software que el proveedor de la tarjeta nos proporciona o utilizando
alguno de los lenguajes de programación de propósito general como
BASIC, C, FORTRAN, JAVA, PASCAL., por lo tanto ahora nos
enfocaremos a hablar del software.
2.3.5
SOFTWARE
El software consiste en un programa que procesa los datos recibidos
y se encarga de enviar las correspondientes señales de control a las
salidas y debe tener las siguientes características:
Interfaz gráfica intuitiva y totalmente amigable para el usuario.
Rápida implementación de nuevos sistemas
Definición de las entradas y salidas a utilizar.
los enunciados se deben establecer utilizando las reglas del
control difuso (fuzzy).
Flexibilidad de adaptarse a las reglas necesarias para el
proceso deseado.
Debe guardar las configuraciones para un proceso en
particular y su posterior recuperación.
Registro continuo de las señales de entrada y salida en disco,
para tener un seguimiento histórico del comportamiento del
sistema.
Permitir consultas del sistema mediante bases de dato y
elaboración de gráficos directamente de los datos obtenidos.
Una vez tomadas en cuenta las características antes
mencionadas procederemos a elegir el software de programación
36
que más convenga, también tomando en cuenta lo difícil que
pueda ser su programación, así como la facilidad para adquirirlo y
el costo que pueda tener.
2.4
DISEÑO DE LA TARJETA PROPUESTA.
En este punto hablaremos de tarjeta de adquisición de datos que
proponemos, ya que basados en nuestra experiencia dentro de la
escuela, este resulta ser un modelo económico y de fácil construcción
e implementación.
El modelo se muestra en la siguiente figura y se comunica mediante
el puerto paralelo de la computadora.
FIGURA 2.10 TARJETA DE ADQUISION DE DATOS PROPUESTA.
37
2.4.1 COMPONENTES DE LA TARJETA DE ADQUISICIÓN DE
DATOS.
El material empleado para su elaboración es:
1. conector DB25 hembra
2. tres CI 74LS245
3. diez y siete resistencias de 220Ω
4. cinco resistencias de 1K Ω
5. ocho leds de color rojo
6. cuatro leds color verde
7. cinco leds color ambar
2.4.2 CIRCUITO INTEGRADO 74LS245
El circuito integrado 74LS245 es un bus octal transmisor-receptor
diseñado para la comunicación sincrona entre dos buses de datos, su
implementación en el sistema de control redúcela mínimo los
requisitos de sincronización externa. el dispositivo permite la
transmisión de datos del Bus A al Bus B o del bus B al Bus A
dependiendo del nivel lógico que se tenga en la entrada de la
dirección de control. La entrada (G) se puede utilizar para inhabilitar el
dispositivo para aislar los buses y además nos sirve para la
protección de la PC, ya que en caso de algún cortocircuito o alguna
sobrecorriente este integrado seria el primero en dañarse, evitando
así que la PC sufra daños.
Esta encapsulado en formato Dip 20, lo que significa que cuenta con
20 pines, en la siguiente figura podemos observar la configuración de
cada uno de sus pines:
38
FIGURA 2.11 CI 74LS245.
2.4.3 EL PUERTO PARALELO.
En el puerto paralelo la principal característica es que los bits de
datos viajan juntos enviando un byte completo a la vez. E lcable
paralelo es el conector físico entre el puerto paralelo y el periférico.
En contraposición al puerto paralelo está el Puerto serie, que envía
los datos bit a bit por el mismo hilo. El puerto paralelo se apega al
estándar IEEE 1284 liberado en 1994 y que define 4 modos de
operación soportados aún en la actualidad:
1. Puerto Paralelo Estándar (SPP) (Unidireccional)
2. Puerto Paralelo PS/2 (Bidireccional)
3. Puerto Paralelo Mejorado (EPP)
4. Puerto Paralelo con Capacidades Extendidas (ECP).
El puerto paralelo más conocido es el puerto de impresora. Se ha
utilizado principalmente para conectar impresoras, pero también ha
sido usado para programadores EPROM, escáneres, interfaces de
red Ethernet a 10 MB, unidades ZIP y SuperDisk y para comunicación
entre dos PCs (MS-DOS trajo en las versiones 5.0 ROM a 6.22 un
programa para soportar esas transferencias).
39
El puerto paralelo de las computadoras, de acuerdo a la norma
Centronic, está compuesto por un bus de comunicación bidireccional
de 8 bits de datos, además de un conjunto de líneas de protocolo.
El puerto paralelo esta formado por diecisiete líneas de señales y
ocho líneas de tierra.
Las líneas de señales se forman en 3 grupos:
cuatro líneas de control, que van de bit C0 al bit C3.
cinco líneas de estado, que van de bit E3 al bit E7.
ocho líneas de datos, que van de bit D0 al bit D7.
En el diseño original las líneas de:
control sirven de interfase e intercambio de mensajes de la
PC a la tarjeta.
Estado sirven para el intercambio de mensajes, indicadores
de estado de la tarjeta a la PC.
Datos: suministran datos de la tarjeta a la PC, únicamente en
esta dirección.
Las líneas de control, estado y datos pueden ser referenciadas de
modo independiente mediante un registro.
Los bits de las líneas son señales TTL por lo tanto:
2.4v y 5v= “1” lógico
0.8v y 1.4v= “0” lógico
Las líneas de tierra cumplen dos funciones:
1) Vinculan las tierras de señal de los dos dispositivos que se
interconectan.
2) Al conectarse por cable tipo cinta las tierras actúan como
blindaje de las líneas.
Para realizar la comunicación con la tarjeta de adquisición, utilizamos
un conector hembra clase D de 25 pines (DB-25), definido como TIPO
40
A por el estándar IEEE 1284 cuya configuración se muestra en la
figura 2.12.
FIGURA 2.12 CONECTOR DB25
Para fines de análisis, se considera que los tres registros del puerto
son de 8 bits, por lo que se tiene un orden significativo que es
necesario respetar cuando se forma una palabra de configuración, por
ejemplo, en el caso del registro de estado, se tiene disponible a partir
del bit 4 y hasta el bit 8 (S7, S6,S5, S4, S3), los demás están
comprometidos o reservados para otros propósitos, el bit más
significativo del registro de estado (S7), trabaja con lógica negativa y
está físicamente ubicado en el pin 11 del conector.
El registro de control, es sólo de salida y utiliza los primeros cuatro
bits (C3, C2, C1, C0) del registro, los restantes cuatro están
reservados. En este registro, los bits C3, C1 y C0, trabajan con lógica
invertida y están localizados físicamente en los pines 17, 14 y 1 del
conector.
Una PC soporta hasta 3 puertos paralelos separados, cada uno con
su juego de registros.
Existen tres direcciones consecutivas asociadas con un puerto
paralelo, estas direcciones pertenecen al:
registro de datos y se localiza en la dirección base.
41
registro de estados y en la dirección base+1.
registro de control en la dirección base+2.
Al encender una computadora, el BIOS ejecuta una rutina para
determinar el número de puertos presentes en el sistema, asignando
las etiquetas LPT1, LPT2 y LPT3 (si existen tres puertos).
Las salidas del puerto paralelo se pueden dañar con un cortocircuito,
las tensiones mayores de 5v pueden dañar todas las líneas.
2.4.4 PROGRAMACION
Para la tarjeta de adquisición de datos es necesario utilizar un
lenguaje de programación que nos brinde una interfaz gráfica con el
usuario, que sea de fácil entendimiento y al cual le podamos hacer
las modificaciones que creamos convenientes, por estas razones
elegimos el VISUAL BASIC, ya que es el software que reúne todos
los requisitos necesarios.
VISUAL BASIC
Visual Basic es uno de los tantos lenguajes de programación que
podemos encontrar hoy en día. Dicho lenguaje nace del BASIC
(Beginner´s All-purpose Symbolic Instruction Code) que fue creado en
su versión original en el Dartmouth College, con el propósito de servir
a aquellas personas que estaban interesadas en iniciarse en algún
lenguaje de programación. Luego de sufrir varias modificaciones, en
el año 1978 se estableció el BASIC estándar.
CARACTERÍSTICAS GENERALES DE VISUAL-BASIC
Visual-Basic es una herramienta de diseño de aplicaciones para
Windows, en la que estas se desarrollan en una gran parte a partir del
diseño de una interfase gráfica. En una aplicación Visual - Basic, el
programa está formado por una parte de código puro, y otras partes
asociadas a los objetos que forman la interfase gráfica.
42
Es por tanto un término medio entre la programación tradicional,
formada por una sucesión lineal de código estructurado, y la
programación orientada a objetos. Combina ambas tendencias. Ya
que no podemos decir que VB pertenezca por completo a uno de
esos dos tipos de programación, debemos inventar una palabra que
la defina: PROGRAMACION VISUAL.
La creación de un programa bajo Visual Basic lleva los siguientes
pasos:
Creación de un interface de usuario. Este interface será la
principal vía de comunicación hombre máquina, tanto para
salida de datos como para entrada. Será necesario partir de
una ventana - Formulario - a la que le iremos añadiendo los
controles necesarios.
Definición de las propiedades de los controles - Objetos - que
hayamos colocado en ese formulario. Estas propiedades
determinarán la forma estática de los controles, es decir,
como son los controles y para qué sirven.
Generación del código asociado a los eventos que ocurran a
estos objetos. A la respuesta a estos eventos (click, doble
click, una tecla pulsada, etc.) le llamamos Procedimiento, y
deberá generarse de acuerdo a las necesidades del
programa.
Generación del código del programa. Un programa puede
hacerse solamente con la programación de los distintos
procedimientos que acompañan a cada objeto. Sin embargo,
VB ofrece la posibilidad de establecer un código de programa
separado de estos eventos. Este código puede introducirse
en unos bloques llamados Módulos, en otros bloques
llamados Funciones, y otros llamados Procedimientos. Estos
Procedimientos no responden a un evento acaecido a un
objeto, sino que responden a un evento producido durante la
ejecución del programa.
43
TIPOS DE VARIABLES
Las variables pueden ser de los siguientes tipos: (El número indicado
en segundo lugar indica el número de Bytes que ocupa en memoria.)
Booleana
False (falso)
(2)
Admite los valores 0 y 1, o True (verdadero) y
Byte
(1)
Números enteros, en el rango de 0 a 255
Integer
32767
(2)
Números enteros en el rango de -32768 a
Long
(4)
a 2147483647
Números enteros en el rango de -2147483648
Single
(4)
Punto flotante, simple precisión
Doble
(8)
Punto flotante, doble precisión.
Currency
monedas)
(8)
Entero, con punto decimal fijo
String
fija
(*)
Cadenas alfanuméricas de longitud variable o
Date
(8)
Fechas
Objet
(4)
Referencia a objetos
Variant
(**)
Otros tipos de datos
(Típico de
44
Lo antes mencionado es solo la introducción de lo que es el visual
basic, en el cual no nos adentraremos mucho, en la siguiente figura
se muestra una interfaz realizada en visual basic figura 2.13.
FIGURA 2.13 PROGRAMA DESARROLLADO EN VISUAL BASIC.
45
CAPITULO 3
3.1 DESARROLLO DEL HARDWARE DE ENTRADAS.
En este capitulo analizaremos las entradas que hemos desarrollado
para que sean utilizadas con el microcontrolador a fin de desarrollar
las practicas más comunes que se realizan en el laboratorio.
El hardware de entradas del microcontrolador y la tarjeta de
adquisición de datos cuenta con los siguientes dispositivos:
Botones pulsadores (push boton).
Sensor de presencia con leds infrarrojos.
Sensor térmico ( termistor)
Sensor de luz (fotorresistencia.
Estos elementos nos sirven para desarrollar algunas prácticas con el
microcontrolador y la tarjeta de adquisición de datos.
3.2 ELEMENTOS DE ENTRADA DEL MICROCONTROLADOR.
El microcontrolador posee dos puerto de entrada/salida: el puerto “B”
con 8 bits y el puerto”A” que cuenta con 5 bits, cada pin corresponde
a un bit y puede ser configurado como entrada o salida según sea
necesario, pero por cuestiones que ya experimentamos, se
recomienda usar el puerto A como puerto de entradas, ya que puede
tomar 150mA de carga, mientras que en el puerto “B” suponiendo que
se utilicen los 8 bits como entradas el microcontrolador tomara 80 mA
de carga.
Otra recomendación que hacemos es conectar los puertos no
utilizados a la fuente de 5v a través de una resistencia de 10KΩ
debido a que como se trata de un dispositivo CMOS podría
deteriorarse por captación electrostática( ver figura3.1)
46
FIGURA 3.1 CONEXIÓN DE LOS PINES NO UTILIZADOS.
El pin 3 perteneciente al puerto “A” puede ser configurado como
entrada/salida o como arranque de un temporizador/contador.
Cuando se programa como entrada este pin funciona como un
disparador Schmitt o Schmitt trigger, ideal para reconocer señales
distorsionadas o con crecimiento lento, los demás pines guardan una
configuración normal de entrada; ver figura 3.2.
FIGURA 3.2 CONFIGURACION DEL PIN3 DEL
MICROCONTROLADOR.
47
3.3 ELEMENTOS DE ENTRADA
ADQUISICION DE DATOS.
PARA
LA
TARJETA
DE
La tarjeta de adquisición de datos cuenta con 5 buses para el ingreso
de datos hacia la PC y para ello utilizamos el CI 74LS245 como
elemento de protección para la PC. Los buses de entrada van del bit
E3 que se encuentra en el pin 16 del conector DB25 al bit E7 que se
encuentra en el pin 11 del conector ya que los bits,0, y 1 son de uso
reservado y el bit 2 no se utiliza.
3.4 DESARROLLO DEL HARDWARE DE ENTRADAS
BOTON PULSADOR
Es un elemento que permite el paso o interrupción de la corriente
mientras es accionado. Cuando ya no se actúa sobre él vuelve a su
posición de reposo.
Puede ser el contacto normalmente cerrado en reposo NC, o con el
contacto normalmente abierto Na.
En la siguiente figura se muestra su símbolo eléctrico y su aspecto
físico.
FIGURA 3.3 SIMBOLO Y ASOECTO FISICO DEL PULSADOR.
48
El botón pulsador consta de una lámina conductora que establece
contacto con los dos terminales al oprimir el botón y un muelle que
hace recobrar a la lámina su posición primitiva al cesar la presión
sobre el botón pulsador. La siguiente figura muestra el funcionamiento
de un pulsador.
FIGURA 3.4 VISTA INTERNA DE UN PULSADOR.
El hardware de entradas cuenta con 8 botones pulsadores, uno para
cada bit limitados con una resistencia y con un header a la salida de
cada pulsador para mandar pulsos al microcontrolador, la siguiente
figura muestra el diagrama eléctrico del panel de pulsadores y la
apariencia del hardware.
49
FIGURA 3.6 ESQUEMA ELECTRICO DEL HARDWARE DE
BOTONES.
FIGURA 3.7 VISTA FISICA DEL HARDWARE DE BOTONES.
50
3.5 SENSOR DE PRESENCIA.
Estos sensores son muy usados en algunas industrias para contar
piezas, detectar colores, etc., ya que reemplazan una palanca
mecánica por un rayo de luz que puede ser usado en distancias de
menos de 20 mm hasta de varias centenas de metros, de acuerdo
con los lentes ópticos empleados.
Hoy en día la mayoría de los sensores fotoeléctricos utilizan LEDs
como fuentes de luz. Un LED es un semiconductor, eléctricamente
similar a un diodo, pero con la característica de que emite luz cuando
una corriente circula por él en forma directa.
Los LEDs pueden ser construidos para que emitan en verde, azul,
amarillo, rojo, infrarrojo, etc. Los colores más comúnmente usados en
aplicaciones de sensado son rojo e infrarrojo, pero en aplicaciones
donde se necesite detectar contraste, la elección del color de emisión
es fundamental, siendo el color más utilizado el verde. Los
fototransistores son los componentes más ampliamente usados como
receptores de luz, debido a que ofrecen la mejor relación entre la
sensibilidad a la luz y la velocidad de respuesta, comparado con los
componentes fotorresistivos, además responden bien ante luz visible
e infrarroja. Las fotocélulas son usadas cuando no es necesaria una
gran sensibilidad, y se utiliza una fuente de luz visible. Por otra parte
los fotodiodos donde se requiere una extrema velocidad de respuesta.
51
Fuentes de luz habituales
Color
Rango
Características
No visible, son relativamente inmunes a la
luz ambiente artificial. Generalmente se
890…950
INFRARROJO
utilizan para detección en distancias
nm
largas y ambientes con presencia de
polvo.
ROJO
Al ser visible es más sencilla la alineación.
660…700 Puede ser afectado por luz ambiente
nm
intensa, y es de uso general en
aplicaciones industriales.
VERDE
Al ser visible es más sencilla la alineación.
560…565 Puede ser afectado por luz ambiente
nm
intensa, generalmente se utiliza esta
fuente de luz para detección de marcas.
FUNCIONAMIENTO
Principio básico de funcionamiento: emisión y recepción de luz. Tanto
en el emisor como en el receptor existen pequeñas lentes ópticas que
permiten concentrar el haz de luz y se encuentran en un mismo
encapsulado. Generalmente trabajan por reflexión de la luz, es decir,
el emisor emite luz y si esta luz es reflejada por un objeto, el receptor
lo detecta.
52
CONFIGURACION
EL sensor utilizado es de configuración tipo Barrera emisorreceptor. Las barreras tipo emisor-receptor están compuestas de dos
partes, un componente que emite el haz de luz, y otro componente
que lo recibe. Se establece un área de detección donde el objeto a
detectar es reconocido cuando el mismo interrumpe el haz de luz,
como se muestra en la figura 3.8.
FIGURA 3.8 SENSOR BARRERA.
Debido a que el modo de operación de esta clase de sensores se
basa en la interrupción del haz de luz, la detección no se ve afectada
por el color, la textura o el brillo, pero si en el caso de los objetos
transparentes, estos son muy difíciles de detectar para este tipo de
sensores. del objeto a detectar. De todos modos el tamaño del objeto
debe ser tomado en cuenta ya que algunos modelos de barreras
emisor-receptor tienen ajuste de sensibilidad para permitir la
detección (o no) de objetos de diferentes tamaños.
Los sensores de tipo barrera, es por mucho la primera y mejor opción
que uno tendría que revisar por lo siguiente: Larga distancia de
detección. Detección confiable en ambientes sucio, con polvo o con
mucha humedad. No son tan fácilmente engañados por objetos
brillantes. Detección de objetos pequeños con alta repetitividad.
53
Las contras pueden ser el precio ya que se compone de 2 partes.
Tiempo de montaje ya que tienen que montarse 2 partes y se tienen
que alinear.
3.6 SENSOR DE TEMPERATURA.
Los transductores eléctricos de temperatura utilizan diversos
fenómenos que son influidos por la temperatura y entre los cuales
figuran:
·
Variación de resistencia en un conductor (sondas de
resistencia).
•
•
•
•
Variación de resistencia de un semiconductor (termistores).
f.e.m. creada en la unión de dos metales distintos
(termopares).
Intensidad de la radiación total emitida por el cuerpo
(pirómetros de radiación).
Otros fenómenos utilizados en laboratorio (velocidad del
sonido en un gas, frecuencia de resonancia de un cristal,
etc.).
Los sensores de temperatura más sencillos son los que actúan sobre
un interruptor miniatura y en general, éstos son de dos tipos:
Sistemas de Dilatación de un fluido y Bimetálicos. Los primeros
actúan al dilatarse el líquido o el gas contenido dentro de un capilar y,
los segundos actúan directamente el interruptor mediante el efecto de
diferencia de dilataciones de tiras de dos metales diferentes. En
general, se usan para interrumpir hasta corrientes de 30 Amperes en
120 volts.
54
TIPOS DE SENSORES.
Enseguida se muestra una tabla con los principales sensores de
temperatura enlistando sus ventajas y desventajas.
RTD
Ventajas
Más estable.
Más preciso.
Más lineal que
los
Termopares.
Desventajas Caro.
Lento.
Precisa fuente
de
alimentación.
Pequeño
cambio de
resistencia.
Medida de 4
hilos
Autocalentable
Termistor
Sensor de IC
Termopar
Alto rendimiento El más lineal
Rápido
El de más alto
Medida de dos rendimiento
Hilos
Económico
Económico.
Autoalimentado
Robusto
Económico
Amplia variedad
de formas físicas
Amplia gama de
temperaturas
No lineal.
Rango de
Temperaturas
limitado.
Frágil.
Precisa fuente
de
alimentación.
Autocalentable
No lineal
Baja tensión
Precisa referencia
El menos estable
El menos sensible
Limitado a < 250
ºC
Precisa fuente de
alimentación
Lento
Autocalentable
Configuraciones
limitadas
Por algunas de las razones que se enlistan en la tabla anterior el
sensor seleccionado es el termistor, ya que aunque presenta varias
limitaciones, es muy interactivo para utilizarlo dentro de la enseñanza.
A continuación daremos más datos sobre el termistor.
55
TERMISTOR Los Termistores son semiconductores electrónicos con un coeficiente
de temperatura de resistencia negativo de valor elevado y que
presentan una curva característica lineal tensión-corriente siempre
que la temperatura se mantenga constante.
La relación entre la resistencia y la temperatura viene dada por la
expresión.
En la que:
Rt= Resistencia en ohmios a la temperatura absoluta Tt.
R0= Resistencia en ohmios a la temperatura absoluta de referencia
T0.
b = constante dentro de un intervalo moderado de temperaturas.
Son de pequeño tamaño y su tiempo de respuesta depende de la
capacidad térmica y de la masa del termistor variando de fracciones
variando de fracciones de segundo a minutos.
La distancia entre el termistor y el instrumento de medida puede ser
considerable siempre que el elemento posea una alta resistencia
comparada con la de los cables de unión. La corriente que circula por
el termistor a través del circuito de medida debe ser baja para
garantizar que la variación de resistencia del elemento sea debida
exclusivamente a los cambios de temperaturas del proceso.
56
Los termistores encuentran su principal aplicación en la
compensación de temperatura, como temporizadores y como
elementos sensibles en vacuómetros.
3.7 SENSOR DE INTENSIDAD DE LUZ.
Los sensores de intensidad de luz son utilizados para activarse
dependiendo de la cantidad de luz que exista, dependiendo del ajuste
que hayamos hecho. El elemento más utilizado es la LDR (Light
Dependent Resistor) o resistencia dependiente de la luz, como su
propio nombre indica es una resistencia que varia su valor en función
de la luz que incide sobre su superficie. Contra mas sea la intensidad
de luz que incida en la superficie de la LDR menor será su resistencia
y contra menos luz incida mayor será la resistencia.
FUNCIONAMIENTO.
El circuito consta de un divisor de tensión formado por la LDR, una
resistencia y un disparador trigger schmitt inversor modelo 74LS14.
Como la LDR varia en función de la luz, la señal de salida del divisor
también lo hará y cuando pase el umbral de disparo del trigger schmitt
este cambiara el estado de su salida según corresponda.
Los umbrales de disparo para el 74LS14 son de 0,9 y 1,7 voltios, esto
quiere decir que cuando la señal en la entrada del disparador supere
los 1,7 voltios se tomara como un 1 lógico en la entrada y la salida al
ser inversa tomara el nivel lógico bajo o 0 voltios, si el voltaje de
entrada baja por debajo de 0,9 voltios se tomara como un 0 lógico en
la entrada con lo que la salida tomara un nivel lógico 1.
57
El circuito integrado 74LS14 dispone en su interior de 6 puertas
inversoras trigger schmitt, así que hay que tener especial cuidado en
no dejar ninguna entrada no usada al aire, esto es sin conexión
alguna ya que la puerta empezara a oscilar y podría causar la
destrucción de dicha puerta, para que esto no suceda hay que
conectar todas las entradas a un nivel lógico estable, normalmente a
GND. las salidas se dejaran como es lógico al aire ya que tendrán el
nivel lógico inverso que en su entrada.
El diagrama del circuito propuesto es el siguiente
FIGURA 3.8 DIAGRAMA SENSOR DE LUZ.
Además de las opciones que incorporamos, dejamos abierta la
posibilidad de que el usuario accese los datos por cualquier otro
medio que necesite, ya sea algún sensor o interruptor. Enseguida
incorporamos algunos programas para realizar las practicas de
ingreso de datos más sencillas.
58
CAPITULO 4. DESARROLLO DEL HARDWARE DE SALIDA DE
DATOS.
En este capitulo se analizara el hardware de salida de datos del
microcontrolador y la tarjeta de adquisición de datos así como sus
componentes y la realización de algunas practicas.
El hardware de salida de datos consta de los siguientes elementos:
Motor de C.D.
Motor a pasos.
Leds de señalización.
Display de 7 segmentos.
Zumbador.
4.1
ELEMENTOS
DE
MICROCONTROLADOR.
SALIDA
DE
DATOS
DEL
Como ya se menciono con anterioridad el microcontrolador cuenta
con dos puertos bidireccionales que son el puerto “A” y el puerto “B”,
por conveniencia nosotros configuraremos el puerto “B” como nuestro
puerto de salida ya que este nos puede entregar 100mA a la salida
de sus pines, suficiente carga para encender un led señalización,
además de poder arrancar pequeños motores de CD.
Para la tarjeta de adquisición de datos contamos con 8 buses de
salida de datos nos proporcionan 200mA para alimentar una
pequeña carga.
A continuación nombraremos los elementos de
incorporamos con sus principales características.
salida que
59
4.2MOTOR DE C.D
El motor de cd es básicamente un transductor de par que convierte la
energía eléctrica en energía mecánica. El par desarrollado por el eje
del motor es directamente proporcional al flujo en el campo y a la
corriente en la armadura
4.3MOTOR A PASOS.
El motor de paso a paso es un dispositivo electromecánico que
convierte una serie de impulsos eléctricos en desplazamientos
angulares discretos, lo que significa es que es capaz de avanzar una
serie de grados (paso) dependiendo de sus entradas de control. El
motor paso a paso se comporta de la misma manera que un
convertidor digital-analógico y puede ser gobernado por impulsos
procedentes de sistemas lógicos.
Este motor presenta las ventajas de tener alta precisión y repetibilidad
en cuanto al posicionamiento. Entre sus principales aplicaciones
destacan como motor de frecuencia variable, motor de corriente
continua sin escobillas, servomotores y motores controlados
digitalmente.
PRINCIPIO DE FUNCIONAMIENTO
El motor a pasos es muy importante dentro de la realización de las
prácticas en el laboratorio de control recontrol por ello que su
incorporación al hardware de salidas.
El motor a pasos está constituido, como la mayoría de motores
eléctricos, esencialmente de dos partes:
Una parte fija llamada "estator" , construida a base de
cavidades en las que van depositadas las bobinas que
60
excitadas convenientemente formarán los polos norte-sur
de forma que se cree un campo magnético giratorio.
Una parte móvil, llamada "rotor" construida bien con un
imán permanente o bien por un inducido ferromagnético,
con el mismo número de pares de polos que el contenido
en una sección de la bobina del estator; este conjunto va
montado sobre un eje soportado por dos cojinetes que le
permiten girar libremente.
Estos motores poseen la habilidad de poder quedar enclavados en
una posición o bien totalmente libres. Si una o más de sus bobinas
están alimentadas, el motor estará enclavado en la posición
correspondiente y por el contrario quedará completamente libre si no
circula corriente por ninguna de sus bobinas.
En la siguiente figura se muestra el comportamiento del motor a
pasos.
FIGURA 4.1 SECUENCIA DEL MOTOR A PASOS.
Paso 4; La activación
de la bobina 4 permite
de nuevo la rotación
Paso 1; la bobina 1 Paso 2; la bobina 1
de 3.6°. Cuando la
esta activada,
se apaga, y la bobinaPaso 3; De nuevo la bobina 1 se cargue de
atrayendo los
2 (derecha) se
bobina 2 se apaga, y nuevo, un diente
cuatro dientes
activa, moviendo los la bobina 3 se activa. habrá permutado su
superiores
dientes cercanos a la Resulta otra rotación posición a la derecha;
imantados del
derecha. Resulta unade 3.6°.
como hay 25 dientes,
rotor.
rotación de 3.6°.
se necesitaran 100
pasos para un giro
completo.
61
CONTROL DE LAS BOBINAS
Para el control del motor paso a paso de este tipo (bipolar), se
establece el principio de "puente en H", si se activan T1 y T4,
permiten la alimentación en un sentido; si cambiamos el sentido de la
alimentación activando T2 y T3, cambiaremos el sentido de
alimentación y el sentido de la corriente ver figura 4.2 Y 4.3 .
FIGURA 4.2 TOPOLOGÍA DE "PUENTE EN H" PARA LAS
BOBINAS A Y B
FIGURA 4.3
VARIACIÓN DE LA ALIMENTACIÓN DE
CORRIENTE DE LA BOBINA A SEGÚN LOS TRANSISTORES T1,
T2, T3, T4
62
4.4 LEDS DE SEÑALIZACIÓN.
Al hardware de salidas se incorporaron 8 diodos emisores de luz
(leds), ya que es importante observar el comportamiento de nuestro
sistema y que mejor que con una señalización que nos indique que se
están moviendo datos o que simulen la presencia de motores o
cualquier otro elemento que se quiera controlar, a continuación se
presenta la información básica de los leds.
EL DIODO
Es un dispositivo semiconductor que permite el paso de la corriente
eléctrica en una dirección y la bloquea en la opuesta. Esta Formado
por dos cristales Semiconductores, uno con escasez de electrones
denominado tipo P, y el segundo con exceso de electrones, o tipo N.
Esta unión semiconductora se encapsula bajo formas distintas que
dependen del fabricante y a la función a la que se destinan, y que
disponen de unos terminales conductores para su conexión con otros
componentes. El terminal conectado al semiconductor de tipo P
recibe el nombre de ánodo, mientras que el conectado de tipo N
recibe el nombre de cátodo, un diodo se comportara como un circuito
de baja resistencia siempre que el ánodo este polarizado a superior
tensión que el cátodo. En caso contrario, presentara una elevada
resistencia entre sus terminales y se comportara como un circuito
abierto. Esta descripción corresponde a un diodo de propósito
general. Existen diodos construidos para aprovechar alguna
característica especial, entre los que destacan el diodo emisor de luz
(LED) y el diodo Zener.
DIODO EMISOR DE LUZ (LED)
Cuando un diodo es polarizado directamente, se convierte en
conductor. El cambio energético que experimentan los electrones en
estas circunstancias se manifiesta en algunos compuestos, como el
63
arseniuro de galio, con la presencia de una radiación de luz roja
visible o infrarroja.
•
•
Galio, de símbolo Ga, es un elemento metálico que se
mantiene en estado líquido en un rango de temperatura más
amplio que cualquier otro elemento.
El galio se encuentra en el grupo 13 (o IIIA) del sistema
periódico. Su número atómico es 3.
Los diodos emisores de luz están especialmente diseñados para
aprovechar la emisión de luz, y se construyen de forma que la unión
queda en la zona mas exterior posible del dispositivo, protegidos por
un material transparente. Según el material semiconductor empleado,
se obtienen diodos luminiscentes de color rojo, verde o amarillo.
Existen también versiones con dos colores, provistos con una
estructura de tres patillas, común la del centro y especifica para color
la de cada extremo. Su símbolo electrónico y su apariencia física se
muestran en la siguiente figura 4.4.
FIGURA 4.4 SIMBOLO Y ASPECTO DE UN LED.
A continuación se presenta el hardware que contiene los leds, en la
figura 4.5.
64
FIGURA 4.5 ASPECTO FISICO DEL HARDWARE DE
SEÑALIZACION.
65
4.5 DISPLAY DE SIETE SEGMENTOS.
El display de siete segmentos se utiliza para representar las cifras
numéricas se agrupan siete diodos en segmentos. Estos diodos
tienen conectados entre si todos los ánodos.
Un Display de este tipo está compuesto por siete u ocho leds de
diferentes formas especiales y dispuestos sobre una base de manera
que puedan representarse todos los símbolos numéricos y algunas
letras. Los primeros siete segmentos son los encargados de formar el
símbolo y con el octavo podemos encender y apagar el punto decimal
su apariencia es la que se muestra en la figura 4.6.
FIGURA 4.6 ASPECTO DE UN DISPLAY DE 7 SEGMENTOS.
Denominación de los segmentos de Display ver la figura
FIGURA 4.7 SEGMENTOS DEL DISPLAY.
66
ESQUEMA
Anteriormente se ha comentado que el display que se va a estudiar
es de cátodo común, esto significa que todos los cátodos de los leds
están conectados, alimentaremos cada led por separado por su
correspondiente ánodo.
También existen displays de ánodo común, éstos son similares a los
que vamos a utilizar en nuestro montaje con la salvedad de que las
conexiones a alimentación y masa serían al revés.
La correspondencia de los pines y cada uno de los leds del display
puede verse en la siguiente figura 4.8:
FIGURA 4.8 CONFIGURACION DE LOS PINES DEL DISPLAY.
Los pines 3 y 8 corresponden con el cátodo de los leds (son los
situados en el centro de las dos filas de pines), para el resto se sigue
el criterio mostrado en la tabla.
67
Por ejemplo, si alimentamos el Display por el pin 2 (utilizando una de
las resistencias comentadas) y unimos el pin 3 o el 8 a masa, se
encenderá el segmento inferior (marcado como d en la figura).
Si alimentamos por el pin 5 lo que encenderemos será el punto
decimal indicado como en la figura DP (del inglés Dot Point).
CARACTERÍSTICAS
Solidez: excelente
Angulo de visibilidad: 150 grados
Consumo por dígito: 150 mW
Vida media en horas: 100000
Luminosidad: buena
Facilidad de montaje: excelente
Vcc (general): 1'5 V
La Vcc depende del color del LED. Para un color rojo:
Vcc: 1'7 V
Vcc (máx): 2 V
Dependiendo de la tensión aplicada obtendremos una intensidad. Es
aconsejable no sobrepasar la Vcc recomendada. Si se alcanza la Vcc
máxima se puede destruir el segmento.
PROTECCIÓN
Cada segmento (y el punto) es un led como cualquier otro. Debido a
esto la corriente media que se debe aplicar es de 15 mA.
Dependiendo de la lógica que estemos empleando debemos utilizar
una resistencia por cada entrada y así no forzar el dispositivo:
Lógica TTL (5V): 220 ohmios
Lógica CMOS (12V): 680 ohmios. Esta resistencia debe ser situada
en cada patilla, haciendo de puente entre la señal lógica
68
4.6 ZUMBADOR.
El zumbador es una señalización auditiva de que existe un pulso a la
salida de algún puerto o bus según corresponda, además puede ser
una señal de alarma.
Un zumbador electrónico es un “miniparlante” (minibocina) de bajo
costo que se utiliza para hacer sonidos. El sonido generado por el
zumbador puede cambiarse alterando las señales electrónicas
suministradas por el microcontrolador.
Los zumbadores se utilizan en una gran variedad de diferentes
productos para dar “retroalimentación” al usuario. Un buen ejemplo de
esto es una máquina expendedora, la cual emite un sonido cada vez
que se presiona un botón para escoger un refresco o algo para
picotear. Este sonido da retroalimentación al usuario para indicarle
que se recibió la señal del botón presionado. Otros tipos de
zumbadores se utilizan a menudo en tarjetas musicales de
cumpleaños, para tocar una melodía cuando se abre la tarjeta.
El símbolo del zumbador y su aspecto físico se presentan en la figura
4.9.
FIGURA 4.9 SIMBOLO Y CONEXIÓN DE UN ZUMBADOR.
69
CAPITULO 5
HARDWARE DE INTERFAZ PARA TARJETA DE ADQUISICIÓN DE
DATOS Y MICROCONTROLADOR.
Este hardware fue diseñado para ser utilizado como interfaz de
potencia para la tarjeta de adquisición de datos y el microcontrolador,
a su vez nos permite el desarrollo de las prácticas que se realizan en
el laboratorio.
El hardware de interfaz cuenta con los siguientes elementos:
C.I.74LS245
Zocalo para inserción del PIC16F84A
Otoacoplador MOC3011
SCR106B
Relevador de 5 volts
5.1 ELEMENTOS DEL INTERFAZ.
C.I.74LS245
Como se menciono con anterioridad es C.I. transmite la información y
protege la PC y el microcontrolador de una sobrecarga,
Zócalo para inserción del PIC16F84A
Este elemento permite colocar y retirar el microcontrolador sin
necesidad de soldarlo para poder hacer las pruebas necesarias.
Otoacoplador MOC3011
Un optoacoplador combina un dispositivo semiconductor formado por
un fotoemisor, un fotorreceptor y entre ambos hay un camino por
70
donde se transmite la luz. Todos estos elementos se encuentran
dentro de un encapsulado que por lo general es del tipo DIP.
Emplean un haz de radiación luminosa para pasar señales de un
circuito a otro sin conexión eléctrica. Fundamentalmente este
dispositivo está formado por una fuente emisora de luz, y un
fotosensor de silicio, que se adapta a la sensibilidad espectral del
emisor luminoso.
Tipos de Optoacopladores
Existen varios tipos de optoacopladores cuya diferencia entre sí
depende de los dispositivos de salida que se inserten en el
componente. Según esto tenemos los siguientes tipos:
•
Fototransistor o lineal, conmuta una variación de corriente de
entrada en una variación de tensión de salida. Se compone
de un optoacoplador con una etapa de salida formada por un
transistor BJT. Se utiliza en acoplamientos de líneas
telefónicas, periféricos, audio, etc.
•
Optotiristor: Diseñado para aplicaciones donde sea preciso un
aislamiento entre una señal lógica y la red.
•
Optotriac: Se compone de un optoacoplador con una etapa
de salida formada por un triac. Al igual que el optotiristor, se
utiliza para aislar una circuiteria de baja tensión a la red.
•
Fototriac de paso por cero: Optoacoplador en cuya etapa de
salida se encuentra un triac de cruce por cero. El circuito
interno de cruce por cero conmuta al triac sólo en los cruce
por cero de la corriente alterna.
71
En general pueden sustituir a relés ya que tienen una velocidad de
conmutación mayor, así como, la ausencia de rebotes.
Su símbolo se muestra en la figura
FIGURA 5.1 SIMBOLO DEL OPTOACOPLADOR.
Encapsulados
El encapsulado varia en función del tipo de optoacoplador y de su
aplicación, así como del número de unidades que se encuentren en
su interior. Normalmente, los pines del elemento emisor están a un
lado de la cápsula y los del sensor en el lado opuesto. En el caso del
moc 3011 es un encapsulado de tipo DIP 6 ya que cuenta con seis
pines como se muestra en la figura 5.2.
FIGURA 5.2 ENCAPSULADO DEL CI MOC 3011.
72
SCR.
El rectificador controlado de silicio es un tipo de tiristor formado por
cuatro capas de material semiconductor con estructura PNPN o bien
NPNP. El nombre proviene de la unión de Tiratrón y Transistor.
FIGURA 5.3 SIMBOLO DEL SCR.
El SCR y la corriente Alterna
Se usa principalmente para controlar la potencia que se entrega a
una carga. (en el caso de la figura es un bombillo o foco)
La fuente de voltaje puede ser de 110V c.a., 120V c.a., 240V c.a. ,
etc.
El circuito RC produce un corrimiento de la fase entre la tensión de
entrada y la tensión en el condensador que es la que suministra la
73
corriente a la compuerta del SCR. Puede verse que el voltaje en el
condensador (en azul) está atrasado con respecto al voltaje de
alimentación (en rojo) causando que el tiristor conduzca un poco
después de que el tiristor tenga la alimentación necesaria para
conducir.
Durante el ciclo negativo el tiristor se abre dejando de conducir. Si
se modifica el valor de la resistencia, por ejemplo si utilizamos un
potenciómetro, se modifica el desfase que hay entre las dos
tensiones antes mencionadas ocasionando que el SCR se active en
diferentes momentos antes de que se desactive por le ciclo negativo
de la señal. y deje de conducir.
FIGURA 5.4 CONEXIÓN DEL SCR.
Nosotros seleccionamos el SCR C106B ya que cumple con las
características eléctricas que necesitamos.
74
RELEVADOR.
Es un dispositivo electromecánico, que funciona como un interruptor
controlado por un circuito eléctrico en el que, por medio de un
electroimán, se acciona un juego de uno o varios contactos que
permiten abrir o cerrar otros circuitos eléctricos independientes. Fue
inventado por Joseph Henry en 1835 Ya que el relé es capaz de
controlar un circuito de salida de mayor potencia que el de entrada,
puede considerarse, en un amplio sentido, una forma de amplificador
eléctrico. Como tal se emplearon en telegrafía, haciendo la función de
repetidores que generaban una nueva señal con corriente procedente
de pilas locales a partir de la señal débil recibida por la línea. Se les
llamaba "relevadores". De ahí "relé".
Contactos
Los contactos de un relé pueden ser Normalmente Abiertos (NA o NO
(Normally Open)), por sus siglas en inglés), Normalmente Cerrados
(Normally Closed)(NC) o de conmutación.
Los contactos Normalmente Abiertos conectan el circuito
cuando el relé es activado; el circuito se desconecta
cuando el relé está inactivo. Este tipo de contactos son
ideales para aplicaciones en las que se requiere
conmutar fuentes de poder de alta intensidad para
dispositivos remotos.
Los contactos Normalmente Cerrados desconectan el
circuito cuando el relé es activado; el circuito se conecta
cuando el relé está inactivo. Estos contactos se utilizan
para aplicaciones en las que se requiere que el circuito
permanezca cerrado hasta que el relé sea activado.
Los contactos de conmutación controlan dos circuitos: un
contacto Normalmente Abierto y uno Normalmente
Cerrado con una terminal común.
75
En la Figura 5.5 se puede ver el aspecto de un relé enchufable para
pequeñas potencias.
FIGURA 5.5 RELE ENCHUFABLE.
Existen multitud de tipos distintos de relés, dependiendo del número
de contactos (cuando tienen más de un contacto conmutador se les
llama contactores en lugar de relés), intensidad admisible por los
mismos, tipo de corriente de accionamiento, tiempo de activación y
desactivación, etc.
Se utilizo el relevador SUN HOLD modelo RAS-0510 ya que se
alimenta de 5 volts de corriente directa y soporta una carga de 10 A a
120 v A/C y de 7 A a 250 v A/C.
76
5.2 FUNCIONAMIENTO DE LA TARJETA DEL HARDWARE.
Se ingresan los datos a través del header de entradas pasando por
unos led`s de señalización que nos indican cual bit se esta activando
y enviando al buffer que transmite la información a otro header el que
se selecciona si se reenvía al microcontrolador o a la tarjeta de
adquisición de datos, ya teniendo los datos en el microcontrolador o
en la tarjeta procedemos a seleccionar el medio de salida de los datos
ya sea a través del optoacoplador o del relevador los cuales son los
encargados de la activación de nuestro elemento final.
FIGURA 5.6 ASPECTO FISICO DEL HARDWARE DE INTREFAZ.
77
CAPITULO 6
CONCLUSIONES
Lo que se llevo a cabo en este proyecto fue la implementación de una
interfaz de potencia que permitiera el envio de datos obtenidos por
una PC o un microcontrolador a un elemento de alta potencia como
un motor de CA , de modo que el hardware resultara económico y de
fácil interpretación, para ello utilizamos los conocimientos obtenidos
en el laboratorio de control y las clases de electrónica.
Durante la realización del proyecto concluimos que los instrumentos
virtuales se convierten en una herramienta practica y económica en el
momento de adquirir y controlar señales, además de que se puede
implementar dentro de un aula de clases sin ningún problema., que
un sistema de adquisición de datos no es más que un equipo
electrónico cuya función principal es el control o simplemente el
registro de una o varias variables de un proceso cualquiera.
En el desarrollo de este proyecto se analizaron las características
técnicas que se generaron en el desarrollo del dispositivo
implementando las que más se adaptaron a nuestro hardware.
Se logro obtener un elemento importante que optimizara el desarrollo
de prácticas en el laboratorio, abriendo la posibilidad de que el
usuario implemente más elementos conforme sus necesidades vayan
aumentando.
Con el desarrollo de este proyecto se logro un pequeño pero
sustancioso avance por llamar la atención de los alumnos hacia el
interesante mundo del control moderno y sus aplicaciones.
78
BIBIBLIOGRAFIA / CONSULTAS
Rashid, (1995) “Electrónica de potencia circuitos, dispositivos y
aplicaciones” Ed. prentice-Hall.
Peyton, A.J., Walsh, V., (1993) “Analog electronics with Op Amps” Ed.
Cambridge University Press.
Manual de la tarjeta de adquisición de datos Keithley DAS-800.
Manual de usuario de Testpoint. CEC.
MPASM Assembler Quick Reference Guide
Microchip Technology Inc. ( 1996 )
MPSIM Simulator User’s guide
Microchip Technology Inc. ( 1995 )
MPASM Assembler User’s Guide
Microchip Technology Inc. ( 1995 )
Microcontroladores PIC Martín E.Angulo y Angulo I. Editorial ITP
Paraninfo
Micrcocontroladores PIC diseño practico de aplicaciones PIC 16F84
Jose Ma. Angulo Usategui; Ignacio Angulo Martínez
Microcontrolador PIC 16F84 desarrollo de proyectos, Enrique
Palacios ; Fernando Ramiro Editorial Alfaomega
79
ANEXOS
ANEXO
1
PROGRAMAS
MICROCONTROLADOR.
DE
PRACTICAS
PARA
; *************************************************************
; Programa Display.asm
; Contamos hasta 0x5f.
; El valor del contador se visualizará en 8 diodos LED conectados al
puerto B
; a partir de la patilla 1, sin gestión de punto decimal
; Preparado para PIC16F84
; Velocidad del reloj: 4 MHz
; Ciclo de instrucción: 1 MHz = 1 microsegundo
; Interrupciones: A través de PB.0, para detener y recomenzar la
cuenta.
; Perro guardián: Desactivado
; Tipo de Reloj: XT
; Protección del código: Desactivado
; *************************************************************
LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar
; Definición de registros
portb EQU 0x06 ;Hemos conectado el teclado al puerto B
;La dirección 0x06 corresponde al registro PORTB (puerto B)
; en el banco1
TRISB EQU 0X06 ; y TRISB en banco 1
estado EQU 0X03 ; La dirección del registro de estado es la 0x03
pc EQU 0x02 ; Contador de Programa, dirección de memoria actual
de programa
intcon EQU 0x0B ; Registro gestionador de interrupciones
opcion EQU 0x01 ; Registro OPTION. Recordar que está en el banco
1.
; Definición de bits
banco EQU 0X05 ; Bit del registro de estado correspondiente al banco
de datos
Z EQU 0X02 ; Bit indicador de que el registro W está a cero
int EQU 0x00 ; Bit de interrupción externa, es el 0 en el puerto B.
80
intdeg EQU 0x06 ; Bit 6 de OPTION, que indica si la interrupción PB0
es por nivel
alto.
intf EQU 0x01 ; Bit 1 de INTCON, flag de interrupción por PB0.
inte EQU 0x04 ; Bit 4 de INTCON, habilitador de interrupción por PB0.
GIE EQU 0x07 ; Bit 7 de INTCON, habilitador de interrupciones.
; Definición de constantes
w EQU 0 ; Destino de operación = w
f EQU 1 ; Destino de operación = registro
; Definición de variables
contador EQU 0X0C ; Contador
digito EQU 0X0D ; Para almacenar el dígito
; Comienzo del programa.
ORG 0X00 ; Cubrimos el vector de reset
GOTO inicio ; Saltamos a la primera dirección tras el vector de
interrupción
ORG 0x04 ; Vector de interrupción
GOTO RSI
; **************** Inicialización de variables *********************
ORG 0X05
inicio BSF estado,banco ; Cambiamos a la segunda página de
memoria
CLRF TRISB ; Programa la puerta B como de todo salidas
BSF TRISB,int ; Salvo la pata de interrupción PB0, que es de entrada
BSF opcion,intdeg ; Interrupción PB0 cuando esté a nivel alto.
BCF estado,banco ; Volvemos a la página 0.
BCF intcon,intf ; Borramos el flag de interrupción por PB0.
BSF intcon,GIE ; Habilitamos las interrupciones.
BSF intcon,inte ; Habilitamos la interrupción por PB0.
CLRF portb ; Apaga el display, por si había residuos
CLRF contador ; Borra el contador (dirección 0x0C)
CLRW ; Borramos el registro W
; ************************* Cuerpo Principal **************************
Reset CLRF digito ; Comienza a contar por el 0
Siguien MOVF digito,w ; Coloca el siguiente dígito a evaluar en W
CALL Tabla ; Llama a la subrutina para coger el dato
; y hacer la conversión decimal-7 segmentos
MOVWF portb
Pausa DECFSZ contador ; Decrementa contador y repite
81
GOTO Pausa ; hasta que valga 0
INCF digito,f ; Incrementa el valor del dígito al siguiente
MOVF digito,w ; Pone el valor del dígito en W
XORLW 0x0A ; Chekea si el dígito sobrepasa el valor 9
BTFSC estado,Z ; Comprobando con un xor si W vale 0 (Z=1)
GOTO Reset ; Si Z=1 resetea el dígito y comienza de nuevo la cuenta
GOTO Siguien ; En caso contrario, continua la cuenta
; ********************** La tabla queda definida aquí *********************
Tabla ADDWF pc,f ; Suma al contador de programa el valor de offset,
es decir,
; el valor del dígito. Así se genera un PC distinto
; según su valor,
; asegurando que vaya a la línea correcta de la tabla
RETLW 0x7F ; 0 en código 7 segmentos (desplazado a la izquierda)
RETLW 0x0C ; 1 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xB6 ; 2 en código 7 segmentos (desplazado a la izquierda)
RETLW 0x9F ; 3 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xCC ; 4 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xDA ; 5 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xFA ; 6 en código 7 segmentos (desplazado a la izquierda)
RETLW 0x0F ; 7 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xFF ; 8 en código 7 segmentos (desplazado a la izquierda)
RETLW 0xDF ; 9 en código 7 segmentos (desplazado a la izquierda)
RSI BTFSS intcon,intf ; Si no es interrumpido por PB0, volver al
programa
RETFIE
pulsado BTFSC portb,0 ; Retenemos hasta que se suelte el pulsador
GOTO pulsado
MOVLW 0xFF ; Puesto que se habrá de incrementar
MOVWF digito ; Ponemos el marcador a FF
BCF intcon,intf ; Borramos la bandera de interrupción
BSF intcon,inte ; Y rehabilitamos la interrupción por PB0
RETFIE
END
LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar
; Definición de registros
portb EQU 0x06 ;Hemos conectado el display al puerto B
82
;La dirección 0x06 corresponde al registro PORTB
;(puerto B) en el banco1
TRISB EQU 0X06 ; y TRISB en banco 1
Estado EQU 0X03 ; La dirección del registro de estado es la 0x03
pc EQU 0x02 ; Contador de Programa, es decir,
;dirección de memoria actual de programa
; Definición de bits
banco EQU 0X05 ; Bit del registro de estado correspondiente
; al banco de datos
Z EQU 0X02 ; Bit indicador de que el registro W está a cero
; Definición de constantes
w EQU 0 ; Destino de operación = w
f EQU 1 ; Destino de operación = registro
; Definición de variables
contador EQU 0X0C ; Contador
digito EQU 0X0D ; Para almacenar el dígito
; Comienzo del programa.
ORG 0X00 ; Cubrimos el vector de reset
GOTO inicio ; Saltamos a la primera dirección tras el vector de
interrupción
; ************************ Inicialización de variables
*************************
ORG 0X05
inicio BSF estado,banco ; Cambiamos a la segunda página de
memoria
CLRF TRISB ; Programa la puerta B como de todo salidas
BCF estado,banco ; Volvemos a la página 0.
CLRF portb ; Apaga el display, por si había residuos
CLRF contador ; Borra el contador (dirección 0x0C)
CLRW ; Borramos el registro W
HEXAGESIMAL 7-SEGMENTOS
$00
$01
$02
$03
$04
$05
$06
$07
83
$08
$09
$3F
$06
$5B
$4F
$66
$6D
$7D
$07
$7F
$6F
63
; ************************* Cuerpo Principal **************************
Reset CLRF digito ; Comienza a contar por el 0
Siguien MOVF digito,w ; Coloca el siguiente dígito a evaluar en W
CALL Tabla ; Llama a la subrutina para coger el dato
; y hacer la conversión decimal-7 segmentos
MOVWF portb
Pausa DECFSZ contador ; Decrementa contador y repite
GOTO Pausa ; hasta que valga 0
INCF digito,f ; Incrementa el valor del dígito al siguiente
MOVF digito,w ; Pone el valor del dígito en W
XORLW 0x0A ; Chekea si el dígito sobrepasa el valor 9
BTFSC estado,Z ; Comprobando con un xor si W vale 0 (Z=1)
GOTO Reset ; Si Z=1 resetea el dígito y comienza de nuevo la
cuenta
GOTO Siguien ; En caso contrario, continua la cuenta
; con el siguiente dígito
Tabla ADDWF pc,f ; Suma al contador de programa el valor de offset,
es decir,
; el valor del dígito. Así se genera un PC distinto según su
valor,
; asegurando que vaya a la línea correcta de la tabla
RETLW 0x3F ; 0 en código 7 segmentos
RETLW 0x06 ; 1 en código 7 segmentos
RETLW 0x5B ; 2 en código 7 segmentos
RETLW 0x4F ; 3 en código 7 segmentos
RETLW 0x66 ; 4 en código 7 segmentos
84
RETLW 0x6D ; 5 en código 7 segmentos
RETLW 0x7D ; 6 en código 7 segmentos
RETLW 0x07 ; 7 en código 7 segmentos
RETLW 0x7F ; 8 en código 7 segmentos
RETLW 0x6F ; 9 en código 7 segmentos
END
LIST P=16F84
#INCLUDE "p16f84.inc"
;-------------------------------------------------------------------------;
; Here we define our own personal registers and give them names
;
;-------------------------------------------------------------------------;
SEC
EQU H'0C'
; this register holds the value of seconds
SEC10 EQU H'0D'
; holds value of 10's of seconds
MIN
EQU H'0E'
; holds value of minutes
MIN10 EQU H'0F'
; holds value of 10's of minutes
DIGCTR EQU H'10'
; 8 bit counter, only 2 lowest bits actually
used
DIGIT EQU H'11'
; hold digit number to access table
INTCNT EQU H'12'
; counts # interrupts to determine when 1
sec up
FUDGE EQU H'13'
; allows slight adjustment every 7
interrupts
RUNFLG EQU H'14'
; bit 0 only, tells if countdown in progress
W_TEMP EQU H'15'
; temporarily holds value of W
STATUS_TEMP EQU H'16'
; temporarily holds value of STATUS
SECNT EQU H'17'
; used in counting 50, 20 msec delays for
1 sec
CNTMSEC EQU H'18'
; used in timing of milliseconds
ALARM EQU H'19'
; bit 0 only, used as flag for when to alarm
OFFSET EQU H'1A'
; hold offset of address in EEPROM
;-------------------------------------------------------------------------;
; Here we give names to some numbers to make their use more
clear
;
;-------------------------------------------------------------------------;
85
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
START_PB D'7'
SET_PB D'6'
SELECT_PB D'4'
RB4
D'4'
RB5
D'5'
;-------------------------------------------------------------------------;
;
We set the start of code to orginate a location zero
;-------------------------------------------------------------------------;
;
ORG 0
GOTO MAIN
NOP
NOP
NOP
GOTO INTERRUPT
; jump to the main routine
; interrupt routine
;-------------------------------------------------------------------------;
; This table is used to get a bit pattern that will turn on a digit
;-------------------------------------------------------------------------;
BITPAT
ADDWF PCL,f
RETLW H'0E'
RETLW H'0D'
RETLW H'0B'
RETLW H'07'
; get bit pattern for transistors
; a low, (0), turns the transistor on
;-------------------------------------------------------------------------;
;
Initialization routine sets up ports and timer
;-------------------------------------------------------------------------;
INIT
MOVLW H'C0'
outputs
TRIS PORTB
MOVLW H'10'
TRIS PORTA
MOVLW H'03'
;
;
; PB6 & PB7 inputs all others
; Port RA4 input, others outputs
; prescaler on TMR0 and 1:16
86
OPTION
MOVLW H'A0'
MOVWF INTCON
MOVLW H'F4'
MOVWF INTCNT
MOVLW H'06'
MOVWF FUDGE
CLRF OFFSET
RETURN
; GIE & T0IE set T0IF cleared
; initialize INTCNT
; initialize FUDGE
; initialize OFFSET
;-------------------------------------------------------------------------;
; This is the interrupt routine that is jumped to when TMR0 overflows
;
;-------------------------------------------------------------------------;
INTERRUPT MOVWF W_TEMP
; save W
SWAPF STATUS,W
; save status
MOVWF STATUS_TEMP
; without changing flags
INCF DIGCTR,f
; next digit #
MOVF DIGCTR,W
; get it into W
ANDLW H'03'
; mask off 2 lowest bits
MOVWF DIGIT
; save it for later
ADDLW H'0C'
; point at register to display
MOVWF FSR
; use as pointer
MOVF INDF,W
; get value of reg pointed to into W
MOVWF PORTA
; output to CD4511
MOVF DIGIT,W
; recall digit #
CALL BITPAT
; get bit pattern
MOVWF PORTB
; select transistor
DECFSZ INTCNT,f
; finished 1 sec ?
GOTO RESTORE
; not yet, return and enable inter.
CALL EVERYSEC
; go to every second routine
MOVLW H'F4'
; reset INTCNT to normal value
MOVWF INTCNT
DECFSZ FUDGE,f
; time for fudge?
GOTO RESTORE
; not yet, continue on
MOVLW H'06'
; reset FUDGE to 6
MOVWF FUDGE
INCF INTCNT,f
; INTCNT to 245
87
RESTORE SWAPF STATUS_TEMP,W
; get original status
back
MOVWF STATUS
; into status register
SWAPF STATUS_TEMP,f
; old no flags trick again
SWAPF STATUS_TEMP,W
; to restore W
BCF INTCON,T0IF
; clear the TMR0 interrupt flag
RETFIE
; finished
;-------------------------------------------------------------------------;
;
This routine is called by the interrupt routine every second
;-------------------------------------------------------------------------;
;
EVERYSEC BTFSS RUNFLG,0
; return if runflg not set
RETURN
DECF SEC,f
; decrement seconds digit
INCFSZ SEC,W
; test for underflow
GOTO CKZERO
MOVLW H'09'
; reset sec to 9
MOVWF SEC
DECF SEC10,f
; decrement SEC10
INCFSZ SEC10,W
; check underflow
GOTO CKZERO
MOVLW H'05'
MOVWF SEC10
DECF MIN,f
INCFSZ MIN,W
GOTO CKZERO
MOVLW H'09'
MOVWF MIN
DECF MIN10,f
CKZERO
MOVF SEC,f
; test SEC for zero
BTFSS STATUS,Z
RETURN
MOVF SEC10,f
; check SEC10 for zero
BTFSS STATUS,Z
RETURN
MOVF MIN,f
; check MIN for zero
BTFSS STATUS,Z
RETURN
88
MOVF MIN10,f
BTFSS STATUS,Z
RETURN
CLRF RUNFLG
BSF ALARM, 0
RETURN
; check MIN10 for zero
; stop the countdown
; set the alarm flag
;-------------------------------------------------------------------------;
;
This is a routine to read a byte from the data EEPROM
;-------------------------------------------------------------------------;
READEE
MOVWF EEADR
W
BSF STATUS,RP0
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
RETURN
; set up eeprom address from
; change to page 1
; set the read bit
; back to page 0
; return value in W
;-------------------------------------------------------------------------;
;
This routine fills the display registers from data EEPROM
;-------------------------------------------------------------------------;
GETEE
MOVLW H'01'
ADDWF OFFSET,W
CALL READEE
MOVWF SEC
MOVLW H'02'
ADDWF OFFSET,W
CALL READEE
MOVWF SEC10
MOVLW H'03'
ADDWF OFFSET,W
CALL READEE
MOVWF MIN
MOVLW H'04'
ADDWF OFFSET,W
CALL READEE
MOVWF MIN10
;
;
; EEprom location 1 +
; offset from start
; into W
; into SEC register
; location 2 +
; offset from start
; into W
; into SEC10 register
; location 3 +
; offset from start
; into W
; into MIN register
; location 4 +
; offset from start
; into W
; into MIN10 register
89
RETURN
;-------------------------------------------------------------------------;
;
This routine writes a byte to data EEPROM
;-------------------------------------------------------------------------;
;
WRITEEE BSF STATUS,RP0
; set up EEADR and EEDATA
first
CLRF EECON1
BSF EECON1,WREN
; enable write
MOVLW H'55'
; magic sequence
MOVWF EECON2
MOVLW H'AA'
MOVWF EECON2
BSF EECON1,WR
EELOOP
BTFSC EECON1,WR
; wait for WR to go low
GOTO EELOOP
; not yet
BSF EECON1,WREN
BCF EECON1,EEIF
; clear the interrupt flag
BCF STATUS,RP0
; return to page 0
RETURN
;-------------------------------------------------------------------------;
;
This routine puts display registers into data EEPROM
;-------------------------------------------------------------------------;
PUTEE
MOVF SEC,W
MOVWF EEDATA
MOVLW H'01'
ADDWF OFFSET,W
MOVWF EEADR
CALL WRITEEE
MOVF SEC10,W
MOVWF EEDATA
MOVLW H'02'
ADDWF OFFSET,W
MOVWF EEADR
CALL WRITEEE
MOVF MIN,W
;
; put digit registers into EEprom
; EEPROM location 1 +
; offset from start
; EEPROM location 2 +
; offset from start
90
MOVWF EEDATA
MOVLW H'03'
ADDWF OFFSET,W
MOVWF EEADR
CALL WRITEEE
MOVF MIN10,W
MOVWF EEDATA
MOVLW H'04'
ADDWF OFFSET,W
MOVWF EEADR
CALL WRITEEE
RETURN
; EEPROM location 3 +
; offset from start
; EEPROM location 4 +
; offset from start
;-------------------------------------------------------------------------;
;
This is the main routine, the program starts here
;-------------------------------------------------------------------------;
MAIN
CALL INIT
; set up ports etc.
;-------------------------------------------------------------------------;
;
We will return to this point when alarm is shut off.
;-------------------------------------------------------------------------;
EE2D
CALL GETEE
BCF RUNFLG, 0
BCF ALARM, 0
CALL WAITSTARTUP
CALL WAITSETUP
CALL WAITSELECT
;
;
; put eeprom in display regs.
; clear run flag so no countdown
; clear alarm flag
; wait till no switches pressed
;-------------------------------------------------------------------------;
;
This loop checks for either pushbutton and acts accordingly
;-------------------------------------------------------------------------;
;
KEYCHKLOOP BTFSS PORTB,START_PB
; check for start
pressed
GOTO STARTCNT
; yes, start count
BTFSS PORTB,SET_PB
; check for set pressed
GOTO SETDISP
; yes, set display
91
BTFSS PORTA,SELECT_PB
; check select pushbutton
pressed
GOTO SETSELECT
; yes, select starting count
GOTO KEYCHKLOOP
; loop to catch key press
;-------------------------------------------------------------------------;
; If start key has been pressed then start countdown process,
;
; I initially released this code with only the setting of the
;
; run flag included. If you think about it you must also reset
;
; TMR0 to zero. TMR0 is free running and could have any value
;
; 0-255 when the button in pressed. Also INTCNT has to be
;
; initialized because the previous count could have been cancelled.
;
;-------------------------------------------------------------------------;
STARTCNT CALL WAITSTARTUP
; wait for release of start
key
MOVLW D'244'
; reset INTCNT
MOVWF INTCNT
CLRF TMR0
; and clear timer 0
BSF RUNFLG, 0
; start the countdown
;-------------------------------------------------------------------------;
;
Once started just loop looking for cancel or reaching 0000
;-------------------------------------------------------------------------;
;
MAINLOOP BTFSS PORTB,START_PB
; countdown in
progress, check start
GOTO EE2D
; start over again if pressed
BTFSC ALARM, 0
; reached 0000 yet?
GOTO SOUNDALARM
; yes, turn alarm on
GOTO MAINLOOP
; no start switch, continue looping
;-------------------------------------------------------------------------;
; This code sounds the alarm and waits on start to be pressed
;-------------------------------------------------------------------------;
;
92
SOUNDALARM
FINALWAIT BCF PORTB,RB4
; speaker leads set up
BSF PORTB,RB5
; opposite polarity
MOVLW 2
; delay 2 milliseconds
CALL NMSEC
BSF PORTB,RB4
; flip the speaker leads
BCF PORTB,RB5
MOVLW 2
; another 2 msec delay
CALL NMSEC
BTFSC PORTB,START_PB
; start button pressed
GOTO FINALWAIT
; not yet
CALL DLY20
; debounce just to make sure
BTFSC PORTB,START_PB
; second look
GOTO FINALWAIT
; nah, keep waiting
BCF PORTB,RB4
; speaker leads set to same polarity
BCF PORTB,RB5
CALL WAITSTARTUP
; now wait for the switch up
GOTO EE2D
; start all over again
;-------------------------------------------------------------------------;
;
Wait for release of start button
;
;-------------------------------------------------------------------------;
WAITSTARTUP BTFSS PORTB,START_PB
; wait for release
GOTO WAITSTARTUP
; not released yet
CALL DLY20
; debounce release
BTFSS PORTB,START_PB
; 2nd check, make sure
released
GOTO WAITSTARTUP
; keep checking
RETURN
;-------------------------------------------------------------------------;
;
Wait for release of set button
;
;-------------------------------------------------------------------------;
WAITSETUP BTFSS PORTB,SET_PB
; wait for release
GOTO WAITSETUP
; not yet
CALL DLY20
; debounce release
93
BTFSS PORTB,SET_PB
released
GOTO WAITSETUP
RETURN
; 2nd check, make sure
; keep checking
;-------------------------------------------------------------------------;
;
Wait for release of select button
;
;-------------------------------------------------------------------------;
WAITSELECT BTFSS PORTA,SELECT_PB
; wait for release
GOTO WAITSELECT
; not yet
CALL DLY20
; debounce release
BTFSS PORTA,SELECT_PB
; 2nd check, make sure
released
GOTO WAITSELECT
; keep checking
RETURN
;-------------------------------------------------------------------------;
;
Routine to follow sets the countdown time digit by digit
;-------------------------------------------------------------------------;
;
SETDISP CALL WAITSETUP
; wait for set key to be
released
MOVLW H'0A'
; put A's in digits, (no display)
MOVWF MIN10
; 10's of minutes
MOVWF MIN
; minutes
MOVWF SEC10
; 10's of seconds
MOVWF SEC
; seconds
STARTMIN10 CLRF MIN10
; 0 now in MIN10
MOREMIN10 MOVLW H'32'
; 50 delays of 20 msec
MOVWF SECNT
; into counting register
WAIT1
CALL DLY20
BTFSS PORTB,SET_PB
; set key pressed?
GOTO MINSET
; yes MIN10 now set
DECFSZ SECNT,f
; finished 1 sec delay?
GOTO WAIT1
; continue wait
INCF MIN10,f
; every second increment 10's MIN
MOVLW H'0A'
; reached 10?
SUBWF MIN10,W
94
BTFSC STATUS,Z
; Z set if reached 10
GOTO STARTMIN10
; start again with 0
GOTO MOREMIN10
; set up another 1 sec delay
MINSET
CALL WAITSETUP
; wait for release of set key
STARTMIN CLRF MIN
; 0 into MIN
MOREMIN MOVLW H'32'
; 50 delays of 20 msec
MOVWF SECNT
; into counting register
WAIT2
CALL DLY20
BTFSS PORTB,SET_PB
; set pressed?
GOTO SETSEC10
; yes, finished with MIN
DECFSZ SECNT,f
; finished 1 sec delay?
GOTO WAIT2
; continue wait
INCF MIN,f
; every second increment MIN
MOVLW H'0A'
; reached 10?
SUBWF MIN,W
BTFSC STATUS,Z
; Z set if reached 10
GOTO STARTMIN
; put zero in if Z set
GOTO MOREMIN
; set up another 1 sec delay
SETSEC10 CALL WAITSETUP
; wait release
STARTSEC10 CLRF SEC10
; 0 into SEC10
MORESEC10 MOVLW H'32'
; 50 delays of 20 msec
MOVWF SECNT
; into counting register
WAIT3
CALL DLY20
BTFSS PORTB,SET_PB
; set pressed?
GOTO SETSEC
; yes quit incrementing
DECFSZ SECNT,f
; finished 1 sec delay?
GOTO WAIT3
; continue wait
INCF SEC10,f
; every second increment 10's SEC
MOVLW H'06'
; reached 6?
SUBWF SEC10,W
BTFSC STATUS,Z
; Z set if reached 6
GOTO STARTSEC10
; put zero in if Z set
GOTO MORESEC10
; set up another 1 sec delay
SETSEC
CALL WAITSETUP
; wait for release
STARTSEC CLRF SEC
; 0 into SEC
MORESEC MOVLW H'32'
; 50 delays of 20 msec
MOVWF SECNT
; into counting register
WAIT4
CALL DLY20
BTFSS PORTB,SET_PB
; set button pressed?
95
GOTO FINSET
; yes finished setting digits
DECFSZ SECNT,f
; finished 1 sec delay?
GOTO WAIT4
; continue wait
INCF SEC,f
; every second increment SEC
MOVLW H'0A'
; reached 10?
SUBWF SEC,W
BTFSC STATUS,Z
; Z set if reached 10
GOTO STARTSEC
; put zero in if Z set
GOTO MORESEC
; set up another 1 sec delay
FINSET
BCF INTCON, GIE
; disable interrupts
CALL PUTEE
; put new digits into EEPROM
BSF INTCON, GIE
; re-enable interrupts
CALL WAITSETUP
; make sure set switch up
GOTO KEYCHKLOOP
; start checking buttons again
;-------------------------------------------------------------------------;
;
Selects starting count by changing EEPROM location 0
;-------------------------------------------------------------------------;
;
SETSELECT MOVLW D'4'
; offset up 4
ADDWF OFFSET,F
; next offset position
MOVLW D'60'
; reached 16th yet?
SUBWF OFFSET,W
; will give zero if yes
BTFSC STATUS,Z
; skip if not 64
CLRF OFFSET
; reset position to zero
MOVLW 0
; EEPROM location
MOVWF EEADR
; set up address
MOVF OFFSET,W
; offset # into W
MOVWF EEDATA
; set up data
BCF INTCON,GIE
; clear GIE, disable interrupts
CALL WRITEEE
; save # in location 0
BSF INTCON,GIE
; re-enable interrupts
CALL GETEE
; get new start count into display
CALL WAITSELECT
; make sure select switch is up
GOTO KEYCHKLOOP
; start checking buttons again
;-------------------------------------------------------------------------;
; The following are various delay routines based on instruction length.
;
96
; The instruction length is assumed to be 1 microsecond (4Mhz
crystal). ;
;-------------------------------------------------------------------------;
DLY20
MOVLW 20
; delay for 20 milliseconds
;*** N millisecond delay routine ***
NMSEC
MOVWF CNTMSEC
; delay for N (in W)
milliseconds
MSECLOOP MOVLW D'248'
; load takes 1 microsec
CALL MICRO4
; by itself CALL takes ...
; 2 + 247 X 4 + 3 + 2 = 995
NOP
; 1 more microsec
DECFSZ CNTMSEC,f
; 1 when skip not taken, else 2
GOTO MSECLOOP
; 2 here: total 1000 per msecloop
RETURN
; final time through takes 999 to here
; overhead in and out ignored
;*** 1 millisecond delay routine ***
ONEMSEC MOVLW D'249'
; 1 microsec for load W
; loops below take 248 X 4 + 3 = 995
MICRO4
ADDLW H'FF'
; subtract 1 from 'W'
BTFSS STATUS,Z
; skip when you reach zero
GOTO MICRO4
; loops takes 4 microsec, 3 for last
RETURN
; takes 2 microsec
; call + load W + loops + return =
; 2 + 1 + 995 + 2 = 1000 microsec
;-------------------------------------------------------------------------;
; Here we set up the initial values of the digits in data EEPROM
;-------------------------------------------------------------------------;
ORG H'2100'
DE 0, 1, 0, 0, 0
DE 2, 0, 0, 0
DE 3, 0, 0, 0
DE 4, 0, 0, 0
DE 5, 0, 0, 0
DE 6, 0, 0, 0
DE 7, 0, 0, 0
;
; 1st starting #
; 2nd starting #
; 3rd starting #
; 4th starting #
; 5th starting #
; 6th starting #
; 7th starting #
97
DE
DE
DE
DE
DE
DE
DE
DE
8, 0, 0, 0
9, 0, 0, 0
0, 1, 0, 0
1, 1, 0, 0
2, 1, 0, 0
3, 1, 0, 0
4, 1, 0, 0
5, 1, 0, 0
; 8th starting #
; 9th starting #
; 10th starting #
; 11th starting #
; 12th starting #
; 13th starting #
; 14th starting #
; 15th starting #
END
;Contador de 4 digitos.
indo equ
pc
equ
status equ
fsr equ
ptoa equ
ptob equ
rota equ
trisa equ
trisb equ
dig1 equ
dig2 equ
dig3 equ
dig4 equ
loops equ
loops2 equ
z
equ
ram equ
c
equ
w
equ
00h
02h
03h
04h
05h
06h
0fh
85h
86h
10h
11h
12h
13h
1dh
1eh
02h
05h
00h
00h
;registro de indireccion
;contador de programa
;registro de estado
;registro de seleccion
;puerto a
;puerto b
;variable para desplazamiento de display
;configuracion puerto a
;configuracion puerto b
;acumulador miles
;acumulador centenas
;acumulador decenas
;acumulador unidades
;variables usadas en retardos
;flag de cero
;bit de seleccion de pagina de memoria
;flag de acarreo
;bit de destino a variable de trabajo
reset org 00
goto inicio
98
org
05h
retardo
;subrutina de retardo
movwf loops
;la variable de trabajo contiene la cant.
top2 movlw d'110'
;de ms a demorar
movwf loops2
top nop
nop
nop
nop
nop
nop
decfsz loops2
;controla si termina 1mS
goto top
decfsz loops
;controla si termina el retardo completo
goto top2
retlw 0
s1000
;rutina de incremento x 1000
clrf dig2
;pone a cero las centenas
incf dig1
;incrementa el contador de miles
movf dig1, w
;carga en work el conteo de los miles
xorlw 0ah
;si work era 10, entonces quedara en cero
btfsc status, z
;si es cero, el flag z queda alto
clrf dig1
;inicializa los miles
return
s100
;rutina de incremento x 100
clrf dig3
;pone a cero las decenas
incf dig2
;incrementa el contador de centenas
movf dig2, w
;carga en work el conteo de las centenas
xorlw 0ah
;si work era 10, entonces quedara en cero
btfsc status, z
;si es cero, el flag z queda alto
call s1000
;incrementa los miles
return
s10
clrf dig4
incf dig3
movf dig3, w
;rutina de incremento x 10
;pone a cero las unidades
;incrementa el contador de decenas
;carga en work el conteo de las decenas
99
xorlw 0ah
btfsc status, z
call s100
return
subir
incf dig4
movf dig4, w
xorlw 0ah
btfsc status, z
call s10
movlw d'250'
call retardo
return
tabla
;si work era 10, entonces quedara en cero
;si es cero, el flag z queda alto
;incrementa las centenas
;rutina de incremento
;incrementa el contador de unidades
;carga en work el conteo de las unidades
;si work era 10, entonces quedara en cero
;si es cero, el flag z queda alto
;incrementa las decenas
;retardo de 100ms
;genera los numeros sobre el display
addwf pc
;agrega al cont. programa el valor de work
retlw b'00111111' ;genera el 0
retlw b'00011000' ;genera el 1
retlw b'01110110' ;genera el 2
retlw b'01111100' ;genera el 3
retlw b'01011001' ;genera el 4
retlw b'01101101' ;genera el 5
retlw b'01101111' ;genera el 6
retlw b'00111000' ;genera el 7
retlw b'01111111' ;genera el 8
retlw b'01111101' ;genera el 9
inicio
;programa principal
bsf status, ram ;selecciona el banco de memoria alto
movlw b'00010000' ;configura el puerto a
movwf trisa
;bit 4 entrada, demas bits salidas.
movlw 00h
;configura el puerto b
movwf trisb
;como salidas
bcf status, ram ;selecciona el banco de memoria bajo
clrf dig1
;inicializa acumuladores
clrf dig2
clrf dig3
clrf dig4
100
movlw 00
movwf ptoa
;envia ceros a los transistores para apagar
;todos los displays
empe btfss ptoa, 4
;chequea el pulsador
call subir
;llama la rutina de incremento
movlw 08h
;iniciar un 1 en el registro de rotacion
movwf rota
movlw dig1
;con el registro selector (fsr) se apunta
movwf fsr
;al primer dato que se va a mostrar
disp movlw 00h
;colocar en cero el dato del display
movwf ptob
;para apagarlos
movf rota, w
;pasa rotacion del 1 a la variable work
movwf ptoa
;enciende el transistor (display)
movf indo, w
;lee el dato del registro apuntado por fsr
call tabla
;genera el digito de 7 segmentos
movwf ptob
;envia el digito al puerto b
movlw 03h
;retardo de 3ms para visualizacion
call retardo
btfsc rota, 0
;controla si terminaron las cuatro rotaciones
goto empe
;si termino, vuelve desde el comienzo
bcf status, c
;carry en cero para no afectar las rotaciones
rrf rota
;desplaza el 1 que enciende los displays
incf fsr
;incrementa el puntero. Apunta el proximo
goto disp
;digito a mostrar
end
LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar
; Definición de registros
portb EQU 0x06 ; Puerto B
TRISB EQU 0X06 ; y TRISB en banco 1
estado EQU 0X03 ; La dirección del registro de estado es la 0x03
intcon EQU 0x0B ; Registro controlador de interrupciones
opcion EQU 0x81 ; Registro OPTION
tmr0 EQU 0x01 ; Registro del Timer0 (TMR0)
; Definición de bits
banco EQU 0X05 ; Bit del registro de estado correspondiente
; al banco de datos. En ESTADO
Z EQU 0X02 ;Bit indicador de que el registro W está a cero.ESTADO
t0if EQU 0x02 ; Bit de INTCON que indica que se produjo
101
; interrupción por desbordamiento del timer0
t0ie EQU 0x05 ; Bit de INTCON que habilita o no la interrupción
; por desbordamiento del timer0
; Definición de constantes
w EQU 0 ; Destino de operación = w
f EQU 1 ; Destino de operación = registro
; Definición de variables
contador EQU 0X0C ; Contador
; Comienzo del programa.
ORG 0X00 ; Cubrimos el vector de reset
GOTO inicio ; Saltamos a la primera dirección tras
; el vector de interrupción
ORG 0x04 ; Cubrimos el vector de interrupción
GOTO RSI ; Y saltamos a la rutina de servicio de interrupción
; ************************ Inicialización de variables
*************************
ORG 0X05
inicio BSF estado,banco ; Seleccionamos el banco 1
MOVLW 0x06 ; En binario 0000 0110
MOVWF opcion ; Ponemos el predivisor a 128
67
; ******************************************************************************
; *** OPTION.7 = 0 Resistencias de polarización deshabilitadas ***
; *** OPTION.6 = 0 Interrupción externa por flanco bajada (no se usa)
**
; *** OPTION.5 = 0 Fuente de reloj interna ***
; *** OPTION.4 = 0 Flanco de señal externa (no lo usamos) ***
; *** OPTION.3 = 0 Divisor asignado al TMR0 ***
; *** OPTION.2 = 1 OPTION.1= 1 OPTION.0= 0 División por 128 ***
; ******************************************************************************
CLRF TRISB ; La puerta B es toda de salida
BCF estado,banco ; Volvemos a la página 0
CLRF portb ; Borramos todos los LEDS
CLRF contador ; Contador = 0
MOVLW 0xB2 ; Cargamos el timer con 78 decimal (0xB2)
MOVWF tmr0
MOVLW 0xA0 ; 1010 0000 en binario
MOVWF intcon; Habilitamos GIE y T0IE (interrupción del timer0)
;************************** Cuerpo principal ****************************
102
; ****************** Mira si hay 20 cuentas de 10 ms ******************
; ********************* Y, si las hay, cambia el LED ********************
Bucle MOVF contador,w ; Se incrementa cada 10 ms en uno al
; producirse la interrupción
XORLW 0x14 ; Ha llegado a 200 ms si llevamos 20 (0x14) cuentas
BTFSS estado,Z ; Si es así, salta para cambiar el LED
GOTO Bucle ; Si no es así, prueba otra vez
CLRF contador ; El contador vuelve a 0 para iniciar el nuevo ciclo
BTFSS portb,1 ; Está encendido ? Si sí, apaga
GOTO Encien
Apaga BCF portb,1 ; Apaga el LED
GOTO Bucle
Encien BSF portb,1 ; Enciende el LED
GOTO Bucle
; ****************** RSI: Rutina de servicio de interrupción
******************
; ****** Salta al desbordarse el TMR0, cada 10 ms
**************************
RSI BTFSS intcon,t0if ; Salta si la interrupción es TMR0
RETFIE ; Interrupción desconocida, regresar
; (es un mecanismo de seguridad).
INCF contador,f ; El contador es incrementado cada 10 ms
MOVLW 0xB2 ; Recarga el valor inicial del TMR0
MOVWF tmr0
BCF intcon,t0if ; Borra la bandera de interrupción
BSF INTCON,t0ie ; Habilita de nuevo la interrupción
RETFIE
END
103
Anexo 2 ***** Hojas de datos o datasheet *****
Características de la tarjeta de adquisición de datos
104
105
106
Descargar