Download digitales3-parte5-20100607 - Ponix
Document related concepts
no text concepts found
Transcript
Microcontrolador Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado. CARACTERISTICAS RELEVANTES El CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos. Figura 1-1. Bus de datos MEMORIA DE DATOS Bus de Instrucciones MEMORIA DE INSTRUCCIONES CPU 12 8 1) Permite el CPU acceder simultáneamente a las dos memorias. 2) Se aplica la técnica de segmentación (“pipe-line”) en la ejecución de las instrucciones. La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. 3). El formato de todas las instrucciones tiene la misma longitud Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y más las de la gama alta. Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores. 4) Procesador RISC (Computador de Juego de Instrucciones Reducido) Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y casi 60 los de la alta. 5). Arquitectura basada en un banco de registros. Página 1 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Esto significa que todos los objetos del sistema (puertos de E/S, temporizadores, posiciones de memoria, etc.) están implementados físicamente como registros. 6). Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes. La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto. 7). Herramientas de soporte potentes y económicas La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores por software, los emuladores en tiempo real, ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc. Entre los fabricantes de microcontroladores hay dos tendencias para resolver las demandas de los usuarios: Página 2 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio 1ª. Microcontroladores de arquitectura cerrada Cada modelo se construye con un determinado CPU, cierta capacidad de memoria de datos, cierto tipo y capacidad de memoria de instrucciones, un número de E/S y un conjunto de recursos auxiliares muy concreto. El modelo no admite variaciones ni ampliaciones. La aplicación a la que se destina debe encontrar en su estructura todo lo que precisa y, en caso contrario, hay que desecharlo. Microchip ha elegido principalmente este modelo de arquitectura. 2ª. Microcontroladores de arquitectura abierta Estos microcontroladores se caracterizan porque, además de disponer de una estructura interna determinada, pueden emplear sus líneas de E/S para sacar al exterior los buses de datos, direcciones y control, con lo que se posibilita la ampliación de la memoria y las E/S con circuitos integrados externos. En nuestra opinión, los verdaderos microcontroladores responden a la arquitectura cerrada y permiten resolver una aplicación con un solo circuito integrado y a precio muy reducido. Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el número de líneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las versiones están construidas alrededor de una arquitectura común, un repertorio mínimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del voltaje de alimentación. En la figura 1-3 se muestra la distribución de los modelos de PIC en las tres gamas. Página 3 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio PIC17CXX OTP/ EPROM Gama Alta PIC16CXXX OTP/EPROM Gama Media PIC16C5X OTP/EPROM/EEPROM PIC12CXX OTP Gama Baja Gama Baja La memoria de programa puede contener 512, 1 k. y 2 k palabras de 12 bits, y ser de tipo ROM, EPROM. También hay modelos con memoria OTP, que sólo puede ser grabada una vez por el usuario. La memoria de datos puede tener una capacidad comprendida entre 25 y 73 bytes. Sólo disponen de un temporizador (TMR0), un repertorio de 33 instrucciones y un número de patitas para soportar las E/S comprendido entre 12 y 20. El voltaje de alimentación admite un valor muy flexible comprendido entre 2 y 6,25 V, lo cual posibilita el funcionamiento mediante pilas corrientes teniendo en cuenta su bajo consumo ( menos de 2 mA a 5 V y 4 MHz ). Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan por poseer los siguientes recursos. 1. Sistema POR ( POWER ON RESET). Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación. 2. Perro guardián, (Watchdog) Página 4 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Existe un temporizador que produce un reset automáticamente si no es recargado antes que pase un tiempo prefijado. Así se evita que e! sistema quede "colgado" dado en esa situación el programa no recarga dicho temporizador y se genera un reset. 3. Código de protección Cuando se procede a realizar la grabación del programa, puede protegerse para evitar su lectura. También disponen, los PIC de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc. 4. Líneas de E/S de alta corriente. Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida comprendida entre 20 y 25 mA, capaz de excitar directamente ciertos periféricos. 5. Modo de reposo (bajo consumo o SLEEP). Ejecutando una instrucción (SLEEP), el CPU y el oscilador principal se detienen y se reduce notablemente el consumo. Para terminar el comentario introductorio sobre los componentes de la gama baja conviene nombrar dos restricciones importantes. 1ª) La pila o "stack" sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas. 2ª) Los microcontroladores de la gama baja no admiten interrupciones. Gama Media En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. Algunos modelos disponen de una memoria de instrucciones del tipo OTP ("One Time Programmable"), que sólo la puede grabar una vez el usuario y que resulta mucho más económica en la implementación de prototipos y pequeñas series. Página 5 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Hay modelos de esta gama que disponen de una memoria de instrucciones tipo EEPROM, que, al ser borrables eléctricamente, son mucho más fáciles de reprogramar que las EPROM, que tienen que ser sometidas a rayos ultravioleta durante un tiempo determinado para realizar dicha operación. Comercialmente el fabricante ofrece cuatro versiones de microcontroladores en prácticamente todas las gamas. 1ª. Versión EPROM borrable con rayos ultravioleta. La cápsula dispone de una ventana de cristal en su superficie para permitir el borrado de la memoria de programa al someterla durante unos minutos a rayos ultravioleta procedentes de lámparas fluorescentes especiales. 2ª. Versión OTP. “Programable una sola vez”. Son similares a la versión anterior, pero sin ventana y sin la posibilidad de borrar lo que se graba. 3ª. Versión QTP. Es el propio fabricante el que se encarga de grabar el código en todos los chips que configuran pedidos medianos y grandes. 4ª. Versión SQTP. El fabricante solo graba unas pocas posiciones de código para labores de identificación, numero de serie, palabra clave, checksum, etc. El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar asíncronamente y que puede incrementarse aunque el microcontrolador se halle en el modo de reposo ("sleep"), posibilitando la implementación de un reloj en tiempo real. Gama Alta Los dispositivos PIC17C4X responden a microcontroladores de arquitectura abierta pudiéndose expansionar en el exterior al poder sacar los buses de datos, direcciones y control. Así se pueden configurar sistemas similares a los que utilizan los microprocesadores convencionales, siendo capaces de ampliar la configuración interna del PIC añadiendo nuevos dispositivos de memoria y de E/S externas. Esta Página 6 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio facultad obliga a estos componentes a tener un elevado número de patitas comprendido entre 40 y 44. Admiten interrupciones, poseen puerto serie, varios temporizadores y mayores capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos. Los lenguajes de bajo nivel son más difíciles de programar que los de alto nivel, pero tienen la ventaja (los de bajo nivel) de ser más eficientes. Un lenguaje de mayor nivel que el ensamblador, es el BASIC, el cual tiene un compilador para traducir las instrucciones BASIC (código fuente) a código entendible por el microprocesador. Niveles de programación: Colocar directamente ‘1’ y ‘0’ en el procesador Programar usando lenguaje ensamblador (1 instrucción a la entrada produce una de salida) Programar usando lenguaje BASIC (1 instrucción de entrada produce varias de salida) Programar usando lenguajes de 4 generación ( el código fuente dice que hacer y no como lo cual es delegado al compilador) Página 7 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Cuestionario: Microcontroladores Cuestionario ID:20090803 1) ¿Cuáles son las tres unidades funcionales que incluye en su interior un microcontrolador? 2) ¿Cuáles son los 2 tipos de memorias que tiene un microcontrolador? ¿ Pueden accederse simultáneamente? 3) ¿Qué significa que un microprocesador trabaje con la técnica de segmentación? 4) ¿Cuantos bits tienen las instrucciones de procesadores de gama baja? ¿ y los de gama media? 5) ¿Qué significa RISC? ¿ Cuántas instrucciones poseen cada una de las gamas? 6) ¿Qué es un microcontrolador de arquitectura cerrada? 7) ¿ Qué es un microcontrolador de arquitectura abierta? 8) ¿Qué capacidad puede manejar la memoria de programa de un microcontrolador de gama baja? 9) ¿Que capacidad puede manejar la memoria de datos de un microcontrolador de gama baja? 10) ¿Cuántas instrucciones puede manejar un microcontrolador de gama baja? Página 8 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio PIC 16F84 Un PIC, al ser un microcontrolador programable, puede llevar a cabo cualquier tarea para la cual haya sido programado. No obstante, debemos ser conscientes de las limitaciones de cada PIC. Así, el 16F84, PIC no podrá generar un PWM ni convertir señales analógicas en digitales, entre otras. El Pic 16F84. Este es un Pic ideal para aquellas personas que recién comienzan con este tipo de tecnología. El 16F84 es un Pic de muy bajo costo (menos de 7,5 dólares), y es capas de ser escrito y borrado hasta 1000 veces. De esta manera sabemos que podemos practicar con un microcontrolador y realizar prototipos, sin gastar demasiado dinero.. El 16F84, se trata de un microcontrolador de 8 bits. Es un PIC de gama baja, cuyas características podemos resumir en: - 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 de la patita RB0/INT - Desbordamiento del TMR0 - Cambio de estado en alguna patita RB4-RB7 - Fin de la escritura de la EEPROM de datos - Temporizador/contador TMR0 programable de 8 bits - Perro Guardián o WatchDog Generalmente se encuentra encapsulado en formato DIP18. A continuación puede apreciarse dicho encapsulado y una breve descripción de cada una de las patitas: imagen: Página 9 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio - VDD: alimentación - VSS: masa - 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 Página 10 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Organización de la memoria Podemos comprobar como la memoria está dividida en dos bancos (cada una de las columnas): banco 0 y banco 1. Las primeras 12 posiciones de cada banco (00h-0Bh y 80h-8Bh) están ocupadas por los Registros de Propósito Especial (Special Purpose Registers). Estos registros, en los que entraremos en detalle más adelante, son los encargados de controlar ciertas funciones específicas del PIC. Las 68 posiciones siguientes (0Ch-4Fh y 8Ch-CFh) son los denominados Registros de Propósito General, del inglés General Purpose Registers. Éstos son empleados para guardar cualquier dato que necesitemos durante la ejecución del programa. Página 11 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Página 12 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio BANCO 0 TMR0: es un temporizador/contador de 8 bits. Puede operar de dos modos distintos: - Temporizador: el registro incrementa su valor en cada ciclo de instrucción (Fosc/4). - Contador: el registro incrementa su valor con cada impulso introducido en la patita RA4/TOCKI. En ambos casos, cuando el registro se desborda, es decir, llega a su valor máximo (en este caso 2^8 = 256. Como el 0 también se cuenta, el máximo valor sería 255), empieza de nuevo a contar a partir del 0, no sin antes informar de este evento a través de la activación de un flag y/o una interrupción. PCL: es el contador del programa. Indica la dirección de memoria que se leerá a continuación. En algunas ocasiones, como el empleo de las tablas, el uso de este registro es imprescindible. STATUS: registro de 8 bits que sirve para configurar ciertos aspectos del PIC. En la siguiente figura se aprecia la disposición de los bits de dicho registro: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IRP RP0 TO# PD# Z DC C Por ejemplo: RP0: indica el banco de memoria con el que se está trabajando. Cuando vale 0 se selecciona el Banco 0 y cuando vale 1 el Banco 1. PORTA: representación de la puerta A. Cada bit representa una línea de E/S de la puerta A: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RA4 RA3 RA2 RA1 RA0 Como se puede comprobar, los tres bits de mayor peso no representan ninguna línea de E/S, ya que la puerta A sólo tiene 5 líneas de E/S PORTB: lo mismo que la puerta A, pero en este caso con 8 líneas de E/S Página 13 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio BANCO 1 TRISA: registro de 8 bits de configuración de la puerta A. Si un bit se encuentra en 1, esa línea de E/S se configura como entrada; si, en cambio, se encuentra a 0, se configura como salida TRISB: lo mismo que TRISA, pero referente a la puerta B. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Finalmente cabe destacar el registro W, también conocido como registro de trabajo (del inglés work) o acumulador. Es de vital importancia ya que, entre otras, deberemos usarlo de registro puente para llevar a cabo ciertas operaciones. Repertorio de instrucciones A continuación veremos algunas de las instrucciones más importantes, o al menos más empleadas en la programación de PICs, en ASM Tipo de Sintaxis Descripción clrf f Limpia el registro f, es decir, pone todos sus instrucción Manejo de registros Manejo de bits a 0. comf f,d registros Complementa el registro fuente f cambia los 1 por 0 y viceversa) y el resultado lo deposita en el destino. Si d = 0 el destino es W y si d = 1, el destino es el registro fuente f. Manejo de bits bcf f,b Pone a 0 el bit b del registro f Manejo de bits bsf f,b Pone a 1 el bit b del registro f. Brinco Btfsc f, b Explora el bit b del registro f y salta si vale 0 Brinco Btfss f, b Explora el bit b del registro f y salta si vale 1 Control y Goto etiqueta especiales sitúa el cursor del programa (PCL), en etiqueta Página 14 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Página 15 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Circuitería básica En el siguiente esquema podemos ver la circuitería básica, es decir, el circuito mínimo para que el PIC empiece a funcionar. Identificador R1 Componente Resistencia 100 R2 Resistencia 10k C1, C2 D1 XTAL SW1 Condensador cerámico 27pF Diodo 1N4148 Cristal de cuarzo 4 Mhz. Pulsador NA Éste consta básicamente de dos partes: 1) Alimentación: Se emplean para ello dos pines: 14 VDD (tensión positiva) y 5 GND (masa). Se incluye además un pulsador, conectado al pin 4: cuando se introduce un nivel alto de tensión (pulsador abierto) el PIC funciona normalmente y cuando se introduce un nivel bajo (pulsador cerrado) se resetea el PIC. 2) Oscilación: La lleva a cabo el cristal de cuarzo (de 4 Mhz en nuestro caso) junto con los dos condensadores cerámicos (27pF). Página 16 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Nuestro primer programa Éste activará un LED conectado a RB0 siempre que el interruptor conectado a RA0 este cerrado. Para ello vamos a montar el siguiente circuito: En el circuito podemos ver como, lo único que hemos añadido al circuito base es un pulsador conectado al pin 17 (RA0), de forma que cuando lo pulsemos se introduzca un cero lógico en el pin y cuando no lo pulsemos se introduzca un uno lógico. Hemos añadido además un LED con su correspondiente resistencia limitadora de corriente en el pin 6 (RB0). De lo que hemos comentado en esta práctica, cabe destacar dos cosas: - La elección de los pines ha sido arbitraria: se han escogido éstos, pero podíamos haber escogido otros. No obstante, mientras sea posible es mejor organizar el esquema y el programa, y una forma de hacerlo es agrupando por un lado las entradas (Puerta A) y por otro las salidas (Puerta B). Por la misma razón, hemos escogido el pin 0 de cada puerta, en vez de escoger en un sitio el 3 y en otro el 7, por ejemplo. Página 17 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio - En el caso de las entradas, es trivial que cuando se pulse o deje de activar el pulsador se envíe un cero o un uno, pues lo único que queremos es que el PIC pueda detectar un cambio. Así, igual nos da comprobar cuando se envía un cero que cuando se envía un uno, ya que en ambos casos podremos verificarlo. En este caso se ha elegido el cero como activado porque es lo más común. En el caso de las salidas no ocurre lo mismo, ya que en este caso no se trata de detectar un cambio, sino de activar un dispositivo, por lo que se hace necesario que el PIC "genere" una diferencia de potencial. Así, la forma de indicar al PIC que lo haga es poniendo a uno la salida. Veamos el programa Las tres primeras líneas, cuyo núcleo es EQU, permiten que el compilador interprete a partir de ese momento los nombres de la primera columna con las direcciones de memoria de la derecha. El objetivo de estas instrucciones es obvio: facilitar la comprensión del código, ya que es más fácil recordar un nombre que nos sugiere algo que una dirección en hexadecimal. La siguiente instrucción, org 0, no la analizaremos de momento. Simplemente diremos que es necesaria para el correcto funcionamiento del programa, ya que indica el comienzo del código. Página 18 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio bsf ESTADO,5 nos permite poner a 1 el bit 5 de ESTADO, con lo que conseguimos acceder al banco 1, donde se encuentran los registros de configuración de las puertas. clrf PORTA: pone a cero todos los bits del registro porta, con lo que se consigue que dicha puerta se configure al completo como salida. En este caso lo usamos conjuntamente con comf, que transforma los 0 en 1 y viceversa. Así, se consigue configurar la puerta a como entrada. clrf PORTB: pone a cero todos los bits del registro PORTB, configurando éste como salida. bcf ESTADO,5 pone a 0 el bit 5 de ESTADO, volviendo así al banco 0. Inicio, apagar y encender son etiquetas, cuya utilidad es marcar un punto del programa; así, si queremos volver a ese punto sólo tendremos que hacer referencia a su nombre. btfsc PORTA,0 sirve para saltar una instrucción si el bit 0 de PORTA vale 0, es decir, cuando se activó el pulsador. En ese caso, vamos a ENCENDER mediante goto ENCENDER bsf PORTB 0 Aquí se pone a 1 el bit 0 de PORTB, que es donde está conectado el led y volvemos a INICIO. goto INICIO: Si no está pulsado el interruptor vamos a APAGAR, y hacemos la operación contraria a la anterior. Todos los microcontroladores necesitan un circuito grabador, llamado programador, para, valga la redundancia, programarlo. En este caso, los PICs, y más concretamente el 16F84, no es una excepción. También puede hacerse necesario el empleo de un entrenador. Éste es un dispositivo que permite analizar el comportamiento del PIC una vez programado, mediante una serie de entradas y salidas predefinidas. Generalmente incluyen una serie de interruptores y/o pulsadores, una barra de leds y un display de 7 segmentos. Página 19 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Adicionalmente pueden incluir un LCD, motores de corriente continua y paso a paso, zumbadores... Con ello puede verificarse si el microcontrolador se comporta como deseamos antes de la realización de la PCB, que si se arma de entrada, en caso de no funcionar el circuito, conlleva una importante pérdida de tiempo y de dinero. Algunos entrenadores incluyen programador, por lo que no se hace necesario extraer el PIC del zócalo programador para insertarlo en el entrenador. En el aspecto software, para el 16F84 y demás PICs, Microchip dispone de un software gratuito llamado MPLAB, el cual es un entorno de desarrollo para estos microcontroladores. Dicho entorno de desarrollo incluye un compilador que convierte el código fuente del programa (.asm) en un fichero .hex, listo para pasar al microcontrolador. De esta labor se encarga el software programador, que junto con el circuito del mismo nombre graban el programa en el micro para que éste funcione según lo que hayamos programado. Existen numerosos programas de este tipo, pero el rey por excelencia en esta categoría es el IC-Prog, que puede descargarse en Ic-Prog. Bibliografía - Angulo Usategui, José María ; Angulo Martínez, Ignacio. "Microcontroladores PIC. Diseño práctico de aplicaciones. 2ª edición" (1999). Editorial McGraw Hill. Madrid. Página 20 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio MPLAB El MPlab es un programa. El código fuente se escribirá en un archivo (similar a un archivo de texto común y corriente) que tendrá la extensión *.asm. El código se ejecuta de arriba hacia abajo empezando de la primer línea de código y terminando en la última. Con el Mplab podemos generar librerías (trozos de código que se comparten en distintos proyectos), cuya extensión es *.inc. Con ellos nos ahorraremos tipeo. Como la memoria del microcontrolador es muy limitada, el código debe ser escrito en el pic de una manera comprimida. El MPlab se encargará de comprimir el código y dejárnoslo en un archivo *.hex. En este archivo se encuentra todo nuestro código escrito en Hexadecimal. Es decir que el código que verdaderamente habíamos escrito en varias hojas de trabajo ahora solo es un párrafo de numeros y letras. Primero debemos descargar el programa MPLAB de la web de Microchip www.microchip.com. En este caso, en marzo de 2009, se dispone de la versión 8.2a. Es un archivo llamado MPLAB_8.20a.zip que mide 87.3 MB (91,636,969 bytes). Este se puede descomprimir en una carpeta del disco C, usando por ejemplo Winrar. Luego ejecutamos el archivo que se descomprimió llamado Install_MPLAB_8_20a.exe. En este caso la prueba fue realizada en un sistema operativo Windows XP con 512 Mb de RAM. Aparecerá la siguiente ventana Página 21 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Luego aceptamos los términos de licencia del software y presionamos siguiente. Se elige como tipo de instalación completa y se pulsa siguiente. Se aceptan los siguientes términos de licencia hasta llegar a la ventana de comienzo de copia de archivos. Se presiona siguiente. Luego de instalado todo va a solicitar reiniciar. Empecemos ahora si con el programa. Una vez instalado el MPlab(R), nos encontraremos con la siguiente ventana: Página 22 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Todo el código y las librerías deberán estar contenidos en un solo proyecto. Este proyecto será un lugar que contendrá todos los archivos que utiliza un mismo programa. De esta manera cuando nosotros le pidamos al MPlab por ejemplo simular nuestro programa, este sabrá cuales son los archivos que utiliza nuestro programa. Por acá voy C:\GEP\Secundario\EETNro6\InstyHerr\Material\PIC\16f84\Curso\3.htm Página 23 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio PICAXE El sistema "PICAXE", es un sistema de programación de microcontroladores altamente poderoso, pero muy económico, diseñado para el uso educacional de los microcontroladores. Una de las características únicas del sistema PICAXE es que los programas pueden descargarse directamente al microcontrolador mediante un cable conectado al mismo, por lo tanto no se requiere el uso de equipos programadores/eliminadores de alto costo. Además, el software de programación es fácil de utilizar y gratis; por lo tanto se puede trabajar utilizando los proyectos en su domicilio particular. Los programas pueden crearse ya sea gráficamente utilizando organigramas, o programando utilizando un lenguaje BASIC sencillo incluido en el software gratuito llamado ‘Editor de Programación’ (Programming Editor). Los microcontroladores PICAXE están disponibles en tres tamaños: La versión de 8 pines, con 5 pines de entrada/salida y 1 entrada analógica. La versión de 18 pines, con 8 salidas y 5 entradas (3 de las entradas tienen capacidades analógicas). La versión de 28 pines, con 8 salidas, 8 entradas y 4 entradas analógicas separadas. Programming Editor para el PICAXE Los microcontroladores PICAXE se programan (en BASIC o dibujando organigramas) utilizando el software Programming Editor que se puede descargar de la web en forma gratuita. Ventajas: 1. El software gratuito incluido y utilizado para programar a los microcontroladores utiliza un lenguaje BASIC muy fácil de aprender. Esto permite a los usuarios desarrollar programas rápidamente. El software también brinda la opción de crear programas 'dibujando organigramas', de manera que los usuarios más jóvenes puedan desarrollar programas gráficamente sin tener que escribir código fuente. Estos organigramas también pueden simularse y probarse en pantalla. Página 24 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio 2. 3. El sistema de descarga consiste únicamente en un cable serie de bajo costo 4. La descarga en serie es mucho más rápida (menos de 10 segundos) que el tiempo requerido para programar un chip en un programador tradicional. Esto es muy beneficioso para los estudiantes al desarrollar proyectos ya que obtienen resultados instantáneos. 5. Ya que no es necesario retirar el chip PICAXE del circuito impreso para programarlo, se eliminan totalmente todos los daños accidentales (por ejemplo patitas rotas) asociados con la transferencia del chip hacia el equipo programador y de regreso al circuito impreso. 6. El Sistema PICAXE es un dispositivo basado en un chip que utiliza la moderna tecnología FLASH. Esto lo hace mucho más barato para el usuario final. 7. Es muy fácil de utilizar y puede reprogramarse una y otra vez. 8. Los microcontroladores PICAXE están disponibles en tres tamaños 8, 18 y 28; por lo tanto puede elegir el más apropiado según el proyecto que quiera realizar. Sin embargo, el lenguaje de programación es el mismo para todos los dispositivos. Página 25 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Descripción general de un microcontrolador Describiendo la placa entrenadora, utilizada durante las clases por los alumnos Las 8 salidas del microcontrolador pueden identificarse en el circuito como Sal0, Sal1, .Sal7, que pueden simplemente encender un led, o controlar algún tipo de relé que accione un motor. Las entradas pueden recibir señales digitales, y algunas de ellas pueden recibir señales analógicas cuyo muestreo y adquisición permite convertirlas a un valor numérico, por ejemplo entre 0 y 255. Esta placa entrenador cuenta con 2 leds (S1-S2) que pueden ser conectados a cualquiera de las salidas a probar Cuenta también con 2 botones que pueden activar a elección cualquiera de las entradas, simulando entradas digitales Página 26 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Las entradas AN1 AN2 pueden conectarse a alguna de las entradas analógicas del microcontrolador (Ej. 18A la E0) las cuales mediante un preset incluido en la plaqueta, o mediante un transductor que funcione por variación de resistencia, permitan cuantizar la señal analógica. Página 27 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Cuestionario ID:20100412 1) ¿Qué es PICAXE? 2) ¿En que lenguaje se programan? 3) ¿Cómo se llama el entorno de programación para escribir código fuente para los PICAXE? 4) Para descargar el programa en el PICAXE, a) ¿se necesita alguna placa de programación especial? b) ¿Dónde se escribe la programación antes de descargarla en el microcontrolador? 5) ¿A qué puerto de la computadora va conectado el cable para descargar la programación al picaxe? 6) ¿Las entradas digitales, que niveles de tensión pueden tomar en las entradas para reconocer que niveles lógicos? 7) ¿ Las entradas analógicas, que niveles de tensión pueden mínimo y máximo pueden tener ? 8) El conversor interno de un picaxe 18 a) ¿Cuántos bits tiene? b)¿Cuántos niveles de tensión distintos se pueden generar con 8 bits c) ¿Cuántos escalones pueden generarse? 9)Qué comando basic se utiliza para a) colocar una salida en alto b) colocar una salida en bajo c) hacer una pausa 10) ¿Cómo se llama el proceso de poder seguir el programa línea por línea, y con que programa se realiza? 11) ¿Qué cosas piensa usted que podría fabricar con un microcontrolador de estas características? Página 28 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Programación de microcontroladores PICAXE Ejercicio Nro 1: Realice un programa para el microcontrolador PICAXE 18 que encienda y apague un led conectado a la salida 4 del mismo con un tiempo de 1 segundo: main: high 4 pause 1000 low 4 pause 1000 goto main Ejercicio Nro 2: Realice un programa para el microcontrolador PICAXE 18 que encienda y apague alternativamente 2 leds conectados a las salidas 4 y 7 con un intervalo de 150 mseg. main: high 4 ' Coloca en alto salida 4 low 7 ' coloca en bajo salida 7 pause 150 low 4 high 7 pause 150 goto main Página 29 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Ejercicio Nro 3: Realice un programa para el microcontrolador PICAXE 18 que encienda y apague conjuntamente 2 leds conectados a las salidas 4 y 7 con un intervalo de 500 mseg. P: high 4 high 7 Pause 500 low 4 low 7 Pause 500 goto P Página 30 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Ejercicio Nro 4 : Realice un programa para el microcontrolador PICAXE 18 que luego de recibir una señal en alto en la entrada 7, inicie una subrrutina que encienda y apague 10 veces un led conectado a la salida 4. P: If pin7=1 then DiezVeces goto P DiezVeces: for b0 = 1 to 10 high 4 pause 500 low 4 pause 500 next b0 goto P Ejercicio Nro 5: Realice un programa para el microcontrolador PICAXE 18 para que 1. Si la entrada 7 se pone en alto, ejecute una subrutina llamada juntos que encienda y apague las salidas 4 y 7 en forma conjunta, y con un tiempo configurado al inicio del programa en una variable w1 2. Si la entrada 0 se pone en alto, ejecute una subrutina llamada Alternados que encienda y apague las salidas 4 y 7 en forma alternada, y con un tiempo configurado al inicio del programa en una variable w2 3. Si se presionan las entrada 0, que el programa abandone la subrutina que estuviera procesando y que vuelva al menú principal a la espera de una nueva solicitud w1=500 w2=1000 main: if pin7=1 then Juntos if pin0=1 then Alternados goto main Página 31 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Juntos: high 7 high 4 Pause w1 low 7 low 4 Pause w1 if Pin0=1 then main goto Juntos Alternados: high 7 low 4 Pause w2 low 7 high 4 Pause w2 if Pin0=1 then main goto Alternados Página 32 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Cuestionario ID:20100607 1) ¿Para qué sirve el comando High?, ¿Qué parámetro recibe? ¿Qué valores puede tomar éste parámetro? 2) ¿Para qué sirve el comando Low?, ¿Qué parámetro recibe? ¿Qué valores puede tomar este parámetro? 3) ¿Para qué sirve el comando Pause? ¿Qué parámetro recibe? ¿En qué unidad se mide? 4) ¿Qué es una etiqueta? ¿Con qué carácter debe finalizar una etiqueta? 5) ¿Para qué sirve el comando goto? Escriba un pequeño programa de su uso 6) ¿Para qué sirve el comando pinx con x variando entre 0 y 7? Escriba un pequeño programa de su uso 7) ¿Para que sirve el comando FOR…NEXT? Escriba un pequeño programa de su uso 8) ¿Qué debe agregarse a un comando FOR NEXT que cuente en forma descendente? 9) Escriba un programa usando el comando FOR …NEXT que incremente la variable b0 de 1 a 15 solo tomando los valores impares 10) ¿Las variables bi, de cuantos bits son? Y por lo tanto ¿qué rango de valores pueden cargarse en ellas? 11) ¿Las variables wi, de cuantos bits son? Y por lo tanto ¿qué rango de valores pueden cargarse en ellas? Página 33 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Symbol Los símbolos pueden ser asignados a valores constantes, y también pueden ser usados como nombres de alias. Con Symbol se puede usar cualquier palabra que no sea una palabra clave (Step, High, etc) Para declarar un Symbol se pueden usar caracteres numéricos, y guiones bajos, pero el primer caracter no puede ser un número. Ejemplo no sería válido 1ero. Ejercicio Nro. 6: Realice un sistema de un semáforo usando Symbol Symbol Verde=0 Symbol Amarillo=1 Symbol Rojo=2 Inicio: High Verde Pause 1000 Low Verde High Amarillo Pause 500 Low Amarillo High Rojo Pause 1000 Low Rojo Goto Inicio En el ejemplo anterior hemos definido constantes, pero también podemos definir variables: Página 34 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Ejemplo del comando Symbol utilizando variables: Symbol Contador1=b0 Inicio: Contador1=Contador1+1 Debug Contador1 If contador1=10 then Contador1=0 End if goto Inicio pins (Aplicable a Picaxe 18, 18A, 18X) Recordemos que los números en binario, para colocarlos en el código, comienzan con un símbolo %. El comando pins permite en una sola instrucción establecer todas las salidas en alto o bajo. En este ejemplo se puede ver fácilmente su uso: Inicio: pins=%10000000 pins=%01000000 pins=%00100000 pins=%00010000 pins=%00001000 pins=%00000100 pins=%00000010 pins=%00000001 Goto Inicio Página 35 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Otra manera de usar el comando pins es, para leer las entradas: Inicio: b1=pins Goto Inicio Si se hace una simulación y en la simulación se habilitan o deshabilitan las entradas, puede verse como varían los valores de b1 ¿Cómo vienen indicadas las 5 entradas de un picaxe 18 A en el valor que se lee de pins? X7 X6 in7 in6 X5 X4 X3 X2 X1 X0 in2 in1 in0 Ejercicio 7: Realice un programa para picaxe 18 que cuando estén en alto las entradas 0 y 1 se coloque en alto la salida 0 Inicio: b1=pins If b1=3 then high 0 Else low 0 End if Goto Inicio Adicionalmente puede verse que si se hace pins=pins, las salidas toman los valores de las entradas Inicio: let pins=pins Goto Inicio Página 36 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Página 37 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio El comando pins puede ser particionado en sus bits componentes por medio de los comandos pin0, pin1,... pin7. Inicio: if pin0=1 then high 7 Else low 7 ENd if Goto Inicio Ejercicio 8: Realice un programa para el microcontrolador PICAXE 18A que al colocar en alto la entrada 0, cambie al siguiente juego de luces con respecto al que se estaba ejecutando. Se supone que las salidas tienen leds de prueba. Prepare el programa para 3 juegos de luces. ¿Qué debería modificar para agregar más juegos de luces? P.D.: Elija usted los juegos de luces Página 38 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Comando GOSUB-RETURN La función de este comando es transferir el control a la subrutina especificada. Se permiten 16 GOSUB por programa y hasta 4 niveles de profundidad. Un GOSUB es un salto a una separada sección de código identificada por una etiqueta, desde la cual debería retornar a la instrucción siguiente a la de llamada, luego de encontrar un comando RETURN. Cada GOSUB debe tener su correspondiente RETURN. No debe confundirse con GOTO el cual es un salto permanente a una ubicación de programa. Se utiliza el GOSUB – RETURN para reducir la cantidad de líneas de código de un programa en la cual se pueden identificar bloques de código que se utilizan repetidamente. Página 39 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Comando READADC Se utiliza de la siguiente manera: READADC entrada, variable En donde entrada es una variable o constante que especifica una dirección entre 0 y 3 En variable se recibe el byte de datos leído, que por ser una variable byte, podrá ser un valor entre 0 y 255. Este valor es el resultado de la conversión analógica digital de la entrada especificada, cuando la tensión de entrada varía respectivamente entre 0 y 5 volts.. En la tabla de abajo vemos en la primer columna, la cantidad de entradas que pueden recibir señales analógicas para convertirlas en digitales, y la resolución en cantidad de bits del conversor analógico digital. En la segunda columna vemos si las entradas analógicas son compartidas con las digitales, o son separadas. En la tercer columna, vemos los número de pines del integrado que corresponden a entradas analógicas que pueden ser tomadas Ejercicio: Con este sencillo programa, mostrar con el simulador como puede verse que al variar la entrada A0 cambia el valor la variable B0 en la cual se adquirió el valor de A0. Página 40 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio inicio: readadc 0,b0 goto inicio Ejercicio 9: Se dispone de un microcontrolador PICAXE para controlar la temperatura de un ambiente el cual puede encender un dispositivo que enfría el ambiente si la temperatura excede cierto valor, y encender un dispositivo de calefacción si la temperatura está por debajo de cierto valor. Realice un programa para el PICAXE 18A que encienda o apague los dispositivos que controlan la temperatura del ambiente para mantener la misma en un rango preconfigurado entre Tmax y Tmin. Realice la simulación del circuito. Suponga que el sensor de temperatura cuando recibe 255C los transforma en 5 V y cuando recibe 0C los transforma en 0 Volts Respuesta: Como puede verse en este ejemplo no se necesita recta de conversión de escala Symbol Symbol Symbol Symbol Symbol Tamb=b1 TMax=b2 TMin=b3 AireFrio=b4 AireCaliente=b5 'Combinaciones posibles 'AireFrío \ AireCaliente ' High \ Low ' Low \ High ' High \ High ' Low \ Low TMax=27 Tmin=19 Estado Refrigeración encendida Calefacción encendida No debería ocurrir Equipo apagado 'Defino las salidas AireFrio=6 AireCaliente=7 ControlTemperatura: readadc 1,Tamb if Tamb>TMax then gosub EncendeFrio Página 41 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Elseif Tamb<Tmax And Tamb>Tmin then gosub ApagaEquipos Elseif Tamb<Tmin then gosub EncendeCalor End if goto ControlTemperatura EncendeFrio: High AireFrio Low AireCaliente Return EncendeCalor: High AireCaliente Low AireFrio Return ApagaEquipos: Low AireFrio Low AireCaliente Return Página 42 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Ejercicio 10: Realice un programa para microcontrolador PICAXE 18A que luego de ser reseteado, prenda y apague la salida 4 cada un segundo (medio segundo encendida, medio segundo apagada), y al transcurrir una cierta cantidad de horas minutos y segundos deseados, se coloque en alto la salida 7. Symbol Segundos=b0 Symbol Minutos=b1 Symbol Horas=b2 Symbol SegundosAlarma=b3 Symbol MinutosAlarma=b4 Symbol HorasAlarma=b5 Segundos=0 Minutos=0 Horas=0 HorasAlarma=1 MinutosAlarma=0 SegundosAlarma=0 Inicio: High 4 Pause 500 Low 4 Pause 500 Segundos=Segundos+1 if Segundos=60 then Segundos=0 Minutos=Minutos+1 If Minutos=60 then Minutos=0 Horas=Horas+1 End if End if if Horas=HorasAlarma AND Segundos=SegundosAlarma then High 7 ENd if goto inicio: Minutos=MinutosAlarma Página 43 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio ANd Ejercicio11:on la placa entrenadora de la figura 13, realice un programa de manera que si la tensión en la entrada 0 (E0) está entre 0 y 2.5Volts, entonces se disparé una subrutina que prende y apague por medio segundo por cada uno un led conectado a la salida 4. Si la tensión de entrada está entre 2.6 y 5 volts. se dispare otra subrutina que prenda y apague juntos los leds de las salidas 4 y 7, pero con un intervalo de 250 milisegundos por cada uno de los eventos. (encendido, apagado) inicio: readAdc 0,b0 If b0<127 then gosub Prende4 Else gosub Prende4y7 End if goto inicio Prende4: high 4 pause 500 low 4 pause 500 return Prende4y7: high 4 high 7 pause 250 low 4 low 7 pause 250 return Página 44 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Ejercicio 12:Escriba un programa para microcontrolador PICAXE 18A que permita implementar un sistema de alarma que incluya zonas temporizadas, y de pánico, y que mediante un panel permita visualizar el estado de las distintas zonas. Ejercicio 13: Se dispone de un sensor de temperatura lineal que cuando la temperatura es de -10C entrega una tensión de 0V, y cuando la temperatura es de 50C entrega una tensión de 5V. Si se conecta el sensor a la entrada 0 de un PICAXE 18A realice un programa que muestre la temperatura ambiente en una ventana de la computadora Lectura y cuestionario Revista: Saber electrónica Artículo: PLC de 5 entradas y 8 salidas: construya un PLC completo utilizando un microcontrolador PICAXE 18 con excelentes prestaciones Sección: Placa entrenadora PICAXE-18 Escuela Curso Nombre de la materia Apellido Nombres Fecha 1) ¿Qué ventajas fundamentales tiene el PICAXE 18 sobre el PICAXE 08? 2) ¿Explique con sus palabras para que sirven las entradas analógicas del PICAXE18?. De ejemplos 3) ¿Cuántas entradas analógicas se pueden conectar al PICAXE 18? 4) ¿Cuántas entradas digitales se pueden conectar? 5) Usando la placa entrenadora aisladamente, ¿hasta cuantas salidas pueden monitorearse simultáneamente? 6) Usando la placa entrenadora aisladamente, ¿hasta cuantas entradas pueden monitorearse simultáneamente y de que tipo? Página 45 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio 7) ¿Qué tensión de alimentación lleva el PICAXE 18? ¿Qué regulador integrado se utiliza para alimentar el PICAXE 18? 8) ¿Que elementos de la placa entrenadora nos permiten simular entradas digitales al PICAXE 18? – 9) ¿Es necesario colocar algún cable adicional para probar las entradas digitales? ¿Desde donde hasta donde? 10) ¿Es necesario colocar algún cable adicional para probar las entradas analógicas? ¿Desde donde hasta donde? ¿Para que sirve el pot1 de la placa entrenadora? 11) ¿Para descargar la programación desde la PC al microcontrolador PICAXE, que tipo de puerto de la PC se utiliza? 12) Si a la salida del PICAXE alimenta un led de prueba de la placa entrenadora: ¿Qué corriente consume? – Asuma que la tensión del led es de 2 V Página 46 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Hacer un proyecto final utilizando el microcontrolador PICAXE para la aprobación del 3er trimestre Página 47 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Temas a ordenar en algún lugar del apunto del apunte Un conversor (ó convertidor) analógico-digital (CAD), (ADC) es un dispositivo electrónico capaz de convertir un voltaje determinado en un valor binario, en otras palabras, este se encarga de transformar señales análogas a digitales. La conversión analógica a digital tiene su fundamento teórico en el teorema de muestreo y en los conceptos de cuantización y codificación. Enunciado del teorema del muestreo Si una señal continua, S(t), tiene una banda de frecuencia tal que fm sea la mayor frecuencia comprendida dentro de dicha banda, dicha señal podrá reconstruirse sin distorsión a partir de muestras de la señal tomadas siempre que se haga las muestras a una frecuencia fs siendo fs > 2 fm. En la figura se muestra un esquema simplificado del proceso de muestreo: El interruptor no es del tipo mecánico, puesto que por lo general fs es de bastante alta. Suelen emplearse transistores de efecto campo como interruptores, para cumplir los requerimientos que se le exigen entre los que se encuentran: Una elevada resistencia de aislamiento cuando los interruptores (transistores) están desconectados. Una baja resistencia si los interruptores están conectados o cerrados. Una elevada velocidad de conmutación entre los dos estados de los interruptores. Página 48 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio En la siguiente figura se ofrece las formas de las tres señales principales: d=señal muestreadora S(t)=señal a muestrear Sd(t)= señal muestreada Desde el punto de vista de la cuantificación de la señal muestreada, lo ideal sería que el tiempo en que el interruptor está cerrado, fuese prácticamente cero, ya que de otro modo, la señal muestreada puede variar en dicho tiempo y hacer imprecisa su cuantificación. Debe tenerse en cuenta que para la reconstrucción de la señal original, a partir de la muestreada, se emplea un filtro de paso bajo, el cual deberá tener una función de transferencia como se indica en la figura siguiente: Página 49 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Obsérvese que la respuesta del filtro, debe ser plana hasta una frecuencia, como mínimo, igual a fm, para caer posteriormente de forma brusca a cero, antes de que la frecuencia alcance el valor de fs-fm. Mediante la aplicación del Teorema del Muestreo, se pueden transmitir varias señales, por un mismo canal de comunicación. Para ello se muestrea sucesivamente varias señales S1, S2, S3,.... y las señales muestreadas se mandan por el canal de comunicación. A este sistema se le denomina "multiplexado en el tiempo" Al otro extremo del canal habrá que separar las distintas señales muestreadas para hacerlas pasar después por el filtro paso bajo que las reconstruya En la figura anterior el multiplexor y el demultiplexor se han representado mediante conmutadores rotativos sincronizados, los cuales, evidentemente no son adecuados, dada la gran frecuencia de giro fs, necesaria en este sistema. Para ello se emplean multiplexores y demultiplexores electrónicos. En este sistema de transmisión de señales es imprescindible, el perfecto sincronismo entre los dos extremos del canal. Circuitos de captura y mantenimiento (S/H:Sample and Hold). Los circuitos de captura y mantenimiento se emplean para el muestreo de la señal analógica (durante un intervalo de tiempo) y el posterior mantenimiento de dicho valor, generalmente en un condensador, durante el tiempo que dura la transformación A/D, propiamente dicha. El esquema básico de un circuito de captura y mantenimiento es: Página 50 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio El funcionamiento del circuito de la figura es el siguiente: El convertidor A/D manda un impulso de anchura tw por la línea C/M, que cierra el interruptor electrónico, cargándose el condensador C, durante el tiempo tw. En el caso ideal, la tensión en el condensador sigue la tensión de entrada. Posteriormente el condensador mantiene la tensión adquirida cuando se abre el interruptor. El tiempo de carga como el de la descarga del condensador está relacionado con su valor y con el de las resistencias y capacidades parásitas asociadas al circuito. Se recalca el hecho de que el control de la señal C/M procede del convertidor A/D, que es el único que conoce el momento en que finaliza la conversión de la señal anterior. Conversor A/D con comparadores (flash). El primer paso se lleva a cabo mediante comparadores que discriminan entre un número finito de niveles de tensión. Estos comparadores reciben en sus entradas la señal analógica de entrada junto con una tensión de referencia, distinta para cada uno de ellos. Al estar las tensiones de referencia escalonadas, es posible conocer si la señal de entrada está por encima o por debajo de cada una de ellas, lo cual permitirá conocer el estado que le corresponde como resultado de la cuantificación. A continuación será necesario un codificador que nos entregue la salida digital. Página 51 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Por ejemplo, analicemos el caso de un imaginario conversor analógico digital de 2 bits, como el que se muestra en la figura siguiente: Podemos iniciar nuestro análisis diciendo que nuestro conversor analógico/digital tiene una resolución de 2 bit (resolution). A mayor cantidad de bits, mayor resolución. Página 52 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Supongamos que nuestro conversor opera en entre [0V, 5V]. Con este dato podemos definir el rango analógico (analog range) que esta definido como la diferencia entre la máxima y la mínima entrada permitida, es en este caso 5V. La salida de nuestro conversor entregará números binarios. Supongamos que la tensión Vref. = 5V y que las 4 resistencias de igual valor son de 1KΩ. La corriente por las resistencias es: I Vref 5V 1,25ma 4R 4 K Con esto podemos sacar las tensiones en extremos de cada una de las resistencias: V5=0 V V4=1,25ma 1KΩ=1,25 V V3=1,25ma 2KΩ=2,5 V V2=1,25ma 3KΩ=3,75 V V1=5 V Cuando la tensión de entrada atraviese alguno de los valores de tensión antes citados, el comparador cambiará su salida, y por lo tanto el codificador producirá un cambio en su entrada, que a su vez producirá un cambio en su salida. Por ejemplo, supongamos que Vi=1,24 V, entonces el comparador C3, tiene en su entrada positiva 1,25V y en su entrada negativa 1,24V, por lo tanto su salida es un 1. Pero cuando Vi=1,26V para el comparador 4, su entrada positiva sigue siendo 1,25 V y su entrada negativa 1,26V, por lo tanto ahora su salida es un 0. Si hicieramos una tabla para los distintos rangos de tensión de entrada, y mirásemos la salida de los comparadores y la salida del codificador, deberíamos tener algo así: Rango de Salida de C1 Salida de C2 Salida de C3 tensión [V] Salida del codificador 0<=Vi<1,25 1 1 1 00 1,25<Vi<2,5 0 1 1 01 2,5<Vi<3,75 0 0 1 10 3,75<Vi<5 0 0 0 11 Página 53 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio De este caso particular podemos deducir algunas ecuaciones generales para un conversor de n bits: 1) Para un conversor analógico digital tipo flash se necesitan 2n resistencias divisoras de tensión 2) Para un conversor analógico digital tipo flash se necesitan 2n -1 comparadores 3) Cantidad de salidas distintas de un conversor analógico digital de n bits es 2n 4) El bit menos significativo, es decir la resolución del conversor, será de V Vref 2n Se tienen tres conversores analógico digitales con comparadores. Aceptan señal de entrada a convertir entre 0 y 5 volts. Si se dispone de los mismos en versiones de 3, 8, 10, 12 bits, calcular la resolución de los mismos. Página 54 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Página 55 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio Referencias tipográficas : Por razones de tipografía si una variable lógica es A, la misma variable lógica negada se representará como A ., que en realidad se debería representar como . Referencias Bibliográficas Sistemas digitales – Principios y aplicaciones – Autores: Tocci, Widmer Página 56 de 56 Versión 20100607 Prof. Ing. Gustavo E. Ponisio