Está en la página 1de 79

Para un técnico en electrónica, contar con instrumentos de prueba adecuados se convierte en un factor muy importante a la hora de

reparar equipos electrónicos.


¡Imagínese tratar de reparar una fuente de alimentación sin un voltímetro!
El instrumento de prueba más usual es el multímetro, el cual puede medir volts, resistencia, corriente e inclusive algunos pueden me-
dir capacitancia, frecuencia, transistores y temperatura. Los hay de muy variados precios, de aguja o digitales. Otro instrumento útil,
pero de costo relativamente elevado, es el osciloscopio, de los cuales hay analógicos o digitales, de uno o más canales. El oscilos-
copio es indispensable cuando se trata de analizar señales que fluctúan en el tiempo, como pulsos digitales, señales de audio e in-
clusive señales de RF.
Para analizar señales digitales se usa un analizador de estados lógicos, el cual es semejante al osciloscopio con la diferencia que
despliega señales lógicas (uno o cero) y además tiene como mínimo 8 canales. Estos dos últimos instrumentos no son frecuentes en-
tre los aficionados a la electrónica principalmente debido a su costo, sin embargo son instrumentos muy útiles.
En los últimos años el uso de microcontroladores en proyectos de electrónica se ha vuelto una práctica común, debido a su bajo cos-
to y versatilidad.
Continuando con esta línea, se propone el uso de una tarjeta de interfaz para televisión con capacidades gráficas con el fin de usar-
la para diseñar equipos de instrumentación de alta calidad y bajo costo. En la actualidad existe una gran cantidad de instrumentos
virtuales, los cuales utilizan una PC para procesar datos y desplegar gráficas vistosas, sin embargo no siempre se requiere de tal ca-
pacidad. De sobra sabemos que basta un simple display de cuarzo para cubrir las necesidades de despliegue de incontables instru-
mentos. La interfaz que proponemos se conecta a cualquier televisión o monitor con entrada de video para obtener así un display de
alta resolución con varios tonos de gris. Además, la tarjeta es inteligente y puede procesar señales digitales para facilitar mostrar en
la pantalla múltiples controles, imágenes y caracteres, incluso tiene integradas instrucciones para simular un display de cuarzo.

Director de la Colección Club SE Administración Argentina: Staff


Ing. Horacio D. Vallejo Teresa C. Jara Víctor Ramón Rivero Rivero
Administración México: Olga Vargas
Jefe de Redacción Patricia Rivero Rivero Liliana Vallejo
Ing. Horacio Daniel Vallejo Comercio Exterior Argentina: Mariela Vallejo
Hilda Jara Fabian Alejandro Nieves
Autor de esta edición: Comercio Exterior México: Ramón Miño
Ing. Luis Roberto Rodríguez Margarita Rivero Rivero Fernando Ducach
Director Club Saber Electrónica: Areas de Apoyo
Club Saber Electrónica es una publi- Luis Leguizamón Teresa Ducach
cación de Saber Internacional SA de Responsable de Atención al Lector: Fernando Flores
CV de México y Editorial Quark SRL Alejandro A. Vallejo FF Studio
de Argentina Coordinador Internacional Claudio Gorgoretti
José María Nieves Paula Vidal
Editor Responsable en Argentina y Publicidad Raúl Romero
México: Argentina: 4301-8804 - Internet: www.webelectronica.com.ar
Ing. Horacio D. Vallejo México: 5839-5277 Web Manager: Luis Leguizamón

Club Saber Electrónica Nº 49. Fecha de publicación: Enero 2009. Publicación mensual editada y publicada por Editorial Quark,
Herrera 761 (1295) Capital Federal, Argentina (005411-43018804), en conjunto con Saber Internacional SA de CV, Av. Moctezu-
ma Nº 2, Col. Sta. Agueda, Ecatepec de Morelos, México (005255-58395277), con Certificado de Licitud del título (en trámite).
Distribución en México: REI SA de CV. Distribución en Argentina: Capital: Carlos Cancellaro e Hijos SH, Gutenberg 3258 -
Cap. 4301-4942 - Interior: Distribuidora Bertrán S.A.C. Av. Vélez Sársfield 1950 - Cap. – Distribución en Uruguay: Rodesol SA
Ciudadela 1416 – Montevideo, 901-1184 – La Editorial no se responsabiliza por el contenido de las notas firmadas. Todos los
productos o marcas que se mencionan son a los efectos de prestar un servicio al lector, y no entrañan responsabilidad de nues-
tra parte. Está prohibida la reproducción total o parcial del material contenido en esta revista, así como la industrialización y/o
comercialización de los aparatos o ideas que aparecen en los mencionados textos, bajo pena de sanciones legales, salvo median-
te autorización por escrito de la Editorial.
Revista Club Saber Electrónica, ISSN: 1668-6004
Rodríguez, Luis Alberto
Interfaz gráfica para TV / Luis Alberto Rodríguez ; dirigido por Horacio Vallejo. - 1a ed. - Buenos Aires : Quark,
2009.
80 p. ; 28x20 cm.
ISBN 978-987-623-132-9

1. Electrónica. I. Vallejo, Horacio, dir. II. Título


CDD 621.3
Fecha de catalogación: 26/11/2008
Capítulo 1: Convierta su PC en multímetro, osciloscopio Método 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
o cualquier otro instrumento electrónico . . . . . . . . . . . .3 Método 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Utilizando un microcontrolador para medir inductancia . . . . . .42
Pantalla principal de la interfaz . . . . . . . . . . . . . . . . . . . . . .3 Cálculos realizados por el microcontrolador . . . . . . . . . . . .43
Principios de funcionamiento . . . . . . . . . . . . . . . . . . . . . . .4 Diagrama esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Aspecto físico de la tarjeta . . . . . . . . . . . . . . . . . . . . . . . . .4 Programa del microcontrolador . . . . . . . . . . . . . . . . . . . . . .44
Características de la interfaz . . . . . . . . . . . . . . . . . . . . . . .5 Actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Comunicación con la interfaz . . . . . . . . . . . . . . . . . . . . . . .5 Planenado nuestra pantalla . . . . . . . . . . . . . . . . . . . . . . . .45
Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Un poco de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Calibración y ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Montaje. Reloj Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Planeando nuestro primer proyecto . . . . . . . . . . . . . . . . . .13 Capítulo 5: Construcción de un osciloscopio de
Principios de funcionamiento de un reloj . . . . . . . . . . . . . .13 baja frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Manos a la obra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Archivo fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Osciloscopio y televisor . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Tabla de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Principios de funcionamiento de un osciloscopio digital . . . . . . .48
Vectores de inicio e interrupción, inclusión de archivos . . .16 Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Código de las tablas de datos y textos . . . . . . . . . . . . . . . .17 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Subrutina de interrupción del TMRO . . . . . . . . . . . . . . . . .17 Actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
Código principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Nuestro osciloscopio en acción . . . . . . . . . . . . . . . . . . . . .53
Configuración de puertos . . . . . . . . . . . . . . . . . . . . . . . . . .18 Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
Registro de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Indicando registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Capítulo 6: Analizador de estados lógicos . . . . . . . . . .55
Dibujando en la pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Escribiendo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Cómo funciona un analizador de estados lógicos . . . . . . .55
Dibujando el ícono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Analizadores lógicos virtuales . . . . . . . . . . . . . . . . . . . . . . .55
Preparando el display . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Elementos básicos de un analizador de estados lógicos . .56
Desplegando la hora y habilitando interrupciones . . . . . . .20 Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Manejando los interruptores . . . . . . . . . . . . . . . . . . . . . . . .20 Actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Preparando nuestro reloj . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Descripción del funcionamiento . . . . . . . . . . . . . . . . . . . . .58
Disparo por evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
Capítulo 2: Medidor de capacitores para IGTV . . . . . .23 Contador de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Principios del funcionamiento . . . . . . . . . . . . . . . . . . . . . . .23 Descripción de operación . . . . . . . . . . . . . . . . . . . . . . . . . .59
Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Modo de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Cararcterísticas del medidor digital de capacitores . . . . . .24 Ejemplo del uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
Programa fuente base . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Modo de captura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Planeando la pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Modo de análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Disparando al 4538 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Midiendo el ancho del pulso . . . . . . . . . . . . . . . . . . . . . . . .27
Enviando el resultado a la pantalla . . . . . . . . . . . . . . . . . . .27 Capítulo 7: Interruptor sensible al tacto . . . . . . . . . . . .63
Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Los interruptores en los microcontroladores . . . . . . . . . . . .63
Calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Rebote de los interruptores . . . . . . . . . . . . . . . . . . . . . . . . .64
Precaución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Manejo de interruptores mecánicos con un microcontrolador64
Frecuencímetro tipo A . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Manejo de interruptores al tacto con un microcontrolador .64
Colocando los interruptores en la pantalla . . . . . . . . . . . . .65
Capítulo 3: Construcción de un Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Frecuencímetro de 1GHz . . . . . . . . . . . . . . . . . . . . . . . .29
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Capítulo 8: Generador de funciones . . . . . . . . . . . . . . .67
Midiendo frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Premisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
Contador digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Un generador de funciones en un sólo integrado . . . . . . . .67
Compuerta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Generador de funciones analógicos . . . . . . . . . . . . . . . . . .67
Base de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Generador de funciones digital . . . . . . . . . . . . . . . . . . . . . .68
Lógica de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Principios de funcionamiento . . . . . . . . . . . . . . . . . . . . . . .68
Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Datos de la forma de onda . . . . . . . . . . . . . . . . . . . . . . . . .68
Control del intervalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Un poco de matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . .69
Actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 Generador de funciones con un microcontrolador . . . . . . .69
Planeando nuestra pantalla . . . . . . . . . . . . . . . . . . . . . . . .33 Diagrama en bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Los preescaldores al rescate . . . . . . . . . . . . . . . . . . . . . . .35 Generador de señales . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Prescalador MC12080 . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Frecuencia máxima de operación . . . . . . . . . . . . . . . . . . . .71
Escalas de frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Convertidor digital analógicos . . . . . . . . . . . . . . . . . . . . . . .72
Cómo se multiplica por 80? . . . . . . . . . . . . . . . . . . . . . . . .36 Diagrama esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
El mismo software para ambos frecuencímetros . . . . . . . .38 Uso de los interruptores de forma y escala . . . . . . . . . . . .74
Calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Medición de la frecuencia generada . . . . . . . . . . . . . . . . . .75
Medición del voltaje de salida . . . . . . . . . . . . . . . . . . . . . . .76
Capítulo 4: Medidor de inductancias . . . . . . . . . . . . . . .41 Actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Midiendo inductancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Métodos de la lectura indirecta . . . . . . . . . . . . . . . . . . . . . .41 Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
INTRODUCCION faz para televisión, la cual puede trazar gráficos y
caracteres en la pantalla. Podremos diseñar cualquier
Uno de los problemas con el que nos enfrentamos
instrumento que requiera desplegar gráficos sin más
a la hora de diseñar un aparato que requiera mostrar
que enviarle las instrucciones al procesador gráfico
información es, precisamente, dónde desplegarla:
incluido. Algunos ejemplos posibles de construir son:
¿En un display de cuarzo?,
* Multímetros digitales.
¿El display debe ser gráfico o sólo de caracteres?
* Frecuencímetros.
¿Cuál es el costo máximo del display que pode -
* Trazadores de curvas de dispositivos semi -
mos usar?
conductores.
Un ejemplo que se me ocurrió una vez, fue que se
* Analizadores lógicos.
me pidió diseñar un contador de llamadas telefóni-
* Osciloscopios digitales.
cas, con la característica de mostrar en alguna pan-
* Sistemas de desarrollo completos para micro -
talla las llamadas que se hicieron y quién las hizo
controladores.
(con claves distintas para cada usuario). A la hora de
Y un largo etcétera, con la imaginación del aficio-
seleccionar el display necesitaba uno de varias líneas
nado o técnico como límite.
y con iluminación. Después de revisar varias opcio-
La elaboración del proyecto proporciona, ade-
nes (la mayoría de precio elevado), decidí diseñar
más, una excelente oportunidad para aprender mi-
una interfaz (Interfase) para televisión. El desplegar
crocontroladores, ya que los aparatos que utilizan la
gráficos y caracteres en una televisión ofrece varias
tarjeta de interfaz necesitan invariablemente el con-
ventajas:
trol de algún microcontrolador.
* Bajo costo (hay TVs desde 20 dólares).
* Se puede alcanzar gran resolución (hasta
PANTALLA PRINCIPAL DE LA INTERFAZ (INTERFASE)
320 por 240 pixeles).
* Se puede conseguir fácilmente.
La figura 1 muestra la pantalla principal al conec-
* Posibilidad de desplegar colores.
tar la interfaz. Esta indica si se cuenta con las memo-
El proyecto ha culminado en una tarjeta de inter-
rias opcionales tipo EEPROM. Como se puede apre-
ciar, en este caso se cuenta con las dos unidades.

Ejemplo de Aplicación
La figura 2 muestra un diagrama en bloques con
un ejemplo simple de una aplicación, en este caso un
termómetro. El microcontrolador envía instrucciones a
la tarjeta gráfica utilizando sólo 3 líneas (D0, RJ y LR)
y la tarjeta envía la señal de video a una televisión
Figura 1 para su despliegue.

3
PRINCIPIOS DE
FUNCIONAMIENTO

Básicamente, la idea es
direccionar secuencialmen-
te una memoria y convertir
el dato de la localidad en
turno en un nivel de voltaje
de video, con el fin de des-
plegarlo en la pantalla de Figura 2
un televisor.
El inicio del despliegue es en la esquina superior crocontroladores utilizados, el ATMEL ATMega8515
izquierda de la pantalla. y el PIC 16C55. Debajo del PIC se puede apreciar la
Después de direccionar cierto número de locali- memoria RAM de video y a la izquierda dos memo-
dades (número de puntos por línea horizontal) se de- rias EEPROM de 8 patas cada una (en la foto sólo se
tiene el direccionamiento de la memoria y se genera ha insertado una).
una señal llamada blanqueo, la cual en la pantalla es Debajo del 8515 se aprecia el conector de inter-
invisible. faz (Interfase), el cual es una base de 16 patas con
Después de cierto tiempo de blanqueo se genera la cual se comunica la IG con el mundo exterior.
un pulso de sincronía horizontal, lo cual hace que se Arriba a la izquierda se puede observar el conec-
inicie en la televisión una nueva línea. Al cabo de tor RCA para la salida de video.
cierto tiempo después del pulso de sincronía, se qui- El conector de arriba a la derecha es para la en-
ta la señal de blanqueo y se continúa con el direc- trada de alimentación de 12 volts. A la izquierda del
cionamiento de la memoria en la siguiente línea. 8515 se puede apreciar un interruptor analógico
Este proceso se repite cierto número de veces (lí- CMOS 4066.
neas horizontales) hasta que se llega a la parte baja La tarjeta tiene, además, la posibilidad de inser-
en la derecha de la pantalla, entonces se genera otro tar un conector de entrada para un teclado estándar
blanqueo y posteriormente se genera un pulso de sin- de PC, con el fin de usar entrada por teclado en los
cronía vertical, lo cual hace que el trazo en la panta- proyectos que así lo requieran, como ejemplo un sis-
lla inicie de nuevo su trayectoria en la parte superior tema de desarrollo de microcontroladores, donde es
izquierda de la pantalla. Este movimiento de arriba a necesario un editor de texto.
la izquierda hasta abajo a la derecha en la pan-
Figura 3
talla se repite constantemente, variando la lumi-
nosidad del punto en la pantalla de acuerdo al
dato contenido en la memoria.
Después de cada pulso vertical se reinicia el
direccionamiento de la memoria de video.

ASPECTO FISICO DE LA TARJETA

La figura 3 muestra una fotografía de la tar-


jeta IGTV, donde se pueden apreciar los dos mi-

4
COMUNICACION CON
LA INTERFAZ (INTERFASE)

La tarjeta tiene un conector


DIP de 16 patas, el cual se usa
para la comunicación entre el
microcontrolador externo y la
IG (interfaz (Interfase) gráfica).
Figura 4 Básicamente se usan sólo 3
líneas (LR, D0 y RJ).
La señal LR (Listo para Reci-
También se han dispuesto 2 bases para memorias bir) la envía la IG cuando está lista para recibir da-
EEPROM del tipo serie, con el objeto de disponer de tos del mundo exterior. Las instrucciones se envían
memoria no volátil en los proyectos que así lo requie- por D0 de manera sincrónica (síncrona), los pulsos
ran. de reloj se envían a través de RJ, los cuales son pro-
porcionados por el microcontrolador externo.
Obviamente los datos se envían en serie, ya que
CARACTERISTICAS DE LA INTERFAZ (INTERFASE) sólo hay una línea (D0) para recibir las instrucciones.
Las instrucciones se componen de uno o más by-
En realidad, la tarjeta es una verdadera micro- tes, por ejemplo, para borrar la pantalla se debe en-
computadora con las siguientes características: viar un “0”, en cuyo caso la instrucción consta de un
solo byte.
* Entrada por teclado estándar de PC. Para dibujar un punto se debe enviar un “8” se-
* 32kbytes de memoria RAM (volátil). guido de dos bytes indicando las coordenadas del
* Hasta 64kbytes de memoria EEPROM (no vo - punto “X” y “Y”. Esta instrucción requiere de 3 bytes.
látil). Para ilustrar con un ejemplo, supongamos que de-
* Salida de video estándar para TV. seamos borrar la pantalla y luego dibujar un punto
* Resolución de 228 x 216 pixeles con 16 to - en el centro (coordenadas 114, 108). Los bytes que
nos de gris. debemos enviar por D0 serían los siguientes:

El procesador gráfico utiliza menos de los Byte 1 0 Instrucción borrar la pan -


128kbytes de memoria RAM disponible, quedando talla.
cerca de 32kbytes libres, los cuales pueden ser usa- Byte 2 8 Instrucción dibujar un pun -
dos por el microcontrolador externo en algún proyec- to.
to. Byte 3 114 Coordenada X del punto.
No en todos los proyectos se requiere de un tecla- Byte 4 108 Coordenada Y del punto.
do o de memoria EEPROM, la tarjeta funciona sin la
necesidad de estos elementos, los cuales pueden ser Después de estas instrucciones, lo que veríamos
agregados en el momento en que se hagan necesa- en la pantalla sería un punto en el centro de la mis-
rios. Sin embargo, la memoria RAM de 32kbytes ma. El color del punto se establece con otra instruc-
siempre estará disponible, ya que forma parte de la ción de 2 bytes.
memoria de video la cual está integrada en la tarje- En la figura 4 se muestra la manera en que se en-
ta. vía un “8” a la IG:

5
Como señala el dibujo, el dato lo lee la IG en ca- para explicar su funcionamiento se supone que el lec-
da subida del RJ, el cual es enviado por el microcon- tor posee un ligero conocimiento de las señales de te-
trolador externo, junto con el dato. levisión. Si requiere una explicación más amplia se
Se observa también que no se comienza a enviar sugiere consultar la serie de artículos del Club Saber
el byte hasta que LR está en estado lógico “1”. Esta Electrónica “Aprenda TV color en 8 lecciones“, don-
señal la proporciona la IG cuando está lista para re- de se explica la generación, tratamiento y despliegue
cibir instrucciones. de la señal de video (puede bajar gratuitamente este
Mientras la IG procesa cada byte recibido, colo- curso de nuestra web: www.webelectronica.co -
ca LR en “0” para avisar que no se deben enviar más m.ar, haciendo click en el ícono password e ingre-
bytes. Al terminar de procesar el dato recibido, la IG sando la clave “quierotv”). Sin embargo, para usar
avisa de nuevo que está lista para recibir más datos la tarjeta y diseñar equipo con ella, no se requiere
colocando a “1” la señal LR. gran conocimiento de las señales de televisión, ya
Es labor del microcontrolador externo revisar el que la tarjeta sólo espera instrucciones en forma de
estado de LR antes de enviar cada byte. bytes y los circuitos internos se encargan del desplie-
La IG es capaz de dibujar puntos, líneas vertica- gue en la pantalla.
les y horizontales, cuadros, marcos, botones, caracte- La tarjeta consta de 2 microcontroladores, un
res, imágenes e inclusive tiene integrada una función PIC16C55 del conocido fabricante Microchip y otro
para dibujar un display de cuarzo de hasta 8 dígitos de la serie Atmel (ATMega8515).
simplemente enviando el
código en 3 bytes en for-
mato binario. La IG se en- Figura 5
carga de hacer la conver-
sión a decimal y desplegar
el valor en la pantalla si-
mulando displays de cuar-
zo.
Se ha incorporado un
editor de texto de una lí-
nea, el cual se controla
con un teclado común de
PC, el cual se inserta en el
conector mini-din de la tar-
jeta. También se han im-
plementado instrucciones
para grabar y leer la me-
moria de video y aprove-
char los 32kbytes (32K) li-
b res en algún pro y e c t o
que requiera memoria
RAM.
En la figura 5 se mues-
tra el diagrama en bloques
de nuestra interfaz gráfica,

6
El PIC16C55 se encarga de generar las señales El 16C55 direcciona la memoria en orden cre-
de televisión, las cuales son sincronía vertical, sincro- ciente (0000-FFFF) y de acuerdo al dato almacenado
nía horizontal y blanqueo. Además el PIC se encarga en cada localidad, se presenta en la pantalla un pun-
de direccionar la memoria de video y avisar al pro- to de distinta luminosidad, proporcionado por el con-
cesador gráfico (8515) cada vez que la memoria vertidor D/A.
está libre (durante los periodos de blanqueo), con el Sin embargo, hay tiempos muertos de la memoria
fin de que el 8515 pueda tomar los buses de datos y la cual no es utilizada por el 16C55, estos períodos
direcciones para guardar en la memoria de video los se conocen como blanqueo y se presentan antes y
datos a desplegar. Los bits de datos de la memoria después de iniciar cada línea horizontal y antes y
(D0-D3) se llevan a un convertidor D/A, el cual con- después de cada pulso vertical.
vierte el dato en la localidad de la memoria en un ni- Es en estos instantes cuando el 8515 se apropia
vel de voltaje que luego se aplica a la salida de vi- de la memoria y escribe lo que debe desplegarse en
deo. El convertidor D/A de 4 bits genera, en la pan- la pantalla. En cuanto el 16C55 vuelve a posesionar-
talla, una gama de grises de 16 tonos, más que sufi- se de la memoria, se continúa con el barrido secuen-
cientes para cualquier propósito de instrumentación cial.
(recuerde que por lo general el display de cuarzo só- No podemos escribir en la memoria cuando el
lo tiene 2 tonos). PIC esté presentando la señal en la pantalla, ya que
La señal de video pasa a través del interruptor alteraríamos el video al pretender que los 2 micro-
analógico SW1, el cual es controlado por el PIC. controladores escriban en la memoria al mismo tiem-
Cuando se llega al final de cada línea horizontal po.
o vertical, el SW1 se abre y, al mismo tiempo se cie- En cuanto el PIC envía la señal de blanqueo
rra el SW2, enviando a la salida el nivel de voltaje (abriendo SW1 y cerrando SW2), se indica al micro-
de blanqueo, el cual es “más negro que el negro” en controlador 8515 a través de la señal “Memoria Li-
lo que a video se refiere, y en consecuencia es invisi- bre”, que el bus de datos y direcciones de la memoria
ble en la pantalla. RAM están libres, esto debido a que el PIC coloca sus

Lista de Materiales C7 - 1000µF - Electrolítico x 25V D2 - 1N914 - Diodo de uso gene-


C6 - 100µF - Electrolítico x 25V ral
Resistencias Q1, Q2 - 2N2222 - Transistores
R1, R2, R15 - 1k Integrados
R4, R7, R8, R11, R12 - 1.8k U3 - ATMega8515 - Microcontro- Conectores
R18 - 2.7k lador 16MHz J4 - Conector RCA - Salida Video
R20, R21, R24, R25 - 3.3k U1 - PIC16C55 - Microcontrolador J3 - Conector Teclado (Opcional)
R3, R5, R6, R9, R10, R17 - 3.6k 20MHz J1 - Conector programación (Op-
R23 - 100 U8 - 628128 - Memoria RAM cional)
R16 - 220 128K U7 - Conector de alimentación -
R26 - 270 U4, U5 - AT24C256 EEPROM Banana Invertida
R13, R14, R19 - 390 (Opcionales)
R22 - 470 U2 - 4066 - Interruptor analógico Varios
U6 - 7805 - Regulador de voltaje Y2 - Cristal 16MHz
Condensadores (todos en µF) Y1 - Cristal 20MHz
C8, C9, C10 - 0.1µF - Cerámico Diodos y transistores S1 - Interruptor de encendido
C3 - 10µF - Electrolítico x 25V D1 - LED de 5mm color rojo (Encendi- (Opcional)
C1, C2, C4, C5 - 15pf - Cerámico do) J2 - Conector DIP de 16 patas

