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