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