7
Figura 6
8
salidas en alta impedancia, para que puedan ser ma- nía horizontal y/o vertical, las cuales consisten en
nipuladas por el 8515 (IG). pulsos negativos que a través del diodo llevan la se-
Durante la señal de blanqueo, el PIC además de ñal de video prácticamente a tierra, obteniéndose así
poner sus salidas de direcciones y datos en alta im- el nivel bajo que se requiere para una sincronía en vi-
pedancia, genera las señales apropiadas de sincro- deo.

Figura 7

Figura 8

9
Figura 9

Como se observa en el diagrama en bloques, el desde: www.webelectronica.com.ar, haciendo


8515 también controla la entrada del teclado (si exis- click en el ícono password e ingresando la clave
te) y las memorias EEPROM (si se han colocado). “graficatv”.

CONSTRUCCION UN POCO DE SOFTWARE

En la figura 6 se puede apreciar el diagrama es- Recuerde que nuestra placa posee un microcon-
quemático de la IG. trolador que genera las señales de sincronismo de TV
En la figura 7 se observa la placa de ciruito im- (PIV16C55), un programa que genera “el entorno
preso del lado de los componentes (la placa es doble gráfico” para mostrar señales en el TV en escalas de
faz), la figura 8 muestra el dorso de la placa de cir- grises y que representa a la “verdaera interfaz
cuito impreso. En la figura 9 se muestra el diagrama (Interfase) gráfica IG”. Por cuestiones de espacio, nos
pictórico para la localización de los componentes. vemos obligados a no “transcribir” el software de la
J1 es un conector del tipo doble línea de 6 patas interfaz (Interfase) gráfica ya que por más que lo ha-
el cual se usa para programar al 8515 en sitio. Esto gamos en letra pequeña, ocuparía varias páginas y
generalmente es para actualizar el software y gene- no creo que nadie “pierda” varias horas en el tipeo
ralmente el usuario no lo necesita. de dicho programa. El programa se llama: “IGT-
En la w w w.webelectronica.com.ar encon- V.asm” y el ejecutable (que se debe grabar en el mi-
trará el código fuente completo de los dos microcon- crocontrolador Atmel) se llama “IGTV.hex”. Para la
troladores, así como los archivos binarios para gra- comunicación con la IG, es necesario el uso de un mi-
barlos directamente con el programador adecuado. crocontrolador. Este programa puede bajarlo de
Puede bajar gratuitamente toda la información y los nuestra web en cualquiera de las dos versiones: as-
códigos, así como el manual de uso de la placa sembler (asm) o hexadecimal (hex).

10
Por otra parte, el programa a grabar en el
PIC16C55, encargado de generar las señales de TV,
se denomina “picigtv.asm” y también lo puede ba-
jar de nuestra web.
Para la comunicación con la IG, es necesario el
uso de un microcontrolador. En el caso de usar el po-
pular PIC, en el listado 2 se muestra un ejemplo de
una subrutina para enviar un byte a la IG. En cada
proyecto que se desarrolle, simplemente se integra al
código de las demás subrutinas.
“Dato” es cualquier registro libre del PIC, RJ y D0
están en RB0 y RB1.

Algunos Ejemplos
Volviendo a nuestro ejemplo para dibujar un pun-
to en el centro de la pantalla, el código sería el si-
guiente:

MOVLW 0 ; Instrucción “Borrar Pantalla”.


PROYECTOS
CALL EnviarByte ; Enviar el Byte a la IG.
MOVLW 8 ; Instrucción “Dibujar Punto”.
A continuación se describen algunos de los pro-
CALL EnviarByte ; Enviar el Byte a la IG.
yectos que llevaremos a cabo a lo largo de esta edi-
MOVLW 114 ; Coordenada X del punto.
ción y en proximos numeros de la colección CLUB SE.
CALL EnviarByte ; Enviar el Byte a la IG.
MOVLW 108 ; Coordenada Y del punto.
MEDIDOR DE CAPACITORES DIGITAL: Con
CALL EnviarByte ; Enviar el Byte a la IG.
este primer proyecto podremos medir condensadores
desde 1pf hasta 40µF en 3 escalas.
A continuación se muestra la manera en que se
puede poner la pantalla en blanco.
GENERADOR DE FUNCIONES: Con este pro-
yecto crearemos un generador de señales digital, el
MOVLW 10 ; Instrucción “Color de Fondo”.
cual proporcionará salidas de forma de onda cuadra-
CALL EnviarByte ; Enviar el byte a la IG.
da, sierra, triangular y senoidal.
MOVLW 15 ; Color blanco ( 0=negro, 15 =blanco).
CALL EnviarByte ; Enviar el Byte a la IG.
ANALIZADOR DE ESTADOS LOGICOS:
CLRW ; Instrucción “Borrar Pantalla”.
Construiremos un analizador digital de estados lógi-
CALL EnviarByte ; Enviar el Byte a la IG.
cos de 8 canales expandible a 24. Con este instru-
mento podremos capturar la secuencia de señales di-
En el caso anterior, al enviar la instrucción “Bo-
gitales para, posteriormente, analizarlas de manera
rrar Pantalla” (Enviando un Cero), la pantalla se lle-
visual mediante su representación gráfica en la pan-
nará con el color de fondo, el cual en el ejemplo es
talla.
15 (color blanco). Aunque los ejemplos anteriores
son muy simples, esto dará una idea de lo fácil que
OSCILOSCOPIO DIGITAL: Construiremos va-
es manejar la interfaz (Interfase) Gráfica.
rios tipos de osciloscopios. Comenzaremos con uno

11
sencillo de un solo integrado (sí, estimado lector, leyó EQUIPO NECESARIO
usted bien... ¡un solo integrado!), sin embargo será Para trabajar desarrollando proyectos con la IG
capaz de mostrar perfectamente señales de audio en necesitará de algunos recursos, los cuales se enume-
su televisor. Posteriormente realizaremos otros de alta ran a continuación:
frecuencia y de altas prestaciones. 1) Una PC con Windows 98SE o superior.
Aunque el costo de estos instrumentos puede lle- 2) El sistema de desarrollo MPLAB IDE de Micro -
gar a ser elevado, nosotros los construiremos a un chip, el cual es proporcionado gratuitamente en la
precio realmente reducido, de tal forma que será ac- página WEB de dicha compañía.
cesible a todos los lectores de de la Colección del 3) Un programador de microcontroladores PIC.
CLUB SE. 4) Una tarjeta IGTV.
5) Subrutinas y macros especiales para la progra -
Estos instrumentos son sólo una pequeña muestra mación.
de lo que es posible construir con la tarjeta IGTV. 6) Una Televisión con entrada de video (si es con
Posteriormente se construirán diversos instrumen- pantalla de 5 pulgadas mejor).
tos en base a las sugerencias de los lectores y confor-
me surjan necesidades de equipo especial, tal como Es necesario aclarar que se puede utilizar cual-
instrumentos de prueba para electrónica del automó- quier tipo de microcontrolador y no necesariamente
vil e incluso sencillos video-juegos. PIC (la IG tiene incluso un microcontrolador Atmel),
Cabe aclarar que todos los proyectos que se sin embargo, los PIC son populares y existen muchos
construyan estarán disponibles en forma de kits. A programadores de bajo costo y fáciles de utilizar por
continuación vamos a establecer nuestro lema para lo que hemos decidido emplear este tipo de micro-
todos los proyectos, el cual será: “BAJO COSTO Y controladores en los proyectos.
PIEZAS FACILES DE CONSEGUIR” Hemos desarrollado también una serie de subruti-
nas y macros para facilitar la escritura de los progra-
mas de aplicación. Estas subrutinas contienen macros
********************************* que facilitan utilizar las instrucciones de la IG, ya que
MONTAJE para llamarlas se hace uso de una instrucción menos
Primer Proyecto - RELOJ DIGITAL abstracta y con parámetros incluidos, por ejemplo,
para borrar la pantalla simplemente se escribe “BO-
A continuación se explicarán las instrucciones RRAR PANTALLA” en lugar de MOVLW 0 seguido de
más importantes de la interfaz (Interfase) . Luego di- una llamada a la subrutina ENVIAR_BYTE.
señaremos un reloj digital paso a paso para poner en
práctica tales instrucciones. Para este proyecto inicial SUBRUTINAS Y MACROS ESPECIALES
necesitaremos la tarjeta IGTV, un microcontrolador Si estas subrutinas no las tiene, deberá bajarlas
PIC16F84, una tarjeta de experimentos y algunas de la página WEB sin cargo, con la clave “grafi -
piezas. catv”, sin embargo, al adquirir la IG en forma de kit,
Con este sencillo proyecto aprenderá algunas ins- éstas se proporcionan en el disco adjunto, el cual
trucciones básicas y le aseguramos que pronto adqui- también contiene el manual. Dichas subrutinas son:
rirá tal conocimiento acerca de la IG que en poco ComIG.asm: Comunicación con la IG.
tiempo comenzará a diseñar su propio equipo. MacrosIG.asm: Macros que facilitan enviar ins-
Sin embargo, si su deseo es aprovechar los kits trucciones a la IG.
que se pondrán a su disposición, de igual forma se TablasDatos.asm: Subrutinas que facilitan en-
verá usted beneficiado de la versatilidad de la IGTV. viar datos y textos a la IG.

12
PLANEANDO NUESTRO nable precisión y la usaremos como nuestra referen-
PRIMER PROYECTO cia de tiempo.
Antes de ponernos a teclear código debemos pla-
near la presentación de nuestro primer proyecto. ¿Cómo lo haremos?
Diseñaremos un reloj digital, el cual mostrará en Emplearemos el siguiente algoritmo simple: Intro-
la pantalla un display de cuarzo simulado con las ho- duciremos los pulsos de 60Hz (50Hz) al timer interno
ras, minutos y segundos. Tendrá dos botones de con- del PIC y generaremos una interrupción cada 60 (50)
trol para ajustar las horas y los minutos: “HOR” y pulsos, esto es, cada segundo. En la subrutina de in-
“MIN”. terrupción incrementaremos los segundos, si los se-
Al presionar el botón “MIN” se incrementarán los gundos son 60, pondremos en cero los segundos e in-
minutos y se pondrán en cero los segundos. No tiene crementaremos los minutos, si los minutos son 60,
caso poner un botón para ajustar los segundos. pondremos en cero los minutos e incrementaremos las
Dibujaremos un pequeño ícono en forma de reloj horas. Si las horas son 24, pondremos las horas en
en la esquina superior izquierda y trazaremos dos cero.
barras superiores con texto. La primera dirá “SABER Lo anterior es para actualizar la hora cada segun-
ELECTRONICA SIMTV” y la segunda dirá “RELOJ DI- do. Para el funcionamiento de los interruptores sim-
GITAL”. (Bueno, en realidad usted puede poner el tex- plemente verificaremos en el programa principal si
to que desee). han sido presionados, en caso de ser así se incremen-
tarán los minutos o las horas, dependiendo del inte-
PRINCIPIOS DE FUNCIONAMIENTO rruptor presionado.
DE UN RELOJ Bien, ya basta de explicaciones y premisas, pon-
En el momento en que empezamos el diseño de gámonos a trabajar.
un reloj lo primero que se nos viene a la mente es:
¿de dónde vamos a sacar la referencia del tiempo?. ¡MANOS A LA OBRA!
Para esto existen básicamente 3 opciones: Para este primer proyecto simple con la IG, debe-
remos armar un pequeño circuito en la tarjeta de ex-
a) Un oscilador con RC. perimentos, para lo cual necesitaremos los siguientes
b) Un oscilador con cristal. elementos:
c) Una señal de “línea”. a) 1 microcontrolador PIC16F84.
b) 1 cristal de 3.579545MHz.
La primera opción francamente ni debemos consi- c) 2 condensadores de 15pF.
derarla, ya que un oscilador simple RC aunque lo im- d) 2 mini-interruptores tipo “push” para circuito im -
plementemos con resistencia y condensador de preci- preso.
sión no proporcionaría la estabilidad de la frecuen- e) 1 Diodo zener de 5.1V x 1W.
cia necesaria para un reloj. f) 1 Transformador de 110V (220V) a 6V.
La segunda opción parece más viable, podríamos g) 1 resistencia de 2.2k.
incluso utilizar el cristal del mismo microcontrolador y h) Tarjeta para experimentos “Protoboard”.
utilizar el timer interno para generar un pulso cada
segundo como referencia, sin embargo el software se Con estas piezas arme el circuito de la figura 10.
complicaría un poco. Por lo tanto, sólo nos queda la Es probable que no se necesiten los condensadores
tercera opción y es la que usaremos, esto es, tomare- del cristal ya que la tarjeta de experimentos posee su-
mos la frecuencia de la línea de AC, la cual es de ficiente capacitancia parásita entre sus terminales co-
60Hz ó 50Hz (dependiendo de la red local) de razo- mo para iniciar y mantener las oscilaciones; sin em-

13
bargo, cuando el circuito se arma en un circuito im- 16F84A y presione “Siguiente”.
preso los condensadores se hacen necesarios. 8) Aparece “Step Two:” Verifique que Active Tool -
A continuación se muestra paso a paso lo que de- suite sea “Microchip MPASM Toolsuite” y que Toolsuite
berá hacer para preparar su PC. Partiremos del he- Contents sea “MPASM Assembler(mpasmwin.exe)”.
cho de que ya tiene instalado el programa de Micro- 9) En el cuadro de edición Location aparece el
chip MPLAB IDE y de que ya tiene las subrutinas es- subdirectorio por defecto del programa mpasmwin.e -
peciales. xe, deje este cuadro así y presione “Siguiente”.
1) Cree un subdirectorio para sus proyectos en la 10) Aparece “Step Three:” En Project Name intro -
PC y nómbrelo como usted desee (por ejemplo IGTV). duzca “ProyRelojDigital”.
2) Dentro de este subdirectorio cree otro con el En el cuadro de edición Project Directory presio -
nombre “Comunes”. Es en este subdirectorio donde ne el botón “Browse…” y navegue hasta que aparez -
colocaremos las subrutinas que serán comunes a to - ca el subdirectorio “RelojDigital” y selecciónelo. A
dos los proyectos. continuación presione “Siguiente”.
3) Coloque en “Comunes” las subrutinas ComI - 11) Aparece “Step Four:” Aquí puede seleccionar
G.asm, MacrosIG.asm y TablasDatos.asm. algún archivo para añadir a su proyecto, sin embar -
4) Dentro del subdirectorio IGTV (o el nombre que go en esta ocasión no seleccionará ninguno. Presio -
haya elegido) cree otro con el nombre “RelojDigital”. ne “Siguiente”.
5) Abra el programa MPLAB IDE. 12) Aparece el cuadro de diálogo “Summary”, el
6) Presione Project > Project Wizard. cual muestra el resumen del proyecto que acaba de
7) Aparece “Step One:” Seleccione Device: PIC - crear. Presione “Finalizar”.

Figura 10

14
Ahora comenzaremos a escribir el pro-
grama en éste archivo. Teclee el código de
la tabla 2.
Observe que la palabra CONFIG está
precedida de 2 y no de un solo guión bajo.
Las 3 primeras líneas son comentarios,
ya que están precedidas por el punto y co-
ma (;).
La cuarta línea le indica al ensamblador
que incluya el archivo “p16f84.inc” el cual
usa para encontrar definiciones de regis-
tros, puertos y otros datos relacionados con
el PIC16F84.
La siguiente línea se usa para configurar
el microcontrolador respecto a algunas op-
ciones como protección de código, tipo de
cristal que se usará, etc.
Enseguida deberemos apartar localida-
des de memoria para ciertas variables que
necesitaremos en nuestro proyecto, para es-
to utilizaremos la directiva de ensamblador
CBLOCK, la cual define una lista de nom-
bres de localidades comenzando en el nú-
mero de localidad indicada enseguida de CBLOCK.
Aunque para este caso no es necesario crear un
En el caso del PIC16F84, las localidades RAM
proyecto completo, lo hemos hecho de esta manera
que podemos usar comienzan en el número 0x0C
con el fin de mostrar al lector la manera en que se
(12 en decimal).
crea un proyecto en el ambiente de desarrollo
La línea #DEFINE MODO_D0 es especial, la usa la
MPLAB.
subrutina ENVIAR_BYTE para cambiar D0 a entrada o
salida y define en qué bit de qué puerto está D0. Ob-
PRECAUCION: Asegúrese de que Default Radix
serve que en este caso D0 está en el Puerto B en el Bit
sea Decimal. Esta opción está en Project>Build Op-
1 (TRISB,1).
tions>Project Pestaña MPASM Assembler
Las últimas líneas definen el nombre que se usará
en 5 patas de los puertos del PIC. Estas son las líneas
de comunicación con la IG y 2 interruptores. Observe
ARCHIVO FUENTE
en el diagrama la coincidencia de LR, RJ y D0 de la
base de 16 patas de la IG con las patas de los puer-
Lo que hemos hecho con los pasos anteriores es
tos del PIC.
crear un “Workspace” en donde agregaremos un ar-
Antes de continuar debemos guardar nuestro ar-
chivo fuente en ensamblador. Dicho archivo lo crea-
chivo. Para esto, en el menú presione File> Save As
remos presionando en el menú del IDE File>New.
… lo cual hace que aparezca el cuadro de diálogo
Esto crea un archivo en blanco con el nombre por
para guardar. Cambie el nombre “untitled” a “Reloj-
defecto “untitled”.
Digital”. El archivo se guardará con el nombre “Reloj-

15
Digital.asm” en el subdirectorio actual, el cual debe tan de la misma manera que en la macro anterior.
ser “RelojDigital”. Ahora deberemos agregar nuestro TEXTO_FORMATO índice: Envía texto con for-
archivo al Workspace que creamos. En la ventana mato a la pantalla. Esta macro trabaja combinada
ProyRelojDigital.mcw aparece una sección titulada con una tabla de texto, la cual debe definirse antes
“Source Files”. Con el botón derecho del ratón presio- de llamar la macro. Indice es el offset del byte inicial
ne esta sección. Aparece un menú contextual, selec- que se enviará hasta que se encuentre el fin de la ca-
cione Add Files… y en el cuadro de diálogo que apa- dena, el cual es el número 255. Para una explicación
rece seleccione el archivo “RelojDigital” (de hecho es más amplia del texto con formato consulte el manual
el único que aparece en este momento). Al presionar (por cuestiones de espacio no lo reproducimos aquí,
el botón “Abrir” este archivo se agrega a nuestro pero lo puede bajar gratuitamente de nuestra web, si-
Workspace en la sección “Source Files”. Ahora sí po- guiendo los pasos dados anteriormente).
demos continuar. IMAGEN_2TONOS TamHor, TamVert, indi -
ce: Envía una imagen a la pantalla. Al igual que la
MACROS DISPONIBLES macro de texto, es necesario que se defina una tabla
En el archivo Macros.asm hemos creado varias de datos para poder usar esta macro.
macros que simplifican la escritura y mejoran la legi- TamHor y TamVert indica el número de pixeles ho-
bilidad del código. A continuación se indican algu- rizontales y verticales de la imagen. Esta se dibujará
nas de estas macros y su función: en el cursor actual. Indice es el offset en la tabla de
BORRAR_PANTALLA: La pantalla se borra lle- datos del byte inicial de los datos de la imagen. Aun-
nándose del color actual del fondo. que hay muchas más macros, con las vistas hasta
CURSOR X,Y: El cursor se mueve a la posición ahora será suficiente para nuestro primer proyecto.
indicada por X,Y. Las siguientes instrucciones gráfi-
cas y de texto se dibujarán en la nueva posición. TABLAS DE DATOS
DISPLAY_CUARZO Formato, Byte2, Byte1,
Byte0: Dibuja un display de cuarzo y despliega el La manera más fácil para enviar un grupo de by-
número indicado por los 3 bytes. tes a la IG consiste en agruparlos en una tabla y me-
Formato indica si el número llevará signo, el nú- diante una macro enviarlos uno por uno a la tarjeta.
mero de dígitos visibles y la posición del punto. La directiva DT (Define Table) define una tabla de
Consulte el manual de la IG para una descripción valores que permite inclusive escribir caracteres en
más completa (puede bajarlo de nuestra web). código ASCII, lo cual es apropiado para enviar tex-
BRILLO Color: Cambia el color actual de dibu- tos. Existe una macro para enviar texto y otra para
jo al indicado por Color, el cual puede estar entre 0 enviar datos (los cuales pueden ser una imagen). Pa-
y 15 (negro y blanco). ra usar dicha macro se debe proporcionar el offset en
BOTONES_CONTROL NumBotones: Dibuja la tabla correspondiente al primer byte que se envia-
botones de control en la parte inferior de la pantalla. rá. No se preocupe si todo esto le parece confuso,
NumBotones indica cuantos botones se dibujarán. con una ojeada al código del reloj se aclarará la ma-
Pueden ser hasta 5. nera en que se usan las tablas de datos.
CUADRO_LLENO X2,Y2: Dibuja un cuadro del
color del Brillo actual. X2,Y2 indican la esquina infe- VECTORES DE INICIO E INTERRUPCION,
rior derecha y la esquina superior izquierda viene da- INCLUSION DE ARCHIVOS
da por el cursor actual.
MARCO_ALTO_REL X2, Y2: Dibuja un marco Muy bien, ya tenemos nuestro circuito armado y
resaltado (alto relieve). Las coordenadas se interpre- también hemos tecleado las instrucciones básicas de

16
inicio del programa. Teclee, a continuación, las lí- CODIGO DE LAS TABLAS DE DATOS Y TEXTOS
neas de la tabla 3.
La directiva ORG 0x0000 indica la dirección A continuación crearemos las tablas de datos y
donde comenzará la ejecución del programa des- textos. Teclee el código de la tabla 4:
pués de un reset. Aquí se ha escrito una instrucción La tabla de datos agrupa los valores de una ima-
de salto a la etiqueta INICIO. Debido a que planea- gen de 2 tonos de 16x16 pixeles la cual consiste en
mos usar la interrupción del timer, el vector de inicio un pequeño reloj analógico. Consulte en su manual
de dicha interrupción está en la localidad 0x0004, la instrucción IMAGEN 2 TONOS si requiere de una
donde se ha escrito un salto a la etiqueta INT_TMR0. explicación adicional.
En cuanto se produzca una interrupción del timer, La tabla de textos agrupa dos cadenas: la prime-
se ejecutarán las instrucciones a partir de la etiqueta ra simplemente tiene texto. Sin embargo la segunda
INT_TMR0. A continuación escribimos ORG 0x0005 contiene caracteres de control. La tabla 5 muestra los
que es donde iniciaremos nuestro código de subruti- distintos códigos de control para texto con formato.
nas. Observe las directivas INCLUDE las cuales le in- Cuando la IG procesa los datos de la TABLA_TEX-
dican al ensamblador incluir 3 subrutinas junto con TOS de la segunda línea escribe “RELOJ DIGITAL” en
las demás instrucciones que integran el programa. la posición del cursor actual, luego hay un carácter
de control “8”, lo cual significa “saltar a las coorde-
nadas del botón de control”, luego viene un “1”, es-
to es, el botón 1, Luego la IG escribe “ HOR”, lo cual
lo hace dentro del botón de control, ya que anterior-
mente le ordenamos saltar a este control.
Algo semejante ocurre con el botón de control 2,
dentro del cual se escribe el texto: “ MIN”. Luego vie-
ne el código “9”, lo cual hace que de ahora en ade-
lante al escribir texto se redi-
buje el color del fondo. Si no
hacemos esto, los caracteres
del texto que dibujemos se
muestran empalmados, ya
que la IG no borraría el fondo
(esto concierne a los segun-
dos del display del tiempo).

SUBRUTINA DE INTE -
RRUPCION DEL TMR0

Ahora escribiremos la
subrutina que se llamará
cuando el TMR0 genere una
interrupción, esto es, cada
60 (50) pulsos. Escriba el
código de la tabla 6.

17
Lo primero que debemos hacer al entrar
a la subrutina es borrar el bit de aviso de in-
terrupción del TMR0 (INTCON,2), ensegui-
da debemos cargar el TMR0 con el valor
196 (206 para 50 Hz), ¿por qué?. Veamos:
El timer interrumpe al PIC cada vez que hay
un sobreflujo, la máxima cuenta es 255, en
el siguiente pulso se cambia a 0, lo cual ge-
nera la interrupción. Si así lo dejamos, la si-
guiente interrupción sería dentro de 256 pul-
sos, lo cual no es lo que deseamos, ya que
necesitamos que cuente 60 (50) pulsos y no
256. Si cargamos al TMR0 con 196 (206),
entonces con 60 (50) pulsos más se produce
el sobreflujo (196+60=256) y se genera la
interrupción, que es justo lo que deseamos.
Enseguida está el código del pequeño al-
goritmo que se expuso anteriormente. desplegar. Para usar la macro coloque los nombres
Observe el uso de la macro DISPLAY_CUARZO. de estos registros en los argumentos.
Esta macro espera 3 bytes en binario, lo cual puede
mostrar un número mayor a 16 millones. Sin embar-
go sólo usamos un número menor que 60 para cada CODIGO PRINCIPAL
display (Horas, minutos y Segundos) y por lo tanto
debemos enviar ceros en los bytes de valor superior. Ahora escribiremos el código principal del pro-
Para esto hemos definido un registro de nombre “Ce- grama, el cual se ejecuta al encender el circuito (re-
ro”, en el cual colocamos el valor de 0 y lo enviamos set). Básicamente lo que hacemos en esta parte del
en los dos bytes que no se usan. programa es iniciar algunos registros, programar el
El registro FormPunto se usa para definir el forma- registro de opciones y configurar los puertos y las in-
to de los números del display. Consulte su manual pa- terrupciones. Escriba el código de la tabla 7.
ra una explicación amplia de este formato.
Observe que si no se produce cambio en los mi-
nutos o las horas no se refresca el display respectivo. CONFIGURACION DE PUERTOS

