Osciloscopio USB con interfaz gráfica en Labview
DESCRIPCIÓN DEL DISPOSITIVO
El osciloscopio está compuesto por cuatro elementos los cuales fueron escogidos y diseñados para aseguran el mejor rendimiento posible del dispositivo, estos son:
1) Una fuente de alimentación universal para impresoras HP de +15 y +32 Voltios.
2) Un circuito acondicionador de señal.
3) Un circuito controlador para la medición y transmisión de datos hacia el computador.
4) Interfaz gráfica en Labview.
Vamos a analizar cada uno de estos elementos para tratar de entender por qué se seleccionaron y cuáles fueron los criterios de diseño de los circuitos.
FUENTE DE ALIMENTACIÓN:
El primer elemento escogido fue la fuente de alimentación, se seleccionó una fuente de impresoras HP universales esto debido a que son fáciles de portar, ocupan muy poco espacio, son muy baratas, muy fáciles de conseguir, muy poco ruidosas y principalmente para evitar la construcción de una fuente de alimentación lineal, ya que estas presentan muchos inconvenientes tales como; son muy robustas, pesadas, ruidosas y generan un consumo de potencia extra debido al calentamiento de los dispositivos que la conforman, además, si se fuera a vender este dispositivo, se le aseguraría al cliente que el único elemento que debe comprar es el osciloscopio, además en caso de avería de la fuente, no tendría que recurrir a la compra de esta en una tienda electrónica especializada sino que simplemente tendrá que ir a cualquier lugar donde vendas dispositivos electrónicos y adquirir a muy poco precio la nueva fuente, de entre las muchas fuentes de alimentación de impresor en el mercado se escogió las de HP debido a que son las más populares y económicas.
CIRCUITO ACONDICIONADOR DE SEÑAL:
Este circuito es el encargado de acondicionar la señal proveniente de la punta lógica para que sea entregada de forma segura y eficaz al circuito controlador, para este fin se usaron amplificadores operacionales en distintas configuraciones, con las cuales se aisló, invirtió, sumó, atenuó o amplifico la señal de entrada, este circuito es el único alimentado con la fuente de impresora, de la cual se utilizan solo los +15V, con este circuito se pueden leer tensiones de hasta 80V, tiene varios dispositivos de protección como un fusible en caso de corto circuito, resistencias para la disminución de tensión, ya que el amplificador operacional solo funciona hasta 7V de entrada, tiene dos potenciómetros, uno para atenuar la señal de entrada en caso de que sea muy grande y otro para amplificarla en caso de que sea muy pequeña, como el amplificador operacional trabaja con fuente dual y la fuente de entrada solo entrega una tensión positiva se empleó un circuito integrado inversor de tensión cuya referencia es ICL7660, de esta forma se aseguran hasta +/- 10V para alimentar el amplificador operacional (LM324), hay también tres trimmers de los cuales uno es para fijar la tensión de alimentación de los circuitos integrados la cual es de máximo 10V debido a que es la máxima tensión con la que se puede alimentar el circuito inversor de tensión, otro fija la referencia de voltaje para el conversor análogo digital del microcontrolador y el último fija un nivel de tensión negativo necesario para sumar la señal de entrada y convertirla en un nivel siempre positivo, el circuito esquemático y la tarjeta diseñados en EAGLE son los siguientes:
CIRCUITO ESQUEMÁTICO:
BOARD:
Descripción de la tarjeta acondicionadora de señal:
De esta tarjeta salen tres señales hacia la tarjeta de control, una que lleva la señal de salida del circuito acondicionador de señal la cual está limitada a máximo 3,2V por un diodo zener con el fin de proteger el canal analógico del microcontrolador contra sobre tensiones, otra que lleva la tensión de referencia para el conversor análogo digital, la cual está limitada a máximo 5,1V con un diodo zener para proteger contra sobre tensiones y otra que lleva la tierra de este circuito, las tierras están unidas para disminuir ruido y manejar la misma referencia.
La ecuación que describe el circuito acondicionador de señal es la siguiente:
Vo = AV * Vint + Vx
Donde:
AV = Es la ganancia de voltaje fijada por los potenciómetros de atenuación y amplificación.
Vint = Es la tensión de entrada atenuada por el divisor de voltaje después de la punta lógica.
Vx = Es la tensión que se le suma a la de entrada ya amplificada o reducida para subirla en un nivel DC positivo.
Vo = Tensión de salida hacia el microcontrolador, la cual está limitada a máximo 3,2V por un diodo zener.
CIRCUITO CONTROLADOR:
Este circuito es el encargado de leer la señal analógica o digital transmitida desde el circuito acondicionador de señal, esta entra al canal ADC0 del microcontrolador, los niveles de referencia para la conversión de la señal llegan también desde el CAS y puede tener un nivel máximo de 5V,la resolución del ADC es de 10 bits y se está muestreando a 64 microsegundos, esta tarjeta es relativamente sencilla, tiene un conector de 4 puestos al cual llegan las señales provenientes del CAS, otro de 6 el cual es solo para programación, un cristal de cuarzo de 4Mhz, un microcontrolador PIC18f2550, dos jumper, de los cuales uno es para habilitar el paso de tensión desde el bus USB del computador(Rojo) y otro para reset(Blanco), tres diodos led, verde difuso, azul a chorro, amarillo a chorro, con estos, se pueden determinar varios estados, el verde, indica que hay tensión en el bus y que la tarjeta esta energizada, cuando la tarjeta se conecta al bus enciende el led azul indicando que el PC está enumerando el dispositivo, cuando ha sido enumerado, el led azul se apaga y enciende el amarillo y empieza la transmisión de datos desde el dispositivo, hay un estado más aparte de los ya mencionados y es cuando el PC haya enumerado el dispositivo pero por algún motivo el bus quite la enumeración, se reinicie, apague, o algo por el estilo, cuando pase esto, el led azul y amarillo empiezan a parpadear, el conector USB es del tipo que usan las impresoras, el resto de componentes son solo algunas resistencias y condensadores.
La programación del microcontrolador fue realizada en CCS, lenguaje C, se usaron las librerías incluidas con el programa para hacer uso del protocolo USB, el cual en este caso fueron las librerías encargadas de generar un dispositivo CDC (COMMUNICATIONS DEVICE CLASS) con el cual se simula un puerto serial COM, cuya dirección es asignada por el PC después de ser enumerado, las características de transmisión son; 9600 Baudios, 8 bits de datas, un bit de START y uno de STOP, sin paridad ni control de flujo.
Descargar la programación de:
Los planos diseñados en EAGLE son los siguientes:
En resumen, el funcionamiento de esta tarjeta es el siguiente, después de que el dispositivo ha sido conectado y enumerado por el PC, se lee desde el CAS la tensión de referencia y el valor de tensión de la señal, se almacena el dato del ADC en una variable entera, la cual es posteriormente transformada en carácter para ser enviada por el puerto, dependiendo del valor de esta, se deben completar con ceros el dato total para transmitir 4 caracteres puesto que son el número de datos que se leen en la interfaz de Labview, son cuatro datos puesto que la variable del ADC va desde 0 hasta 1023, así, si el dato es 58, debe enviarse un total de dos ceros, el dato a transmitir seria entonces 0058, si el dato leído fuera 485, debe enviarse un total de un cero y el dato a transmitir seria 0485 y así sucesivamente.
INTERFAZ GRAFICA EN LABVIEW:
La interfaz gráfica fue realizada en Labview 2009, es relativamente sencilla, consta de tres paneles con los cuales se configuran y ordenan todos los datos para su posterior análisis y graficación, estos paneles son, el panel de control, el panel de recepción de datos y el de control de gráfica.
Panel de control:
Es el panel más importante de todos y en el cual se configuran las características de nuestro dispositivo de entrada (OSCILOSCOPIO USB), estas son; dirección asignada por el Host (PC), velocidad de transmisión de datos, cantidad de bits de datos en la trama, uso de paridad, bits de parada y control de flujo de datos.
Después de conectar el dispositivo al PC, verificamos la dirección COM que le ha asignado el computador a este, para esto, vamos al administrador de dispositivos y le damos doble click en los dispositivo LPT y COM, doble click sobre OSCILOSCOPIO USB y ahí nos dirá la dirección asignada, después abrimos la interfaz y simplemente escogemos esa dirección en la caja SELECCIONAR DISPOSITIVO, de esta manera a quedado configurado el aparato en la interfaz, el resto de opciones no son necesarias modificarlas puesto que son las mismas con las que ha sido configurado el microcontrolador.
Panel de recepción de datos:
Este panel aporta información muy importante para el análisis de los datos de entrada, el indicador DATO RECIBIDO permite visualizar el dato que se está transmitiendo desde el microcontrolador, en teoría debería ser un dato entre 0 y 1023, correspondientes a los números entre los que puede variar el dato del canal analógico, pueden verse datos fuera de este rango, los cuales son errores de transmisión, pero serán ignorados por la interfaz, el indicador TENSION visualiza el valor de tensión correspondiente al dato recibido por el canal analógico del microcontrolador, es determinado por la ecuación:
De esta manera, el valor máximo de tensión que se visualizara en la gráfica será el presente en VREF, el valor del control VREF es el valor real medido en el pin 5 del microcontrolador y el cual es definido por un trimmer presente en la tarjeta del CAS, puede ser un valor entre 1V y 5V, es ajustable para mejorar la nitidez de la señal de entrada.
El último componente de este panel es el botón GRAFICAR, el cual sirve para pausar la captura de datos a través del puerto, es útil para analizar la señal en un instante de tiempo determinado.
Panel de control de gráfica:
Este panel permite al operador realizar cambios sobre la gráfica en la cual se visualiza la señal de entrada, está compuesto por dos diales y un control numérico, el primer dial EJE sirve para mover el eje de la señal (color azul) sobre el cual oscilará, el dial POSICION, multiplica la señal de entrada por un valor entre 0,1 y 1,2 esto sirve para subir de nivel una señal DC o amplificarla en su amplitud.
Labview es un programa especializado en instrumentación y control, se programa en lenguaje G (Grafico), el cual es muy intuitivo, se escogió este programa porque es muy usado por ingeniería electrónica, a diferencia de otros los cuales son más usados por ingenieros en sistemas, al realizar una interfaz en Labview, se generan dos paneles, uno en el cual están todos los botones, controles, graficas, etc, es el panel frontal y el otro en el cual se realiza la programación es el diagrama de bloques, los drivers se manejan mediante el modulo visa al igual que aplicaciones electrónicas especializadas mediante módulos separados.
Para probar el circuito puede realizar la simulación en proteus y usar el archivo ejecutable de la interfaz, simplemente se debe cargar el archivo .hex generado en ccs y correr el programa, la versión de proteus en la que se realizó la simulación es 7.7, no olviden instalar el virtual USB que viene con proteus para que puedan simular el USB del dispositivo.
Archivos alojados en:
Las partes que constituyen el diagrama de bloques son:
1) Configuración del puerto y tiempo de filtro:
Esta primera parte configura el puerto, son los equivalentes al panel de control, las únicas variables que no tienen equivalente son la habilitación de la terminación char y tiempo fuera, la terminación char, habilita el reconocimiento de caracteres tipo char, no está en el panel de configuración, ya que si se coloca en false, no se leerán datos que puedan ser interpretados por el usuario, tiempo fuera, sirve para mostrar un mensaje de error si no se recibe ningún dato en el puerto durante el tiempo especificado en esta caja.
El tiempo de filtro, sirve para disminuir los errores de lectura debidos a la transmisión asíncrona entre el microcontrolador y el PC, mientras más rápida sea la transmisión más errores serán leídos, es por eso que realizando una espera entre lecturas, se reducirá el trucaje de datos debido a la alta frecuencia.
2) Cuerpo principal del programa:
El cuerpo principal esta anidado en una estructura CASE, el caso es falso o verdadero dependiendo del estado del botón GRAFICAR, si es FALSE:
La información es ignorada y el puerto pasa a ser cerrado directamente, el botón GRAFICAR se encuentra en el panel de recepción de datos y es del tipo BOOL, si por el contrario el caso es TRUE, la información es trabajada como se ve en la primera captura, lo primero que se hace es leer los datos almacenados en el buffer el cual almacena la cantidad de datos especificados en la entrada byte count, para este caso, 4, después de visualizan para que el usuario pueda hacer un análisis de los datos que están ingresando, estos datos llegan en formato char, por lo cual deben convertirse en números enteros (desde 0 a 1023), posteriormente se realiza otro filtro para ignorar los datos que se salgan del rango de trabajo, el último paso convierte los datos recibidos en un valor de tensión el cual será linealizado usando la referencia del ADC del microcontrolador y la resolución a la cual trabaja (10 bits = 1023), la ecuación que realiza la conversión es:
Tensión = Dint * Vref/1023
La variable POSICIÓN que se encuentra en el panel de control de gráfica multiplica este valor para ampliarlo o atenuarlo en la gráfica, la variable eje muestra un eje el cual se puede modificar para referenciar la oscilación de una señal senoidal o DC positiva y negativa, para terminar, simplemente se cierra el puerto para permitir una lectura de datos nueva.
No hay comentarios.:
Publicar un comentario