MATERIA : PROYECTO DE INGENIERÍA ELECTR~NICA I Y 11. 8 1 O

Anuncio
UNIDAD : IZTAPALAPA.
J,
D I V I S I ~ N: CIENCIAS BÁSICAS E INGENIERÍA.
v'CARRERA : INGENIERÍA ELECTRÓNICA. (COMUNICACIONES ).
MATERIA : PROYECTO DE INGENIERÍA ELECTR~NICAI Y 11.
J'TÍTULO : GENERADOR DE SEÑALES Y OSCILOSCOPIO
IMPLEMENTADOS CON P.C.
FECHA : ABRIL, 1998.
""ALUMNO: FRANCISCO LÓPEZ ESCOBEDO.
MATRÍCULA : 89223 8 1O
ALUMNO : VICTOR GONZÁLEZ ALMANZA
MATRÍCULA : 90322828
ALUMNO : FUENTES ITURRIA JOSE JULIO
MATRÍCULA : 90322626
ÍNDICE GENERAL
PRIMERA PARTE. FUNDAMENTOS TEÓRICOS.
1.1 Adquisición de datos
1.2 Circuitos de muestre0 y mantenimiento
1.3 Dispositivos de memoria
1.4 El generador de señales
1.5 El osciloscopio
1.6 Convertidores digitales/analógicos
1.7 Convertidores analógico/digitales
SEGUNDA PARTE. GENERADOR DE SEÑALES.
2.1 Presentación
2.2 Objetivo
2.3 Descripción de la tarjeta generadora
2.3.1 Bloque de control de frecuencias
2.3.2 Bloque de longitud de tabla de datos
2.3.3 Bloque de control de direcciones RAM
2.3.4 Bloque de control de pujo de datos
2.3.5 Bloque de conversión D/A
2.3.6 Bloque de control de buffers
2.3.7 Bloque de direccionamiento
2.3.8 Bloque de memoria
2.4 Modo de operación
2.5 Características del sistema
2.6 Diagrama de la tarjeta de expansión
19
TERCERA PARTE. OSCILOSCOPIO.
22
2.1 Presentación
2.2 Objetivo
2.3 Descripción de la tarjeta para osciloscopio
2.3.1 Bloque de control depuso
2.3.2 Bloque de tamaño de tabla de datos
2.3.3 Bloque de control de direcciones RAM
2.3.4 Bloque de control de flujo de datos
2.3.5 Bloque de conversión A D
2.3.6 Bloque de habilitación para buffers
2.3.7 Bloque de direccionamiento
2.3.8 Bloque de memoria
2.4 Modo de operación
2.5 Características del sistema
2.6 Diagrama de la tarjeta de expansión
LISTADO DEL PROGRAMA DE INTERFACE
25
RESULTADOS OBTENIDOS
47
CONCLUSIONES
48
BILIOGRAFÍA
49
3
Introducción.
Los sistemas digitales realizan todas sus operaciones internas en binario o bien
algún tipo de código binario. Cualquier información que vaya a introducirse en un
sistema digital debe ponerse en forma binaria antes de que pueda ser procesado por los
circuitos digitales. Por el otro lado, las salidas de un sistema digital están en algún tipo
de palabras binarias, y con frecuencia deben convertirse en una forma diferente según
sean utilizadas las salidas.
Muchos dispositivos se usan en los lados de entrada y/o salida de los sistemas
digitales para servir como vínculo de comunicaciones con el mundo externo. Los
dispositivos entraddsalida relacionados con el proceso ofrecen el medio por el cual un
sistema digital monitorea y controla un proceso físico. En el lado de la entrada, las
dimensiones de los parámetros del proceso que son analógicos por naturaleza son
generalmente transducidos y enviados a un convertidor de analógico a digital (ADC),
el cual convierte la cantidad analógica en una representación digital correspondiente.
Algunos parámetros del proceso ya son digitales en naturaleza pero deben cambiarse a
la forma adecuada para el sistema digital.
Los dispositivos de salida relativos al proceso traducen las salidas de la
computadora en las señales adecuadas de activación que se necesitan para controlar el
proceso. Estas señales de activación podrían consistir simplemente en abrir y cerrar
contactos de interruptores o pulsaciones de un motor de etapas. Sin embargo, muchas
veces la señal activadora que se requiere debe ser analógica en naturaleza, como es el
caso de un voltaje para controlar la velocidad de un motor de D.C. En estos casos, se
necesita un convertidor de digital a analógico, DAC, para convertir la salida del
sistema digital en la forma analógica que se pide.
Por lo tanto, observamos que los ADC y los DAC funcionan como interface entre
un sistema o dispositivo completamente digital, como una computadora, y el mundo
analógico externo. Esta función se vuelve crecientemente más importante a medida
que las microcomputadoras poco costosas entran en áreas de control de procesos
donde el control de la computadora no era viable con anterioridad.
En este informe se presentan circuitos propuestos como alternativas para dos de los
instrumentos de medición más usados en el laboratorio de electrónica, como son el
generador de funciones y el osciloscopio. Los diseños de estos circuitos tienen sus
limitantes en cuanto a las frecuencias de operación de los mismos, además de la
versatilidad de los instrumentos convencionales comparada con estos circuitos.
La idea de estos sistemas digitales no es para sustituir por completo a los aparatos
de medición comerciales, sino para mostrar una más de las aplicaciones que tienen las
computadoras personales en interface con tarjetas de expansión.
4
Fundamentos teóricos.
Adquisición de datos.
Existen muchas aplicaciones en las cuales los datos analógicos tienen que ser
digitalizados y transferidos a la memoria de una computadora. El proceso por el cual
la computadora adquiere estos datos analógicos digitalizados se conoce como
adquisición de datos. La computadora puede ejecutar varias tareas con los datos, según
la aplicación. En una aplicación de almacenamiento analógico, como un osciloscopio
digital, la computadora almacenará los datos y después los transferirá a un DAC un
tiempo después para reproducir los datos analógicos .
En una aplicación de control de proceso, la computadora puede examinar los datos
o realizar cálculos con ellos para determinar qué salidas de control generar.
Por ejemplo, la forma en que una microcomputadora se conecta a un ADC con
rampa digital con el fin de adquirir datos.
La computadora genera las pulsaciones “start” que inician cada nueva conversión
A/D. La señal eoc (fin de conversión) del ADC se alimenta a la computadora. La
computadora examina esta señal eoc para indagar cuándo se completa la conversión
A/D;después transfiere los datos digitales de la salida del ADC a su memoria.
Describiendo, la forma en que la computadora adquiere una versión digital de la
señal analógica, va : La onda de escalinata va. que se genera interna al ADC se
superpone en la onda va con fines explicativos. El proceso comienza en to cuando la
computadora genera un pulso de “start” para dar inicio a un ciclo de conversión A/D.
La conversión se completa al tiempo t, cuando la escalinata excede de v, , y eoc pasa
a nivel bajo. Esta tsn en eoc señala a la computadora que el ADC tiene una salida
digital que ahora representa el valor de v,, y la computadora cargará estos datos en su
memoria.
La computadora genera un nuevo pulso de “start” poco tiempo después de t, para
dar inicio a un segundo ciclo de conversión. Esto vuelve a ser igual a cero la escalinata
y eoc lo devuelve a nivel alto debido a que el pulso de “start” recoloca el contador en
el ADC. La segunda conversión termina al tiempo t, cuando la escalinata vuelve a
exceder de v, . La computadora carga después los datos digitales correspondientes en
el punto b de su memoria. Estas etapas se repiten en t, , t, , etcétera.
El proceso por medio del cual se genera un pulso de “start”, examina eoc y carga
datos ADC en la memoria, se halla bajo el control de un programa que la
computadora está ejecutando. Este programa de adquisición de datos determinará
cuántos puntos de datos de la señal analógica se almacenarán en la memoria de la
computadora.
Circuitos de muestreo y mantenimiento.
Los circuitos de muestreo y mantenimiento se utilizan para muestreo de una señal
analógica en un instante dado y mantener el valor de la muestra durante tanto tiempo
como sea necesario. Los instantes de muestreo y la duración de mantenimiento están
5
determinados por una señal lógica de control, y el intervalo de mantenimiento depende
de la aplicación a la que se destine el circuito. Por ejemplo, en los filtros digitales las
muestras deben ser mantenidas durante el tiempo suficiente para que tengan lugar la
conversión analógica /digital.
La mayoría de circuitos de muestreo y mantenimiento utilizan un condensador para
mantener la tensión de muestra. Un interruptor controlado electrónicamente provee un
medio para cargar rápidamente el condensador hasta la tensión de muestra y luego
suprimir la entrada de manera que el condensador pueda retener la tensión deseada.
En la práctica, los interruptores electrónicos y los condensadores no son perfectos y
en ellos ocurren varias discrepancias respecto a los valores o estados ideales . Entre las
especificaciones más importantes hay las de tiempo de apertura y tiempo de
adquisición. Se puede explicar lo que es el tiempo de apertura refiriéndonos al tiempo
de máximo retardo entre el instante en que la lógica de control ordena al interruptor
que se abra y el instante en que realmente ocurre la apertura.
El tiempo de apertura de un sistema determina esencialmente el tipo de interruptor que
se debe utilizar. Si este tiempo es del orden de milisegundos, el interruptor puede ser
un relé.
Con interruptores FET los tiempos de apertura son típicamente de 50 a 100 ns
mientras que con interruptores diodo muy rápidos el tiempo de apertura es mucho
menor que 1 ns. A consecuencia del tiempo de apertura hay una incertidumbre en el
ritmo o cadencia de muestreo que puede degradar la presentación del sistema.
Ordinariamente se selecciona un interruptor cuyo tiempo de apertura sea mucho menor
que la inversa del ritmo de muestreo.
Como la señal de entrada cambia durante el intervalo de muestreo, transcurre una
cantidad finita de tiempo antes de que la salida sea idéntica a la de entrada. El tiempo
de adquisición es el intervalo más corto transcurrido desde que se da la orden o
“mandato” (command) de muestra hasta que se pueda dar la orden de mantenimiento y
se obtenga como resultado una tensión de salida que sea aproximadamente la tensión
de entrada con la exactitud necesaria. El caso más desfavorable ocurre cuando la
entrada es una función escalón cuya amplitud es igual a la máxima excursión de
tensión cresta a cresta del circuito.
Ordinariamente el fabricante también especifica el tiempo de establecimiento. Este
es el tiempo que transcurre desde la apertura del interruptor (mantenimiento) hasta
que la salida ha alcanzado su valor final, dentro de un porcentaje específico
(usualmente 0.01% del valor final de la escala).
Si el circuito de muestreo y mantenimiento está seguido de un convertidor A/D, la
conversión no comienza hasta que la señal es estable, o de lo contrario la tensión
convertida puede ser errónea.
También se especifica algunas veces el ritmo de decaimiento de la salida (droop).
Éste representa la variación de tensión entre las placas del condensador durante el
tiempo de mantenimiento y es inversamente proporcional a la capacidad, ya que dv, í
dt = i/c, donde i es la corriente de fuga del condensador. La corriente de fuga puede ser
6
consecuencia de la corriente de polarización en un operacional, la corriente de fuga en
el interruptor o la fuga interna en el condensador.
Los circuitos prácticos de muestre0 y mantenimiento hacen mucho uso de
operacionales para obtener una baja impedancia en el circuito de excitación y una alta
impedancia de carga en el condensador de mantenimiento. Estos circuitos utilizan
conmutadores FET en vez de BJT a causa de la linealidad y carencia de offset en sus
características de transferencia, en la proximidad del origen, donde tiene lugar la
acción de conmutación. Si se requiere una velocidad extremadamente alta se utilizan
puentes de diodos para la conmutación.
Dispositivos de memoria.
Una ventaja importante de los sistemas digitales sobre los analógicos es la
capacidad de almacenar fácilmente grandes cantidades de información digital por
periodos de tiempo cortos o largos. Esta capacidad de memoria es la que hace de los
sistemas digitales tan versátiles y adaptables a muchas situaciones. Por ejemplo, en
una computadora digital la memoria central interna almacena instrucciones que
indican a la computadora qué hacer en todas las circunstancias posibles, de manera
que la computadora haga su trabajo con una mínima cantidad de intervención humana.
Los datos digitales también pueden almacenarse como cargas en capacitores y un
tipo muy importante de memoria semiconductora hace uso de este principio para
obtener almacenamiento de alta densidad en niveles bajos de requisitos de energía.
Los dispositivos ofrecen todavía otro medio más de almacenamiento. En particular,
las memorias con núcleo magnético se han empleado mucho desde fines de la década
1950 a pesar que las memorias MOS las han sustituido gradualmente en muchas
computadoras.
Las memorias semiconductoras y de núcleo magnético se utilizan como la memoria
interna de una computadora, donde la operación rápida es importante.
La memoria interna de la computadora está en comunicación constante con la
unidad central de procesamiento (cpu) mientras se está ejecutando un programa de
instrucciones. El programa y cualquier información usada por el programa
generalmente están almacenados en la memoria interna.
Aunque las memorias semiconductoras y de núcleo magnético se adaptan bien a la
memoria de alta velocidad, su costo por bit de almacenamiento prohibe su uso como
dispositivos de almacenamiento en masa. Almacenamiento en masa se refiere a la
memoria que es externa a la computadora central y tiene la capacidad de almacenar
millones de bits de datos sin energía eléctrica.
La cinta y el disco magnéticos son dispositivos de almacenamiento en masa populares
que son muchos menos costosos por bit almacenado que los dispositivos de memoria
interna.
Otro tipo en la categoría de memoria en masa es la memoria de burbuja magnética
(mbm), dispositivo semiconductor que utiliza principios magnéticos para almacenar
millones de bits en una ficha.
7
Memoria sólo para lectura (ROM):
Vasta clase de memorias semiconductoras diseñadas para aplicaciones donde la
proporción de operaciones de lectura a operaciones de escritura es muy alta. En
términos técnicos, en una rom sólo puede escribirse (programarse) una vez y esta
operación a menudo se efectúa en la fábrica. Por lo tanto la información sólo puede
leerse de la memoria después de haberse programado. Este tipo de memoria se diseña
con el fin de contener datos que se han permanentes o bien que no cambien
frecuentemente. Durante la operación normal, no pueden escribirse nuevos datos en
una Tom, pero sí puede leerse información de ella. Para algunas rom los datos que
están almacenados tienen que grabarse durante el proceso de fabricación; para otras
rom los datos se pueden introducir en forma eléctrica. El proceso de introducir datos
se conoce como programación.
ROM programable y borrable (EPROM).
Una EPROM puede ser programada por el usuario y también puede borrarse y
reprogramarse tantas veces como se desee. Una vez programada, la EPROM es una
memoria no volátil que contendrá sus datos almacenados indefinidamente. El proceso
para programar una EPROM implica la aplicación de niveles de voltaje especiales
(comúnmente en el orden de 25 a 50 v) a las entradas del circuito adecuadas en una
cantidad de tiempo especificada (por lo general 50 ms por localidad de dirección). El
proceso de programación usualmente es efectuado por un circuito especial de
programación que está separado del circuito en el cual la EPROM trabajará por Último
. El proceso de programación completo puede llevar hasta siete minutos para una
EPROM.
Una vez que se ha programado una celda de memoria, puede ser borrada solamente
exponiéndola a la luz ultravioleta (uv) aplicada a través de una ventana en el
integrado. El proceso de borrado requiere comúnmente de 15 a 30 minutos de
exposición a rayos ultravioleta.
Las EPROM están disponibles en una amplia selección con capacidades hasta de
32k x 8 y tiempos de acceso debajo de 250 nanosegundos.
Las etapas que se requieren para programar cualquier localidad de dirección son
como sigue:
1. Aplicar la dirección deseada a las entradas de dirección .
2. Aplicar la palabra de datos deseada a las terminales de datos.
3. Aplicar un pulso a la terminal de habilitación del chip.
4. A fin de verificar que la palabra de datos ha sido programada de forma adecuada, la
localidad de la dirección debe ser leída.
El proceso de programación cuando se efectúa manualmente puede tomar horas. Se
dispone de numerosos programadores comerciales de EPROM que pueden programar
y verificar una memoria 2716 completa en menos de dos minutos, una vez que el
usuario ha ingresado los datos en la memoria de lecturdescritura (rwm) del
programador de EPROM desde un teclado. Algunos programadores de EPROM
permiten que se transfieran datos en la rwm desde una computadora. Este proceso,
llamado carga descendente, permite al usuario primero elaborar su programa en una
computadora y después, cuando se termina y está trabajando, transferirlo de la
8
memoria de la computadora al programador de la EPROM, que lo integrará a la
EPROM.
Memoria de acceso aleatorio (RAM).
Memoria en la cual la localización fisica real de una palabra de la memoria no tiene
efecto sobre el tiempo que tarde en leer de esa localidad o bien escribir en ella. En
otras palabras, el tiempo de acceso es el mismo para cualquier dirección en la
memoria.
El término de acceso aleatorio, quiere decir al azar, pudiendo accesar cualquier
localidad de memoria fácilmente como cualquier otra.
Las RAM se emplean en las computadoras para el almacenamiento temporal de
datos y programas. El contenido de muchas localidades de dirección en la RAM
cambiará continuamente conforme a la computadora ejecute un programa. Esto
requiere de tiempos de lectura y escritura rápidos para la RAM de manera que no
disminuya el tiempo de operación de la computadora.
Una desventaja importante de las RAM es que son volátiles y pierden toda la
información almacenada en ellas si se interrumpe el suministro de energía o si se
apaga la máquina. Sin embargo, algunas RAM emplean pequeñas cantidades de
energía en modo de transición (sin efectuar operaciones de lectura o de escritura) y
pueden alimentarse con baterías siempre que se interrumpa la fuente de energía
principal. Por supuesto la ventaja principal de la RAM es que se puede escribir en ella
y también se puede leer en ella muy rápidamente con la misma facilidad.
RAM Estática.
Es aquella que puede almacenar datos mientras se aplica energía al circuito. Las
celdas de la RAM estática son en esencia multivibradores biestables (flip-flops) que
permanecerán en un estado determinado indefinidamente, siempre y cuando no se
interrumpa el suministro de la energía al circuito .
Las RAM estáticas se tienen a disposición en tecnología bipolar y mos, aunque la
vasta mayoría de las aplicaciones hacen uso de RAM NMOS o bien CMOS. Las
bipolares tienen la ventaja en velocidad (a pesar que el NMOS cierra gradualmente la
brecha) y los dispositivos MOS tienen capacidades mucho mayores.
EL Generador de señales.
La generación de señales es una tarea importante que los Ingenieros en Electrónica
necesitan a menudo llevar a cabo. Básicamente, mencionaremos algunos métodos de
diseño de los generadores de ondas senoidales; el primero de ellos es la generación por
medio de un oscilador no lineal, que genera formas de onda cuadrada y triangular, y
la aplicación de la onda triangular a un formador de ondas senoidales, que por lo
general consta de diodos y resistores.
Otro camino es la construcción de circuitos de retroalimentación positiva, que
consta de un circuito selectivo a la frecuencia deseada. Se diseña el circuito para que
tenga una ganancia a la unidad a una sola frecuencia. Este tipo de oscilador se le
llama oscilador lineal, las ondas senoidales se generan esencialmente por el fenómeno
de resonancia.
9
Se designan como generadores de funciones a aquellos equipos que producen
señales que pueden describirse mediante formas matemáticas simples. En ellos se
busca más la versatilidad que la exactitud ofreciendo una distorsión típica de 0.25%.
Las formas de onda obtenidas son: La triangular, que se emplea para medidas de
nivel de disparo, estudios de linealidad, etc; la cuadrada, que se aplica, entre otras, al
análisis de la respuesta transitoria; y la senoidal, que es adecuada para la obtención de
la respuesta frecuencial.
Los generadores mas simples constan solo de un generador principal y entradas para
modulación con señales externas. Si hay modulación interna y la moduladora está
disponible puede que en ella se tenga señales de frecuencia menor a las del generador
principal. No suelen estar basados en los circuitos integrados LSI disponibles, porque
éstos ofrecen poco margen de frecuencia y bastante distorsión.
El oscilador principal produce las señales triangular y cuadrada. Consiste en un
bucle de retroalimentación no lineal que consta de un integrador y un conmutador con
histérisis, que compara la salida de áquel con una tensión de referencia.
La frecuencia de la triangular depende de la corriente de carga y descarga de un
capacitor, C, de la capacidad de éste, y de l a amplitud de la señal cuadrada. Esta
última es fija, por lo que se emplean la variación de C, para seleccionar la banda
(décadas), y de la corriente I, para ajustar continuamente la frecuencia, dentro de una
banda.
La banda total de frecuencias cubre normalmente 1 Hz a lMHz, o mas, pero hay
modelos que abarcan desde 3Hz a 5OMHz. La exactitud de la frecuencia indicada por
el selector suele ser baja, pero esto no importa mucho si se dispone de un
frecuencímetro en paralelo.
Para frecuencias muy bajas, si se empleara un integrador con condensador, que
limita la frecuencia de corte inferior. Por esta razón, se emplea ahí un oscilador
principal distinto, basado en un contador digital. La señal de contar/descontar
(up/down) procede del conmutador con histérisis. Con este sistema, como la relación
de división de frecuencias puede ser muy alta, la frecuencia de salida puede ser muy
baja.
El modo de funcionamiento se refiere a la cadencia de la salida: continua (free run),
previo disparo (triggered), en salva (burst, gated), etc.
Algunos modelos permiten iniciar y acabar la oscilación en un punto o fase
determinados de la forma de onda (start/stop).Cuando no se desea una salida continua
se cortocircuita el condensador del integrador.
Cuando se aplica una tensión externa suficiente, se suprime el cortocircuito que se
instala de nuevo siempre que la triangular haya alcanzado el nivel de final de ciclo y la
entrada de control descienda por debajo del umbral elegido (burst), o bien se haya
completado un único ciclo (trigger).
La salida senoidal se obtiene mediante un circuito analógico no lineal, basado en
diodos o transistores apareados, a cuya entrada se aplica la señal triangular. La
10
pendiente de ésta va siendo modificada por las sucesivas etapas, hasta dar una senoide
aproximada. Para obtener distorsiones inferiores, hay que emplear un generador de
señales basado en un oscilador de Puente de Wien o LC, en un sintetizador. Además
de las formas de onda habituales, es frecuente una salida de pulsos TTL, y a veces, una
salida en rampa, coseno u otras desfasadas 90 grados respecto a las principales.
Para la generación de señales TTL se emplea la señal triangular para acortar
mediante una compuerta AND, la duración de la cuadrada. Si, por ejemplo, se elige
como umbral el 30 % del valor pico de la triangular, el pulso TTL dura un 15% del
periodo. Como el flanco de subida del pulso coincide con el de la cuadrada de la salida
principal, la señal TTL, se puede usar para sincronismo. Si internamente hay varias
compuertas AND en paralelo, en esta salida se dispone de más corriente, y se puede
atacar cargas de 50 ohms.
La salida de esta etapa donde se determina la forma de onda, está, en su caso, el
modulador de amplitud, basado en una señal interna (del generador de control) o
externa.
Los controles de frecuencia y simetría permiten ajustar, respectivamente, a la
frecuencia de salida, dentro de una banda y la duración de sus semiciclos positivo y
negativo. Ambos basan su acción de control de la tensión que regula las fuentes de
corrriente (carga-descarga).
La frecuencia de salida se puede determinar mediante un potenciómetro (ajuste fino
o dial del instrumento), o bien puede hacerse variable, cubriendo todo un campo. La
tensión para controlar esta variación puede ser externa o interna (entrada VCO).
Para hacer un barrido interno (Sweep), el generador de control da una señal de
diente de sierra que es l o que controla la frecuencia del oscilador principal. Puede
hacerse un barrido lineal o logarítmico. En el p r i m caso se emplea igual tiempo en
cada década, es decir, se dedica más tiempo a las frecuencias más bajas del barrido.
Cuando se aplica una tensión externa a la entrada VCO (o VCF), es esta tensión
junto con el dial, la que determina la frecuencia de la salida. Si la señal aplicada es una
rampa, se hace un barrido. El campo de ésta puede cubrir desde 1O: 1 hasta 1000:1.
En la etapa de salida se determina la amplitud de la señal y su nivel de continua. El
nivel de salida mínimo es importante porque da una idea del nivel de ruido presente en
ésta. Esta etapa suele estar protegida contra cortocircuitos y contra la aplicación de
tensiones externas.
La impedancia de salida es uno de los parámetros más importantes de los
generadores, y debe ser adecuada a los circuitos donde se va a conectar. Para trabajar
con señales cuadradas y pulsos, por ejemplo, suele ser necesario que sea de 50 ohms.
En cambio, en sistemas de audio lo típico son 600 ohms.
Existe un conjunto sorprendente de generadores de onda disponibles en la
actualidad, los cuales van acompañados de variación en los precios. Es interesante
comentar algunas de las características con las que el usuario potencial de un
generador debe familiarizarse, pero no se debe abordar el tema en forma exhaustiva
en la totalidad de su campo.
11
Cuando se ofrecen varias opciones de forma de onda, éstas, invariablemente, son
producidas por una modificación adecuada de la forma de onda básica o primaria. Por
ejemplo, cierto número de osciladores baratos de audio utilizan un puente de Wien. La
salida, por supuesto, es una onda senoidal. Cuando se requiere tener una onda de
salida cuadrada con ese oscilador, ésta inevitablemente se produce mediante una
modificación apropiada de la onda senoidal. La calidad de esta forma de onda
secundaria puede ser más pobre que la calidad de la forma de onda primaria, y
ciertamente no puede ser mejor. También hay instrumentos que producen una forma
de onda cuadrada como forma de onda primaria. La forma de onda triangular es una
síntesis de la forma de onda cuadrada, como lo es una forma de onda senoidal. Con
este proceso es probable que la calidad de la onda senoidal sea inferior a la de otro
instrumento cuya forma de onda primaria sea una senoidal. Sin embargo, si lo que más
interesa al usuario es una onda cuadrada, la pobreza en calidad de la onda senoidal es
de poca importancia.
Uno de los criterios más importantes para seleccionar un generador de forma de
onda es su capacidad de potencia. La potencia de salida siempre se especifica para una
impedancia de salida determinada. Los fabricantes aconsejan que para obtener máxima
transferencia de potencia, la impedancia de entrada del circuito al que se le va a aplicar
el generador de forma de onda, debe ser bastante mayor que la impedancia de salida
del mismo. Otra característica de interés es lo plano de la salida con cambios en la
frecuencia.
Como algo natural, la amplitud de la salida debe ser independiente de la frecuencia.
Sin embargo, para trabajos no críticos, una carencia de riguroso aplanado se puede
manejar ajustando el control de amplitud. El control de fase y sicronización de la
forma de onda son características útiles que se encuentran tan sólo en instrumentos de
costo moderadamente alto y en los muy caros.
Estas propiedades contribuyen en la facilidad del empleo y amplían la utilidad del
instrumento. La precisión de posición del dial raras veces es mejor que +/- 2%. Esto
no es una desventaja importante, ya que se puede usar con facilidad un osciloscopio de
calidad para determinar la frecuencia a la exactitud del mismo.
En los generadores de forma de onda de bajo costo, la salida es asimétrica porque
en un lado de la salida está a tierra. Hay ocasiones en que esto es inestable. Los
mejores instrumentos ofrecen una salida con tres terminales, de tal modo que la señal
de salida puede estar flotando respecto a tierra. Esto permite el uso de la forma de
onda con casi cualquier referencia de c.d.
El Osciloscopio
Generalidades.
Una de las funciones básicas de los circuitos electrónicos es la generación y
manipulación de formas de onda electrónicas. Estas señales electrónicas pueden
representar información de audio, datos de computadora, imágenes de televisión, etc.
Los medidores comunes utilizados en trabajo eléctrico -el voltímetro cc o ca- miden
voltajes cc, pico, o rms. Estas medidas son correctas solamente para señales
sinusoidales no distorsionadas o miden el valor verdadero rms para una señal
12
particular sin indicación de cómo varía esta señal con el tiempo. Obviamente, cuando
se está llevando a cabo el procesamiento de señales, estas medidas globales no tienen
esencialmente ningún significado. Lo que se necesita es “ver” lo que está pasando en
el circuito, probablemente en fracciones pequeñas de tiempo y cómo cambia la forma
de onda de la señal. El osciloscopio de rayos catódicos (CRO) proporciona
precisamente este tipo de operación -la representación visual de la forma de la señal-,
permitiéndole al técnico o al ingeniero observar diferentes puntos en el circuito
electrónico para ver como están teniendo lugar estos cambios.
Además el CRO pude calibrarse y equilibrarse para medir tanto variaciones de tiempo
y voltaje de tal manera que la información esté disponible en la cantidad de voltaje
que se encuentra presente, qué tanto está cambiando el voltaje, y cuánto tomó realizar
ese cambio (o una porción del cambio).
El osciloscopio es un instrumento para hacer visibles determinados procesos
variables, trabaja según dos coordenadas, es decir, puede registrar dos funciones
cualesquiera
Y = f(x). Para tal fin, el instrumento cuenta con un tubo osciloscópico, tubo de rayos
catódicos, en cuya pantalla se observa el proceso que se desarrolla.
Los tubos osciloscópicos pertenecen, según a la moderna tecnología, al grupo de
tubos de transformación señal-imagen. Las señales aplicadas a las placas deflectoras y
a los electrodos para el control del brillo, generan en la pantalla una imagen. A este
mismo tipo de tubos pertenecen los de la televisión, en la cámara de televisión que
capta una imagen óptica y la convierte en una señal eléctrica, la cual trabaja a la
inversa del osciloscopio.
En la actualidad, la moderna tecnología ha avanzado a pasos agigantados. Hoy en
día, contamos además de los osciloscopios de tubos osciloscópicos con osciloscopios
digitales, donde, las señales se observan en una pantalla de cristal líquido, este tipo de
osciloscopios utilizan una tecnología digital, donde la señal que debemos observar es
digitalizada a niveles binarios y procesada para obtener la imagen y mediciones
requeridas.
Sin el osciloscopio, el trabajo electrónico sería virtualmente imposible. A no ser que
uno sea capaz de “ver” las formas de onda del circuito, no hay manera de corregir los
errores, entender las fallas de diseño, o hacer los ajustes.
De la misma manera que el voltímetro, amperímetro y medidores de potencia son las
herramientas básicas para el ingeniero de potencia o electricista, el CRO es la
herramienta básica del ingeniero o el técnico electrónico.
Hay un amplio rango disponible de CRO’s, algunos adecuados para trabajo general
en muchas áreas de electrónica, otros para trabajo solamente en un área específica. Un
CRO puede diseñarse para operar desde 100 Hz hasta 500 KHz, o desde C.C. hasta 50
MHz; pude permitir observar señales dentro de un intervalo de tiempo de 1 pseg, o
hasta cerca de unos pocos qseg; puede proporcionar una forma de onda o un número
de formas de onda simultáneas en la pantalla del CRO. Cuando un número de formas
de onda se muestran simultáneamente, los voltajes en diferentes lugares del circuito se
pueden observar al mismo tiempo. Todas estas características del osciloscopio de
rayos catódicos proporcionan flexibilidad y lo capacitan a uno para utilizar un
osciloscopio que es bien adecuado para el trabajo que se tiene que hacer.
Existen osciloscopios llamados de almacenamiento, los cuales retienen una figura
por muchas horas, de tal manera que una señal original (tomada anteriormente) pueda
todavía analizarse y compararse con otra señal en un tiempo posterior.
Modos de exhibición.
Hay disponibles osciloscopios de rayos catódicos que por medio de un haz dual
CRT o el uso de circuitería electrónica externa tienen la habilidad de exhibir dos
señales durante el mismo intervalo de tiempo. El CRO de haz dual emplea un CRT
que tiene un segundo cañón electrónico para generar el haz de electrones adicionales.
El CRO de trazo dual emplea circuitería electrónica para conmutar un solo haz
electrónico entre dos señales a una tasa que se traducirá en dos exhibiciones claras
sobre la misma cara del tubo. Dos distintivos del trazo dual son los modos alternados
y los modos conmutados por exhibición.
Cuando se utiliza el modo de conmutación electrónica alternado, las dos señales de
entrada que deben mirarse (conectadas a los canales A y B del osciloscopio para
diferenciar entre las dos entradas verticales) son conectadas al canal vertical del
osciloscopio para alternar ciclos del barrido.
Cuando las señales que se tienen que observar son de baja frecuencia, se utiliza el
modo conmutado de exhibición. Este conmuta la señal de entrada del amplificador
vertical de la entrada conectada al canal A a la señal del canal B y regresa a su
posición nuevamente, en forma repetitiva para un solo ciclo de barrido del haz. Así, la
figura obtenida se compone en realidad de pequeños pedazos de cada una de las
señales con suficientes partes para proporcionar la ilusión de dos señales exhibidas en
forma estacionaria.
Mediciones usando las escalas calibradas.
El CRT tiene dos ejes de exhibición -vertical y horizontal-. En la operación normal
del osciloscopio de rayos catódicos la señal de entrada observada es aplicada a la
entrada vertical (bien sea un solo canal o los dos canales) y el barrido horizontal es
obtenido utilizando la circuitería de banido interna. Si el amplificador vertical y los
atenuadores se ajustan a los niveles de calibración, entonces la amplitud de la señal
vertical (entrada) o cualquier parte de ella pueden medirse exactamente.
El término ‘calibrado’ implica que el osciloscopio ha sido verificado para asegurar
que cada uno de los ajustes de la escala refleja adecuadamente la indicación del
osciloscopio. Por ejemplo, si se elige el ajuste de 1 volt/división, entonces el
osciloscopio en realidad, asegurará un movimiento de una división de la exhibición
por cada voltio aplicado.
Si se emplea el barrido horizontal calibrado del CRO, la cantidad de tiempo para un
ciclo de la señal de entrada (el período) puede medirse y utilizarse para calcular la
14
frecuencia de la señal. Además, la cantidad de tiempo entre dos señales sinusoidales
que cruzan el cero también pueden leerse y utilizarse para calcular el desplazamiento
de fase entre las dos señales.
Es también posible utilizar las escalas horizontales para medir la cantidad de tiempo
que separa las dos señales que están siendo observadas. Las mediciones de este tipo
proporcionan información importante en la circuitería de pulsos y digital.
Mediciones de amplitud.
La escala vertical del osciloscopio está generalmente calibrada en unidades de
voltio/cm, ó bien, voltio/división. Usualmente cada división se subdivide en cinco
partes, de tal manera la sensibilidad se ajustada a la posición de calibrado (CAL).
En la mayoría de los controles de sensibilidad vertical, se indican posiciones
separadas para la lecturas C.A. y C.C. (en muchos otros CRO’s hay un conjunto de
escalas de sensibilidad con un interruptor separado para cambiar de operación C.A. a
operación C.C.)
Medidas de tiempo y de frecuencia.
La señal de barrido horizontal puede ajustarse en pasos calibrados desde unos
pocos segundos a microsegundos de tiempo por división.
Si el selector de tiempo de barrido fuera colocado en lms/div, cada cuadro (o cm) en
la pantalla correspondería a un tiempo de lms. Así el CRO permite exhibición de
formas de onda de todos los tamaños y permite la medición de tiempo para que todos
los aspectos de la señal observada puedan medirse con precisión.
Es también posible utilizar las escalas calibradas de tiempo del CRO para calcular
la frecuencia de las señales observadas. Esto requiere el uso de la escala de barrido
horizontal calibrada para medir el tiempo para un ciclo de la señal observada y
después calcular la frecuencia de la señal utilizando la relación f = 1 / T . Donde f es
la frecuencia de la señal y T es el período o el tiempo para un ciclo completo de la
señal.
Medidas de desplazamiento de fase utilizando escalas calibradas.
Las escalas de tiempo calibradas también pueden utilizarse para calcular
desplazamientos de fase entre las dos señales sinusoidales . Si un osciloscopio de trazo
dual o de haz dual se utiliza para exhibir las dos señales sinusoidales simultáneamente
de tal manera que una señal se emplea como la entrada de sincronización EXT, las dos
formas de onda aparecerán en el tiempo adecuado y el CRO puede utilizarse para
medir la cantidad de tiempo entre el comienzo de un ciclo de cada una de las ondas.
Esta cantidad de tiempo puede entonces utilizarse para calcular el ángulo de fase entre
las dos señales.
Mediciones de fase y frecuencia usando figuras de lissajous.
Otro método para medir, bien sea desplazamiento de fase entre dos señales
sinusoidales, o la frecuencia de una señal desconocida, es la utilización de las curvas
de Lissajous. La técnica puede aplicarse a un CRO de un solo canal y no requiere las
15
escalas de calibración finas que se han considerado anteriormente. Básicamente las
dos señales bajo estudio (para determinar el corrimiento de fase entre las dos señales)
se conectan como las entradas vertical y horizontal del CRO. La señal usual de barrido
horizontal (interna) no se utiliza en esta oportunidad. Un patrón o figura de Lissajous
se desarrolla en el CRT y es utilizado para determinar la cantidad de desplazamiento
de fase o frecuencia de la señal desconocida.
Las técnicas de la figura de Lissajous para medición son más populares para CRO’s
de baja calidad y para osciloscopios de un solo trazo (en donde las dos entradas no
pueden compararse al mismo tiempo). Aunque no tan popular como técnica de
medida, el uso de las figuras de Lissajous es todavía interesante y a veces, útil.
Convertidores digitales/analógicos
Hay un gran número de dispositivos físicos que generan señales de salida
analógicas o continuas. Los ejemplos incluyen transductores de temperatura, presión
y flujo.
En la tecnología actual, los procesamientos de señal se realizan a menudo utilizando
métodos digitales, y luego la señal procesada es vuelta a convertir a la forma
analógica.
Se han ideado muchos tipos diferentes de convertidores de datos que son los
acoplamientos o interfaces entre dispositivos analógicos. Se les utiliza en una amplia
variedad de aplicaciones, incluyendo el control automático de procesos, las
mediciones y pruebas, telemetría de datos y sistemas de comunicación de sonido y
video.
Convertidor en escalera R-2R.
El convertidor D/A resistivo en escalera no requiere un amplio margen de valores
de resistencia; sólo requiere dos valores, R y 2R. Es posible una escalera de
resistencia en forma de un solo encapsulado. Este circuito tiene la interesante
propiedad de que la resistencia hacia cualquiera de las terminales es 3R, estando las
restantes terminales a tierra.
Resolución y precisión.
Una importante especificación de un convertidor D/A es la resolución de que es
capaz. La resolución se define como el menor incremento de tensión que puede ser
discernido por el circuito y depende principalmente del número de bits de la palabra
digital. Ejemplo, en una palabra de 4 bits el LSB tiene un peso de 1/16. Esto significa
que el menor incremento de Vo es una dieciseisava parte de la tensión de referencia
Vr.
Otra especificación de los convertidores D/A es la precisión de conversión, que
depende de la diferencia entre la tensión real de la salida analógica y la salida teórica.
Ésta es una función de exactitud de los resistores de precisión utilizados en la red en
escalera y la precisión es la fuente de tensión de referencia. En la práctica un
16
convertidor debe tener una precisión mayor de
resolución sean compatibles.
+-
1/2 LSB para que la precisión y la
Convertidor digital / analógico de 8 bits el DAC0808
El DAC-0808 es un convertidor de bajo costo y rápido, encapsulado en un
empaque doble de 16 terminales. Sus principios de operación se examinan con
relación a la tarea efectuada por cada una de sus terminales.
Terminales de alimentación de corriente.
Las terminales 13,14 son de suministro positivo y negativo respectivamente y
pueden tener cualquier valor entre +- 4.5 a 18v entre cada fuente y tierra.
+-
Terminales de referencia.
La flexibilidad del DAC se mejora porque tiene dos entradas de referencia en lugar
de una. El usuario puede ajustar la corriente de escalera de entrada al DAC con mucha
facilidad, de 4pA a 4mA.
Terminales de entrada digital.
Las terminales son compatibles con TTL y CMOS, la entrada lógica "O" es de 0 . 8 ~
o menos y la entrada lógica "1" es de 2volts o más.
Registro (buffer) de memoria.
Los registros de sólo lectura o sólo escritura tienen dos estados de operación
transparente o como registro retenedor de tres estados (latch).
Características
- Resolución : +- O. 19% máximo error
- Entradas digitales no inversoras compatibles con TTL y CMOS.
- Rango de voltaje en la fuente de alimentación: +- 4.5 v a +- 18 v.
- Bajo consumo de poder: 33mW (con un voltaje de 5v).
Aplicaciones
Operaciones con referencias positiva, negativa; operación con salida bipolar,
unipolar; interface con familias lógicas; implementación de un convertidor con 2
microseg de tiempo de conversión, etc.
Convertidores analógico/digitales.
En muchas aplicaciones es necesario convertir una señal analógica en una forma
digital adecuada para su proceso en un sistema digital. Se dispone de varios métodos
para este tipo de conversión. A continuación se mencionan dos de los métodos más
usados.
Convertidor A/D controlado por contador.
Uno de los métodos mas sencillos de conversión AíD es el representado por tres
elementos principales: Un contador, un convertidor D/A y un comparador analógico.
El convertidor opera como sigue: En el comienzo de un ciclo, el contador está puesto
17
a cero. éste produce una tensión de salida en el D/A Vb = O que es aplicada a una
entrada del comparador. La entrada analógica es alimentada a través de un circuito de
muestre0 y mantenimiento cuya salida Va es aplicada a la otra entrada del
comparador. En tanto que la señal analógica Va sea menor que Vbb, la salida del
comparador será 1 y una compuerta "AND" se encontrará habilitada permitiendo
que entren en el contador los impulsos del reloj. El contador se incrementará en
sentido ascendente partiendo de cero. Con cada cuenta la salida aumentará un paso o
escalón. Esta cuenta continuará hasta que la forma de onda en escalera exceda del
valor de la señal analógica Va.
Este tipo de contador es relativamente lento, ya que pueden ser necesarios para la
conversión muchos periodos de reloj, tantos como 2("-'). donde 'In" es el número de
bits del convertidor.
I'
Convertidor A/D paralelo o simultáneo (flash).
El Último esquema de conversión A D que se discute, es uno extremadamente
rápido, que permite que ocurra una conversión entera dentro de un periodo de reloj. El
método conocido como conversión paralelo o flash conceptualmente es muy sencillo,
comparadores para que comparen el nivel de la señal de entrada con
utilizando 2("-')
cada uno de los 2("-') niveles de cuantización. Las salidas de los comparadores se
procesan mediante un bloque lógico de codificación para que se proporcionen los "n"
bits de la palabra digital de salida.
Aunque rápido, el método es obviamente antieconómico e impráctico por su gran "n",
sin embargo, variaciones sobre esta técnica se han empleado exitosamente en la
práctica.
Convertidor analógico/digital de 8 bits MC-10319.
Es un convertidor AD tipo Flash de 8 bits de alta velocidad. El dispositivo emplea
una estructura interna de código Gray para eliminar errores en la salida para señales
de cambio rápido en la entrada. Es totalmente compatible con niveles TTL,
requerimiento de 5v en fuente de alimentación y una amplia tolerancia de los valores
negativos de alimentación de -3v a -6v. Salidas TTL de tercer estado permiten manejar
directamente al bus de datos o memoria de entradaísalida común.
Este convertidor contiene 256 comparadores en paralelo conectados en una red de
entrada. Las salidas del comparador se alimentan a un latch donde la red se codifica,
para producir un dato de 8 bits más un bit de desborde. Los datos son retenidos y
convertidos en una salida de tercer estado TTL. El bit de sobreflujo o desborde está
siempre activo para permitir la interconexión con otro ADC-103 19 para implementar
un convertidor de 9 bits.
Aplicaciones.
Despliegue de señales de video y procesamiento de radar, instrumentación de alta
velocidad y transmisión codificada de televisión.
Características.
- Empleo de un código Gray interno para velocidad y resolución.
- 8 bits de resolución.
- Facilidad de interconexión para un convertidor de 9 bits.
- Salidas de tercer estado con niveles TTL complementado con entrada
habilitación.
- Tasa de muestre0 de 25 Mhz.
- Amplio rango de entrada de 1 a 2 Vpp entre +- 2v.
- Baja capacitancia de entrada de 50 pFd.
- Bajo poder de disipación de 618 mW
- conversión simple del ciclo de reloj.
de
19
Generación de señales.
Primera etapa del proyecto. (Proyecto I)
Generación de señales comúnmente utilizadas en prácticas de laboratorio, mediante el
uso de una tarjeta de expansión controlada por una PC.
Objetivo.
El propósito fundamental de este proyecto, es el de ofrecer al usuario final un
sustituto de un generador de funciones convencional, aprovechando las ventajas que
tienen las aplicaciones de las computadoras personales, junto con la implementación
del diseño de un sistema digital.
Descripción de la tarjeta de expansión.
La tarjeta es construida a partir de una serie de bloques que a continuación se
describen:
1. Bloque de control de frecuencia.
Su función es la de recibir datos que le envía el programa. Con estos datos se
controla el tiempo de espera entre cada punto consecutivo de una tabla que se va a
leer.
Este bloque consta de los siguientes elementos:
Un oscilador de cristal (1.8 Mhz).
Un latch de 8 bits 74LS374.
Un comparador de magnitud 8 bits 74LS688.
Un contador binario 12 bits MC4040
2. Bloque de control de longitud de la tabla de datos.
Su función es la de recibir datos que le envía el programa. Con estos datos se
controla la dirección final de la tabla que se va a leer. El bloque también se encarga
de generar el barrido de direcciones en RAM.
Este bloque consta de los siguientes elementos:
Un latch de 8 bits 74LS374.
Un comparador de magnitud 8 bits 74LS688.
Un contador binario 12 bits MC4040
3. Bloque de control de direcciones de RAM
La función de este bloque es la de controlar el acceso al bus de direcciones de la
RAM,evitando así una colisión de direcciones entre PC y Tarjeta de expansión.
Este bloque consta de los siguientes elementos:
Dos latches de 8 bits 74LS374.
Dos buffers de 8 bits 74LS244.
4. Bloque de control de flujo de datos.
20
La función de este bloque es la de controlar el acceso al bus de datos de la RAM,
evitando así una colisión de datos entre PC y Tarjeta de expansión. Además este
bloque controla el sentido del flujo de los datos, es decir, realizar operación de lectura
o escritura en la RAM.
Este bloque consta de:
Un buffer bidireccional de 8 bits 74LS245.
5. Bloque de conversión digitaYanalógica.
Su función es la de controlar el acceso de datos enviados al convertidor D/A, además
de realizar la conversión de los datos digitales en una señal contínua en tiempo.
Este bloque consta de los siguientes elementos:
Un buffer de 8 bits 74LS244.
Un convertidor digital/analógico de 8 bits DAC-0808.
Un amplificador operacional LF-35 1.
3 resistores 5600 ohms.
1 capacitor tantalio 0.1 uf
6. Bloque de control de buffers.
Se encarga de habilitar o deshabilitar tres buffers de la tarjeta.( La habilitación o
deshabilitación de éstos, depende del proceso que se efectúa para el acceso a los
buses de datos y direcciones).
Este bloque consta de:
Un latch de 8 bits 74LS374.
7. Bloque de direccionamiento.
La tarea principal de éste es la decodificación de direcciones de la PC (AO..A15) y
de los bits de control (Rd,Wr,AEN) obteniendo un mapeo de los bloques que integran
el sistema. El mapeo se dispone de la siguiente manera:
Dirección
Función
300h
control de buffers
301h
dirección en RAM
escritura de datos en RAM
302h
lectura de datos en RAM
303h
control del tamaño de tabla
304h
control de tiempos de espera (tel)
305h
306h
reservada (para te2)
307h
inicialización de RAM
Este bloque lo constituyen los siguientes elementos:
Un decodificador 3 a 8 74LS138.
3 compuertas NOR 5 entradas 74LS260.
4 compuertas NAND 2 entradas 74LSOO.
3 compuertas NOT 74LS04.
1 compuerta AND 2 entradas 74LS08.
21
8. Bloque de Memoria.
Se encarga de almacenar los datos que corresponden a la señal que se desea
obtener; Estos datos representan un período de la señal en cuestión. La ventaja
principal del uso de un bloque de memoria, es la de evitar el constante envío de datos
por la PC hacia la tarjeta de expansión.
Este bloque consta de:
1 Memoria RAM 8x8K 6264.
Modo de operación.
El usuario selecciona la señal a generar por el sistema y la frecuencia de operación
de la misma.
El programa calcula una tabla de datos que representa la señal requerida, la cual se
envía a una memoria RAM.
Se realiza un banido de direcciones de esta tabla para recuperar los datos.
Se efectúa la conversión a una señal analógica.
Amplificación de la señal analógica.
La señal analógica amplificada es entonces la que el usuario ha seleccionado.
Características
El sistema contempla la posibilidad de seleccionar entre tres tipos de señales: seno,
cuadrada, y triangular. Además de poder seleccionar una frecuencia de operación en
un rango específico (20- 10000Hz) aproximadamente.
La amplitud de la señal de salida es de un valor fijado por el diseño. (de 4 a 5 volts de
amplitud pico - pico ).
La señal cuadrada puede ser modificada en su ciclo de trabajo, convirtiéndola en señal
rectangular si así se desea.
La señal triangular puede ser modificada en su pendiente.
La tarjeta opera con un oscilador de cristal a 1.83 Mhz.
Voltajes de polarización: 5v y -12v.
Tarjeta compatible para computadoras que dispongan de slot de expansión de 62 pins.
Generación de señales con datos de 8 bits.
Requerimientos de hardware.
Computadora con procesador 286 o superior.
1 Megabyte de memoria disponible en disco duro, para instalación del software de
control de la tarjeta.
Monitor VGA,SVGA Ó W G A .
I
-
--f. J
~
i.., ,!.
,/.
.I
s.,,!
,
! I , : '
i L-,... I.
!
, '
I
T
I
22
Osciloscopio.
Segunda etapa del proyecto. (Proyecto 2)
Implementar una tarjeta de adquisición de datos, que permita obtener una
representación visual de señales analógicas, a través de una P.C.
Objetivo.
El objetivo primordial de este proyecto, es el de ofrecer una alternativa en aparatos
de medición, para la visualización de señales, aprovechando las ventajas que tienen las
aplicaciones de las computadoras personales, junto con la implementación del diseño
de un sistema digital.
Descripción de la tarjeta de expansión.
La tarjeta es construida a partir de una serie de bloques que a continuación se
describen:
1. Bloque de control de frecuencia.
Su función es la de recibir datos que le envía el programa. Con estos datos se
controla el tiempo de espera entre cada punto consecutivo de una tabla que se va a
leer.
Este bloque consta de los siguientes elementos:
Un oscilador de cristal (1.8 MHz).
Un latch de 8 bits 74LS374.
Un comparador de magnitud 8 bits 74LS688.
Un contador binario 12 bits MC4040
2. Bloque de control de longitud de la tabla de datos.
Su fimción es la de controlar la dirección final de la tabla que se va a leer. El
bloque
también se encarga de generar el barrido de direcciones en RAM.
Este bloque consta de los siguientes elementos:
Un latch de 8 bits 74LS374.
Un comparador de magnitud 8 bits 74LS688.
Un contador binario 12 bits MC4040
3. Bloque de control de direcciones de RAM
La función de este bloque es la de controlar el acceso al bus de direcciones de la
RAM, evitando así una colisión de direcciones entre PC y Tarjeta de expansión.
Este bloque consta de los siguientes elementos:
Dos latches de 8 bits 74LS374.
Dos buffers de 8 bits 74LS244.
~
23
4. Bloque de control de flujo de datos.
La función de este bloque es la de controlar el acceso al bus de datos de la RAM,
evitando así una colisión de datos entre PC y Tarjeta de expansión. Además este
bloque controla el sentido del flujo de los datos, es decir, realizar operación de
lectura o escritura en la RAM.
Este bloque consta de:
Un buffer bidireccional de 8 bits 74LS245.
1. Bloque de conversión analógicaídigital.
Su función es la de realizar la conversión de las señales analógicas a una secuencia
de datos.
Este bloque consta de los siguientes elementos:
Un buffer de 8 bits 74LS244.
Un latch de 8 bits 74LS 374.
Un convertidor analógico/digital de 8 bits ADC-MC103 19P
resistencias 1O0 ohms.
resistencias 390 ohms.
capacitores tantalio 0.1 uf
2. Bloque de control de buffers.
Se encarga de habilitar o deshabilitar tres buffers de la tarjeta.( La habilitación o
deshabilitación de éstos, depende del proceso que se efectúa para accesar a los
buses de datos y direcciones).
Este bloque consta de:
Un latch de 8 bits 74LS374.
3. Bloque de direccionamiento.
La tarea principal de éste es la decodificación de direcciones de la PC (AO..A15) y
de los bits de control (Rd,Wr,AEN) obteniendo un mapeo de los bloques que
integran el sistema. El mapeo se dispone de la siguiente manera:
Dirección
308h
309h
3O A h
30Bh
30Ch
3ODh
30Eh
30Fh
Función
control de buffers
dirección en RAM
reservada
lectura de datos en RAM
control del tamaño de tabla
control de tiempos de espera (tel)
reservada (para te2)
inicialización de RAM
Este bloque lo constituyen los siguientes elementos:
Un decodificador 3 a 8 74LS 138.
compuertas NOR 5 entradas 74LS260.
compuertas NAND 2 entradas 74LSOO.
24
compuertas NOT 74LS04.
compuerta AND 2 entradas 74LS08.
7. Bloque de Memoria.
Se encarga de almacenar los datos que corresponden a la señal muestreada que se
desea procesar; La ventaja principal del uso de un bloque de memoria, es la de evitar
la perdida de datos.
Este bloque consta de:
1 Memoria RAM 8x8K 6264.
Modo de operación.
0
0
0
0
0
0
Se conecta la señal a visualizar en la entrada correspondiente de la tarjeta de
expansión.
Se realiza la conversión de la señal analógica de entrada a una señal digital.
Los datos obtenidos por el convertidor se graban en una memoria RAM.
El programa realiza un barrido de direcciones, en que se graban los datos con el fin
recuperarlos.
Se realiza la graficación de los datos visualizandolos en la pantalla de la P.C.
Si la resolución en la pantalla de la señal, dificulta la medición de la misma, se
procede a realizar un cambio en la escala de tiempo, de la ventana de observación.
El cambio en la escala de tiempo se efectúa modificando el tiempo en que se
graban los datos en RAM.Utilizando el bloque de control de frecuencia.
Características
0
0
0
0
0
El sistema permite visualizar señales analógicas en una rango de frecuencia (20Hz40KHz).
La amplitud máxima de la señal de entrada podrá ser de 2v p.p.
La frecuencia máxima, de muestre0 para el convertidor A D .Será de 20MHz.
Voltajes de polarización: 5v y -12v.
Tarjeta compatible para computadoras que dispongan de slot de expansión de 62
pins.
Generación de señales con datos de 8 bits.
Requerimientos de hardware.
Computadora con procesador 286 o superior.
1 Megabyte de memoria disponible en disco duro, para instalación del software de
control de la tarjeta.
Monitor VGA,SVGA Ó UVGA.
..
h
1.:
,
11
t t
_.
I .
1
I
25
LISTADO DEL PROGRAMA
DE INTERFACE PARA EL GENERADOR.
#include <graphics.h>
#include <math.h>
#include <alloc.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio .h>
#include <dos.h>
............................................................
Variables del diseño
/*
*/
............................................................
int b-activo, htri ,hcuadra;
unsigned char tabla,puntos;
double frec;
............................................................
Utilerías del mouse
/*
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
#define MOUSE 0x33
struct HotSpotStruct { int X,Y; };
struct Mousecursor {
struct HotSpotStruct HotSpot;
unsigned ScreenMask[ 161;
unsigned CursorMask[ 161;
>;
struct Mousecursor Arrowcursor= {
{ o,o>,
{ Ox3FFF, OxlFFF ,OxOFFF , Ox07FF,
Ox03FF, OxOlFF , OxOOFF ,Ox007F,
Ox003F, OxOOFF , OxOlFF ,OxlOFF,
Ox30FF , OxF87F, OxF87F, OxFC3F },
{ 0x0000,0x4000,0x6000,0x7000,
0x7800 , Ox7COO , 0~7E00,0x7F00,
0 ~ 7 F 8 0 , 0 ~ 7 E 0 0 , 0 ~ 7 C O0x4600,
O,
0x0600,0x0300,0x0300,0x0180 }
1;
struct mstruc {
int x,y;
int boton;
int show;
} mouse;
.
.
.
*/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.................................
I*
Inicializa mouse
*I
.................................
int mouse-ini() {
union REGS regs;
regs.x.ax = 0x0000;
int86(MOUSEY&regs, &regs);
mouse.boton=regs.x.bx;
mouse.show=O;
return(regs.x.ax);
}
.................................
I*
muestra
*I
.................................
void mouse-show() {
union REGS regs;
if (!mouse.show) {
regs.x.ax = 0x0001;
int86(MOUSE, &regs, &regs);
mouse.show=l ;
}
1
.................................
I*
oculta
*I
.................................
void mouse-hide() {
union REGS regs;
if (mouse.show) {
regs.x.ax = 0x0002;
int86(MOUSE, &regs, &regs);
mouse. show=O;
1
}
void mouse-status() {
union REGS regs;
regs.x.ax = 0x0003;
int86(MOUSE, &regs, &regs);
mouse.boton=regs.x.bx;
m0use.x ==regs.x.cx;
m0use.y =regs.x.dx;
1
.................................
I*******************************/
void mouse-figura(struct Mousecursor Newcursor) {
union REGS regs;
struct SREGS sregs;
regs.x.ax = 0x0009;
regs.x.bx = NewCursor.HotSpot.X;
regs.x.cx = NewCursor.HotSpot.X;
regs.x.dx = FP-OFF(NewCursor.ScreenMask);
sregs.es = FP SEG(NewCursor.ScreenMask);
int86x(MOU&, &regs, &regs, &sregs);
I
...........................................................
Utilerías para la tarjeta
/*
...........................................................
*/
/* control */
void control-t(unsigned char dato) {
asm {
mov dx,0300h
mov a1,dato
out dx,al
I;
}
..........................................................
I*
Direccion de Ram
*/
..........................................................
void dir-ram(unsigned char dato) {
asm {
mov dx,0301h
mov a1,dato
out dx,al
I
>;
.........................................................
Escritura a Ram
/*
*/
........................................................
void w-ram(unsigned char dato) {
asm {
mov dx,0302h
mov a1,dato
out dx,al
1
>;
......................................................
/*
Lectura de Ram
*I
28
unsigned char r-ram() {
unsigned char dato;
asrn {
mov dx,0303h
in a1,dx
mov dato,al
I
return dato;
1;
....................................................
Longitud de la tabla
I*
. */
...................................................
void largo(unsigned char dato) {
asrn {
mov dx,0304h
mov a1,dato
out dx,al
I;
I
.....................................................
Retardo de pulso
I*
.....................................................
*I
void delay-l(unsigned char dato) {
asrn {
mov dx,0305h
mov a1,dato
out dx,al
I
>;
void delay-h(unsigned char dato) {
asm {
mov dx,0306h
mov a1,dato
out dx,al
I
1;
...........................................................
I*
Utilerías para números
*I
...........................................................
char *f-trans-a (double valor) {
int i;
int dec, sign;
int ndig = 10;
29
char "string;
string = ecvt(valor, ndig, &dec, &sign);
while (dec<O) {
for (i=ndig-2;i>O;i--) {
string [i]=string [i- 1] ;
I
I
string[O]='O';
dec++;
/* inserta el punto */
for (i= 8;i>dec;i--) {
string[i]=string[i-11;
I
string[i]='.';
/* inserta cero */
if(dec==O) {
for (i=ndig-2;i>O;i--) {
string[i]=string [i- 1] ;
1
I
string[i]='O';
/* inserta signo
if (sign==l) {
*/
for (i=ndig-2;i>O;i--) {
string[i]=string[i-11;
I
string [i]
='-I;
I
/* come los ceros */
i=ndig- 1;
while ( (string[i]='O')
if (string[i]=='.') {
)I (string[i]=='.') ) {
break;
1
string[i]='\O';
I--'
9
I
return (string);
...........................................................
/*
Utilerías para gráficos
...........................................................
void bottom (x 1,y1,x2,y2) int x 1,y1,x2,y2; {
setfillstyle(SOLIDFILL,LIGHTGRAY) ;
bar (xi ,Y 1,x2,y2);
setcolor(WH1TE);
*I
30
line (xl,yl,x2 ,y1 );
line (xl,yl,xl ,y2-1);
setcolor(DARKGRAY);
line (x2,y2,x2 ,yl+l);
line (x2,y2,x1 ,y2 );
setcolor(BLACK);
1
void invierte (xl,yl,x2,y2) int xl,yl,x2,y2; {
void *ppp;
unsigned int size;
size=imagesize(xl ,y1,x2,y2);
if ( (ppp = malloc(size))!=NüLL ) {
getimage(x 1,Y 1,x2,y2,ppp);
putimage(x1 ,y1,ppp,NOTPUT);
free(PPP);
1
1
..............................................
I*
Inicializa el modo gráfico
*I
..............................................
void inigraficos() {
int gd,gm;
gd=VGA;
gm=VGAHI;
if ( mouse-ini() == O ) { /* verifica existencia del mouse */
clrscr() ;
printf("ERR0R: Se requiere mouse para el uso de este programa (mouse NO
insta1ado)h");
sleep( 1);
printf("
presione cualquier tecla.. .");
getch0;
print f("hh");
exit( 1);
initgraph(&gd,&gm,"");
if ( graphresult() != grOk ) { I* inicializa ambiente gráfico */
clrscr();
printf("ERR0R: No es posible instalar el ambiente gráficos b");
sleep( 1);
printf("
presione cualquier tecla.. .");
getch0 ;
print f( Ynh");
exit( 1);
1
31
...........................................................
Dibuja pantalla pequeña
/*
...........................................................
*/
void drawqantallita() {
int i;
setcolor(YELL0W);
rectangle(389,129,59 1,331);
setfillstyle (SOLIDFILL, 1);
bar(390,130,590,330);
/* cuadrante */
setcolor(8);
setlinestyle( 1,O,O);
for (i=O;i<=l O;i++) {
line (390+i*20,130 ,39O+i*20,330 );
line (390 ,13O+i*20,590 ,13O+i*20);
1
setcolor(8);
setlinestyle(O,O,O);
line (390,230,590,230);
line (490,130,490,330);
for (i=O;i<=lO;i++) line(390+i*20,225 ,39O+i*20,235 );
for (i=O;i<=lO;i++) line(485 ,13O+i*20,495 ,13O+i*20);
1;
............................................................
/*
Función senoidal
*/
............................................................
void dibuja-senoidalo {
int i;
moveto(390,230);
for (i=l;i<=2OO;i++) {
lineto(390+(i* 1),230- 95*sin(6.28*(i/200.0)) );
lineto(390+(i* 1),230- 95*sin(6.28*(i/200.0)) );
1
1;
............................................................
/*
Función triangular
*/
.............................................................
void dibuja-triangular() {
moveto(390,230);
lineto(390+htri, 135); lineto(390+htri, 135);
lineto(590-htri,325); lineto(590-htri,325);
lineto(590,230);
1;
32
f**************************~~******************************f
I*
Función cuadrada
*I
.............................................................
void dibuja cuadrada() {
moveto(390~230);
lineto(39 1,135); lineto(39 1,135);
lineto(390+hcuadra-1,135); lineto(390+hcuadra-lyl35);
lineto(390+hcuadra+1,325); lineto(590+hcuadra+l,325);
lineto(589,325); lineto(589,325);
lineto(590,230);
1;
/**********************************************************f
void modiSl_grafic() {
int posx;
int hl ;
posx=mouse.x;
switch (b-activo) {
case 2 : setwritemode(X0R-PUT);
setcolor(0xF);
hl=htri;
do {
if (posx!=mouse.x) {
hl=hl-(posx-m0use.x);
posx=mouse.x;
1
if (hl < O) hl=0;
if (lOO<hl) hl=100;
if (hl!=htri) {
mouse-hide() ;
dibuja-triangular();
htri=h 1;
dibuja-triangular();
mouse-show() ;
1
mouse-status();
} while (mouse.botan== 1);
setwritemode(COPYPUT);
break;
case 3 : setwritemode(X0R-PUT);
setcolor(0xF);
h 1=hcuadra;
do {
if (posx!=mouse.x) {
hl=hl -(posx-m0use.x);
33
posx=mouse.x;
1
if (hl < 2) hl=2;
if (198<hl) hl=198;
if (hl !=hcuadra) {
mouse-hide() ;
dibuja-cuadrada();
hcuadra=hl ;
dibuja-cuadrada();
mouse-show() ;
}
mouse-status() ;
} while (mouse.boton==l);
setwritemode(C0PY-PUT);
break;
case 4 : { } break;
}
1;
.................................
/*
Despliega frecuencia
.................................
*I
void disp-frec() {
char *mensaje;
mouse-hide();
setfillstyle( 1,15);
bar (132,222,178,238);
mensaje=f-trans-a(frec);
setcolor( O);
settextstyle(SMALL FONT,0,4);
settextjustifj@IGH'f-TEXT,CENTER-TEXT);
outtextxy( 178,230,mensaje);
mouse-show();
>;
void push-fi-ec() {
mousehide() ;
if ((30.0<=frec) && (frec<=99.0)) {
invierte( 55,195, 65,205);
1;
if ((lOO.O<=frec) && (frec<=990.0)) {
invierte( 55,210,65,220);
>;
if ((lOOO.O<=frec) && (frec<=9900.0)) {
invierte( 55,225, 65,235);
>;
if ((10000.0<=frec) && (frec<=99000.0)) {
invierte( 55,240,65,250);
1;
mouse-show();
1;
.................................
void int-fiec() {
if ((lOOOO.O<=fiec) && (frec<=70000.0)) {
frec=frec+l000.0;
1;
if ((lOOO.O<=frec) && (frec<=9900.0)) {
frec=frec+lOO.O;
1;
if ((lOO.O<=fiec) && (frec<=990.0)) {
frec=frec+lO.O;
1;
if ((30.0<=frec) && (fiec<=99.0)) {
frec=frec+l .O;
1;
mouse-hide() ;
if (frec==l0000.0) { invierte( 55,225,65,235);
invierte( 55,240,65,250);
1;
if (frec-1000.0)
{ invierte( 55,210,65,220);
invierte( 55,225,65,235);
1;
if (frec==l00.0) {
invierte( 55,195, 65,205);
invierte( 55,210,65,220);
1;
mouse-show();
disp-frec();
1;
.................................
I* Decrementa la frecuencia
*I
.................................
void dec-frec() {
if ((lO.O<fiec) && (fiec<=l00.0)) {
frec=frec- 1.O;
1;
if ((lOO.O<frec) && (fi-ec<=l000.0)) {
frec=frec-10.0;
1;
if ((lOOO.O<frec) && (frec<=10000.0)) {
frec=frec-100.0;
1;
if ((10000.0<frec) && (frec<=l00000.0)) {
fkec=frec- 1000.0;
1;
if ((100000.0<frec) && (frec<=l000000.0)) {
frec=frec-10000.0;
1;
mouse-hide() ;
if (frec==99000.0) { invierte( 55,240, 65,250);
invierte( 55,255, 65,265);
1;
if (frec==9900.0) { invierte( 55,225,65,235);
invierte( 55,240,65,250);
1;
if (frec==990.0) { invierte( 55,210, 65,220);
invierte( 55,225, 65,235);
1;
if (fiec==99.0) {
invierte( 55,195,65,205);
invierte( 55,210, 65,220);
1;
mouse-show();
disp-fret();
1;
void switch-fi-ec() {
if ( (195<=mouse.y) && (mouse.y<=205) ) {
push-frec() ;
frec=30.0;
push-fi-ec();
1;
if ( (210<==mouse.y) && (mouse.y<=220) ) {
push-frec() ;
frec=100.0;
push-fiec() ;
1;
if ( (225<=mouse.y) && (mouse.y<=235) ) {
push-frec() ;
frec=lOOO.O;
push-fiec();
1;
if ( (240<=mouse.y) && (mouse.y<=250) ) {
push-frec();
frec=lOOOO.O;
push-frec() ;
1;
disp-fret();
1;
.................................
/* Cálculo de señal triangular
"I
.................................
void calcula-tr() {
double delta-calc, fi-eccalc;
double delta-frec, fiec-aprox,reloj ;
int i j ;
reloj=( 1.838e6);
tabla=50;
puntos= 1;
delta-frec=l.7E+300;
fiec-aprox=frec;
for (i=5O;i<25O;i++) {
for (j=l;j<255;J++) {
fiec-calc= 1/((long)i*j/reloj);
delta calc=sqrt((fiec-fiec-calc)*(frec-frec-calc));
if (delta-calc <= delta-fiec) {
delta-frec=delta-calc;
frec-aprox=fiec-calc;
tabla =i;
puntos=j ;
1;
1;
1;
1;
.................................
void codifica() {
float m l ,m2,m3,xO,xl ,x2,x3;
int i,altura;
I* tabla=lOO;
puntos=3; *I
controlt(6);
altura=220;
switch (b-activo) {
case 1: for (i=O;i<tabla;i++) {
dirram(i);
w-ram((long)altura*(( 1+sin(2*3.14*i/tabla))/2));
1;
break;
case 2: xO=O;
x 1=((long)tabla*htri/200);
x2=((long)tabla*(200-htri)/200);
x3=tabla;
if ((xl -xO)>O) {
m l =((altura/2)/(x 1-xO));
for (i=xO;i<xl;i++) {
dir-r am( i) ;
w-ram((long)i*m 1+(altura/2));
1
1;
if ((x2-x1)>0) {
m2=((-altura)/(x2-x 1));
for (i=xl;i<x2;i++) {
dir-ram(i);
w-ram((long)i*m2+(altura-(x
1*m2)));
1;
1;
if ((x3-x2)>0) {
m3=((altura/2)/(x3-x2));
for (i=x2;i<x3;i++) {
dir-ram(i);
w_ram((long)i*m3-(~2*rn3));
1;
1;
break;
case 3: for (i=O;i<((long)tabla*hcuadra/200);i++)
dir-ram(i) ;
w-ram( 150);
{
1;
for (i=((long)tabla*hcuadra/200);i<tabla;i++)
dir-ram(i);
w-ram(0);
1;
break;
case 4: break;
1
{
largo(tab1a);
delay-l(puntos);
controlt( 1);
>;
.................................
.................................
void pantalla() {
int i;
setcolor(0xF);
setfillstyle (SOLIDFILL,7);
bar3d( 30,110,610,350,0,1);
setcolor(O);
rectangle( 3 1,111,609,349);
/* *********** Pantallita ***************I
setcolor( 15);
rectangle(377,117,603,343);
rectangle(380,120,600,340);
rectangle(388,128,592,332);
line (380,340,600,120);
setfillstyle (SOLIDFILL,O); floodfill(38 1,121,15);
setfillstyle (SOLIDFILL,8); floodfi11(593,332,15);
rectangle(388,128,592,332);
setcolor(0);
setcolor(7);
line (380,340,600,120);
line (380,120,600,340);
drawqantallita0 ;
/* **** ** * * *** Botones * ************ * * * * * *J
bottom( 55,135,105,155);
bottom( 115,135,165,155);
bottom( 175,135,225,155);
bottom(235,135,285,155);
/* **** **** botones para la frecuencia * ** *** ** *********/
bottom( 55,195, 65,205);
bottom( 55,210,65,220);
bottom( 55,225, 65,235);
bottom( 55,240, 65,250);
bottom( 55,255,65,265);
setcolor( O);
settextstyle(SMALL_FONT,0,4);
settextjustify(LEFT-TEXT,CENTER-TEXT);
outtextxy(75,200," 10 Hz"); outtextxy(75,215,100 Hz");
outtextxy(75,230," 1 kHz"); outtextxy(75,245," 10 kHz");
outtextxy(75,260,"100 kHz"); bottom( 130,220,180,240);
bottom( 180,220,190,229);
bottom( 180,230,190,240);
setfillstyle( 1,15);
bar (132,222,178,238);
............................
39
bottom( 5,450, 55,470);
bottom( 65,450,115,470);
setcolor( 1);
settextjusti@(CENTER-TEXT,CENTER-TEXT);
settextstyle(2,0,5);
outtextxy(30,460,"EXIT");
outtextxy(85,460,"START");
/****** Seno *******I
moveto( 70,145);
for (i=i ;i<=lO;i++) lineto( 70+(i*2),145-5*sin(6.28*(i/lO.O)));
/****a* triangular *******/
moveto(130,145); lineto(l35,140);
lineto( 15O, 145);
lineto( 145,15O);
*
/* * * * * * cuadrada * * * * * */
moveto( 190,145);
lineto( 190,140); lineto(200,140);
lineto(200,150); lineto(2 1O, 150);
lineto(21O, 145);
/****** nudo *******I
moveto(250,145);
for (i=l;i< lo$++) lineto(250+(i*5/10),145-5*sin(6.28*(i/20.0)) );
for (i=l ;i< 1O;i++) lineto(256+(i*4/10),145+2*sin(6.28*(i/20.0)));
for (i=i ;i< 1O;i++) lineto(26 1+(i*4/10),145-3*sin(6.28*(i/20.0)));
for (i=l;i< 1O$++) lineto(266+(i*3/10),145+6*sin(6.28*(i/20.0)));
/****** frecuencia * * *****/
1;
.................................
void inigarametros0 {
I* lee-ram(); */
invierte (235,135,285,155);
b_activo=4;
htri=50;
hcuadra=lOO;
fi-ec=3O. O;
invierte( 55,195,65,205);
1;
.................................
.................................
void inicializa() {
inigraficos();
caratula();
pantalla();
iniqarametros();
1;
...........................................................
void control-botones(int b) {
if(b-activo!=b) {
mouse-hide();
drawqantallitao;
setwritemode(X0R-PUT);
setcolor(OxF);
invierte( 55+(b activo-1)*60,135,105+@~activo-1)*60,155);
setlinestyle(0,O~NORM-WIDTH);
switch (b) {
case 1 : dibuja-senoidalo;
break;
case 2 : dibuja-triangular();
break;
case 3 : dibuja-cuadrada();
break;
case 4 :
break;
1;
setlinestyle(O,O,NORM WIDTH);
setwritemode(C0PY-PÜT);
b-ac tivo=b;
invierte( 55+(b-activo-1)*60,135,105+(b-activo-l)*60,155);
mouse-show();
}
1;
.................................
void control() {
int s-fin=O;
mouse-show();
do
mouse-status() ;
if (mouse.boton==l) {
/* botones de la forma de la gragica */
if ( (135<=mouse.y) && (mouse.y<=155) ) {
if ( ( 55<=mouse.x) && (mouse.x<=105) ) {
control-botones( 1);
};
if ( (1 15<=mouse.x) && (mouse.x<=165) ) {
control-botones(2);
1;
if ( (175<=mouse.x) && (mouse.x<=225) ) {
control-botones(3);
1;
if ( (235<=mouse.x) && (mouse.x<=285) ) {
control-botones(4);
1;
41
1;
if ( (180<=mouse.x) && (mouse.x<=190) ) {
if ( (220<=mouse.y) && (mouse.y<=229) ) {
int-fiec();
} else {
if ( (230<=mouse.y) && (mouse.y<=240) ) {
dec-fiec();
>;
1;
if ( ( 55<=mouse.x) && (mouse.x<= 65) ) {
switch-frec();
1;
if ( (130<=mouse.y) && (mouse.y<=330)
&& (390<=mouse.x) && (mouse.x<=590) ) {
modiSl_grafic();
1;
envio de la sena1 */
if ( (450<=mouse.y) && (mouse.y<=470)
&& ( 65<=mouse.x) && (mouse.x<=115) ) {
mouse-hide() ;
invierte( 65,450,115,470);
calcula-tr(); codifica();
invierte( 65,450,115,470);
mouse-show() ;
/*
>;
if ( (450<=mouse.y) && (mouse.y<=470)
&& ( 5+mouse.x) && (mouse.x<= 55) ) {
mouse-hide() ;
invierte( 5,45O , 55,470);
s-fin= 1;
1;
1;
while (mouse.boton>O) {
mouse-status() ;
1;
if (kbhit()) { if (getch()=27) {s-fin=l;} }
} while (!s-fin);
mouse-hide() ;
1;
/** * ****** * *** ******PROGRAMA p m C I P A L * * *** ****** * * ******* * * * ****/
voidmain() {
inicializa();
control();
closegraph();
>;
LISTADO DEL PROGRAMA
DE INTERFACE PARA EL OSCILOSCOPIO.
#include <graphics.h>
#include <math.h>
#include <alloc.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
/* Declaración de variables */
double i;
double valdat;
double ii;
char stop;
...........................................................
I*
Utilerías para la tarjeta
...........................................................
*/
I* control */
void controlb(unsigned char dato) {
asm {
mov dx,030dh
mov a1,dato
out dx,al
1
>;
............................................................
Dirección de Ram
/*
............................................................
void dir-ram(unsigned char dato) {
asm {
mov dx,030Bh
mov a1,dato
}
out dx,al
1
*I
43
..................................
I*
Lectura de ram FULL
*I
..................................
unsigned char datoram() {
unsigned char dato;
asm {
mov dx,030Ah
xor a1,al
in a1,dx
1
return dato;
..........................
I*
Lectura de Ram
*I
..........................
unsigned char r-ram() {
unsigned char dato;
asm {
mov dx,030Ah
in a1,dx
mov dato,al
1
return dato;
..............................
I*
Longitud de la tabla
*I
..............................
void largo(unsigned char dato) {
asm {
mov dx,03OCh
mov a1,dato
out dx,al
}
>;
44
/******************************I
I*
Retardo de muestreo
*I
................................
void delay-l(unsigned char dato) {
asm {
mov dx,0308h
mov a1,dato
out dx,al
I;
I
void delay-h(unsigned char dato) {
asm {
mov dx,030Eh
mov a1,dato
out dx,al
I
...........................
I*
Retardo I1 de muestreo *I
...........................
void reset(unsigned char dato) {
asm {
mov dx,03OFh
mov a1,dato
out dx,al
I
I;
45
............................
/*
Inicializa gráficos
*/
............................
void inigraficos() {
int gd,gm;
gd=VGA;
gm=VGAHI;
initgraph(&gd,&gm,"");
if ( graphresult() != grOk ) { /* inicializa ambiente gráfico */
clrscr() ;
printf("ERR0R: No es posible instalar el ambiente gráficos Ui");
sleep( 1);
printf("
presione cualquier tecla.. .");
..................................
/*
Grafica la señal en pantalla
..................................
void pinta() {
for (i=O;i<25O;i++) {
dir-ramti);
control-b(247);
valdat= r-ram();
putpixe1(65+2*i,50+valdat, 1O);
*/
voidmain() {
inigrafícos();
largo(255);
delay-l( 1O)
...............................
I* Dibuja marco de Osciloscopio *I
...............................
rectangle(40,43,590,3 1O);
line(40,340,590,340);
line(65,335,65,345);
line( 115,335,115,345); line( 165,335,165,345);
line(2 15,335,2 15,345); line(265,335,265,345);
line(3 15,335,315,345); line(365,335,365,345);
line(415,335,415,345); line(465,335,465,345);
line(5 15,335315,345); line(565,335,565,345);
,
outtextxy (60,420, ' I . .OSCILOSCOPIO. .");
outtextxy (400,420, PROYECTO TERMINAL I1 ");
rectangle(40,400,5 89,450);
outtextxy (300,360,
while (!kbhit()){
setfillstyle(0,15);
bar(4 1,44389,309);
line(40,176,590,176);
line(3 15,43,315,310);
pinta();
control-b(23 8);
reset(0);
closegraph();
80.000 microseg ");
47
RESULTADOS
OBTENIDOS
DE LAS TARJETAS DE EXPANSIÓX
GENERADOR DE SEÑALES
Y
oscILoscoPIo.
Generador de señales (tarjeta, señales senoidal y cuadrada).
E
Señal
Triangular
Operación de la tarjeta
de expansión
Señal cuadrada
Generador, Osciloscopio y tarjeta de interface.
..
.
.
48
Conclusiones.
Una vez que se realizó la investigación, la planeación y el desarrollo de este
proyecto, se puede reconocer la importancia que tiene el procesamiento de señales en
las diferentes áreas de la electrónica, donde usualmente, estas señales se manipulan
para procesos de medición, generación de señales, estudio de sus características,
capacidad de modificación de las mismas etc. Debido a la diversidad de aplicaciones
que tienen las computadoras personales, se optó por utilizar una de estas aplicaciones,
la cual conjuntamos a través de una interface, con una tarjeta de expansión diseñada
como sistema digital.
Primeramente, la tarjeta de expansión consistió en un sistema generador de señales
analógicas que se usan con frecuencia en prácticas electrónicas, es decir, señales de
tipo sinusoida1,triangular y cuadrada.
A continuación se diseñó una tarjeta que adquiriera señales analógicas, que
mediante un procesamiento, pudiera visualizarse su forma de onda en un monitor de
computadora tal como se representa en un osciloscopio con sus respectivas escalas de
amplitud y tiempo, (sólo de tiempo para el diseño).
Respecto al sistema generador de señales: por una parte, se logró que la tarjeta
pudiera ser controlada eficazmente por el software propuesto para estos fines; también
se consiguió que la frecuencia requerida por el usuario para la señal a generar, tuviera
una buena aproximación al valor deseado. Otra característica de este sistema, es la
capacidad de generar cualquiera de las tres señales que se mencionaron antes, incluso,
en el caso de las señales triangular y cuadrada, se pudo modificar la pendiente y el
ciclo de trabajo respectivamente.
Una de las limitantes de esta tarjeta fue la de contar con un rango relativamente
pequeño de frecuencias para las señales a generar (20Hz-1OOkHz). También se ve
limitado este sistema por la imposibilidad de controlar la amplitud de la señal a
generar, ya que se fijo a un valor especifico.
En cuanto a la tarjeta de expansión diseñada para el osciloscopio, se pueden
visualizar en la pantalla de la PC las señales de entrada para el sistema, que se
encuentren dentro de un rango especifico de frecuencia (20Hz-40kHz). Además se
logró que las señales adquiridas no sólo se pudieran visualizar, sino también efectuar
la lectura indirecta de la frecuencia a través de la escala de tiempo. Este sistema tiene
las desventajas de: no poder manejar señales con amplitud mayor a 2Vpp, deficiencia
en la calidad de la señal al ser desplegada en pantalla, originada por ruido inducido al
sistema, e incapacidad para lectura de amplitud.
Finalmente aclaramos, como en un principio, que el diseño de estos sistemas no es
para sustituir por completo a los instrumentos de medición ya conocidos; ya que estos
sistemas tienen algunas limitaciones en cuanto a los rangos de frecuencia con los que
operan, y no cuentan con todas las características de los dispositivos comerciales. Lo
que sí es necesario mencionar, es que la implernentacion de estas tarjetas de expansión
constituyen una de las aplicaciones de las computadoras personales, las cuales no sólo
realizan las tareas comunes que todos conocemos, sino que son versátiles.
49
Bibliografa
Barkakati & Hyde. Microsoft Macro Assembler Bible, Sams, 2a edición, 1993.
Weiskamp dz Heiny. Gráficaspoderosas con Turbo C+ +, Limusa, 1a edición,
1994
Manual de referencia. Fast and LS TTL Data, Motorola, 1a edición, 1992.
Manual de referencia. Interface/Linear device Data, Motorola, 1". Edición, 1992.
Manual de referencia. Memory Devices, Intel,1a edición, 1993.
0
Pallas, Areny Ramon. Instrumentación electrónica básica,Marcombo,1987.
Diefenderfer, James A. Guia de Intrumentación Electrónica, Interamerkana, 2"
Edición, 1987.
Tocci, Ronald J. Sistemas Digitales, Prentice Hall, 3". Edición,1985.
Schilling, Donald. Circuitos Electrónicos, Marcombo, 2a. Edición, 1989.
Sedra, Adel S.Dispositivos Electrónicos y Amplificadores de Señales, Mc. Graw
Hill, 1". Edición, 1989.
0
Boylestad, Robert. Electrónica teoría de circuitos, P. Hal1,l" ed.,l989.
Descargar