PRECAUCION El puerto A es configurado en modo entrada.


DISPLAY_CUARZO espera como argumentos re- El Puerto B se configura con B,0 como salida, ya
gistros, no valores numéricos. Por ejemplo, si teclea- que es RJ para la comunicación con la IG. Al inicio los
mos DISPLAY CUARZO 160, 4, 2, 100, su ejecución demás bits son entradas (incluyendo D0).
puede causar resultados inesperados, ya que la ma-
cro enviaría el contenido de la localidad 160, luego
el de la localidad 100, luego el de la localidad 2 y REGISTRO DE OPCIONES (OPTION_REG)
por último el de la localidad 4 ¡no los valores numé-
ricos!. Primero debe definir 4 registros, luego colocar A continuación el programa carga el registro de op-
en ellos el formato del punto y los 3 bytes que desea ciones con el valor 0x28. Veamos qué sucede con esto:

18
BIT USO Valor fijado Motivo
0-2 Pre-escalador 000 No importa.
3 Asignación del 1 Al watch-dog.
pre-escalador
4 Modo Disparo TMR0 0 A la bajada.
5 Señal del TMR0 1 Entrada externa.
6 Modo de
interrupción externa 0 No importa.
7 Resistencias pull-up. 0 Activado. registros horas, minutos y segundos de modo que al
encender nuestro reloj comenzará en 00:00 00. Por
Valor fijado es lo que se programó en nuestro ca- último configuramos el registro del formato para
so. Dado que el pre-escalador se asignó al watch- nuestros 3 displays. Aquí se indica la posición del
dog, no importa el valor que usemos. punto y el número de dígitos visibles (2). La última ins-
El TMR0 cuenta los pulsos a la bajada, de acuer- trucción hace invisible el punto del display ya que no
do al bit 4. El bit 5 determina que la entrada del lo necesitamos y sólo nos estorbaría.
TMR0 sea del exterior (pata 3). El bit 6 se usa para
la interrupción externa. En nuestro caso no se usa.
El bit 7 activa o desactiva resistencias en el puer- DIBUJANDO EN LA PANTALLA
to B, las cuales están internamente conectadas al
VCC. En nuestro caso las hemos activado para que ¡Por fin! ahora comenzaremos a dibujar en nues-
no se necesite colocar resistencias al VCC en los inte- tra pantalla. Teclee el código indicado en la tabla 8.
rruptores (usamos las internas, llamadas pull-up). El Lo primero que debemos hacer es borrar la pan-
valor fijado es el 00101000 (0x28 en hexadecimal). talla, para esto utilizamos la macro BORRAR_PANTA-
LLA. Luego dibujamos dos botones de control los cua-
les se dibujan automáticamente en la parte inferior de
INICIANDO REGISTROS la pantalla.
Enseguida dibujamos dos barras de titulo en la
El siguiente paso es iniciar algunas salidas y re- parte superior de la pantalla. Observe que se cambia
gistros. RJ y D0 se ponen en “0”. Ponemos a cero los el color de Brillo a “0” (negro). Luego colocamos el
cursor en las coordenadas 22, 1 y dibujamos un
Cuadro Lleno con las coordenadas de la esquina
inferior derecha en 226, 14, lo cual da como re-
sultado una barra de color negro.
De la misma manera dibujamos otra barra un
poco más abajo pero de color claro (Brillo=10).

ESCRIBIENDO TEXTO

A continuación escribiremos texto dentro de


las barras de títulos. Teclee el texto de la tabla 9:
El texto en la barra superior será de color cla-
ro (Brillo=10), ya que la barra es negra. Después

19
de colocar el cursor en la parte izquierda de la ba- bilita la interrupción por TMR0 y a partir de este ins-
rra, ejecutamos la macro TEXTO_FORMATO, la cual tante nuestro reloj comenzará a funcionar. Teclee el
espera el offset de inicio en la tabla, el cual es 0, ya código de la tabla 12:
que iniciamos con el texto “SABER …”.
A continuación cambiamos el color a uno más os-
curo y escribimos en la barra inferior. Note que el off- MANEJANDO LOS INTERRUPTORES
set de TEXTO_FORMATO es 28, ya que comenzare-
mos a escribir a partir del carácter número 28 de la En esta última parte del código se verifica si se
tabla de textos. ha presionado alguno de los dos interruptores. Si
esto sucede se actúa en consecuencia incrementan-
do los minutos o las horas. Teclee el código de la
DIBUJANDO EL ICONO tabla 13.

Ahora dibujaremos el icono de la aplicación en la


parte superior izquierda de la pantalla. Teclee el có-
digo de la tabla 10.
Primero colocamos el cursor en la parte superior
izquierda (coordenadas 0, 0), luego enmarcamos
nuestro ícono con un pequeño marco realzado. Ense-
guida cambiamos el brillo a un color oscuro (Brillo=3)
y por último ejecutamos la macro IMAGEN_2TO-
NOS, donde indicamos que el tamaño de la imagen
será de 16x16 puntos con offset de 0.

PREPARANDO EL DISPLAY

A continuación dibujaremos el recuadro donde


presentaremos nuestro display de cuarzo. Teclee el
código de la tabla 11. Enmarcamos nuestro display
con un recuadro en bajo relieve y luego dibujamos
dos pequeños cuadros entre las horas y minutos para
darle un aspecto más cercano a un reloj real de cuar-
zo. Con esto queda preparada la pantalla para des-
plegar la hora.

DESPLEGANDO LA HORA
Y HABILITANDO INTERRUPCIONES

A continuación desplegaremos la hora actual,


la cual será 00:00 00, debido a que esta parte del
programa se efectúa al inicio. Sin embargo, se ha-

20
Observe que si se ha detectado un interruptor res de PICs publicados en Saber Electrónica, como el
presionado, inmediatamente se anulan las interrup- Quark Pro 2, por ejemplo. Después de crear nuestro
ciones, con el fin de procesar el código de refresco archivo HEX, programamos el microcontrolador y lo in-
del display. ¿Porqué se deben anular las interrup - sertamos en nuestra tarjeta de experimentos. Al conec-
ciones? . Pregunta interesante... tar el protoboard a la placa IG y la placa al televisor,
Veamos: Si dentro del programa principal estamos aparecerá la pantalla de la figura 11.
enviando instrucciones a la IG corremos el riesgo de
que al mismo tiempo ocurra una interrupción. Si la su-
brutina de interrupción trata también de enviar datos a PROBANDO NUESTRO RELOJ
la IG, ésta se confundirá ya que esperaba datos del
programa principal y de pronto llegan datos de la su- Después de encender la IG, lo primero que se ve
brutina de interrupción. Esto ocasionará la ejecución en la pantalla es una imagen aleatoria. Eesto se debe
aleatoria de instrucciones y la pantalla se corromperá a los valores indefinidos de la memoria RAM de video
junto con el programa. al momento de alimentarla. Al cabo de un segundo
Por este motivo se anulan las interrupciones y sólo aparece la pantalla de bienvenida, la cual se muestra
después de refrescar el display respectivo (horas o mi- en la figura 1.
nutos) se vuelven a activar. Después de 4 segundos de mostrar ésta pantalla,
Bien, el último paso es ensamblar nuestro progra- la IG coloca LR en “1”, indicando que está lista para
ma, para esto seleccione en el menú Project > Build recibir instrucciones. Es en este momento cuando nues-
All. Si no tenemos errores, el ensamblador creará un tro reloj debe comenzar a funcionar. Después de po-
archivo titulado “RelojDigital.HEX”, el cual se usará nerlo a tiempo, la imagen en la pantalla será semejan-
para programar nuestro PIC con algún programador te a la que se muestra en la figura 11.
disponible. Cabe aclarar que si Ud. no quiere seguir Esta es una aplicación sin uso práctico, dado que
todos estos pasos, en nuestra web, con el código da- sería un reloj caro y además no se ha previsto el fallo
do en este texto, podrá encontrar el archivo “RelojDi- de la energía eléctrica.
gital.HEX” que podrá grabar en el PIC para circuito de Sin embargo, el objetivo principal de esta aplica-
la figura 10, utilizando cualquiera de los programado- ción ha sido didáctico, donde se ha mostrado el uso
de algunas instrucciones básicas.
Una buena práctica para el lector sería agregarle
una alarma. ******

Figura 11

21
En este capítulo abordaremos un proyecto luego mide la duración del pulso que se produce en
realmente práctico, un medidor de capacito - la salida Q. El ancho de este pulso será directamen-
res digital de muy buen desempeño y muy te proporcional al valor del capacitor.
simple armado. Para el cambio de escala simplemente cambia-
mos el valor de la resistencia. Esto se logra por me-
Dado que el circuito es muy sencillo, usted puede dio de interruptores analógicos CMOS 4066.
optar por armarlo en una tarjeta “protoboard” o en Como podrá apreciar, estimado lector, el princi-
una tarjeta “perfoboard” (semejante a la anterior pe- pio de funcionamiento es muy sencillo y llevarlo a ca-
ro en circuito impreso). bo se consigue con un costo muy bajo. En la figura 2
Cabe aclarar que para poder observar la lectura se muestra el diagrama en bloques del medidor de
de los capacitores deberemos tener armada la placa capacitores.
de interfaz Gráfica para TV, cuyo funcionamiento y
montaje publicamos en el capítulo anterior, figura 6.
FUNCIONAMIENTO

PRINCIPIOS DE FUNCIONAMIENTO El multivibrador 4538 está programado para dis-


pararse a la bajada del pulso en +T, cuya pata está
¿Cómo podemos medir capacitancia? conectada a RB2 del PIC.
Existen varios métodos. Uno de ellos se basa en El microcontrolador envía un pulso angosto en es-
el hecho de que si se hace pasar una corriente cons- ta pata y dispara al 4538.
tante a través de un capacitor, éste se cargará lineal- La salida Q se introduce al PIC por el puerto RA2
mente, de modo que si medimos el tiempo que demo- con el fin de medir el tiempo durante el cual esta sa-
ra en alcanzar cierta tensión, su valor será directa- lida permanece en “1”.
mente proporcional al valor del capacitor. Este tiempo será directamente proporcional al ca-
Otro método consiste en hacer al capacitor parte pacitor que deseamos medir, al cual nombramos Cx.
de un oscilador y medir indirectamente su valor por
medio de la frecuencia resultante. (El oscilador puede
ser un timer 555, por ejemplo). Nuestro método es
muy simple, sin embargo es muy efectivo. El CMOS
4538 consta de 2 multivibradores, cuyo ancho de
pulso al disparo depende directamente del valor de
una resistencia y un capacitor. Observe la figura 1
donde se muestra uno de los 2 multivibradores.
En nuestro caso el microcontrolador dispara al
multivibrador con un pulso angosto en la pata +T y Figura 1 - Multivibrador CMOS 4538.

23
Los interruptores analógicos 4066 conmutan las Para la calibración, se ha colocado un potenció-
resistencias R1, R2, y R3 de acuerdo a la escala se- metro en cada escala.
leccionada, lo cual se logra presionando el interrup- Observe que se han colocado 2 interruptores
tor “ESCALA”. analógicos en serie (U3C y U3B), esto con el fin de
El interruptor “CERO” se utiliza para restar la ca- aislar al máximo las resistencias de más de 40 Mega
pacitancia parásita en la escala más baja (1-4000 Ohms, ya que al ser éstas de un valor tan alto, la mis-
Pf), en las otras escalas dicha capacitancia es despre- ma resistencia del interruptor CMOS podría afectar
ciable. Simplemente presione el interruptor cuando la resistencia total.
no haya ningún capacitor colocado y el display mar-
cará cero.
Observe lo simple del circuito. Esto se debe en CARACTERISTICAS DEL MEDIDOR
gran medida a la capacidad de la IG de procesar DIGITAL DE CAPACITORES
datos y manejar la pantalla, liberando al microcon-
trolador externo del proceso de rutinas largas y com- De acuerdo a lo establecido en el capítulo ante-
plejas. Incluso la alimentación del circuito se obtiene rior, nuestro medidor será capaz de medir capacito-
de la salida +5V de la IGTV. (También existe otra sa- res desde 1pF hasta 40µF en tres escalas.
lida de +12V). Ver la figura 2. Respetando nuestro lema sólo se utilizarán 3 cir-
Con fines de simplicidad, en el diagrama no es- cuitos integrados de bajo costo y fáciles de conse-
tán dibujadas las patas de alimentación de los inte- guir, unas cuantas resistencias, 3 potenciómetros, 3
grados. A continuación se indican: capacitores, un par de interruptores mini y el cristal
de oscilador.
U1 PIC16F84 VCC=14 GND=5
U2 4538 VCC=16 GND=8 Obviamente también
U3 4066 VCC=14 GND=7 se requiere la tarjeta IGTV

En el primer proyecto (Re-


loj Digital) se mostró el códi-
go en ensamblador comple-
to; sin embargo, a medida
que avancemos en los pro-
yectos el archivo fuente será
cada vez más largo, por lo
que debido a limitaciones de
espacio de ahora en adelan-
te mostraremos sólo el código
que consideremos esencial
para la comprensión del pro-
yecto en curso.
Sin embargo, re c u e rd e
que el archivo fuente comple-
to junto con el binario siem-
pre estarán disponibles en la
Figura 2 - Diagrama en bloques. página WEB del Club Saber

24
Electrónica, www.webelectronica.com.ar con la cla- El código de las subrutinas EnviarByte y Macro-
ve “gráficatv”, tal como ya hemos comentado. sIG esperan definiciones de varios registros, dichas
definiciones deben declararse en el código del archi-
vo fuente del microcontrolador externo. Tales nom-
PROGRAMA FUENTE BASE bres de registros son:
Dato, Reg0, Reg1 y Reg2
En cada proyecto para IGTV existen ciertas ins- Observe el código en la tabla 1 donde se definen
trucciones, las cuales son comunes y deben definirse las variables que forman parte del proyecto:
en cada programa fuente. Estas instrucciones se mar- Los 4 registros marcados como “Común”, siempre
carán en “negrita”, además de la palabra “Común” deben estar definidos en cualquier proyecto que ha-
para que el lector pueda distinguir el “programa ba- ga uso de la IGTV, ya que las subrutinas en “Comu-
se común”. nes.asm” los usan. Si no se hace así el programa no

Figura 3 - Diagrama esquemático.

25
compilará. Ahora observe en la ta-
bla 2 la definición de nombres de
patas.
Las 4 definiciones marcadas co-
mo “Común”, deben ser definidas
en cada proyecto para la comunica-
ción con la IGTV.

PLANEANDO LA PANTALLA

Nuestra pantalla, en la parte su-


perior, tendrá un aspecto semejante
al reloj digital que construimos en el
capítulo anterior. En esta ocasión el
ícono será el símbolo de un capaci- Figura 4- Pantalla del Medidor Digital de capacitores.
tor variable. La primera barra de tí-
tulo será la misma que en el proyecto anterior. La se- Dibujaremos dos cuadros en bajo relieve, uno pa-
gunda barra tendrá el texto “MEDIDOR DE capacito- ra enmarcar los dígitos de la lectura de capacitancia
res DIGITAL”. Colocaremos 2 botones de control, uno y el otro para enmarcar los valores de la escala.
con el texto “CERO”, el cual se usará para poner a
cero la lectura en la escala más baja, con el fin de
contrarrestar la capacitancia parásita. El otro botón DISPARANDO AL 4538
con el texto
; ----------------------------------------- El disparo del multivibrador se consigue enviando
; DEFINIR VARIABLES “ESCALA” se-
rá para el cam- un pulso corto por la pata “DISP_PULSO”, la cual va
; --------------------------------------
CBLOCK 0x000C bio de escala. a +T del 4538. El código se ve en la tabla 3.
Dato ; Común
Reg0 ; Común #DEFINE LR PORTA,0 ; Listo para Recibir (IG) Común
Reg1 ; Común #DEFINE RJ PORTB,0 ; Reloj (IG) Común
Reg2 ; Común
#DEFINE D0 PORTB,1 ; D0 (IG) Común
Reg3
Temp0 #DEFINE MODO_D0 TRISB,1 ; D0 Entrada/Salida Común
Temp1 #DEFINE ENT_PULSO PORTA,2 ; Entrada de Pulso del 4538
Temp2
#DEFINE DISP_PULSO PORTB,2 ; Salida del pulso para disparar el 4538
Escala
ContL #DEFINE SEL_ESCALA1 PORTB,3 ; Escala 1
ContH #DEFINE SEL_ESCALA2 PORTB,4 ; Escala 2
CeroL
#DEFINE HAB_ESC PORTB,5 ; Habilitar el Switch analógico
CeroH
DispPunto #DEFINE SW_ESCALA PORTB,6 ; Switch para seleccionar la Escala
ENDC #DEFINE SW_CERO PORTB,7 ; Switch de poner a cero.
Tabla 1 Definición de
Variables. Tabla 2 Definición de Registros.

26
Disparo BSF DISP_PULSO ; Disparar el multivibrador. Si lo hay se envía a la
NOP pantalla el aviso, de otro mo-
BCF DISP_PULSO do se repite el ciclo. En cuan-
Tabla 3 to deja de haber pulso en
“ENT_PULSO” se envía el va-
MIDIENDO EL ANCHO DEL PULSO lor del contador a la pantalla, para desplegar el va-
lor del capacitor.
Después de disparar el 4538, el PIC hace un pe- En realidad se mide el capacitor 8 veces, luego
queño tiempo y luego verifica si se ha presionado el se promedian las lecturas, esto con el fin de lograr
interruptor de “ESCALA”. Si no se ha presionado el mayor estabilidad en la lectura. Observe la tabla 4.
interruptor, el PIC verifica si ya no hay pulso en “ENT-
_PULSO”.
En caso de que aún haya pulso, se incrementa un ENVIANDO EL RESULTADO
contador de 16 bits compuesto por la unión de 2 re- A LA PANTALLA
gistros, ContH y ContL. Después de incrementar el
contador, el PIC verifica si hay rebalse. Después de leer el valor del capacitor, mediante
--- LEER LA CAPACITANCIA --- la macro DISPLAY_CUARZO,
se muestra en la pantalla el
Tiempo MOVLW 13 ; Hacer tiempo.
MOVWF Temp0 resultado de acuerdo al có-
Lazo10 DECFSZ Temp0,1 digo que vemos en la tabla
GOTO Lazo10 5.
BTFSS SW_ESCALA ; ¿Cambio de escala? DispPunto es un registro
GOTO CAMBIAR_ESCALA donde se ha programado el
BTFSS ENT_PULSO ; Verificar si ya no hay pulso. formato para el punto y el
GOTO FinMedirCap número de dígitos a mostrar.
INCF ContL,1 ; Si aún hay pulso, incrementar Este formato cambia de
BTFSS STATUS,Z ; el Contador de capacitancia.
acuerdo a la escala seleccio-
GOTO Tiempo
nada, como se puede apre-
INCF ContH,1
MOVLW 0x80 ; Verificar si hay rebalse. ciar cada vez que se presio-
SUBWF ContH,0 na el interruptor “ESCALA”.
BTFSC STATUS,Z Consulte su manual para ma-
GOTO ENV_SOBREFLUJO yor información acerca de
GOTO Tiempo ; Repetir el ciclo. este formato. La figura 4
FinMedirCap MOVLW 50 ; Esperar 50 miliseg. muestra la pantalla de nues-
tro medidor.
--- OTRAS INSTRUCCIONES ---
Tabla 4 - Midiendo el capacitor.
CONSTRUCCION
ENVIAR_LECTURA CURSOR 68,50
BRILLO 3
CLRF Temp0 Aunque el circuito es muy
DISPLAY_CUARZO DispPunto,Temp0,ContH,ContL sencillo, se proporcionan los
GOTO MEDIR_CAP detalles para armarlo en un
Tabla 5 - Enviando el Resultado a la Pantalla. circuito impreso si así lo de-

27
sea (también se puede conseguir el kit).
En la figura 5 se muestra el circuito im-
preso el cual es de una sola cara, también
se muestra el diagrama pictórico para la
colocación de los componentes y un es-
quema de la colocación de los puentes,
los cuales van en la parte superior de la
placa.

CALIBRACION

Lo ideal sería calibrar nuestro medidor


con algún instrumento comercial; sin em-
bargo, si esto no es posible puede usar
simples capacitores para su calibración.

PRECAUCION

No utilice capacitores de disco de ce-


rámica para la calibración ya que depen-
den, en gran medida, de la temperatura.
Yo coloqué uno de 0.1µF y, al calentarlo
un poco su capacitancia ¡bajó hasta
0.05µF! Coloque un capacitor de valor
apropiado en cada escala y por medio de
los potenciómetros ajuste el valor leído de
modo que coincida con el capacitor de ca-
Figura 5 - Circuito impreso del medidor de capacitores
libración. ************

Lista de Componentes
Resistencias Circuitos integrados
R1 - 470k U1 - Microcontrolador PIC16F84
R2 - Potenciómetro 100k U2 - CMOS 4538, Multivibrador doble
R3 - 3.9k U3 - CMOS 4066, interruptor analógico
R4 - Potenciómetro 1k
R5, R6, R7, R8 - 10M Varios
R9 - 4.7M Y1 - Cristal 3,579545MHz
R10 - Potenciómetro 10M S1, S2 - Interruptores mini para impreso
Capacitores J1 - Conector DIP 16 patas.
C1, C2 - 15pF
C3 - 0.1µF

28
Proponemos el montaje de un instrumento cual posibilita el uso de nuestro contador en frecuen-
con el que podrá medir frecuencias desde cias mucho más altas y de niveles más bajos, incre-
menos de 10Hz hasta más de 1.1GHz en mentando la sensibilidad del dispositivo.
dos escalas. Incorpora selección de interva -
lo de 0.1, 1 y 10 segundos. Además nues -
tro frecuencímetro tiene selección automáti - MIDIENDO FRECUENCIA
ca de unidades (Hz, KHz o MHz). El costo es
muy bajo y consta de sólo 1 ó 2 circuitos in - ¿Cómo se puede medir frecuencia?
tegrados. En apariencia, la lógica para medirla no es un
gran problema, básicamente sólo se requiere de un
contador digital con una compuerta a la entrada la
INTRODUCCION cual se habilita durante 1 segundo. El número de pul-
sos que deje pasar la compuerta durante este lapso
El proyecto que proponemos en esta ocasión con- será igual a la frecuencia de entrada. Fácil, en apa-
siste en 2 tipos de instrumentos, Frecuencímetro A y riencia.
Frecuencímetro B. El problema radica en el despliegue del resulta-
El primero es capaz de medir frecuencia desde do. Normalmente se emplean displays de cuarzo o
0.1Hz hasta 90MHz; sin em-
bargo, sólo puede medir se-
ñales con nivel TTL. La venta-
ja es que consta de un solo
integrado fácil de conseguir,
el cual es un microcontrola-
dor PIC16F873.
Aun siendo de prestacio-
nes reducidas, el frecuencí-
metro A nos servirá perfecta-
mente para el desarrollo de
circuitos con microcontrola-
dores y sistemas digitales cu-
ya frecuencia de trabajo sea
menor a 90MHz.
El frecuencímetro B usa
un circuito integrado espe-
cial llamado preescalador, el Figura 1 - Medidor de Frecuencia Típico en Bloques.

29
LED los cuales, en la mayoría de los casos, requieren alambrados en varias tablillas protoboard. Apurados
de circuitería adicional para manejarlos, como dri- por terminar a tiempo, aquello no fue alambrado pre-
vers, latches y decodificadores de BCD a 7 segmen- cisamente con mucho cuidado y el resultado fué una
tos. Los contadores de pulsos por lo general son dis- madeja de cables de tal manera que ¡debíamos mo-
cretos y se requiere de un número igual de contado- verlos para poder ver el display!
res que de displays (y latches en caso de usarse), au- Recuerdo que en aquella ocasión pensé que sería
mentando la complejidad del circuito. Todo esto sin bueno contar con una tarjeta con displays integrados
contar la lógica discreta que se utiliza para manejar de modo que pudiera usarse en proyectos que requie-
la compuerta y las escalas. ran mostrar información.
En la figura 1 se muestra un diagrama en bloques En aquel entonces los microprocesadores apenas
de un frecuencímetro típico de display de LED. El cir- aparecían en el mercado y aún eran un “misterio” pa-
cuito de control habilita durante cierto tiempo la com- ra quienes estudiábamos electrónica discreta.
puerta, el intervalo se selecciona mediante algún in- Bien, el planteamiento de la presentación de in-
terruptor. El contador cuenta los pulsos de entrada y formación ha quedado resuelto con la placa de In-
al momento de concluir el intervalo, el circuito de con- terfase Gráfica para TV (IGTV) que hemos publicado
trol deshabilita la compuerta y al mismo tiempo en- en el capítulo 1, ya que ésta permite mostrar displays
gancha la información del contador en el circuito de cuarzo simulados. Los microcontroladores han ve-
latch para su presentación en el display. nido a resolver el problema de la lógica discreta al
Las líneas gruesas indican datos agrupados, tales sustituir las tareas que hacían varios integrados emu-
como salidas del contador o datos de segmentos pa- lando su función mediante software en un solo encap-
ra el display. sulado. Esto es posible, como bien apuntaba nuestro
El circuito de control debe conocer el resultado de director el Ing. Vallejo, gracias a la magia de los mi-
la medición para colocar el punto en la posición ade- croprocesadores.
cuada y señalar las unidades correctas (Hz, KHz, Nuestro frecuencímetro de aquel entonces a duras
MHz o GHz). Además, debe poder indicar sobreflu- penas podía medir frecuencias superiores a 12MHz,
jo en caso de que esto suceda. ya que ésa era la máxima frecuencia de los integra-
En circuitos más sencillos se puede prescindir del dos TTL comerciales que se fabricaban, de acuerdo a
latch; sin embargo, durante la entrada de los pulsos la tecnología del momento.
veríamos al display parpadear al ritmo de la cuenta. A modo de comparación, el frecuencímetro A de
Después de mostrar durante cierto tiempo la infor- este proyecto puede medir frecuencia hasta poco
mación, el circuito de control borra el contador por más de 90MHz y consiste en un solo integrado (bue-
medio de la línea “CLR” e inicia un nuevo ciclo de no, también requiere de la placa IGTV).
lectura.
En mis tiempos de estudiante en un examen de fin
de curso me tocó diseñar y construir, precisamente, FRECUENCÍMETRO TIPO A
un contador de frecuencia.
El instrumento se componía de 6 displays de LED, Aprovechando las características de los microcon-
6 integrados codificadores de BCD a 7 segmentos, 6 troladores, vamos a construir un frecuencímetro emu-
contadores TTL de décadas y otros tantos circuitos TTL lando, mediante software, la lógica discreta que se
para el control. necesita en un medidor de frecuencia y además,
En nuestro diseño no incorporamos latches. De aprovechando las características gráficas de la placa
haberlo hecho serían más de 20 circuitos integrados. IGTV, vamos a simular displays de cuarzo e indicado-
Afortunadamente “sólo” eran 15 integrados res visuales en lugar de diodos LED. También dibuja-

30
remos un botón virtual para la selección del interva- Al momento de activarlo, comenzaremos a contar
lo. los pulsos de entrada al TMR1. Al cabo de un inter-
A continuación vamos a enumerar los bloques o valo de 1 segundo (o el intervalo que hayamos selec-
componentes necesarios: cionado), se producirá una interrupción del TMR0. En
1) Contador digital la subrutina de interrupción detendremos la entrada
2) Compuerta de pulsos al TMR1. De esta manera, con la ayuda del
3) Base de tiempo TMR0 emulamos una compuerta digital y en el TMR1
4) Lógica de control tendremos la frecuencia que pretendemos medir.
5) Displays
6) Control del Intervalo
BASE DE TIEMPO

CONTADOR DIGITAL Nuestra base de tiempo será el oscilador del mi-


crocontrolador mediante instrucciones apropiadas
Para este proyecto usaremos el PIC16F873, ya que nos permitirán tiempos de bastante precisión.
que se requiere de 2 timers y el PIC16F84 sólo con-
tiene uno. Usaremos el TMR1 como contador digital.
Aquí se presenta un problema: el TMR1 sólo es de LÓGICA DE CONTROL
16 bits, y con esto podemos contar un máximo de
65535 pulsos, lo cual sería una resolución muy baja Afortunadamente no necesitamos alambrar nin-
para un frecuencímetro. gún circuito discreto para la lógica de control de
Lo que haremos será utilizar un registro de la me- nuestro frecuencímetro, ya que esta tarea la emulare-
moria RAM al cual nombraremos FrecHH y lo usare- mos con software.
mos como byte más significativo. De esta manera ten- El programa principal muestrea si se presiona el
dremos 24 bits de resolución en el contador digital, interruptor selector de intervalo. Si esto sucede se re-
lo cual nos permitirá contar hasta 16777215 pulsos, programa el registro Interv con el nuevo valor y se
resolución bastante adecuada. reinician los timers TMR0, la compuerta y TMR1, el
contador de frecuencia. Realmente lo más importante
¿Cómo uniremos el TMR1 con el registro FrecHH? sucede cuando se genera alguna interrupción, ya sea
Cada vez que se desborde el TMR1, generare- del TMR0 o del TMR1.
mos una interrupción. En la subrutina de interrupción En la figura 2 se muestra un diagrama de flujo de
incrementaremos FrecHH y de esta manera creare- la lógica utilizada cuando se genera la interrupción.
mos un contador de 3 bytes (FrecHH, TMR1H y En la subrutina de interrupción se pregunta si ésta ha
TMR1L). sido ocasionada por el TMR0 (compuerta). En caso
Bien, sin usar algún contador externo ya tenemos de ser así, se detienen los dos timers. Luego se llama
nuestro contador digital dentro del microcontrolador. a la subrutina ESCALAF, la cual examina el resultado
de la medición (FrecHH, TMR1H y TMR1L) y en base
al valor se programa el registro FormPunto (Formato
COMPUERTA del Punto) que luego es utilizado para colocar apro-
piadamente el punto decimal en el display. También
La compuerta la emularemos con el TMR0. Lo uti- en base al valor se determinan las unidades (Hz, kHz
lizaremos como contador de pulsos internos (del osci- o MHz). Después de esto se actualiza la escala en-
lador). viando el valor del TMR1 (y FrecHH) a la IGTV don-

31
de se despliega en forma de
display de cuarzo.
En caso de que la interrup-
ción haya sido ocasionada
por el TMR1 se incrementa
FrecHH. Si este registro se
desborda (255 + 1) se avisa
que ha habido sobreflujo. En
cualquiera de los 2 casos, lec-
tura normal o sobreflujo y des-
pués de desplegar lo que co-
rresponda, se reinician los ti-
mers para iniciar una nueva
cuenta. Enseguida se regresa
de la subrutina de interru p-
ción para continuar con el
programa principal. Por cues-
tión de espacio no podemos
mostrar el código fuente del
frecuencímetro; sin embargo,
éste está disponible en la pá-
gina WEB de la revista para
aquellos lectores que deseen
estudiarlo a detalle.

DISPLAYS Figura 2 - Diagrama de Flujo


de la Interrupción.
Recordemos que la placa
IGTV tiene integrada una fun- alterna y utilizamos un intervalo de 1 segundo, la re-
ción que permite simular displays de cuarzo y es la solución será de 1Hz, es decir la lectura sería por
que utilizaremos para este fin. ejemplo 60Hz. Sin embargo, si contamos durante 10
segundos lograremos una resolución de 0.1Hz, de tal
suerte que podríamos obtener una lectura por ejem-
CONTROL DEL INTERVALO plo de 59.9Hz.
El intervalo de 0.1 segundos es útil para la lectu-
Nuestro frecuencímetro tendrá la facultad de ha- ra de altas frecuencias. Aunque la resolución será de
bilitar la compuerta durante 0.1 segundos, 1 segun- 10Hz obtendremos la ventaja de que la lectura se
do o 10 segundos. Este intervalo lo seleccionaremos realizará en 100 milisegundos.
mediante un interruptor localizado en el circuito. Se requiere un indicador del intervalo selecciona-
do. Afortunadamente esto lo logramos fácilmente con
¿Por qué varios intervalos? las capacidades gráficas y de despliegue que posee
Si deseamos medir la frecuencia de la corriente la placa IGTV.

32
Cada vez que presionemos el botón de intervalo, De esta manera nos ahorramos teclear una línea
en la pantalla se resaltará la escala adecuada me- y además el código se torna más legible.
diante una barra de color oscuro con letras de color El nuevo archivo de las macros se llama Macro -
claro indicando el intervalo seleccionado. s2IG.asm y debe agregarse al subdirectorio Comu-
Al seleccionar el intervalo de 10 segundos, con- nes.
forme transcurren los segundos, se muestra una barra También debe agregarse la rutina de comunica-
en la parte inferior del display; la cual va creciendo ción con la IGTV, llamada ComIGH.asm la cual es
hacia la derecha. Esta barra nos da una idea del prácticamente igual a ComIG.asm, la diferencia es
tiempo transcurrido desde que se inició la medición. que a ComIGH.asm se le han agregado ciclos
NOP con el objeto de bajar la velocidad de envío de
datos hacia la IGTV y de esta manera poder usar en
ACTUALIZACIONES el microcontrolador externo un cristal de 20MHz. (H
está por High Speed).
Esta sección es importante para los lectores que Ambas rutinas están disponibles en la página
estén interesados en el diseño y construcción de ins- WEB de la revista.
trumentos con la placa IGTV. Son muchas las macros que se han creado para
En el sitio WEB de la revista se han colocado las facilitar escribir código y por lo tanto se recomienda
rutinas necesarias para el desarrollo del software. ver el archivo para conocer la manera de usarlas.
Constantemente estamos ampliando las funciones
de las rutinas y macros y cada cierto tiempo deben
actualizarse. Para este proyecto se han aumentado
las macros agregando instrucciones al conjunto pro- PLANEANDO NUESTRA PANTALLA
porcionado por Microchip.
Por ejemplo, no existe una instrucción para car- Como se hizo en los 2 proyectos anteriores, va-
gar un registro con una literal y esto debe hacerse mos a dibujar 2 barras con texto en la parte superior
usando al registro W como intermediario. de la pantalla. Para esto debemos definir primero, en
Hemos creado una macro llamada MOVN R,L la una tabla, todos los textos que se utilizarán en la pan-
cual carga la literal L en el registro R. talla. La tabla se muestra en la tabla 1.
Como un ejemplo de uso, cargaremos el registro Los números a la derecha indican el offset en la
Interv con el número 100. tabla.
Para procesar alguna línea simplemente utiliza-
Utilizando el conjunto de instrucciones de Micro- mos la macro TEXTO_FORMATO offset y la línea de
chip debe hacerse de la siguiente manera: texto indicada por el offset se dibujará en la posición
del cursor.
MOVLW 100
MOVW Interv TABLA_TEXTOS ADDWF PCL,F
DT "SABER ELECTRONICA IGTV",255 ;0
En cambio, con las ma- DT "MEDIDOR DE FRECUENCIA",255 : 28
cros que hemos creado, la DT 7,8,8,1,"INTERV",255 ; 50
DT "INTERVALO",3,30,"ENTRADA",255 : 61
instrucción es: DT 10,1,10,".1 SEG",5," 1 SEG",5,"10 SEG",9,255 ; 80
DT 10,1,10,"0 - 25 MHZ",5,"25 MHZ - 1.1 GHZ",9,255 ; 105
MOVN Interv,100 DT “INTERVALO”,255
Tabla 1

33
Observe la tabla 2. Con la instrucción TEXTO - gundos, entonces se inicia un nuevo ciclo de lectura
_FORMATO 28 (la última) se dibuja el texto “MEDI- encendiéndose de nuevo.
DOR DE FRECUENCIA”, ya que éste inicia en el ca- El circuito es tan sencillo que ni siquiera precisa el
rácter 28 de la tabla. “diseño” de una placa de circuito impreso. Ud. pue-
Como ya es costumbre, también dibujaremos un de descargar la construcción y conexión a la placa
pequeño ícono de la aplicación en la parte superior IGTV de nuestra web con la clave mencionada ante-
izquierda de la pantalla. En esta ocasión el ícono es riormente. *********
un dibujo de 3 ciclos de corriente alterna y una letra
;--------- DIBUJAR BARRAS DE TITULOS --------
“F”. (No se me ocurrió algo mejor). Se dibuja un mar-
BRILLO 0
co en bajo relieve para enmarcar al display de cuar-
CURSOR 22,1
zo.
CUADRO_LLENO 226,14
En la parte inferior izquierda se dibuja un botón
BRILLO 10
de control con el texto “INTERV”, el cual se usa para
CURSOR 22,15
seleccionar el intervalo deseado. La selección se vi-
CUADRO_LLENO 226,26
sualiza mediante barras oscuras que señalan el inter-
valo actual.
;--------- TEXTOS DE LAS BARRAS DE TITULOS -----
Recuerde que usted puede estudiar el código
BRILLO 10
completo bajándolo de nuestra página www.we -
CURSOR 30,4
belectronica.com.ar, haciendo click en el ícono
TEXTO_FORMATO 0
password e ingresando la clave “graficatvfrec”.
BRILLO 3
En la figura 3 se muestra el diagrama esquemáti-
CURSOR 48,17
co del frecuencímetro, el cual como podrá observar,
TEXTO_FORMATO 28
es muy sencillo. Los pulsos de la frecuencia a medir
se introducen al TMR1 por la pata 11, la cual es RC-
Tabla 2 - Barras de títulos.
0/T1OSO/T1CKI (Timer1 Clock Input).
El interru p t o r
selector de interva-
lo se introduce por
la pata 21
(RB0/INT).
En la pata 5
(RA3) se ha colo-
cado un LED, el
cual durante cada
medición se en-
cenderá para indi-
car que el TMR1
está contando pul-
sos. Luego del in-
tervalo selecciona-
do, el LED se apa- Figura 3 - Diagrama Esquemático del Fre -
ga y queda así du- cuencímetro A.
rante 400 milise-

34
FRECUENCÍMETRO TIPO B de esta manera se pudo trabajar sobre un proto-
board normal.
Con el instrumento anterior cumplimos cabalmen- La buena noticia es que el encapsulado SOIC es
te con nuestro lema: “Bajo costo y piezas fáciles de posible soldarlo del modo convencional, sólo se re-
conseguir”. Ahora vienen los problemas. quiere de un cautín con punta muy fina y soldadura
Aunque el frecuencímetro A sirve perfectamente muy delgada (y para algunos como yo, de una lupa
para trabajar en proyectos con microcontroladores y poderosa), afortunadamente estos son elementos fáci-
sistemas digitales que trabajan con niveles TTL, nues- les de conseguir.
tros amigos lectores que trabajan con RF seguramen- Este integrado tiene la posibilidad de dividir por
te tendrán necesidad de medir frecuencias de trans- 10, 20, 40 y 80.
misores por encima de 90MHz. Aunque tal frecuen- Si se fuese a utilizar en un frecuencímetro discre-
cia era relativamente “alta” hace unos 30 años, hoy to (con circuitos integrados TTL, por ejemplo), esto se-
existe equipo de RF que comúnmente trabaja a fre- ría un grave problema, ya que al dividir por 80 ¿có -
cuencias por encima de 1GHZ, para lo cual nuestro mo le haríamos para que en el display apareciera la
frecuencímetro no funciona. lectura multiplicada por 80?
Lo más práctico sería realizar esta operación con
una calculadora cada vez que se toma una lectura,
LOS PREESCALADORES AL RESCATE lo cual es engorroso.
Afortunadamente, con los microcontroladores la
Para medir frecuencias más altas, se emplea un ti- multiplicación se convierte en un asunto trivial (bue-
po de circuito integrado llamado preescalador, el no, puede ser difícil diseñar la rutina, pero el código
cual es simplemente un divisor de muy alta velocidad es reutilizable).
que contiene, además, amplificadores en la entrada. En la figura 4 se muestra el integrado MC12080.
Desafortunadamente no siempre son fáciles de En las patas SW1, SW2 y SW3 se selecciona la
conseguir debido a su función tan específica. división deseada, de acuerdo a la tabla mostrada.
Para nuestro medidor utilizaremos la división por
80, de tal suerte que una frecuencia a la entrada de
PREESCALADOR MC12080 800MHZ, se convierte en 10MHZ a la salida, fácil-
mente medible con nuestro frecuencímetro A.
El preescalador seleccionado para el frecuencí- Desafortunadamente la salida del MC12080 es
metro B es el MC12080. de aproximadamente 1.6 volts. Por tal motivo, debe-
El fabricante de este inte-
grado es la compañía ON Se-
miconductor y son realmente
baratos.
Permítame plantear otro
problema: sólo se fabrica en
encapsulado SOIC (Small Ou-
tline IC).
Para las pruebas en el pro-
totipo, el pequeño integrado
se montó sobre una tarjeta
convertidora de SOIC a DIP y Figura 4 - Preescalador MC12080.

35
mos amplificarla por medio de un transistor para po- ficador, avisará al microcontrolador de la escala se-
der convertirla a nivel TTL y así introducirla al TMR1 leccionada, de modo que automáticamente se resal-
del microcontrolador. tará la escala apropiada en la pantalla.
Aunque el fabricante recomienda usar el preesca-
lador para frecuencias arriba de 100MHz, éste traba-
ja perfectamente desde 20MHz (se requiere de un ni- ¿CÓMO SE MULTIPLICA POR 80?
vel más alto). Lo mismo sucede en el lado de 1.1GHz,
y es posible medir frecuencias arriba de este límite. En el sistema binario, para multiplicar por un múl-
tiplo de 2, simplemente se desplazan los bits a la iz-
quierda y se introduce un cero en el bit menos signi-
ESCALAS DE FRECUENCIA ficativo.
Por ejemplo, para multiplicar por 4 el número bi-
En nuestro frecuencímetro B tendremos dos esca- nario 00000100 (4), desplace dos bits a la izquier-
las de lectura: 0 - 25MHz y 25MHz-1100MHz. da, con lo cual se obtiene 00010000 (16). Para mul-
Cada entrada será independiente, es decir, ten- tiplicar por 8 se desplazaría una vez más a la iz-
dremos dos conectores de entrada. quierda y se obtendría el número 00100000 (32).
La selección será por medio de un interruptor, el En nuestro caso la entrada se divide por 80, así
cual aparte de enviar la entrada apropiada al ampli- que desplazamos el resultado 3 bits a la izquierda
para multiplicar por 8. Luego para multiplicar por 10,
PBITSUNO FrecHH,7,SobreFlujo en el display simplemente movemos el punto decimal
BCF STATUS,C un dígito a la derecha y … ¡listo!, hemos multiplica-
RLF TMR1L,F ; Multiplicar por 2.
do por 80. Fácil, ¿no cree usted, estimado lector?
RLF TMR1H,F
RLF FrecHH,F Ahora intente hacerlo con integrados discretos.
PBITSUNO FrecHH,7,SobreFlujo Difícil.
BCF STATUS,C Se puede percibir la enorme ventaja de trabajar
RLF TMR1L,F ; Multiplicar por 4. con microcontroladores.
RLF TMR1H,F
En la tabla 3 se observa el código utilizado para
RLF FrecHH,F
PBITSUNO FrecHH,7,SobreFlujo multiplicar por 8 el resultado obtenido en los 3 bytes
BCF STATUS,C del contador FrecHH, TMR1H y TMR1L.
RLF TMR1L,F ; Multiplicar por 8. Observe que antes de desplazar el byte FrecHH
RLF TMR1H,F a la izquierda se pregunta si el bit 7 es uno, y si es-
RLF FrecHH,F
to es así se despliega rebalse.
Tabla 3 - Multiplicación del resultado por 8. Como se habrá dado cuenta, se utiliza la macro
PBITSUNO, la cual simplifica
el código.
El significado de esta ma-
cro es el siguiente:
Probar BIT y Saltar si es
UNO FrecHH, 7, SobreFlujo
Es decir: Probar el bit 7
del byte FrecHH y si es uno
Figura 5 - Diagrama en Bloques del
saltar a la etiqueta SobreFlu-
Frecuencímetro B.
jo.

36
Figura 6 - Frecuencímetro B Montado en Protoboard.

Esta y muchas macros que facilitan escribir códi- ciar el preescalador montado sobre el adaptador.
go están disponibles en el archivo Macros2IG.asm. El cable plano de la derecha es la salida hacia la
En la figura 5 se muestra el diagrama en bloques placa IGTV.
del frecuencímetro B. Observe que se tienen dos en- En la figura 7 se muestra el diagrama esquemáti-
tradas para la medición, una para frecuencias bajas co y en la tabla 4 se detalla la lista de componentes.
y la otra para frecuencias arriba de 25MHz. El circuito impreso es de una sola cara. Sin em-
El interruptor selecciona la entrada al amplifica- bargo, las líneas de cobre en este caso van en la par-
dor con transistor FET, ya sea directamente de la en-
trada de baja frecuencia o del preescalador. La sali-
Tabla 4 - Lista de Materiales
da del FET se lleva a un frecuencímetro tipo A, igual
al de la sección anterior. El interruptor de selección
U1 - Preescalador MC12080
de entrada es de dos polos y dos posiciones. Cuan-
U2 - Microcontrolador PIC16F873 de 20MHz
do se selecciona la entrada de alta frecuencia, el otro
Q1 - Transistor FET 2N5485
polo del interruptor introduce una tierra al microcon-
R1 - 6.2k
trolador para avisar que se ha seleccionado la entra-
R2 - 1k
da de alta frecuencia. Esta señal la utiliza el micro-
R3, R4, R6 - 1M
controlador para indicar la entrada apropiada en la
R5 - 220
pantalla.
R7 - 390
R8 - 100k
C1, C2, C3, C4, C7 - 0,001µF
CONSTRUCCION
C5, C6 - 15pF (C5 opcional variable de 40pF)
C8, C9 - 0,1µF
Usted puede optar por armar el instrumento en
D1 - LED Verde
una tarjeta perfoboard. Sin embargo, recuerde que
J1, J2 - Conector RCA para impreso
el preescalador con encapsulado SOIC debe enton-
J3 - Base DIP de 16 patas
ces montarse sobre un adaptador SOIC a DIP.
S1 - Mini interruptor para impreso
C9 debe colocarse lo más cerca posible del S2 - Interruptor dos polos y dos posiciones para im-
MC12080. preso
La figura 6 muestra una fotografía del prototipo Y1 - Cristal de 20MHz
que armamos en protoboard donde se puede apre-

37
te superior, ya que el ins-
trumento posee 1 integra-
do de montaje de superfi-
cie. Coloque las bases de
integrados un poco altas
(aproximadamente 3
mm) para que puedan
ser soldadas por debajo
de este pequeño espacio.
Recuerde que el kit com-
pleto estará a su disposi-
ción con el microcontrola-
dor programado. La figu-
ra 8 muestra el circuito
i m p reso y la figura 9
muestra el diagrama pic-
tórico de la localización
de componentes. Los
pads marcados con X de-
ben unirse con un puente
por la parte inferior del
impreso o bien por la
parte superior si el cable
es con aislante.

EL MISMO
SOFTWARE
PARA AMBOS
FRECUENCÍMETROS

¿Cómo sabe el PIC si


se trata del medidor tipo
A o tipo B?
Observe en el diagra-
ma del tipo B que la pata
25 del PIC (RB4) está a
tierra. Esta entrada la uti-
liza el software para
identificar el tipo: si está
abierta se trata del tipo A
y si está a tierra se trata
Figura 7 - Diagrama Esquemático del Frecuencímetro Tipo B. del medidor tipo B. De es-

38
ta manera sólo es necesario un programa para am- La figura 10 muestra la pantalla del instrumento
bos tipos de frecuencímetros. midiendo la frecuencia de la corriente alterna, la cual
hemos disminuido con un transformador a 6 volts.
Observe que hemos seleccionado el intervalo de
CALIBRACIÓN 10 segundos para obtener una resolución de 0.1Hz.
En la parte inferior del display se puede apreciar
Para calibrar nuestro instrumento simplemente mo- la barra de intervalo creciendo de izquierda a dere-
dificamos la frecuencia de oscilación del cristal. De- cha conforme transcurren los 10 segundos.
bido a que todos los tiempos dependen de este osci- En la figura 11 se muestra una fotografía del sis-
lador, al alterarlo tam-
bién modificamos los
lazos de tiempo del
software. Coloque
c e rca del fre c u e n c í-
metro algún transmi-
sor portátil cuya fre-
cuencia sea conoci-
da. Dispárelo y anote
la frecuencia indica-
da por el medidor.
Luego modifique
el valor de C5 unos
pocos picofaradios
hacia arriba o hacia
abajo y mida la fre-
cuencia de nuevo. Re-
Figura 8 - Circuito Impreso.
pita este procedimien-
to hasta que el medi-
dor marque la frecuen-
cia más próxima a la
real. Este procedimien-
to puede ser largo y
engorroso.
Una alternativa
consiste en colocar un
condensador variable
pequeño (40pF) en lu-
gar de C5 y así ajus-
tar rápidamente la lec-
tura. En el circuito im-
preso se ha previsto la
instalación opcional
de dicho condensador
variable. Figura 9 - Localización de Componentes.

39
Figura 10 - Frecuencia de la Corriente Alterna.
tema completo midiendo la frecuencia de un peque-
ño transmisor portátil.
Observe que para captar la señal de RF se colo-
có un pequeño trozo de cable a manera de “antena”.
La pantalla se muestra en la figura 12.
Observe que el botón “INTERV” se encuentra des-
habilitado. Si se presiona no ocurre nada. Al selec-
cionar la entrada de alta frecuencia, automáticamen-
te queda seleccionado el intervalo de 0.1 segundos
y no se puede modificar. ******

Figura 12 - Pantalla del Medidor Mostrando la Figura 11 - Midiendo la Frecuencia


Frecuencia del Transmisor. de un Transmisor.

40
INTRODUCCION De modo que para determinar el valor de una bo-
bina se emplean métodos de lectura indirectos.
El instrumento es de bajo costo y sólo usa 2 inte- A continuación se exponen dos de estos métodos:
grados los cuales son un microcontrolador PIC16F84 y
el comparador LM311.
Para el despliegue del valor utilizamos la placa METODOS DE LECTURA INDIRECTA
IGTV donde simulamos un display de cuarzo.
Un circuito LC en paralelo presenta una alta impe-
dancia a cierta frecuencia, la cual es llamada frecuen-
MIDIENDO INDUCTANCIA cia de resonancia.
Si el circuito es serie, la impedancia entonces es
¿Cómo se puede medir una bobina? mínima a tal frecuencia. Utilizando un condensador de
En el proyectodel capítulo 2 utilizamos un método valor conocido se puede determinar el valor de la in-
directo para medir la capacitancia. ductancia conociendo la frecuencia de resonancia, la
Determinar directamente el valor de una bobina no cual está indicada por la siguiente formula:
resulta tan fácil. Esto se debe principalmente a los fac-
tores de pérdida inherentes a una bobina, como la re-
sistencia del cable con el cual está fabricada.
Y es que desde el punto de vista paramétrico un
condensador es un elemento más “ideal” que una bo-
bina. No se preocupe estimado lector, le prometo que és-
ta será la única fórmula matemática que veremos.
De la fórmula anterior se ha despejado L y ésta
queda expresada en función de la frecuencia F y de la
capacitancia C:

METODO 1

Observe el circuito de la figura 1 donde se tiene


un circuito LC en paralelo.

41
La señal de RF del generador es detectada por el bastante lento y siempre debemos hacer cálculos para
diodo D y filtrada por el condensador de 0.01 micro- determinar el valor de Lx.
faradios para luego ser medida por el voltímetro. La ventaja es que sólo usa componentes pasivos y
Cuando se tiene una frecuencia distinta a la de re- es útil para un rango muy amplio de inductancias.
sonancia, el voltaje del generador a la entrada del vol-
tímetro se divide debido a la resistencia de 2.2K y la
impedancia del circuito LC. METODO 2
Sin embargo, cuando la frecuencia del generador
es igual a la de resonancia, el circuito LC se compor- Si utilizamos un oscilador de RF y en su circuito LC
ta como un circuito abierto debido a su alta impedan- colocamos un condensador de valor conocido, pode-
cia, por lo que se obtiene una lectura alta en el voltí- mos determinar el valor de la inductancia midiendo la
metro, ya que sólo se manifiesta la resistencia de frecuencia generada por el oscilador. Este método tie-
2.2K. ne la ventaja de utilizar un medidor de frecuencia, el
Con este circuito podemos determinar el valor de cual es más accesible que un generador de RF. Sin em-
Lx de manera indirecta. Los pasos a seguir son los si- bargo, utiliza elementos activos en el oscilador.
guientes: Este método se ilustra en la figura 2.
1) Establezca un voltaje de aproximadamente 3 Aunque este método es más rápido que el anterior,
volts en el generador de RF. aún debemos realizar cálculos para determinar el va-
2) Comience con una frecuencia relativamente ba- lor de la inductancia.
ja (digamos 10 kHz) y suba lentamente la frecuencia.
3) Cuando se alcance la frecuencia de resonan-
cia, el circuito Lx C presentará su máxima impedancia UTILIZANDO UN MICROCONTROLADOR
y por lo tanto en el voltímetro observaremos un pico de PARA MEDIR INDUCTANCIA
voltaje, el cual disminuye de nuevo al seguir aumentan-
do la frecuencia. Antes de la invención de los microprocesadores, si
4) Observe la frecuencia del generador al momen- no se tenía acceso a un laboratorio especializado con
to del pico de voltaje y empleando la fórmula de reso- instrumentos sofisticados y costosos, los dos métodos
nancia determine el valor de la inductancia (con C de expuestos eran la única opción para un técnico o afi-
valor conocido). Vea la figura 1. cionado a la electrónica.
Este método requiere el uso de un generador de RF Sin embargo, ahora es posible construir medidores
y no siempre se puede disponer de uno. Además es de inductancia de muy bajo costo y gran funcionali-
dad, ya que utilizando microprocesadores po-
demos realizar cálculos que anteriormente se
debían hacer a mano o empleando amplificado-
res operacionales, lo cual no permitía obtener la
precisión que se obtiene con métodos digitales.
Figura 1 - Método 1 para medir inductancia. Bien, nuestro método será el segundo, sólo
que un microcontrolador se encargará de
medir la frecuencia, realizar los engorrosos
cálculos, seleccionar la escala adecuada y
enviar el resultado a una placa IGTV don-
de en un display de cuarzo simulado se
Figura 2 - Método 2 para medir inductancia. mostrará el resultado.

42
CALCULOS REALIZADOS DIAGRAMA ESQUEMATICO
POR EL MICROCONTROLADOR
El circuito es tan sencillo que no tiene caso mostrar
Observe la fórmula para obtener el valor de L en un diagrama en bloques.
función de F y C: En la figura 3 se muestra el diagrama esquemáti-
co.
El integrado LM311, aunque es un comparador, se
utiliza como amplificador de la señal senoidal produ-
Si hacemos C de un valor fijo e igual a 1000 pF, cida por el circuito LC.
entonces en la fórmula sólo nos queda una variable, la El funcionamiento como oscilador se explica a con-
cual es la frecuencia F. Podemos realizar de una vez tinuación:
los cálculos sobre los valores constantes los cuales son Supongamos que el circuito está sin alimentación.
1 sobre 4 por pi al cuadrado por 1000 pF, lo que da Al momento de alimentarlo, C10 está descargado y en
el resultado siguiente: consecuencia en la pata 3 (-) tenemos cero volts. El di-
visor de tensión formado por R2 y R6 aplica aproxima-
damente 2.5V a la entrada 2 (+) lo cual genera que la
salida (pata 7) se vaya a 5V, ya que la entrada posi-
Esto ha simplificado en gran medida la fórmula. F tiva es mayor que la negativa. Con esta tensión de 5V
está en kHz y L está en micro-
henrios. Nuestro microcontro-
lador simplemente medirá la
frecuencia del oscilador en
kHz, luego la elevará al cua-
drado, después efectuará la di-
visión de 25330177 entre el
resultado anterior y se obten-
drá el valor de la inductancia
en microhenrios. Fácil, ¿no le
parece, estimado lector?
Bien, es fácil debido a las
capacidades de procesamien-
to de datos de un microproce-
sador, ¡imagínese hacerlo con
integrados discretos!, definiti-
vamente eso es prácticamente
imposible.
En los instrumentos anti-
guos las operaciones se efec-
tuaban con amplificadores
operacionales y se utilizaban
medidores de aguja, es decir,
todo se hacía “analógicamen-
Figura 3 - Diagrama esquemático.
te”.

43
se comienza a cargar C10 por medio de R5 hasta que El lector observará que el circuito es aún más sen-
el condensador alcanza una tensión mayor que 2.5V. cillo que el medidor de capacitores que construimos
En este instante la salida se cambia a 0V ya que la en- anteriromente.
trada negativa rebasa a la positiva. Este pulso de ba- La placa IGTV sólo la usamos como display, ya
jada se retroalimenta por R3 al circuito LC formado que ni siquiera tenemos interruptores para la selección
por C4 a C7 y la inductancia desconocida. El circuito de la escala, pues esto es llevado a cabo por el micro-
LC comienza a oscilar y se mantiene así debido a la controlador.
retroalimentación de señal por medio de R3; sin em-
bargo, debido a que U2 es un comparador, en la pa-
ta 7 obtenemos pulsos cuadrados, los cuales se intro- PROGRAMA DEL MICROCONTROLADOR
ducen al microcontrolador para medir su frecuencia.
La suma de C4, C5, C6 y C7 debe ser aproxima- El programa binario para grabar en el microcon-
damente 1000 pF. El condensador variable pequeño trolador se llama MedInd.hex y está disponible en el
C7 se utiliza para la calibración. sitio WEB de la revista.
Por cuestión de espa-
cio no podemos publicar
todo el código fuente,
pero también está dispo-
nible en la página WEB
con el nombre MedIn-
d.asm para quien desee
estudiarlo en detalle.
A continuación se
muestran los pasos que
sigue el micro c o n t ro l a-
dor de acuerdo al pro-
grama para determinar
el valor de una bobina:
Figura 4 - Circuito impreso. 1) Llamada a la sub-
rutina MEDIRFREC, don-
de se cuentan los pulsos
de entrada al TMR0 du-
rante cierto tiempo, el
cual depende de la esca-
la.
2) De acuerdo a la
escala seleccionada, se
contarán pulsos durante
0.1 segundos, 1 segun-
do ó 10 segundos.
3) Los pulsos de en-
trada serán contados
Fig. 5 - Localización de componentes y los 3 puentes. por FrecH y TMR0.

44
4) Llamada a la subrutina MULT2BYTES, la cual La verdad es que la placa IGTV sólo la usaremos
efectúa la multiplicación de la frecuencia por ella mis- como display, ya que ni siquiera tenemos botones o es-
ma para así elevarla al cuadrado. calas que mostrar.
5) En caso de que la lectura sea cero debido a que La pantalla es un simple display en el centro con
no se ha colocado ninguna bobina, se envía al display las unidades correspondientes.
un cero. Se regresa de la subrutina MEDIRFREC.
6) Luego, ya en el código del programa principal,
se analiza el valor de la frecuencia al cuadrado para CONSTRUCCION
determinar la escala adecuada.
7) Enseguida se efectúa la división de la constante Dada la sencillez del circuito, éste puede ser mon-
25330177 entre el valor de la frecuencia al cuadrado tado en un protoboard o en un perfoboard (semejante
y así se obtiene el valor de la inductancia. La subruti- al anterior pero en circuito impreso).
na de división se llama DIVIDIR4B. También se proporciona el diseño de un circuito
8) El valor se envía a la placa IGTV para desple- impreso en caso de que decida construirlo.
garse en un display de cuarzo simulado. La inductancia a medir se inserta en J2, la cual es
9) Ocurre una espera de 400ms y se repite el ci- una base para circuito integrado de 8 patas donde las
clo. patas 1 a 4 se han conectado a tierra y las demás se
Cabe hacer la aclaración de que la subrutina de unen y llevan al circuito oscilador.
división no es muy eficiente ya que está implementada En la figura 4 se muestra el circuito impreso. En la
en base a restas iterativas, lo que implica que el tiem- figura 5 se muestra el diagrama pictórico con la loca-
po de ejecución dependa del valor de los operandos. lización de componentes y la colocación de los puen-
Sin embargo, en esta aplicación se tiene control sobre tes respectivamente.
el valor mínimo del divisor, por lo que no se produce En la figura 6 se observa el circuito armado en un
un tiempo de ejecución muy largo. protoboard donde se puede apreciar la bobina de
Al contrario, el algoritmo de la multiplicación ha si- 10µH que se utilizó para ajuste y calibración.
do diseñado para ser bastante eficiente. El integrado de la izquierda es el PIC16F84 y el de
la derecha de 8 patas es el LM311. Observe que to-
do el circuito ni siquiera ocupa una placa del proto-
ACTUALIZACIONES board.

En esta ocasión se han ampliado y revisado las


macros, por lo que se debe agregar al subdirectorio
Comunes la Macro de nombre Macros3IG.asm, dispo-
nible también en la página WEB.

PLANEANDO NUESTRA PANTALLA

Colocaremos dos barras de texto en la parte supe-


rior de la pantalla; una de color oscuro y otra de co-
lor claro con el nombre de la aplicación.
Nuestro pequeño ícono en esta ocasión será el sím-
Figura 6 - Medidor de inductancias armado en pro -
bolo de un inductor variable. toboard.

45
El conector con cable plano de la derecha es la co- COMENTARIOS FINALES
nexión a la placa IGTV.
En la figura 7 se muestra la pantalla con la lectura Es posible medir capacitores con este mismo circui-
de la bobina de 10µH. to. Simplemente se mantiene constante la bobina y se
intercambia C por L en la fórmula para obtener el va-
lor del capacitor; sin embargo, solo sería posible me-
CALIBRACION Y AJUSTE dir capacitores no polarizados, es decir, no se podría
medir capacitores electrolíticos, lo cual es una gran li-
Si no dispone de un medidor comercial, el ajuste mitante. ****
se puede realizar con bobinas de inductancia conoci-
LISTA DE MATERIALES:
da. En nuestro caso se colocó una bobina de 10µH y
se ajustó la lectura por medio de los condensadores
C4, C5, C6 y C7, los cuales afortunadamente en nues- U1: Microcontrolador PIC16F84
tro caso se pudieron sustituir por uno solo de 1000pF, U2: Comparador LM311
tal como se muestra en la figura 7. R1: 2.7k
Usted puede colocar un pequeño condensador va- R2, R3, R6: 100k
riable (C7) para ajustar con mayor facilidad al instru- R4: 1k
mento.
R5: 47k
C1: 100µF
C2: 0.1µF
C3, C10: 10µF
C4, C5: 470pF
C6: 33pF
C7: Cond. Variable de 40pF
C8, C9: 15pF
Y1: Cristal 20MHz
J1: Base DIP de 16 patas
J2: Base DIP 8 patas
Varios: caja para el montaje, soldador, estaño,
Figura 7 - Pantalla del Medidor con la Lectura de
10µH. cables, alicate, tornillos, etc.

46
Aunque la máxima frecuencia utilizable es de po- ñando el televisor!
co más de 15kHz, el costo del instrumento será de En aquellos tiempos tenía más ganas que conoci-
aproximadamente 10 dólares, lo cual lo hará accesi- mientos, sin embargo la idea me ha cautivado desde
ble a la mayoría de nuestros lectores. entonces.
La construcción del osciloscopio es muy sencilla, Aunque el enfoque utilizado con la placa IGTV es
este diseño sentará las bases para instrumentos de distinto al método de introducir señales a las bobinas
mayores prestaciones, los cuales iremos construyen- de deflexión, al final se muestran señales eléctricas
do más adelante. en la pantalla del televisor, lo cual viene a culminar
Guiaremos al lector paso a paso y desde cero en un viejo sueño.
el diseño y construcción de osciloscopios digitales ca-
da vez de mayor desempeño, hasta terminar con uno
de características cercanas a los modelos comercia- OSCILOSCOPIO Y TELEVISOR
les.
Cabe aclarar que este instrumento se debe conec- El tubo de rayos catódicos en los televisores con-
tar a la placa IGTV del capítulo 1. vencionales guarda cierta similitud con el de un osci-
loscopio (también convencional); sin embargo, el ra-
yo de electrones que se proyecta en la pantalla es
INTRODUCCION manipulado magnéticamente en el caso de un televi-
sor y eléctricamente en un osciloscopio. En el caso
Antes de comenzar con las explicaciones técni- del televisor, al hacer circular corriente en las bobinas
cas, un poco de historia: de deflexión, se crea un campo magnético el cual
Convertir una televisión en un osciloscopio es una desvía el rayo de electrones proyectado en la panta-
idea tan antigua como la vida de la misma televisión. lla.
Cuando comencé a estudiar la preparatoria técni- En el osciloscopio la desviación se produce por
ca (¡eso sí es historia!), un alumno de ingeniería dió medio de placas horizontales y verticales colocadas
una plática acerca de cómo había logrado desplegar internamente. Al aplicar tensión a las placas, el rayo
trazos de señales eléctricas en un televisor modifican- de electrones (carga eléctrica negativa) se desvía ha-
do las entradas a las bobinas de deflexión vertical y cia la placa positiva y se aleja de la placa negativa,
horizontal. manifestándose en la pantalla un movimiento propor-
Después me comentaba mi compañero de inge- cional a la tensión en las placas de desviación.
niería que había recibido muchas felicitaciones por El trazo en el osciloscopio se consigue aplicando
su experimento. una onda diente de sierra en las placas horizontales,
Yo intenté repetirlo en casa pero lo único que re- mientras que la señal que se desea mostrar es aplica-
cibí fue una fuerte descarga eléctrica cuando manipu- da a las placas verticales.
laba el cinescopio. Pero eso no fue todo; ¡terminé da- La velocidad horizontal es determinada por la fre-

47
cuencia de la onda diente de sierra aplicada a las be ser capaz de convertir la señal analógica a digi-
placas. En el caso del osciloscopio, en realidad, las tal a una velocidad al menos al doble de la frecuen-
placas son un condensador aunque de capacitancia cia que deseamos mostrar, de acuerdo al teorema de
muy baja, lo cual permite poder aplicar frecuencias Nyquist.
muy altas sin problema. Sin embargo, en el caso del Esto es, si deseamos mostrar en la pantalla una
cinescopio en un televisor, la inductancia de las bobi- frecuencia de 10MHz, la cual tiene un período de
nas de deflexión se convierte en un problema al mo- 100ns, debemos realizar la conversión ¡en 50ns!
mento de aplicarles frecuencias altas. Motivo por el En la práctica hace falta una velocidad mayor, ya
cual sólo es posible mostrar frecuencias bajas en el que la figura que se obtendría ni siquiera se parece-
televisor por el método de señales en las bobinas de- ría a la real si se muestrea sólo al doble. Hasta hace
flectoras. algunos años, disponer de un convertidor de tal velo-
De hecho, las frecuencias que se aplican a las bo- cidad requería una inversión considerable debido a
binas de deflexión en el caso de un televisor son fijas su elevado costo, afortunadamente hoy en día existen
(aproximadamente 15735Hz para las bobinas hori- convertidores de 30MHz y más veloces a un costo ra-
zontales y aproximadamente 60Hz para las vertica- zonable.
les en el sistema NTSC), por lo tanto las bobinas son Los únicos convertidores capaces de trabajar a tal
diseñadas tomando en cuenta que las frecuencias son velocidad son el tipo “flash”, los cuales convierten la
fijas (para la norma PAL será de 15.625Hz). Lo expli- señal analógica a la entrada en un dato digital a la
cado anteriormente es válido para los cinescopios salida en pocos nanosegundos.
convencionales, los televisores de nueva generación
utilizan pantallas de cuarzo o de plasma y no tienen
bobinas ni placas de deflexión. ELEMENTOS Y CONTROLES
Nuestro osciloscopio utiliza el enfoque de dis- DE UN OSCILOSCOPIO DIGITAL
plays de cuarzo, aunque se utilice un televisor con-
vencional. Bien, aunque de una manera teórica, hemos ex-
puesto las bases del funcionamiento de un oscilosco-
pio digital. A continuación se muestran los elementos
PRINCIPIOS DE FUNCIONAMIENTO básicos necesarios en el proceso práctico para imple-
DE UN OSCILOSCOPIO DIGITAL mentar el instrumento junto con los diferentes tipos de
control que normalmente se emplean:
Para mostrar señales que fluctúan en el tiempo, en
el caso de un osciloscopio digital, primero debemos a) Retener la señal analógica por un instante.
convertir la señal analógica de entrada en datos di- b) Convertir en digital la señal por medio de un
gitales empleando para esto un convertidor analógi- convertidor A/D.
co-digital. Cada dato convertido se debe almacenar c) Almacenar el dato de la conversión en una me-
en una memoria y posteriormente transformar estos moria RAM.
datos en una gráfica desplegada en una pantalla. d) Repetir el ciclo hasta obtener el número desea-
El principio de funcionamiento es fácil de visuali- do de muestras.
zar mentalmente y en teoría no debe ser un problema e) Mediante un proceso digital graficar los datos
llevarlo a la práctica. en algún tipo de pantalla.
Realmente el mayor inconveniente radica en la f) Implementar un control para actuar sobre el
conversión análoga-digital, ya que si deseamos mos- tiempo horizontal (segundos/división).
trar una señal de cierta frecuencia, el convertidor de- g) Implementar un control para actuar sobre la

48
ganancia vertical (voltios/división). analógica
h) Implementar un control para actuar sobre la sin- por un instante.
cronía de disparo. Debido a que el convertidor analógico-digital no
es instantáneo, es necesario mantener la señal analó-
Aunque se puede implementar un sinnúmero de gica muestreada con el mismo nivel mientras es lleva-
controles a un osciloscopio, los citados anteriormente da a cabo la conversión, de otro modo el resultado
constituyen los elementos básicos de cualquier instru- no sería confiable. El circuito encargado de esta fun-
mento de este tipo. ción se llama Muestreo y Retención (Sample And
Nuestro instrumento lo diseñaremos utilizando el Hold) y debe ser capaz de retener el nivel estable du-
microcontrolador PIC16F873, de tal forma que de al- rante el tiempo de la conversión.
guna manera implementaremos todos los pasos seña- El PIC16F873 cuenta con esta función que se ac-
lados anteriormente con este único integrado para lo tiva en el instante en que seleccionamos la entrada
cual utilizaremos elementos discretos externos y soft- analógica. El fabricante estipula que el tiempo míni-
ware interno. mo para cargar el condensador de retención es de

CONSTRUCCION

El circuito cabe perfectamen-


te en una sola tarjeta protoboard
y sobra espacio, así que la cons-
trucción no debe presentar ma-
yor problema.
La figura 1 muestra el diagra-
ma esquemático de nuestro ins-
trumento. Como podrá apreciar
el lector, el circuito es bastante
simple. De hecho los condensa-
dores de 15pF son opcionales,
ya que es muy probable que al
armarse el circuito en pro t o- Figura 1 - Diagrama Esquemático del Osciloscopio.
board no sean necesarios.
La figura 2 muestra una fo-
tografía con el instrumento ar-
mado en una tarjeta de proto-
board. Observe que ni siquiera
hubo necesidad de los 2 con-
densadores del cristal. Bien,
ahora analizaremos cada uno
de los pasos expuestos y mos-
traremos la solución empleada
en cada caso.
a) Retener la señal Figura 2 - Nuestro osciloscopio armado en una tarjeta de protoboard.

49
1.6µs, después del cual podemos iniciar la conver- de la señal y procedemos a desplegar el resultado en
sión ejecutando la instrucción BSF ADCON0, GO. la pantalla.

b) Convertir en digital la señal por medio de un d) Repetir el ciclo hasta obtener


convertidor A/D. el número deseado de muestras.
Después de almacenar el resultado de la conver-
Cuanto más rápido podamos convertir la señal sión, iniciamos de nuevo un muestreo y retención y
analógica en dato digital, mayor será la frecuencia luego otra conversión.
capaz de desplegar nuestro osciloscopio. Este proceso se repite hasta obtener el número de
Muchos de los microcontroladores fabricados ac- datos suficientes de acuerdo a la resolución que mos-
tualmente cuentan con un convertidor analógico-digi- traremos en la pantalla.
tal integrado. Tal es el caso del PIC16F873, el cual Los osciloscopios comerciales, por lo general,
cuenta con dicha función. Sin embargo, hay un pro- muestran una cuadrícula en la pantalla de 10 cua-
blema: el convertidor no es del tipo flash y requiere dros horizontales por 8 verticales.
de aproximadamente 20 microsegundos mínimo pa- La pantalla de la IGTV tiene una resolución de
ra completar cada conversión. 228 por 216 píxeles. Si en nuestro caso usamos cua-
Esto se debe a que la conversión es por aproxi- dros de 20 píxeles por lado, podemos acomodar 10
maciones sucesivas, que aunque es la segunda más cuadros horizontales para un tamaño horizontal de
veloz (sólo superada por el tipo flash), permite una 200 (20 x 10); sin embargo, no tendríamos espacio
frecuencia máxima de 50kHz, reflejándose en apro- para colocar otros elementos visuales como texto pa-
ximadamente 15kHz en una aplicación práctica pa- ra los voltios por división, etc.
ra osciloscopio. Esto limitará la frecuencia máxima Para poder contar con espacio para avisos limita-
que podremos mostrar, sin embargo podremos obser- remos los cuadros horizontales a 8, lo que nos permi-
var señales de audio perfectamente. tirá usar solo160 píxeles horizontales (20 x 8) que-
dando 68 píxeles para colocar textos o dibujos.
c) Almacenar el dato de la Verticalmente también tendremos 8 cuadros (160
conversión en una memoria RAM. píxeles). Así que nuestro osciloscopio mostrará una
La memoria RAM del 16F873 es de 192 localida- cuadrícula de 8 x 8 cuadros, sólo 2 cuadros horizon-
des, la cual realmente es insuficiente para una aplica- tales menos que los modelos comerciales.
ción de osciloscopio, ya que no podremos almacenar Este es el motivo por el cual usaremos 160 locali-
varias pantallas, sin embargo será suficiente para dades (como se mostró en el inciso anterior) para al-
nuestro primer osciloscopio simple. macenar los datos de la conversión en corresponden-
Para grabar los datos utilizaremos el direcciona- cia con los 160 puntos horizontales, quedando 32 lo-
miento indirecto, ya que éste permite direccionar la calidades de las 192 disponibles para uso general.
RAM de una manera continua. Si utilizáramos el mo-
do directo, tardaríamos más tiempo en almacenar e) Mediante un proceso digital
cada dato, ya que debemos cuidar la página RAM graficar los datos en algún
que estamos accesando. (RP0 y RP1). Después de ca- tipo de pantalla.
da dato digital que obtenemos del CAD, lo almace- Ya tenemos los 160 datos digitales almacenados
namos, incrementamos el apuntador de localidad (el en nuestra memoria RAM del PIC. Ahora debemos
cual es el FSR) y preguntamos si ya han sido guarda- transformar esta información en una gráfica desple-
dos 160 datos (lo de este número se aclara en el si- gada en la pantalla de la TV. Afortunadamente la pla-
guiente inciso). Si es así terminamos con el muestreo ca IGTV tiene integrada una función que se encarga

50
justamente de esto, sólo debemos enviar los datos y mer e iniciaremos al convertidor de tal suerte que en
la IGTV se encargará de realizar el proceso de des- la rutina de interrupción después de transcurrido el
pliegue de la gráfica. tiempo programado en el timer, leeremos el dato con-
Por medio de la instrucción ESCRIBIR BLOQUE vertido a digital y lo almacenaremos en la localidad
EN MEMORIA INTERNA enviaremos los 160 datos en turno. Cada vez que se ejecute una interrupción
almacenados en el PIC hacia la tarjeta IGTV. por el timer, incrementaremos la localidad de almace-
Luego enviaremos la instrucción GRAFICAR PASO namiento (la cual estará señalada por el registro FSR)
X con la cual nuestra tarjeta graficará en la pantalla y volveremos a iniciar una conversión en el converti-
los datos almacenados previamente en su memoria dor analógico-digital hasta obtener 160 muestras.
interna. Como podrá observar, estimado lector, es Realmente en la subrutina de interrupción está el
muy sencillo implementar un osciloscopio con la tar- “corazón” del funcionamiento del software.
jeta IGTV. Esto se debe a las poderosas instrucciones En la figura 3 se muestra un diagrama de flujo
integradas para ello, liberando al diseñador de escri- que muestra lo que sucede en cada interrupción por
bir largas y tediosas rutinas, basta con enviar un gru- el TMR1.
po de datos digitales y pedirle a la tarjeta que los
grafique.

f) Implementar un control para


actuar sobre el tiempo horizontal
(segundos/división).
De acuerdo al fabricante del PIC, el menor tiem-
po en que se puede convertir un dato analógico en
digital, es de aproximadamente 20 microsegundos.
Sin embargo, debido a que necesitamos ejecutar al-
gunas instrucciones para grabar cada dato digital en
la memoria después de cada conversión, agregare-
mos otros 5 microsegundos al tiempo de conversión
entre dato y dato, para obtener 25 microsegundos en
total. Si multiplicamos 25 microsegundos por 20 pí-
xeles que mide cada división (cuadro), obtenemos
500 microsegundos por división, la cual será la esca-
la de barrido horizontal más rápida.
Además tendremos también tiempos de 1, 2, 5 y
10 milisegundos por división, las cuales no represen-
tan problema para la velocidad de conversión, ya
que son mayores a 25 microsegundos.
Nuestro osciloscopio tendrá un botón de control
para seleccionar el tiempo de barrido horizontal.
¿Cómo generaremos el tiempo horizontal?
Bien, utilizaremos el timer 1, el cual es de 16 bits.
Programaremos un cierto número en este timer el cual
dependerá de la escala de tiempo horizontal selec-
Figura 3 - Diagrama de Flujo de la Subrutina de
cionada. Habilitaremos la interrupción por dicho ti- Interrupción.

51
En cuanto sucede la interrupción se carga el dores operacionales e interruptores analógicos, au-
TMR1 con los valores apropiados para generar otra mentando el número de circuitos integrados.
interrupción en un período que es determinado por el Dejaremos esto para el siguiente osciloscopio que
barrido horizontal (THOR), desde 25 microsegundos diseñaremos con nuestra tarjeta IGTV.
en la escala de 500 microsegundos por división has-
ta 500 microsegundos en la escala de 10 milisegun- h) Implementar un control para
dos por división. (Recuerde que cada división equiva- actuar sobre la sincronía de disparo.
le a 20 muestras, ya que cada división es de 20 por
20 píxeles). Después de cargar el TMR1 con el valor Normalmente los osciloscopios tienen varios mo-
apropiado, se lee el dato que ya debe estar listo en dos de disparo, lo cual determina el instante donde
el CAD (Convertidor Analógico-Digital) y se guarda se comienza a muestrear la señal. Dichos modos son:
en la localidad correspondiente. Luego se incrementa a) Normal
el apuntador de la siguiente localidad. b) Auto
Enseguida se pregunta si ya se han guardado c) Unico
160 localidades, si no es así simplemente se vuelve
de la subrutina de interrupción y se espera la siguien- En el modo normal no hay información de trazo y
te. Mientras esto sucede, el CAD está trabajando. sólo se muestra éste cuando se detecta el nivel de dis-
En caso de que ya se hayan guardado 160 datos paro en la entrada, mostrándose entonces la forma
se detiene el TMR1, por lo que ya no habrá más inte- de onda.
rrupciones. En el modo auto el disparo ocurre automática-
Luego se envían los datos a la tarjeta IGTV y se le mente aunque no se alcance el nivel de disparo, por
pide que los grafique con la instrucción DESPLEGAR este motivo siempre se muestra un trazo en la panta-
PASOX. lla.
Por último se regresa de la subrutina de interrup- En el modo único no se muestra trazo en la pan-
ción a ejecutar el programa principal. talla hasta que se alcanza el nivel de disparo en la
Es en el programa principal donde se está mues- señal de entrada, igual que en el modo normal, Sin
treando si se presiona alguno de los dos botones. embargo, en este modo una vez disparado el barri-
Si se presiona DISP, se arranca TMR1, iniciándo- do horizontal se ignoran subsecuentes disparos, que-
se un nuevo ciclo de conversiones. dando la última forma de onda en la pantalla por el
Si se presiona THOR se programa el TMR1 con tiempo que sea necesario. En nuestro osciloscopio só-
los valores correspondientes al nuevo tiempo de ba- lo utilizaremos el modo disparo único, además no es-
rrido horizontal, el cual determina el período de inte- tará sincronizado con la señal.
rrupción del TMR1. Es decir, la señal se mostrará en la pantalla cada
vez con un inicio aleatorio, sacrificaremos funcionali-
g) Implementar un control para dad en aras de la simplicidad.
actuar sobre la ganancia
vertical (voltios/división).
Con el fin de poder implementar nuestro oscilos- SOFTWARE
copio en un solo integrado, sólo implementaremos
una escala vertical, la cual será de 500 milivoltios Debido a limitaciones de espacio no podemos
por división. mostrar el código fuente del osciloscopio, éste está
Si intentáramos agregar más escalas verticales, disponible en www.webelectronica.com.ar, de-
seguramente se haría necesario el uso de amplifica- be hacer click en el ícono password e ingresar la cla-

52
ve: “graficaTV”, el nombre del archivo del progra-
ma es OsciloscopioA.asm. También encontrará el
archivo binario el cual se usa para grabar el micro-
controlador con el nombre OsciloscopioA.hex.

ACTUALIZACIONES

Ha habido una actualización de software en la


tarjeta IGTV, respecto a la versión publicada en el
capítulo 1 y se ha reflejado en un pequeño cambio
en hardware. En esta nueva versión (1.2), la entrada
a la IG de nombre D0, es la pata 5, en lugar de la Figura 4 - Tono DTMF.
pata 8 (la nueva versión también la descarga de
nuestra web). Si usted ha construido los 3 primeros
instrumentos anteriores, simplemente cambie el cable
de la pata 8 en el conector de la IG a la pata 5 del
mismo conector, ya que la pata 5 es ahora D0.
El nuevo archivo para el microcontrolador Atme-
ga8515 es IGTVR2.HEX, el cual podrá descargar
de forma gratuita.
Si usted adquiere la tarjeta armada, ésta ya vie -
ne con la nueva versión. También se ha actualizado
el archivo de macros, el cual es ahora Macros3I -
G.asm, el cual también puede obtenerse del sitio
WEB de la revista sin costo. Para adquirir la placa ar -
mada debe ponerse en contacto con el autor (luisro -
Figura 5 - Señal de audio.
bertorodu@aol.com) o con Saber Internacional (ven -
tas@saberinternacional.com.mx) o en la dirección
ateclien@webelectronica.com.ar.

NUESTRO OSCILOSCOPIO EN ACCION

Las siguientes figuras muestran a nuestro oscilos-


copio desplegando varias formas de onda. La figura
4 muestra el tono DTMF del número “9”. (Los tonos
DTMF son los utilizados en telefonía para marca-
ción).
La figura 5 muestra la señal de audio tomada de
un reproductor de CD.
La figura 6 muestra la señal de CA de 60HZ en
Figura 6 - Señal de CA de 60HZ.
el secundario de un transformador y la figura 7 mues-

53
9) Tiene impe -
dancia de entrada
muy baja.

Aún con todas


estas restricciones,
este proyecto ha te-
nido la intención de
mostrar lo sencillo
que es implementar
diferentes instru-
mentos con nuestra
tarjeta IGTV. Con
este sencillo pero
funcional aparato
sentamos bases sóli-
das para, , construir
osciloscopios cada
vez de mejor de-
sempeño y con un
Figura 7 - Señal de CA de 60HZ en un costo muy bajo. **
osciloscopio comercial.

tra la misma señal desplegada por un osciloscopio Lista de Materiales


comercial.
Como podrá observar, estimado lector, nuestro
osciloscopio no tiene mucho que pedirle a uno comer- Placa IGTV
cial. Esto es válido sólo para bajas frecuencias. Microcontrolador PIC16F873
2 Capacitores de 15pF
1 Capacitor electrolítico de 100µF x 25V
COMENTARIOS FINALES
2 Pulsadores miniatura para circuito impreso
A continuación se enumeran las severas restriccio- 1 Cristal de Quarzo de 20MHz
nes presentes en nuestro simple instrumento: 1 Resistor de 330
1) Sólo puede mostrar señales de corriente alter -
1 Resistor de 3k9
na.
2) Sólo puede mostrar señales de audio. 1 Resistor de 22k
3) No tiene sincronía en el disparo. 1 Resistor de 33k
4) Sólo tiene una escala vertical (500mV por divi -
sión).
05) No tiene posición horizontal ni vertical.
Varios:
6) No tiene cursores.
7) No puede almacenar más de una pantalla. Placa de circuito impreso, o protoboard, solda-
8) Sólo tiene un canal. dor, estaño, cables, caja para montaje, etc.

54
Construiremos un analizador de estados lógicos igual o, de otro modo, determinar cuál de los circuitos está en-
de sencillo utilizando también un solo integrado. tregando datos incorrectos debido a una falla, la cual po-
Nuestro instrumento será capaz de graficar 8 señales dría ser difícil de detectar sin el equipo adecuado.
digitales con capacidad de 96 muestras, las cuales se al- Aunque el instrumento que construiremos será de
macenarán en 4 pantallas, cada una de 24 bytes. Se po- prestaciones reducidas, tal como el osciloscopio del capí-
drá programar el inicio del muestreo mediante un byte tulo pasado, su construcción y análisis sentará las bases
llamado “de enmascaramiento”, de tal forma que sólo para analizadores más completos.
hasta que se presente tal máscara en los datos se comen-
zará a grabar en memoria la información. Esto permite
analizar el comportamiento de las señales después de ¿COMO FUNCIONA UN ANALIZADOR
ocurrido algún evento especial. DE ESTADOS LOGICOS?

En realidad, el principio de funcionamiento es muy


INTRODUCCION sencillo. Tomemos el ejemplo de un analizador de 8 ca-
nales. Los datos que deseamos analizar se graban en
La reparación de equipos digitales se facilita utilizan- una memoria a una velocidad tal que sea congruente con
do instrumentos capaces de mostrar, de manera gráfica, la velocidad de los datos que se desea analizar. Por
las señales con el fin de analizar visualmente su compor- ejemplo, si la velocidad de los datos es de 4MHz, una
tamiento en algún instante determinado. Utilizando un os- velocidad razonable para grabar los datos es 10MHz.
ciloscopio que por lo general consta de 2 canales, en la Con tal velocidad obtendremos la resolución suficiente
mayoría de los casos resultan insuficientes ya que en los para no perder información. Siendo de 8 canales, una
sistemas digitales se requiere la visualización de un gru- simple memoria bastaría. En el caso de un analizador de
po de bytes al mismo tiempo, llegando a utilizarse con 24 canales, simplemente se utilizarían 3 memorias con
frecuencia analizadores de más de 40 canales. De otro cada bus de datos independiente, pero con bus de direc-
modo, utilizando un analizador lógico en un sistema con ciones común. Observe la figura 1.
microprocesador, es posible ver en la pantalla los datos Después de grabar en la memoria cierto número de
de salida de la memoria al mismo tiempo que se obser- datos, se procede a mostrar la información de manera di-
va la localidad que se está accesando. De esta manera gital en una pantalla, donde se podrá observar el com-
es posible determinar si los datos que está entregando la portamiento de las señales en algún instante determinado.
memoria son los correctos, o de otro modo verificar la di-
rección que está entregando el microprocesador en un
instante determinado. ANALIZADORES LOGICOS VIRTUALES
Si se conoce con certeza el protocolo que algún mi-
crocontrolador utiliza, con el analizador de estados lógi- La mayoría de los analizadores lógicos que se fabri-
cos podremos determinar si la comunicación es correcta can actualmente usan el poder de procesamiento de una

55
para despliegue y proceso, por lo general se cuenta con
circuitos discretos exteriores para capturar los datos pa-
ra luego enviarlos a la PC para su tratamiento y desplie-
gue.

ELEMENTOS BASICOS DE UN
ANALIZADOR DE ESTADOS LOGICOS

Figura 1 Sección de memoria de un analizador ló - A continuación se muestran los elementos básicos


gico de 24 canales.
que integran un analizador lógico:
PC, al mismo tiempo que la pantalla para el despliegue
de la información. En la figura 2 se observa una panta- a) Memoria RAM
lla típica de un analizador de estados lógicos virtual. b) Contador digital
Un analizador completo integra muchas funciones úti- c) Oscilador
les, tales como: d) Circuito de control
e) Pantalla de despliegue
• Disparo por evento (Enmascaramiento) f) Análisis de datos
• Registro de predisparo
• Búsqueda de datos Aunque los elementos citados anteriormente pueden
• Reloj interno y externo llegar a ser un número importante de circuitos integrados,
• Nivel de disparo variable emularemos cada uno de ellos con un microcontrolador y
• Posibilidad de texto la tarjeta IGTV. El microcontrolador que utilizaremos será
un PIC 16F873, tal como lo hicimos con nuestro oscilos-
Y muchas funciones más, dependiendo del costo y copio simple. A continuación examinaremos cada uno de
calidad del instrumento. Normalmente la PC sólo se usa los elementos y expondremos la solución empleada en
cada caso para la construcción de nues-
tro instrumento empleando un solo circui-
to integrado.

a) Memoria RAM
En lugar de una memoria externa, uti-
lizaremos la memoria interna disponible
en el PIC, la cual es de 192 localidades.
Para este proyecto en particular destinare-
mos 96 de estas localidades para el al-
macenamiento de los datos. Aunque es
una cantidad de memoria reducida, servi-
rá para datos simples y de corta dura-
ción.
En realidad se podría utilizar un poco
más de memoria. Sin embargo las pági-
Figura 2 - Pantalla típica de un analizador de estados lógicos en la PC. nas de RAM en el PIC no son contiguas,

56
f) Análisis de los datos
El análisis y control de des-
pliegue será llevado a cabo
tanto por la tarjeta IGTV como
por el micro c o n t ro l a d o r, ya
que mientras la tarjeta procesa
el despliegue de datos, contro-
les, textos e imágenes, el mi-
crocontrolador controla la for-
Figura 3 -
Diagrama es - ma del despliegue, la captura
quemático del de los datos y la configuración
analizador. del analizador.

CONSTRUCCION

por lo que tendríamos que verificar el banco actual cada La figura 3 muestra el circuito esquemático del anali-
vez que incrementamos el apuntador de memoria, lo cual zador. Note lo sencillo que es. El circuito cabe perfecta-
causaría un retardo en el muestreo. En este caso es me- mente en una sola placa “protoboard”. Ni siquiera utili-
jor un poco más de velocidad que un poco más de me- za resistencias. Los datos que se desea analizar son
moria. muestreados por el puerto C en los 8 bits que conforman
este puerto (PORTC,0 a PORTC,7).
b) Contador digital En el sitio WEB de la revista están disponibles los ar-
Emularemos un contador digital con el PIC, que será chivos fuente y binario.
simplemente el registro FSR, y se utilizará como apunta- El nombre del primero es AnaEstLog.asm y el binario
dor a las localidades de memoria. lleva por nombre AnaEstLog.HEX. Este último es el que se
usa para programar el PIC y en caso de que usted sólo
c) Oscilador desee usar el analizador y no estudiar su funcionamien-
Usaremos el oscilador del PIC para la velocidad del to, éste sería el único archivo necesario.
muestreo. En la tabla 1 se muestra la lista de los componentes.

d) Circuito de control
Si hay algún elemento eficiente en nuestro analiza- ACTUALIZACIONES
dor, tal elemento es el circuito de control, ya que éste es
el mismo microcontrolador y fácilmente podemos emular Esta sección es importante para los lectores que de-
el comportamiento de múltiples circuitos discretos me- seen diseñar equipo con la placa IGTV.
diante software. Tabla 1 Lista de componentes
5 Interruptores mini para circuito impreso
e) Pantalla de despliegue 2 Condensadores de 15pF
1 Condensador de 0.1µF
La pantalla donde se desplegarán las gráficas será
1 Condensador de 100µF
obviamente la pantalla de nuestro televisor, la cual permi- 1 Cristal de 20MHz
te mostrar perfectamente los 8 canales que implementa 1 Microprocesador PIC16F873
9 Puntas especiales para conectar en patas de integrados
nuestro analizador. 1 Base para integrados de 16 patas.

57
En el primer capítulo se explicó de manera amplia y blemas el archivo fuente. Además, su sistema de archivos
con un ejemplo completo y desde cero la manera de di- quedará actualizado para futuros proyectos.
señar un reloj digital. Recordará que en la organización Todos los archivos están disponibles gratuitamente en
de los archivos existe un subdirectorio titulado “Comu- el sitio WEB de la revista.
nes”. Es en este subdirectorio donde deben colocarse
ciertos archivos especiales que el ensamblador utiliza en
cada proyecto. Tales archivos se están actualizando DESCRIPCION DEL FUNCIONAMIENTO
constantemente debido a que se mejoran y amplían con
frecuencia. En cuanto el analizador recibe la orden de iniciar el
Desde este proyecto el archivo de las macros ha sido muestreo, se comienza a leer por el puerto C los datos
ampliado. El nuevo archivo es: presentes y se almacenan en la memoria del PIC. Esto se
repite cada cierto tiempo programable y al cabo de
Macros4IG.asm. guardar 96 muestras se muestra la gráfica de los datos.
También fue necesario agregar otro archivo con el El siguiente extracto del código muestra la manera en
nombre: que el PIC lee los datos y los almacena en la memoria. El
TablasDatosEnviarByte_1.asm registro FSR es el apuntador a la localidad en turno, por
lo que se incrementa después de almacenar cada dato.
Este archivo se usa para enviar instrucciones, tablas Cuando se han almacenado 96 datos, automáticamente
de datos y textos a la IGTV. Aunque ya tenemos archivos se envían los datos leídos a la tarjeta IGTV y luego se en-
para estas subrutinas, fue necesario reescribirlas para vía la orden de graficarlos mediante la instrucción GRA-
poder usarlas de manera eficiente en la página 1 de la FICAR LINEA BIT. Ver cuadro 1.
memoria de programa. De no haberlo hecho así, el códi- Antes de ejecutar estas instrucciones el Reg3 se car-
go seria muy ineficiente al tener que verificar la página ga con el número 96, ya que es el contador de datos leí-
de programa cada vez que hay un salto en el código. dos.
En los microcontroladores PIC se debe tener cuidado Este ejemplo es para el caso de muestreo cada 1 mi-
de la página actual, tanto de la memoria RAM como la crosegundo. Para otros períodos, simplemente se agre-
del programa. Con frecuencia esto hace que el código gan retardos congruentes con el período seleccionado, el
sea difícil de manejar y tiende a ser confuso para quie- cual va desde 1 microsegundo hasta 10 milisegundos.
nes se inician en el mundo de los microcontroladores. Para obtener períodos precisos se hace uso del timer
En la serie mejorada 18FXXX el problema de la se- 1, el cual es de 16 bits.
lección de página ha quedado resuelto ya que se ha am-
pliado el número de bits en la instrucción permitiendo di-
reccionar de manera continua toda la memoria del pro- DISPARO POR EVENTO
grama y toda la RAM disponible.
Simplemente coloque los dos archivos especiales en Nuestro analizador incorpora una función útil para
el subdirectorio “Comunes” y podrá ensamblar sin pro- casos donde se requiera analizar la información sólo
después de que se presente cierto caracter en los da-
Cuadro 1. tos.
MUESTREO MOVFW PORTC ; Leer el dato del puerto C. Para esto el PIC analiza los datos de entrada y
MOVWF INDF ; Almacenar el dato leído. los compara con otro byte de referencia, el cual es
INCF FSR,F ; Siguiente localidad
programable.
DECFSZ Reg3,F ; ¿Ya son 96 muestras?
GOTO MUESTREO ; Si no es así tome otra muestra.
A manera de ejemplo, supongamos que desea-
; Enviar los datos a la IGTV mos saber si cierto circuito digital envía entre sus da-

58
tos el número 200, suponiendo que los bits se obtienen Observe que en esta ocasión el ícono de la aplicación es
en paralelo. (Intente detectar este número con un oscilos- una pequeña gráfica de 4 líneas de bits.
copio, es difícil). Dentro de este modo podemos configurar 4 paráme-
Simplemente programamos este número como el by- tros, los cuales seleccionamos con el botón PARAM. El
te de referencia y disparamos nuestro analizador. Nues- parámetro seleccionado en la figura es “B”, lo cual signi-
tro instrumento comenzará a analizar los datos de entra- fica “BITS”. Con las flechas hacia arriba y hacia abajo
da y si aparece este número se activará la pantalla de elegimos el número de bits que deseamos observar en la
análisis. Podremos, de esta manera, saber en qué mo- pantalla de análisis.
mento apareció tal número. Desde esta pantalla (Configuración), presionando el
botón PARAM se selecciona la configuración del paráme-
tro “MASC”. Ver la figura 5.
CONTADOR DE EVENTOS Observe que en este parámetro se muestra un botón
llamado MODIF. Tal botón se usa para cambiar el bit se-
Nuestro analizador también incorpora un contador leccionado en la máscara.
de eventos. Esto es útil si deseamos graficar los datos só-
lo después de que suceda cierta cantidad de eventos. En
el caso del ejemplo anterior podríamos colocar el conta-
dor de eventos en 10 y sólo después de que se detecten
10 bytes con el número 200, se comenzará a grabar la
información. El archivo fuente de esta aplicación es bas-
tante extenso y por cuestión de espacio no lo podemos
publicar. Sin embargo, el archivo está disponible en el si-
tio WEB de la revista para los lectores que deseen estu-
diarlo en detalle.

DESCRIPCION DE OPERACION
Figura 4 - Modo Configuración con el Parámetro
“BITS” seleccionado.
Aun siendo de prestaciones reducidas, nuestro anali-
zador tiene cierto grado de complejidad, de tal manera
que la descripción de operación es más extensa que la
descripción del funcionamiento.
El instrumento tiene 3 modos de funcionamiento: Con-
figuración, Captura y Análisis.
Describiremos el modo configuración y luego expon-
dremos un ejemplo práctico, el cual utiliza la misma tar-
jeta IGTV.

MODO CONFIGURACION

La figura 4 muestra la pantalla en modo configura-


Figura 5 - Modo Configuración con el parámetro
ción, la cual es la que aparece al encender el aparato. “MASC” seleccionado.

59
El bit seleccionado está indicado por un pequeño cur- Desde esta pantalla al presionar el botón PARAM, se
sor de color blanco, el cual en la figura es el bit 0. selecciona el parámetro “CONT”. En esta configuración
Los botones con flechas seleccionan el bit que se de- podemos seleccionar el número de eventos que deben su-
sea modificar. Cada vez que se presiona el botón MO- ceder antes de comenzar a grabar la información. Ob-
DIF se cambia la máscara del bit seleccionado entre - 0 serve la figura 6.
y 1. Cuando el bit tiene el carácter - , significa que no se En la configuración de este parámetro se tiene con-
tomará en cuenta su valor para el disparo por evento. En trol sobre el valor del contador por medio de un cursor el
este caso, como podrá observar en la figura, todos los cual se mueve entre unidades, decenas y centenas del va-
bits tienen el carácter, - por lo que no existe byte de refe- lor del contador. La posición es controlada por el botón
rencia. Por lo tanto, no hay ningún evento que se deba CURSOR,
esperar. El mínimo valor del contador es 1 y el máximo es
Esta configuración hará que en cuanto se presione el 256. Las flechas incrementan o decrementan el dígito se-
botón INICIO en la pantalla de captura, se comience a leccionado.
grabar los datos de entrada. Desde esta pantalla presionando el botón PARAM, se
selecciona el parámetro “PERIODO”. Observe la figura
7.
Con este parámetro seleccionamos el tiempo de
muestreo entre datos, el cual va desde 1 microsegundo
hasta 10 milisegundos. Para la selección del período se
cuenta con el botón de flecha arriba.
Después de esta breve descripción de la configura-
ción, iniciaremos el ejemplo práctico.

EJEMPLO DE USO

Para la demostración utilizaremos la misma tarjeta


IGTV, de la que tomaremos los datos de 3 líneas de di-
Figura 6 - Modo Configuración con el parámetro
rección en la memoria para introducirlas a nuestro anali-
“CONT” seleccionado.
zador.
Conecte las puntas del analizador de la manera indi-
cada en el cuadro 2.
Si no dispone de puntas especiales, puede soldar
provisionalmente los 3 cables a las patas del integrado.
Conecte un cable entre tierra de la tarjeta IGTV y tie-
rra del analizador, con el fin de disminuir la diferencia
de potencial entre tierras.

Cuadro 2
U8 (RAM) en la
ANALIZADOR placa IGTV

PUERTOC.0 A5 Pata 7
Figura 7 - Modo Configuración con el parámetro “PE - PUERTOC.1 A6 Pata 6
RIODO” seleccionado. PUERTOC.2 A7 Pata 5

60
A7, A6 y A5 son parte del direccionamiento que En cuanto esta condición se cumpla, se comenzará la
efectúa el PIC16C55 de la tarjeta y en realidad vienen a grabación de los datos cada 2 microsegundos.
ser un contador. A continuación se indican los pasos pa- Debido a que dejamos el parámetro “CONT” en 1,
ra la configuración del analizador para nuestro ejemplo: sólo se esperará la condición una vez.

1) Seleccione el parámetro “B” (BITS).


2) Pulse el botón FLECHA ARRIBA hasta que sólo se MODO CAPTURA
muestren los bits 0, 1 y 2. Esto hará que solo se mues -
tren estos bits en la pantalla de análisis. Desde la pantalla de Configuración, presionando el
3) Seleccione el parámetro “MASC”. botón MODO se selecciona la pantalla de Captura, la
4) Presione MODIF para que el bit 0 cambie su más - cual se muestra en la figura 9.
cara a “0”, después presione el botón FLECHA ABAJO Cuando configuramos una máscara, aparecen 3 bo-
para seleccionar el bit 1, cambie también su máscara a tones en la pantalla de captura, los cuales son: MODO,
“0”, haga lo mismo para el bit 2. INICIO y ALTO.
5) Deje el parámetro “CONT” en 1. Si no hemos configurado alguna máscara, sólo apa-
6) Seleccione el parámetro “PERIODO”. recen los dos primeros botones.
7) Presione el botón FLECHA ARRIBA hasta obtener En este modo podemos iniciar la captura de los da-
un período de 2 microsegundos. tos presionando el botón INICIO.
Al programar una máscara el analizador esperará
Con esto hemos terminado de configurar nuestro ana- hasta que aparezca el valor programado. Sin embargo,
lizador para el ejemplo. si éste no aparece, podemos detener el muestreo en cual-
La pantalla de configuración final debe verse como la quier momento presionando el botón ALTO.
figura 8. Lo que hicimos con los pasos anteriores fue con- En caso de haber programado una máscara, mien-
figurar nuestro analizador para que tome una muestra tras el analizador espera el dato, avisa que está en mo-
cada 2 microsegundos. También lo programamos para do de espera.
que sólo grafique los 3 primeros bits. Bien, presionemos el botón INICIO.
La configuración interesante está en la máscara. Le En nuestro ejemplo el analizador no tiene que espe-
pedimos al analizador que comience a grabar datos só- rar mucho tiempo, ya que el dato programado se recibe
lo hasta que detecte que los 3 bits son “0”. constantemente.

Figura 8 - Config. final del Analizador para nuestro


ejemplo. Figura 9 Pantalla de Modo Captura.

61
Al terminar de grabar los 96 datos, el analizador au- datos, al volver a esta pantalla el indicador de período
tomáticamente cambia a modo ANALISIS y muestra los mostrará “INV” (Inválido), lo cual indica que se ha modi-
datos recibidos en una gráfica. Ver figura 10. ficado el período y no se han capturado datos.

MODO ANALISIS COMENTARIOS FINALES

Como podrá observar, los datos se comenzaron a A continuación se describen algunas restricciones
grabar desde que el analizador detectó que los 3 bits presentes en nuestro analizador:
eran “0”, como se puede apreciar en el inicio de la grá- a) Es de baja velocidad.
fica. En esta pantalla se tienen 5 botones. El segundo y b) No posee reloj externo.
tercero se utilizan para mover el cursor un bit a la vez. El c) La capacidad de la memoria es muy reducida.
cursor es la pequeña flecha localizada en la parte infe- d) Sólo es de 8 canales.
rior izquierda de la gráfica. e) No es posible poner texto a los datos.
Los botones con flechas dobles avanzan o retroceden f) Sólo trabaja con niveles TTL.
una página completa, la cual es de 24 bits.
El número localizado arriba de los botones 3 y 4 in- Aún siendo de bajas prestaciones, nuestro analiza-
dica el período del muestreo, el cual como se puede dor puede ser útil para trabajos con circuitos digitales de
apreciar es de 2 microsegundos. baja velocidad. Es posible usarlo para el análisis de pro-
El número en el recuadro a la derecha del período in- tocolos como RS232, I2C y el Bus CAN, los cuales se
dica la posición del cursor respecto al inicio del mues- usan con frecuencia en equipos de audio y video.
treo. Cada vez que se mueve el cursor o la página se ac- La máxima velocidad de muestreo es de 1 megabit
tualiza su valor. En este caso su valor es 00000 µS, ya por segundo, por lo que pulsos menores de 1 microse-
que el cursor está al inicio del muestreo. También se ha gundo no pueden ser detectados de manera confiable,
colocado una pequeña barra de posición, la cual se ha por lo que no se debe emplear el analizador para fre-
dividido por medio de 4 pequeños puntos. Esta barra in- cuencias mayores a 500 KHz.
dica la posición global del cursor dentro de las 4 pági-
nas disponibles. Desde esta pantalla podemos seleccio- Desde que iniciamos la serie de artículos dedicados
nar cualquier modo. Sin embargo, si estando en el modo a la placa IGTV hemos construido varios instrumentos de
configuración modificamos el período sin capturar más prueba, los cuales son:

Medidor de capacitores
Frecuencímetro
Medidor de inductancias
Osciloscopio de baja velocidad
Analizador de estados lógicos de baja velocidad

Como un dato curioso, estimado lector, en teoría los


dos equipos más complejos son el osciloscopio y el ana-
lizador. Sin embargo, hasta el momento son los únicos
que se componen de un sólo integrado.
Esto pone de manifiesto una vez más la magia de los
Figura 10 Modo Análisis. microprocesadores. *****

62
Iniciaremos este capítulo con el planteamiento eléctrico, tal como un campo lejos de la ciudad y
de la siguiente pregunta: lejos de líneas de energía, no debe funcionar.
Esto es válido para los sensores basados en la
¿Por qué funcionan los interruptores de tacto? inducción de la corriente alterna.
Después de leer la pregunta se podría pensar Existe otro tipo de sensores que, en realidad,
que el planteamiento no es el adecuado y que la son un par de placas muy juntas que al tocarlas
pregunta correcta debería ser: con el dedo hacemos contacto entre ellas y debido
a la resistencia de la piel, hacemos circular una co-
¿Cómo funcionan los interruptores de tacto? rriente muy pequeña pero fácilmente detectable.
En realidad quise plantear la pregunta del otro Este tipo de sensores como se puede deducir, fun-
modo con el fin de enfatizar un hecho importante: cionan en cualquier ambiente.
¡Los interruptores de tacto no siempre funcionan!
Lo que sucede, en realidad, es que el cuerpo
humano está sometido a campos eléctricos y mag- LOS INTERRUPTORES
néticos en todo momento, sobre todo en el ambien- EN LOS MICROCONTROLADORES
te urbano.
Uno de esos campos es el generado por la co- Los puertos de los microcontroladores por lo ge-
rriente alterna que circula por cables y que alimen- neral tienen impedancia de entrada bastante alta,
ta infinidad de aparatos. la suficiente como para ocasionar problemas si de-
Cuando tocamos un interruptor sensible al tacto jamos una entrada flotante, esto debido al ruido
nuestro cuerpo actúa como “antena” en donde se eléctrico que fácilmente se induce en las patas del
inducen tales campos que lue- integrado y en las líneas de alimen-
go detecta el sensor, que no es tación con pobre filtrado. Por este
otra cosa que la entrada de un motivo se debe tener cuidado al co-
amplificador con una impe- nectar un interruptor a la entrada
dancia de entrada muy alta. de un puerto evitando que la pata
Todos hemos escuchado al- quede flotante, ya que debido al
guna vez el zumbido en un ruido eléctrico se podrían generar
amplificador cuando tocamos falsos disparos, los cuales se detec-
el cable de la entrada, en rea- tarían como una acción sobre el in-
lidad escuchamos la corriente terruptor.
alterna inducida (50 o 60Hz). Para conectar un interruptor al
Sin embargo, un sensor puerto de un microcontrolador, nor-
sensible al tacto colocado en Figura 1 - Conexión de un interruptor malmente el circuito empleado es el
un ambiente de bajo ruido mecánico a un puerto. que se muestra en la figura 1.

63
¡Pero usted no ha colocado ninguna resistencia var en la figura, cada vez que presionamos un bo-
en los proyectos publicados! tón, en promedio lo mantenemos oprimido alrede-
En realidad he aprovechado una función de los dor de 200 milisegundos y luego lo soltamos.
microcontroladores PIC. En todos los bits del puer-
to B del microcontrolador es posible conectar a
+VDD resistencias internas, las cuales reciben el MANEJO DE INTERRUPTORES
nombre de “pull up”. MECÁNICOS CON
UN MICROCONTROLADOR
Mediante la programación del bit 7 en el regis-
tro OPTIONS es posible conectarlas o deshabilitar- En los proyectos que hemos desarrollado para
las. Colocando los interruptores en el puerto B y ha- la placa IGTV, para evitar interpretar los rebotes
bilitando las resistencias (poniendo a “0” el bit 7 como acción del interruptor, en cuanto el microcon-
de OPTIONS), nos ahorramos el tener que usar re- trolador detecta un “0” (al presionar el interruptor),
sistencias externas, de este modo el circuito se sim- se llama a una subrutina de retardo de 250 milise-
plifica. gundos, al regreso de la cual ya han pasado los re-
botes. Supongamos que tenemos una aplicación
con 3 interruptores (Boton1, Boton2 y Boton3), a
REBOTE DE LOS INTERRUPTORES continuación se muestra el código utilizado para
manejar los interruptores (Vea el cuadro 1).
Cuando presionamos un interruptor mecánico, Primero se verifica si el Boton1 está presionado,
el contacto si no es así, entonces se verifica si el 2 está presio-
VerifBotones btfss Boton1 no es “lim- nado, si no es así entonces se verifica el número 3,
goto Boton1Pres pio” debido si no está presionado entonces se repite el ciclo.
btfss Boton2 a la naturale- En caso de que algún botón esté presionado, se
goto Boton2Pres za del mate- salta a la rutina que maneja el código correspon-
btfss Boton3
goto Boton3Pres
rial metálico, diente, donde primero se hace una llamada al re-
goto VerifBotones el cual pre- tardo de 250 milisegundos. Si no ejecutamos el re-
Boton3Pres call ret250ms senta rebotes tardo, después de ejecutar la rutina correspondien-
---- subrutina del Boton3 --- al establecer te corremos el riesgo de que el interruptor aún siga
goto VerifBotones el contacto y presionado, por lo que se volverá a ejecutar el có-
Boton1Pres call ret250ms
---- subrutina del Boton1 --- al abrirlo, tal digo, lo cual en la mayoría de los casos no es lo
goto VerifBotones como lo ilus- que se desea.
Boton2Pres call ret250ms tra la figura
--- subrutina del Boton 2 --- 2.
goto VerifBotones
Como se MANEJO DE INTERRUPTORES AL TACTO
Cuadro 1
puede obser- CON UN MICROCONTROLADOR

Afortunadamente la mi-
gración hacia interru p t o res
de tacto no implica grandes
cambios, ya que el código
para manejar los interrupto-
Figura 2 - Rebote en un interruptor. res es el mismo.

64
Observe la figura 3 don-
de se muestra lo que sucede
al tocar un interruptor sensi-
ble al tacto. Como podrá ob-
servar, la frecuencia de la co-
rriente alterna se induce al to-
Figura 3 - Forma de onda en un interruptor sensible al tacto.
car el interruptor y mientras
esto sucede introducimos pulsos de 50 o 60 Hz al ñar al microcontrolador. Por otra parte, también li-
microcontrolador, donde son interpretados como mita la corriente de entrada ya que es probable
acción de un interruptor. Sin embargo, lo mismo que se induzca una tensión mayor a 5V.
que con el interruptor mecánico, esto sólo lo hace- El condensador de 220pF filtra los ruidos de al-
mos durante 200 milisegundos, en promedio. ta frecuencia, los cuales están presentes en cual-
En la figura 4 se muestra la conexión utilizada quier monitor. Este filtro es necesario, pues de otro
en el caso del interruptor de tacto. modo los campos electromagnéticos que se gene-
Bien, aunque el código que se utiliza es el mis- ran en las bobinas de deflexión se inducirían en los
mo para cualquiera de los dos tipos de interrupto- cables de los interruptores de tacto, debido a que
res, la resistencia “pull up” en cada caso es distin- los debemos colocar bastante cerca de la pantalla.
ta. En el caso de interruptores mecánicos, podemos
activar las resistencias internas del puerto B, sin
embargo en el caso de interruptores de tacto, éstas COLOCANDO LOS INTERRUPTORES
no funcionan, ya que son de un valor relativamen- CERCA DE LA PANTALLA
te bajo y no se induciría suficiente corriente alterna
para que pueda ser detectada. Por lo tanto en el Recuerde que se pueden dibujar hasta 5 boto-
caso de usar interruptores de tacto, debemos colo- nes de control en la parte inferior de la pantalla en
car las resistencias “pull up” externamente, por lo cualquier proyecto para IGTV.
que deberemos deshabilitar las resistencias inter- Sería de gran ayuda si pudiéramos colocar in-
nas. terruptores reales cerca de los dibujados en la pan-
El valor de la resistencia que se debe usar va- talla, ya que detectaríamos de forma inmediata el
ría de acuerdo a la sensibilidad deseada, pero en botón que debemos presionar al estar éste coloca-
promedio el valor es de 5 MegaOhm. do cerca de la leyenda del botón virtual en la pan-
Una resistencia de valor más alto podría dar
a lugar a disparos ocasionales durante períodos
de ruido eléctrico elevado (encender o apagar
motores y/o lámparas fluorescentes).
En cambio una resistencia de valor más ba-
jo podría no activar el interruptor, o bien, hacer
que sea necesario tocar el interruptor durante un
período mayor a 200 milisegundos.
Se han obtenido buenos resultados utilizan-
do resistencias de 5.6 MegaOhm.
La resistencia de 39k es para evitar que al
tocar el interruptor, la electricidad estática que Figura 4 - Conexión de un interruptor
en ocasiones acumula nuestro cuerpo pueda da- de tacto a un puerto.

65
talla. Con los interruptores mecánicos, tal tarea es res en acción, los cuales comencé a usar desde el
difícil ya que el espacio debajo de la pantalla sue- capítulo pasado: Analizador de Estados Lógicos.
le ser muy escaso. Sin embargo, los botones de tac-
to pueden ser pequeñas placas metálicas de tama-
ño reducido las cuales prácticamente no ocupan es- Comentarios Finales
pacio.
Utilicé tachuelas a las que recorté parte de la Debo admitir, estimado lector, que me siento
cabeza con el fin de acomodarlas en el pequeño muy cómodo con los interruptores de tacto.
espacio disponible en mi monitor de proyectos pa- Afortunadamente es fácil implementar cualquie-
ra IGTV. Soldé un cable a cada pata de cada ta- ra de los dos tipos, de tal manera que no tendrá di-
chuela para enseguida insertarlas previo agujero ficultad en cambiar de un tipo al otro. Recuerde
en el marco de la parte inferior de la pantalla. Si que si utiliza interruptores de tacto, en caso de usar
las tachuelas tienen pintura, es importante remover- el puerto B, debe deshabilitar las resistencias inter-
la ya que la mayoría de las pinturas son aislantes. nas de “pull up”. De ahora en adelante publicare-
Para mantener las cabezas de las tachuelas en mos dos versiones de código binario en los proyec-
su sitio, utilicé un pegamento a base de cianoacri- tos para IGTV, uno para interruptores mecánicos y
lato, y con el mismo fijé los cables de los interrup- otro para interruptores sensibles al tacto. Realmen-
tores hasta la parte posterior del monitor. te la única diferencia radica en que al último se le
La figura 5 muestra una foto con los interrupto- han deshabilitado las resistencias internas. ***

Figura 5 - Interruptores de tacto en acción.

66
Nuestra propuesta de proyecto para IGTV es un ge- bricante se ha encargado del diseño prácticamente en
nerador de funciones con capacidad para generar for- su totalidad, lo cual brinda beneficios tales como baja
mas de onda senoidal, triangular, cuadrada y diente de distorsión de las señales generadas, alta frecuencia de
sierra. Las formas se obtendrán mediante señales digita- las diferentes formas de onda y pocos elementos exter-
les que se convertirán en analógicas mediante un con- nos. Tal es el caso por ejemplo del XR2206, el cual es
vertidor digital-analógico. El costo será reducido ya que capaz de generar señales hasta de 2MHz y con baja
construiremos nuestro convertidor con simples resisten- distorsión. Sin embargo no siempre es fácil conseguirlo
cias y un microcontrolador se encargará de generar las en los diferentes países de nuestra querida Latinoaméri-
señales digitales. ca. Si hubiéramos utilizado un integrado de este tipo ha-
bríamos faltado a una parte de nuestro lema: “PIEZAS
FACILES DE CONSEGUIR”, además estos integrados no
PREMISAS DEL PROYECTO siempre son baratos debido a lo específico de su fun-
ción.
Cada vez que iniciamos un proyecto para la tarjeta Así que por lo pronto esta opción queda descarta-
IGTV analizamos las posibles opciones tomando en da.
cuenta la disponibilidad de los elementos en toda Lati-
noamérica, esto con el fin de que nuestros amables lec-
tores puedan conseguir fácilmente los componentes sin GENERADOR DE FUNCIONES
importar el lugar donde se encuentren. “ANÁLOGO”
En el caso del proyecto que en esta ocasión nos ocu-
pa, al elegir entre 3 opciones posibles para su realiza- La segunda opción parece más viable y es la más
ción se analizaron cada una de ellas en base a factores tradicional.
tales como economía, facilidad de construcción, disponi- Con la palabra analógico pretendemos señalar que
bilidad de los elementos, objetivo didáctico y utilidad para su implementación se emplean amplificadores ope-
práctica. racionales para generar las diferentes formas de onda.
A continuación se exponen las tres opciones que se Aunque el circuito puede llegar a ser muy barato;
consideraron y al final se indica la que fue elegida y el para generar y manipular las señales se requiere de di-
motivo de nuestra selección. versos circuitos tales como filtros, interruptores analógi-
cos, amplificadores y otros elementos. Esto aumenta la
cantidad de elementos y además se complica un poco el
1) GENERADOR DE FUNCIONES diseño debido a que se requiere conectar y desconectar
EN UN SOLO INTEGRADO varios elementos conforme se selecciona la escala, fre-
cuencia y forma de onda generada. Además implica
Utilizando un integrado especial como generador de bastantes cálculos matemáticos (uff), por lo que esta op-
funciones ofrece las mejores características ya que el fa- ción también queda descartada.

67
GENERADOR DE FUNCIONES “DIGITAL” repite constantemente. La frecuencia viene determinada
por el oscilador.
Aunque hay una aparente contradicción, es posible En realidad la forma de onda no es analógica pura
generar formas analógicas partiendo de señales digita- y entre más bits se usen en la memoria ROM, mayor se-
les. Esto se logra mediante un convertidor digital-analó- rá el parecido a una señal analógica. Observe la figura
gico. Además… ¡estamos en la era digital!, así que és- 2.
ta fue la opción seleccionada para nuestro proyecto ya Se puede apreciar que en realidad la forma de on-
que se obtiene un balance entre número de piezas, faci- da está compuesta por valores discretos de voltaje don-
lidad de construcción y utilidad práctica, además ofrece de cada escalón representa el valor analógico de cada
una posibilidad didáctica excelente para aprender cir- localidad de la memoria ROM.
cuitos digitales. Bien, aunque la señal no es “verdaderamente” ana-
lógica, para la mayoría de nuestras necesidades prácti-
cas será más que adecuada.
PRINCIPIOS DE FUNCIONAMIENTO En los aparatos telefónicos existen circuitos integra-
dos para generar tonos DTMF. Si se observa con un os-
En realidad el principio de funcionamiento de un sin- ciloscopio la salida del tono, se observará (en la mayo-
tetizador de formas de onda es muy sencillo. Observe la ría de los casos) una señal discreta semejante a la de la
figura 1. figura 2 ya que normalmente dichos tonos se generan di-
El contador direcciona secuencialmente una locali- gitalmente.
dad de la memoria ROM. El dato de la memoria es lle-
vado a la entrada de un convertidor digital-analógico el
cual convierte el dato binario en un voltaje analógico. DATOS DE LAS FORMAS DE ONDA
En la memoria ROM se ha grabado la secuencia de
los valores apropiados dependiendo de la forma de on- ¿Qué datos se deben guardar en la memoria ROM
da deseada. En el caso de una forma de onda diente de para la forma de onda?
sierra, los datos grabados son simplemente una secuen- Supongamos que deseamos generar una señal se-
cia de números desde el 0 hasta el 255 (8 bits). Después noidal. Para obtener los datos primero debemos determi-
de la cuenta máxima se reinicia el contador y el ciclo se nar el número de sectores.
Supongamos que deseamos dividir el ciclo en 60 pa-
sos.
Al dividir 360 grados por el número de pasos obte-
nemos que cada sector de forma de onda mide 6 gra-
dos (360/60).
Si el voltaje de referencia del convertidor es de 5
Figura 2 - Forma diente de sierra ampliada
volts, entonces este es el valor máximo del voltaje que
puede proporcionar.
Este valor se obtiene
con el dato 255 (8
bits). La forma de on-
da debe comenzarse
a generar en la mi-
tad de este valor
Figura 1 - Sintetizador de formas de onda. (128), con el objeto

68
de que la señal fluctúe Dato almacenado=154
entre 0 y 5 voltios (0 y
255 con 128 en la mi- Para 90°
tad). Esto se ilustra en la Sen 90° = 1
figura 3. 1 X 128 = 128
El punto máximo de 128 + 128 = 256
una señal senoidal es en Dato almacenado=255 (no se puede 256 con 8
90°, lo que implica que bits).
el dato en este punto de- Observe que se obtienen valores cada 6 grados, ya
Figura 3 - Señal analógica. be ser 255. El seno de que son 60 pasos (360/60=6).
90° es 1, por lo que en El caso visto es para la forma senoidal, para las
este punto el valor digital debe ser 255. otras formas los datos son más sencillos de calcular; por
Si el dato en 0 grados debe ser 128, en 90 grados ejemplo para la señal triangular los valores son simple-
debe ser 255. mente escalonados desde 0 hasta 255, luego en descen-
so desde 255 hasta 0 y se repite el ciclo. (No de uno en
uno, ya que sólo son 60 pasos por ciclo).
UN POCO DE MATEMATICAS Le prometo, estimado lector, que éstas son todas la
matemáticas que veremos, además no requiere de su
A continuación se muestran 4 ejemplos de la forma asimilación para la continuidad del proyecto.
en que se obtuvieron 4 valores para los datos en la me-
moria ROM en el caso de una forma senoidal.
GENERADOR DE FUNCIONES
Para 0° CON MICROCONTROLADOR
Sen 0° = 0
0 X 128 = 0 En nuestro diseño utilizaremos dos microcontrolado-
res, uno como generador de señales y el otro para con-
Se multiplica por 128 y no por 255 debido a que trol de escala e interruptores, medición de frecuencia,
luego se sumarán 128. medición de voltaje y comunicación con la IGTV.
128 + 0 = 128 El primero será un PIC16F84 de 20MHz y el segun-
La forma debe iniciar a la mitad del total, por tal mo- do será un PIC16F873 de 4MHz.
tivo se suma 128.
Dato almacenado =128
DIAGRAMA EN BLOQUES
Para 6°
Sen 6° = 0.1045 En la figura 4 se muestra el diagrama en bloques de
0.1045 X 128 = 13.38 nuestro generador de funciones. A continuación explica-
128 + 13.38 = 141 remos el funcionamiento de modo general y posterior-
Dato almacenado =141 mente explicaremos en detalle los bloques importantes.
El oscilador controlado por voltaje implementado
Para 12° con el 74HC4046 oscila con una frecuencia mínima y
Sen 12° = 0.2079 máxima que depende del condensador C y de una resis-
0.2079 X 128 = 26.61 tencia a tierra, además del voltaje introducido por el po-
128 + 26.61 = 154 tenciómetro R1.

69
El microcontrolador PIC16F873 selecciona por me- tar el potenciómetro R2 el cual es usado para controlar
dio de interruptores analógicos CMOS 4066 la resisten- el voltaje de la señal a la salida.
cia apropiada para cada escala, como se puede obser- Debido a que la salida del convertidor es de 5 volts
var en el diagrama. Observe la línea punteada en me- máximo, se emplea un amplificador para obtener 20
dio de los 2 interruptores analógicos. Esto significa que volts de pico a pico en la señal. Observe en A2 la resis-
en realidad son más de dos interruptores los que se tencia de retroalimentación que es 4 veces la de la en-
usan. trada, con el fin de multiplicar por cuatro.
La señal producida por el 74HC4046 es introducida En la salida de A2 se obtiene la señal de salida. Ob-
al generador de señales, el cual es un PIC16F84 cuyo serve que A3 es un detector de pico cuya salida se lle-
funcionamiento se explica más adelante. va a otro seguidor de voltaje (A4) para luego introducir
La salida del generador de señales es una secuencia el voltaje de pico detectado en Cp al PIC16F873, don-
de datos digitales cuyos valores dependen de la forma de su valor es medido para mostrarlo en la pantalla.
de onda que se desee generar, y su frecuencia es fun- RA y RB forman un divisor de tensión con el fin de
ción de la frecuencia del oscilador controlado por volta- obtener un máximo de 5 volts en la entrada del conver-
je. tidor analógico-digital del microcontrolador, ya que no
Los datos digitales se introducen a un convertidor pa- se debe exceder de este valor.
ra obtener una señal analógica. Observe también que la salida 2F del generador de
La señal de salida del convertidor es aislada por me- señales es llevada al PIC16F873, esto con el fin de me-
dio del amplificador operacional A1, para luego alimen- dir la frecuencia generada y mostrarla en la pantalla.
El interruptor ESCALA seleccio-
na una de las seis escalas disponi-
bles y FORMA selecciona una de
las cuatro formas disponibles.

GENERADOR DE SEÑALES

Para obtener un amplio rango


de frecuencias usaremos un oscila-
dor externo para el PIC generador
de señales. La señal de reloj será
proporcionada como ya se ha men-
cionado, por un oscilador controla-
do por voltaje el cual es el CMOS
74HC4046. Este integrado en rea-
lidad es un PLL (Phase Locked
Loop), cuyo oscilador es capaz de
generar frecuencias por encima de
20MHz.
Existe la versión de baja veloci-
dad implementada por el CMOS
4046 el cual es funcionalmente
Figura 4 - Diagrama en bloques del generador de funciones. idéntico al HC4046; sin embargo

70
sólo puede proporcionar una frecuencia máxima de Los lectores con más experiencia seguramente se es-
aproximadamente 1,3MHz. tarán preguntando: ¿y por qué no quitamos los ciclos
En realidad este circuito es un bloque independiente NOP con el fin de aumentar la frecuencia?
capaz de trabajar de manera autónoma emulando la La respuesta es que al final del ciclo (360 grados)
función de contador digital y memoria ROM, de acuer- debemos dar un salto al código donde inicia la forma de
do al diagrama en bloques de un sintetizador digital (ver onda (0 grados), esto consume 2 ciclos de reloj, más
la figura 1). otros 2 ciclos para sacar el dato de 0 grados, son en to-
Como contador digital utilizaremos el registro inter- tal 4 ciclos de reloj. Si quitamos las instrucciones NOP,
no W cuyo valor lo enviaremos al Puerto B donde por en la mayoría de los pasos habrá solo 2 ciclos de reloj
medio de un convertidor Digital-Analógico convertire- entre dato y dato; sin embargo, en el inicio de cada ci-
mos el dato digital en señal analógica. clo de la forma de onda emplearemos 4 ciclos en lugar
Por medio del oscilador controlado por voltaje del de 2 debido al GOTO, lo que distorsionaría levemente
74HC4046 modificaremos la frecuencia de reloj del la señal.
16F84 y de esta manera podremos controlar la frecuen- Las instrucciones NOP se utilizan para igualar los
cia de la forma de onda. Observe la figura 5. tiempos entre dato y dato. En este caso sacrificamos ve-
En la entrada OSC1 introduciremos la señal del os- locidad por fidelidad.
cilador controlado por voltaje.
Las entradas SEL0 y SEL1 se utilizan para seleccio-
nar la forma de onda. FRECUENCIA MAXIMA DE OPERACION
El microcontrolador muestrea regularmente la entra-
da HAB_SEL, y al momento de detectar un “1” lógico en La frecuencia máxima de operación en este caso vie-
esta pata comenzará a generar la forma de onda indi- ne determinada por la frecuencia del oscilador del mi-
cada por las entradas SEL0 y SEL1. crocontrolador y por el número de pasos utilizados en la
En la salida marcada como 2F se obtiene el doble síntesis de la forma de onda.
de la frecuencia de la señal generada. Hemos elegido 60 pasos para la forma de onda.
En la tabla 1 se muestra un extracto del código inter- Cada paso consume 4 ciclos del oscilador, lo que al mul-
no donde se muestra la salida al Puerto B de 3 datos, co- tiplicarlos obtenemos un consumo de 240 ciclos del os-
rrespondientes a 0, 6 y 12 grados de la onda senoidal, cilador por cada ciclo de la forma de onda.
lo cual coincide con el ejemplo de los datos para la me-
moria ROM. INICIO MOVLW 128 ; 0 grados.
MOVWF PORTB
NOP
NOP
MOVLW 141 ; 6 grados.
MOVWF PORTB
NOP
NOP
MOVLW 154 ; 12 grados.
MOVWF PORTB
NOP
NOP
....
GOTO INICIO

Tabla 1 - Ejemplo de código para forma se -


Figura 5 - Generador de señales con el PIC16F84. noidal.

71
La máxima frecuencia que podemos suministrar al Internacional donde el Ing. Arnoldo Galetto hace una ex-
PIC16F84 son 20MHz, lo que nos da un período de 0.2 plicación muy completa del funcionamiento de este tipo
microsegundos. (Recuerde que la frecuencia del reloj in- de convertidor.
terno es la cuarta parte de la frecuencia del cristal o del En la figura 6 se muestra la pantalla de nuestro ge-
oscilador externo). nerador donde se puede observar que hemos fijado una
Si cada ciclo del oscilador puede ser de 0.2 micro- frecuencia de 1000Hz con un nivel de 6 Volts (de pico)
segundos mínimo (a 20MHz), tenemos un tiempo total y la forma de onda seleccionada es una senoide.
de 48 microsegundos (240 por 0.2 microsegundos), lo
que implica una frecuencia máxima de aproximadamen- DIAGRAMA ESQUEMATICO
te 20kHz.
En realidad siempre hay tolerancia en las especifica- Refiérase a la figura 7 donde se muestra el diagra-
ciones de trabajo de los circuitos integrados, por lo que ma esquemático de nuestro generador de funciones.
p o d remos obtener frecuencias poco más altas de La alimentación de corriente alterna de bajo voltaje
20kHz. se introduce por el conector J3.
Se puede utilizar un transformador de 18 volts con
derivación central, o usar dos transformadores de 9 volts
CONVERTIDOR DIGITAL ANALOGICO uniendo una línea de cada uno y conectando la unión a
la pata central del conector J3 (tierra).
Es posible utilizar convertidores digital-analógicos Los diodos D4-D7 forman un puente rectificador pa-
compuestos por un circuito integrado. Sin embargo con ra obtener un voltaje positivo (V+) y uno negativo (V-) de
fines de economía construiremos el nuestro con simples aproximadamente 12 volts cada uno.
resistencias. La tensión de V+ alimenta a los amplificadores ope-
El convertidor seleccionado para nuestra aplicación racionales y al regulador 7805, cuya salida de 5 volts
es el R-2R, ya que sólo se requiere para su implementa- se usa para alimentar los circuitos digitales.
ción de 2 valores de resistencias, una el doble de la La tensión de V- alimenta exclusivamente a los ampli-
otra. ficadores operacionales.
Por cuestiones de espacio no explicaremos el funcio- Con el fin de simplificar el diagrama no se muestran
namiento de tal convertidor. Sin embargo, si el lector de- las conexiones de alimentación de los integrados; sin
sea una explicación adicional se sugiere consultar la re- embargo. en el esquema se encuentran textos indicando
vista Saber Electrónica número 102 edición las patas de alimentación para cada integrado utiliza-
do. Observe U6, el cual es el oscilador controlado por
voltaje 74HC4046.
En la pata 11 se conecta la resistencia usada para
determinar el rango de frecuencia. Esta pata va a un
punto común de las resistencias R24-R27, R30 y R31 las
cuales se habilitan a tierra por medio de los interrupto-
res analógicos U3 y U5, los cuales son controlados por
el microcontrolador de acuerdo a la escala selecciona-
da. El condensador C9 es el otro elemento del oscilador.
En este caso el valor de este elemento es fijo.
El potenciómetro R35 controla la frecuencia mínima
y máxima del oscilador introduciendo un voltaje variable
Figura 6 - Pantalla del generador de funciones. a la pata 9.

72
El potenciómetro R33 se utiliza como ajuste fino de sólo permite una variación de pocos milivolts en la pata
la frecuencia. La resistencia R34, al ser de valor elevado 9.

Figura 7 - Diagrama esquemático.

73
La salida del oscilador se obtiene en la pata 4, esta mo medido se debe descargar C12. La resistencia R29
señal se introduce al PIC16F84 en donde regularmente se utiliza para este fin. Si no descargáramos C12, se
se conecta el cristal para el oscilador de ciclos de reloj quedaría almacenado el último voltaje de pico y no se
interno. Es decir, en lugar de un cristal con frecuencia fi- podría medir uno menor. (Puesto que el circuito mide el
ja introduciremos una señal de frecuencia variable, de voltaje máximo).
esta manera podremos controlar la duración de cada ci- En la pata 7 de U2B se obtiene el voltaje de pico
clo del reloj interno, y por lo tanto también controlare- que luego se introduce a un filtro pasa-bajos formado
mos la frecuencia generada. por R28 y C13.
En la pata 1 del PIC16F84 (RA2) se obtienen pulsos La salida de dicho filtro se lleva a la pata RA0 del
con una frecuencia al doble de la forma de onda. Dicha PIC16F873 la cual es una entrada al convertidor analó-
señal se envía al PIC16F873 a la pata 11 (T1CLKIN) gico-digital integrado.
con el fin de medir su frecuencia. El interruptor S1 selecciona la forma de onda desea-
El PIC16F84 genera una señal digital en el Puerto B da (senoidal, cuadrada, triangular o sierra) y S2 selec-
y por medio del convertidor digital-analógico tipo R2R ciona la escala de la frecuencia, desde 10Hz hasta
convertimos dicha señal digital en analógica. 20kHz.
El Convertidor D/A está implementado con las resis- Cada vez que se presiona el interruptor ESCALA, el
tencias R5-R20. microcontrolador selecciona una de las 6 resistencias
La salida del convertidor se introduce al operacional R24-R27, R30 y R31 con el fin de cambiar el rango de
U1A, el cual es simplemente un seguidor con el fin de la frecuencia del oscilador 74HC4046.
aislar la salida del convertidor presentando una alta im-
pedancia de entrada. El potenciómetro R4 se utiliza pa-
ra controlar el nivel de salida. U1B es un amplificador SOFTWARE
inversor con una ganancia aproximada de 4, lo que pro-
porciona un nivel de salida máximo de aproximadamen- Las operaciones básicas efectuadas por el
te 20 volts de pico a pico al amplificar los 5 volts que se PIC16F873 son:
obtienen a la salida del convertidor.
20 volts de pico a pico máximo son 10 de pico má- a) Manejar los interruptores FORMA y ESCALA
ximo, los cuales por medio del divisor de tensión forma- b) Medir la frecuencia generada
do por R21 y R22 se convierten en 5 volts máximo. Esto c) Medir el voltaje de salida
debe ser así debido a que utilizaremos el convertidor d) Comunicación con la placa IGTV
analógico-digital del microcontrolador y la entrada no
debe exceder de 5 volts. A continuación describiremos brevemente el softwa-
Antes de llevar el nivel de salida para medirlo debe- re de cada función mostrando diagramas de flujo y ex-
mos hacer pasar la señal por un detector de voltaje de tractos del código en ensamblador donde se considere
pico, con el fin de mantener el nivel constante a la entra- apropiado.
da del convertidor al efectuar la medición.
El detector de pico está formado por U2A, D1, D2
C12 y R29. USO DE LOS INTERRUPTORES
El voltaje máximo de la señal generada (voltaje de DE FORMA Y ESCALA
pico) se obtiene en C12, luego se introduce al seguidor
de voltaje U2B con el fin de presentar una alta impedan- El manejo de estos interruptores se hace en el pro-
cia a C12, para evitar que se descargue rápidamente. grama principal de acuerdo al diagrama de flujo mos-
Para medir un nuevo voltaje de pico inferior al últi- trado en la figura 8.

74
El programa verifica si el interruptor SW_ESCALA es- un registro para contar el número de veces que ocurra
tá presionado, si lo está se cambia a la siguiente escala un desbordamiento y en cuanto este registro llegue a 7
y se vuelve al programa principal. significará que han transcurrido 458.752 milisegundos
Si SW_ESCALA no está presionado se pregunta en- (65536 X 7), luego en la subrutina de interrupción se ha-
tonces si lo está el interruptor SW_FORMA. Si es así se ce un retardo de aproximadamente 48 milisegundos
selecciona la siguiente forma de onda. Si este interrup- más para completar los 500 milisegundos. En este mo-
tor no está presionado tampoco, entonces se regresa al mento se deshabilita al TMR1 y en sus registros TMR1H
programa principal donde se repite indefinidamente el y TMR1L tendremos la frecuencia del generador.
ciclo.

MEDICIÓN DE LA FRECUENCIA GENERADA

Para medir la frecuencia generada utilizaremos el ti-


mer 1 del PIC16F873 al cual habilitaremos durante 500
milisegundos para que cuente los pulsos en su entrada
externa, la cual es la pata 11 (T1CLKIN). Este timer se
compone de 2 registros de 8 bits, los cuales permiten
contar hasta 65535 pulsos. La máxima frecuencia pro-
porcionada por el generador de forma de onda es apro-
ximadamente 20000Hz, por lo que es suficiente con es-
tos 16 bits (TMR1H y TMR1L).

¿Por qué lo habilitaremos sólo 500 milisegundos y


no un segundo?
Recuerde que el PIC16F84 proporciona en su pata
1 (RA2) una señal cuya frecuencia es 2 veces la frecuen-
cia de la onda, por lo que sólo es necesario contar du- Figura 8 - Diagrama de flujo del manejo de los inte -
rante medio segundo. rruptores.

¿Cómo mediremos estos 500 milisegun -


dos?
Utilizaremos el timer 0 del microcontrola-
dor. Dicho timer tiene la posibilidad de incor-
porar un preescalador a su entrada. Si lo
configuramos para que divida por 256 y se-
leccionamos su entrada del oscilador interno
tendremos que el TMR0 contará un pulso ca-
da 256 microsegundos, debido a que el reloj
interno es de 1µseg (4MHz del cristal dividi-
do por 4). Cada vez que ocurra un desbor-
damiento del TMR0 significa que se han con-
tado 65536 pulsos (256 x 256). Usaremos Figura 9 - Diagrama funcional del medidor de frecuencia.

75
A continuación se enumeran los pasos empleados funcional de la manera en que se mide la frecuencia.
para medir la frecuencia: El programa principal lo único que hace es verificar
si se ha presionado uno de los dos botones. El TMR0 co-
1) Configurar TMR1 para contar pulsos externos. rre mientras tanto y al momento de presentarse un des-
2) Configurar TMR0 para contar pulsos internos (del bordamiento se genera una interrupción y en la subruti-
oscilador) y configurar el preescalador para dividir por na correspondiente se incrementa CONT. Si CONT es
256. igual a 7 se detiene la entrada al TMR1 y se envía el da-
3) Borrar los registros del TMR0 y TMR1 para iniciar to a la IGTV. Después se borran los timers y CONT ini-
la cuenta de pulsos. cia otro ciclo dentro del programa principal.
4) Cada desbordamiento del TMR0 incrementar el En realidad, después de obtener el valor de la fre-
registro CONT. cuencia, también se mide el voltaje en la misma subruti-
5) En cuanto CONT sea igual a 7 detener la entra - na de interrupción. Esto se discute en el siguiente punto.
da de pulsos al TMR1.
6) Enviar el valor de la frecuencia (TMR1H y TMR1L)
a la placa IGTV para su visualización. MEDICION DEL VOLTAJE DE SALIDA

Observe la figura 9 donde se muestra un diagrama Para medir el voltaje de salida se emplea el conver-
tidor A/D integrado en el mis-
;---------------------------------------------------------------------------
; SUBRUTINAS DE INTERRUPCION
mo microcontrolador. En este
;--------------------------------------------------------------------------- caso se usa la entrada AN0
SUBR_INT INCF CONT,F (pata 2), la cual es alimentada
CPNSIG CONT,0x07,EspMedFrec
BCF INTCON,T0IF ; Borrar aviso de interrupción deTMR0. por el detector de pico (después
RETFIE del filtro).
EspMedFrec CPNSIG TMR0,0xA1,FinMedFrec El proceso de medición ini-
GOTO EspMedFrec
FinMedFrec BCF T1CON,TMR1ON ; Detener TMR1. cia después de que el microcon-
MOVN ADCON0,0x81 ; Seleccionar entrada y activar el CAD. trolador envía el valor de la fre-
MOVN FormPunto,0x40 ; Programar 5 dígitos para display
CLRF Cero
cuencia. En cuanto se obtiene
CURSOR 110,53 el valor digital del voltaje de sa-
BRILLO 4 lida se envía su valor a la placa
DISPLAY_CUARZO FormPunto,Cero,TMR1H,TMR1L
BSF ADCON0,GO ; Comenzar la medición analógica. IGTV para su despliegue.
EspMed BTFSC ADCON0,GO ; Verificar si ya se midió. En la tabla 2 se muestra el
GOTO EspMed código completo de la subruti-
CURSOR 110,110
PAGINA1 na de interrupción, la cual se
MOVF ADRESL,W llama cada vez que el TMR0 se
PAGINA0
MOVWF TempADL
desborda.
MOVN FormPunto,0x42 Lo primero que se hace en
DISPLAY_CUARZO FormPunto,Cero,ADRESH,TempADL la subrutina es incrementar el
CLRF TMR1H
CLRF TMR1L registro CONT, luego se pre-
CLRF CONT gunta si CONT es igual a 7, en
CLRF TMR0 caso de ser menor se regresa
BCF INTCON,T0IF ; Borrar aviso de interrupción de TMR0.
BSF T1CON,TMR1ON ; Activar TMR1 de la subrutina.
RETFIE En caso de que CONT sea
igual a 7 se entra en un peque-
Tabla 2- Código de la subrutina de interrupción.

76
ño ciclo (EspMedFrec) con el fin de esperar que transcu- debido a que se efectúa en menos de 1 milisegundo
rran los 48 milisegundos restantes para completar los (DISPLAY_CUARZO FormPunto,Cero,ADRESH,Te m-
500 milisegundos. pADL).
Enseguida se detiene el TMR1 (BCF T1CON,TM- Por último se borran todos los registros de los timers
R1ON) para luego activar el convertidor A/D (MOVN y se activa de nuevo el TMR1, quedando todo listo para
ADCON0, 0x81). Mientras el circuito del convertidor el siguiente ciclo de medición de frecuencia.
realiza la conversión, el microcontrolador envía el resul- Por cuestiones de espacio no podemos publicar el
tado de la frecuencia a la tarjeta IGTV. (DISPLAY_CUAR- programa fuente completo; sin embargo éste está dispo-
ZO FormPunto, Cero, TMR1H, TMR1L). nible en el sitio WEB de la revista para los lectores que
Después de enviar la frecuencia al display se envía deseen estudiarlo a detalle.
el resultado del convertidor, ya que éste debe estar listo

Figura 10 - Pantalla indicando una frecuencia de Figura 11 - Forma generada desplegada en un osci -
1000Hz y 6 Volts. loscopio

Figura 12 - Cara superior del circuito impreso.

77
ACTUALIZACION tos en la revista, puede saltarse esta sección sin que su
objetivo pierda continuidad.
Esta sección es útil para los lectores interesados en Constantemente estamos aumentando y actualizan-
el diseño y construcción de equipo de instrumentación do las rutinas y macros con el fin de simplificar el desa-
con la placa IGTV. rrollo del software en aplicaciones para IGTV. En esta
Si su intención sólo es armar los proyectos propues- ocasión el archivo de macros actualizado es Macros5I-

Figura 13 - Cara inferior del circuito impreso.

Figura 14 - Localización de componentes

78
G.asm. También se han agregado 2 subrutinas con el fin CONSTRUCCION
de poder enviar una mayor cantidad de texto y datos a
la tarjeta. Si usted opta por armar el circuito en protoboard o
Dichas subrutinas son TablaDatosA.asm y TablaTex- perfoboard necesitará 2 ó 3 tarjetas. Si prefiere armar-
toA.asm. lo en circuito impreso (el cual es de dos caras) se provee
Simplemente agregue estos archivos al directorio el diseño de ambas caras en las figuras 12 y 13.
“comunes” de su PC. En la figura 14 se muestra el diagrama de montaje
de los componentes. Recuerde que la alimentación del
FUNCIONAMIENTO circuito debe ser provista por 1 ó 2 transformadores, los
cuales deben estar montados aparte de la placa del cir-
La figura 10 muestra la pantalla del instrumento don- cuito impreso ya que no se ha provisto de espacio para
de se muestra que se ha seleccionado una forma de on- su montaje en la misma placa.
da senoidal con una frecuencia de 1000Hz y un nivel
de salida de 6 volts de pico.
La figura 11 muestra la forma de onda en un oscilos- OPERACION
copio donde se puede apreciar claramente los pasos dis-
cretos de la salida del convertidor digital-analógico. El instrumento consta de 2 botones: FORMA, para
Observe la división horizontal la cual es de seleccionar el tipo de onda deseada y ESCALA, para se-
200µSeg por división dando un total de 1000µSeg pa- leccionar una de 6 escalas disponibles, desde 10Hz
ra el ciclo completo, lo cual corresponde con los hasta 20kHz. Para controlar la frecuencia se tienen 2
1000Hz señalados en el display. La división vertical es potenciómetros, uno de los cuales es de ajuste fino. Pa-
de 2 volts por división, lo cual coincide con el voltaje del ra el nivel de salida se tiene otro potenciómetro con el
display (recuerde que el voltaje señalado es de pico, y que puede obtenerse un nivel desde 0 hasta 10 volts de
no de pico a pico). pico. *****

Lista de componentes R27: 470k


R28: 4,7k
Circuitos integrados R29: 3,9M
U1 U2: TL072 Amplific. operacional R30: 1,5k
U3 U5: 4066 Interruptor analógico R31: 5,6k
U4: PIC16F873 Microcontrolador R34: 330k
U6: PLL de alta velocidad R36: 2,2k
U7: LM7805 Regulador de 5 Volts.
U8: PIC16F84 Microcontrolador de 20MHz Condensadores
C1: 4,7
Diodos C2, C3: 15pF
D1, D2: 1N4148 Diodo de uso gral. C4, C5: 1000 x 25V
D3: LED Rojo C6, C8, C10, C11, C12: 100nF
D4, D5, D6, D7: 1N4007 Diodo rectificador C7: 47
C9: 100pF
Resistencias C13: 10
R1, R3, R4, R33, R35: 10k
R2: 39k Varios
R5, R6, R7, R8, R9, R10, R11, R12, R32: 1,8k J1: Conector RCA para circuito impreso
R13, R14, R15, R16, R17, R18, R19, R20: 3,6k J3: Conector de bloque 3 terminales
R21, R22, R26: 22k S1 S2: Interruptores mini para impreso
R23: 390 Y1: Cristal 4MHz
R24: 1,5M T1 (No ilustrado) Transformador de 110 (220) a 18 Volts
R25: 100k con derivación.

79

También podría gustarte