See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/272831037 Sistema de medición y adquisición de datos mediante microcontrolador PIC e interfaz USB para el análisis de señales Conference Paper · November 2005 CITATIONS READS 0 1,797 3 authors, including: Ricardo Francisco Martinez-Gonzalez Veracruz Institute of Technology 20 PUBLICATIONS 47 CITATIONS SEE PROFILE Some of the authors of this publication are also working on these related projects: Design of Pseudorandom Noise Generators View project Self-equipment View project All content following this page was uploaded by Ricardo Francisco Martinez-Gonzalez on 28 February 2015. The user has requested enhancement of the downloaded file. Sistema de medición y adquisición de datos mediante microcontrolador PIC e interfaz USB para el análisis de señales. Sergio Adrián López Hernández, Ricardo Martínez González, Ing. Miguel Valerio Canales * *Asesor en la Investigación y Desarrollo del Proyecto Instituto Tecnológico de Veracruz, Ingeniería Electrónica Calzada Miguel Ángel de Quevedo No. 2779 Veracruz, Veracruz C.P. 91860, México [email protected] Resumen - En éste artículo se presenta el diseño de un instrumento virtual capaz de obtener la respuesta de dispositivos electrónicos en un intervalo discreto de tiempo y posteriormente representarla en forma gráfica en la pantalla de la PC, mediante un software de uso especifico, encargado de controlar el hardware y recibir de él los datos para su análisis y manejo. Una de las características principales del proyecto es que tanto las señales de control como de datos viajan por el puerto USB de la computadora, el cual es en este momento, uno de los estándares mas utilizados para la conexión de dispositivos externos a una PC. Se analizan también los alcances y limitaciones del proyecto, así como soluciones para su correcta implementación. Palabras Clave – Interfaz de control, Microcontrolador PIC, Interfaz USB, Osciloscopio virtual, Sistema de Adquisición de Datos. I. INTRODUCCIÓN La adquisición de datos es el proceso que involucra la recopilación de información de forma automatizada a partir de fuentes de medición análogas y digitales como sensores y dispositivos bajo prueba [1]. Consiste básicamente en tomar un conjunto de variables mensurables en forma física y mediante una etapa de acondicionamiento de señal adecuarlas a formato digital para procesarlas, almacenarlas y representarlas de forma gráfica para su análisis posterior. La adquisición de datos se puede llevar a cabo mediante tarjetas PCI o ISA exclusivas para computadoras de escritorio o por tarjetas PCMCIA para computadoras portátiles, o mediante puertos externos como el RS-232, el puerto paralelo o los puertos USB. II. APLICACIONES El módulo de adquisición de datos desarrollado puede ser empleado como una herramienta que proporcione las curvas características de dispositivos electrónicos, brindando al diseñador, la respuesta del dispositivo de forma particular de modo tal que realice los ajustes necesarios en los cálculos para disminuir las probabilidades de error en los sistemas a implementar, sin la necesidad de recurrir a instrumentos mas costosos disponibles en el mercado. El dispositivo puede ser empleado también como osciloscopio virtual, mediante la obtención de muestras de la señal de entrada y la representación de forma grafica en el dominio del tiempo a través del software encargado de la interfaz de control con el módulo. El software de control permite además el poder aplicar filtros digitales a la señal almacenada y observar la respuesta de los mismos de forma tal que si se le estuviera aplicando el filtro a la señal de manera directa. III. OBJETIVOS Proporcionar al diseñador una herramienta capaz de medir las características de un dispositivo en particular con el fin de que estos datos sean considerados en el momento de realizar los cálculos en el diseño de un sistema y de este modo evitar que se presenten comportamientos inesperados o que la precisión se vea afectada. Emplear lo mas reciente en cuanto a estándares de comunicación entre dispositivos electrónicos y la PC, mediante el uso del puerto USB, debido a que el puerto RS232 no se encuentra presente en computadoras portátiles de modelo reciente, logrando un instrumento capaz de adaptarse a los sistemas actuales. Construir un prototipo de un sistema de adquisición de datos de bajo costo, el cual cuente con la opción a expandirse en cuanto a hardware y software sin modificar el diseño original, mediante la elaboración de un diseño con arquitectura modular en la cual sus componentes y terminales de interconexión se encuentren distribuidas por bloques encargados de realizar tareas especificas, independientes unos de otros y ligados entre si por un circuito de control mediante un microcontrolador con numerosas terminales de I/O. IV. DESCRIPCIÓN DEL MÓDULO Los componentes que conforman el sistema de medición y adquisición de datos se ven representados en el diagrama a bloques que se muestra en la Fig. 1, los cuales se describen mas adelante. o viceversa. Los tiempos de establecimiento de nivel bajo a alto (TPLH) y de nivel alto a bajo (TPHL) se definen como el tiempo que tarda un nivel de voltaje en cambiar de un nivel de voltaje considerado como un determinado estado lógico al nivel de voltaje que representa el estado contrario. Puesto que la transición no se realiza de forma ideal se desarrolla un circuito capaz de medir el tiempo que tarda el pulso en pasar de un estado a otro. A) Descripción del circuito. Fig. 1. Diagrama a bloques del módulo. 1) Circuito de control de la interfaz USB. Consta de un microcontrolador PIC gama media, PIC16LF877A, el cual se comunica mediante el puerto USART a través de una conexión serie asíncrona con el módulo de electrónica híbrida SMD-USB-QS-S de Linx Technologies encargado de convertir los voltajes TTL al protocolo USB, comunicándose con el microcontrolador a una tasa de baudios de 33.6Kbps y con la PC usando el protocolo USB 2.0 a una tasa máxima de transferencia de 3Mbps. El PIC es el encargado de recabar la información proporcionada por los circuitos que complementan al módulo, haciendo uso de su memoria RAM interna, para posteriormente enviarla a la PC, en donde se realizaran los cálculos pertinentes. El circuito cumple entonces con funciones de interfaz de transmisión, transceptor USB y almacenamiento de datos. Fig. 2. Circuito de control de la interfaz USB. 2) Circuito para medir tiempo de respuesta de dispositivos. Por lo general los dispositivos electrónicos, aun siendo parte del mismo lote de producción, tienen diferencias en cuanto a la respuesta que presentan unos con otros, por lo que el fabricante establece un rango o tolerancia, el cual aparece en las hojas de datos. Esto puede ser un factor despreciable en la mayor parte de las aplicaciones, sin embargo, en algunos casos, en donde se requiere cierta precisión, estas variaciones pueden reflejarse en comportamientos inesperados del sistema. Los niveles lógicos son representados con niveles de voltaje y por lo tanto distan mucho de ser cambios ideales de 0 a 1 El circuito además de encargarse de la medición de tiempos de respuesta es capaz de medir niveles de voltaje de DC, por lo que puede ser empleado como un voltímetro digital, además de que si se coloca una resistencia de valor conocido en serie a la salida de ciertos circuitos, es posible medir corriente. La parte medular esta conformada por el DAC7541, convertidor digital a análogo de 12 bits y su circuito de control implementado mediante contadores up/ down. Se emplean contadores ya que los circuitos de carga serial para el DAC tienen el inconveniente de que las operaciones son lentas, debido al tiempo que se demora en transferir la información hacia adentro y hacia fuera de los registros de desplazamiento, además, si se considera un sistema digital en modo serie, al momento de pasar los datos en paralelo, un uno presente en el LSB del DAC, deberá recorrer todas las posiciones desde la mas significativa hasta llegar a su destino, lo que origina niveles transitorios de voltaje indeseables a la salida. El circuito consta de 2 registros 74LS164 los cuales llevan a cabo la operación de precarga de contadores, estos últimos presentan una disposición en cascada, para manejar 12 bits de resolución. Mediante el microcontrolador se envían pulsos a las terminales de conteo ascendente o descendente, para alterar únicamente las terminales del DAC que se ven afectadas de forma directa, evitando así el problema de la carga en serie de registros. El voltaje a la salida del DAC es un nivel de DC que varía de 0 a 8V, el cual se introduce a la terminal negativa de un comparador diferencial LM311, para llevar a cabo mediciones con respecto a una señal de entrada que se introduce en su terminal positiva. Debido a que el comparador trabaja en el orden de los nanosegundos, es ideal para una precisión de los datos que puedan ser recopilados mediante este circuito, como son mediciones de voltaje de DC, y tiempos de respuesta de dispositivos en transiciones ascendentes y descendentes. Fig. 3. Circuito para medir voltajes y tiempos de respuesta. 1. Algoritmo para la medición de voltaje de salida de un dispositivo. Para conocer el voltaje máximo de la señal de salida de un dispositivo electrónico, se le aplican un nivel de referencia (inicialmente 0V) y la señal de salida del dispositivo a un comparador diferencial, el cual presenta un nivel de voltaje igual a 5V en su terminal de salida, mediante un DAC de 12 bits se va incrementando el voltaje de referencia hasta que la salida del comparador sea de 0V, el microcontrolador se encarga de contar la cantidad de pulsos enviados al circuito del DAC, la computadora recibe el numero de pulsos y realiza los cálculos de acuerdo a la resolución del DAC y su voltaje de referencia para conocer el valor de voltaje máximo de la señal de salida de un dispositivo electrónico en particular. 2. Algoritmo para medir tiempo en función de niveles de voltaje. La señal de salida del dispositivo a analizar es mandada a estado bajo, mediante el circuito del DAC de 12 bits se fija un nivel de voltaje DC, se excita al dispositivo para que realice la transición a nivel alto y se inicia un contador en el microcontrolador, en el momento del cruce de ambas señales el comparador diferencial pone su salida a un valor de 5V y se detiene el contador, el valor del contador se le envía a la PC, la cual tomando como referencia la frecuencia de oscilación del microcontrolador realiza los cálculos del tiempo que toma a la señal en alcanzar el voltaje predefinido. 3. Algoritmo para calcular el tiempo de respuesta de un dispositivo. Fig. 4. Diagrama a bloques del sistema de adquisición de datos por USB. Basa su funcionamiento en un convertidor análogo a digital ADC tipo flash de 4 bits, debido a que este tipo de convertidor es el que posee el tiempo de respuesta mas corto, del orden de los nanosegundos, brindando al microcontrolador una gran cantidad de muestras, garantizando no perder detalle de cualquier variación que ocurra en la señal introducida. A) Funcionamiento del circuito. Para realizar el ADC tipo Flash es necesario 2n comparadores, se emplean comparadores diferenciales de alta velocidad LM311; siendo n el número de bits de resolución del mismo, por lo cual este tipo de convertidores es de un costo elevado y de difícil implementación, ya que para una mayor resolución es necesario generar escalones mas pequeños y menos notorios, lo que incrementaría de manera significativa el numero de comparadores a utilizar. Debido a que se implementa un convertidor con 4 bits de resolución se requiere de 16 comparadores, presentando una resolución pequeña aunque con la capacidad de muestrear señales a altas velocidades. En la terminal positiva de los comparadores se introduce la señal a capturar, y en sus terminales negativas se emplea un arreglo resistivo de divisor de voltaje, proporcionando una resolución de 0.3333V entre escalones, en base a un voltaje de referencia máximo de 5V, el cual es una de las variables a considerar en la etapa de acondicionamiento de la señal, puesto que si este voltaje es regulable, es posible abrir o cerrar el rango de los escalones, para ajustarse a los valores máximos de la señal de entrada que se desee representar. A continuación en la Fig. 5 se muestra el circuito empleado para esta etapa del módulo. La señal de salida del dispositivo a analizar es mandada a estado alto, posteriormente se calcula su voltaje máximo, conociendo ese valor se le envía a la PC, la cual se encarga de calcular el 10% del voltaje total y el 90% del mismo. Mediante el DAC de 12 bits se fijan esos niveles de voltaje y se mide el tiempo que tarda la señal en alcanzarlos. Posteriormente se envían a la computadora dichos tiempos, la cual se encarga de realizar la diferencia para calcular el Δt del dispositivo, de esta forma es posible conocer el tiempo de respuesta para cualquier transición, ya sea de 0 a 1 o viceversa. 3) Circuito de adquisición de datos para graficar la forma de onda de una señal. A continuación, en la Fig. 4 se pueden observar las etapas que conforman el circuito empleado para la adquisición de datos [2]. Fig. 5. Comparador Flash de 4 bits. Posteriormente se presenta una etapa de cuantificación del voltaje de entrada, para ello se recurre a un codificador de prioridad el cual se encarga de mostrar en sus salidas cual fue el comparador de mayor peso que esta activo. Se implementa mediante una GAL20V10, a la cual se le programa la tabla de verdad que se muestra en la Tabla I. Las terminales de salida de la GAL se conectan con el microcontrolador, el almacenamiento de estos valores por parte del PIC se realiza con el menor número de instrucciones, brindando un incremento en la velocidad, favoreciendo el número de muestras de la señal a capturar. Tabla I. Arreglo programado en una GAL20V10 como codificador de prioridad. Entrada MSB Salida MSB LSB LSB 0000000000000000 0000000000000001 0000000000000011 0000000000000111 0000000000001111 0000000000011111 0000000000111111 0000000001111111 0000000011111111 0000000111111111 0000001111111111 0000111111111111 0001111111111111 0011111111111111 0111111111111111 1111111111111111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 A. Comunicación con el módulo USB. En cuento a las consideraciones en la velocidad del circuito, en el microcontrolador la captura de datos se implementa mediante 3 instrucciones. INCF MOVFW MOVWF FSR, 1 PORTC INDF ; incrementa dirección de memoria ; lee el puerto de entrada de datos ; guarda el dato en memoria El PIC consume cuatro ciclos de reloj por instrucción, por lo tanto, se tienen 12 ciclos de instrucción para la toma de cada muestra [3]. La velocidad de almacenamiento de datos que puede alcanzar el PIC depende del cristal de oscilación empleado y se puede calcular mediante la formula: tm 12 fosc tarea de procesamiento al microcontrolador y poder realizar muestras a velocidades mayores. V. SOFTWARE DE CONTROL El software de control esta desarrollado en Visual Basic 6.0 y Measurement Studio 6.0, se encarga de enviar datos desde la PC hasta el módulo USB, a través de llamados a librerías dinámicas DLL y de recibir los datos que le envía el microcontrolador a la PC para su procesamiento, análisis y representación. (1) El microcontrolador PIC16LF877A soporta como máximo un cristal de 20Mhz, en base a la formula (1) se obtiene que el tiempo de muestreo es de: tm 0.6s El microcontrolador va a estar recopilando los códigos que le envía la GAL de forma continua a una velocidad de muestreo de 0.6µs (1.66MS/s) durante 25.2µs es decir recopila 42 muestras de señal, las almacena en la memoria RAM del microcontrolador y las envía a la PC para que esta realice el procesamiento de los datos y los represente de forma grafica mediante software en un osciloscopio virtual, posteriormente se realiza una nueva toma de muestras y envío de las mismas; el proceso se repite hasta presionar el botón de “Detener medición” mediante el software de control. El microcontrolador se emplea como un dispositivo encargado de organizar el almacenamiento, tráfico y manejo de datos, mientras que el software de la computadora actúa como interfaz grafica de usuario, además de realizar los cálculos, conversiones e interpretación de códigos, con el objetivo de librar de la La comunicación con el módulo USB se realiza llamando funciones de la librería FTD2XX.DLL, la cual contiene las instrucciones para configurar la memoria E2PROM del módulo, así como instrucciones estándar de manejo de información. Para enviar información al módulo USB se utiliza la instrucción FT_Write( ), la cual escribe el buffer de transmisión de módulo USB, se cuenta con 128 bytes de transmisión disponibles, los datos son extraídos posteriormente por una UART FIFO y transmitidos en forma asíncrona a una tasa de transferencia definida en el software de programación. La única limitante de la velocidad es la tasa de baudios que soporta el oscilador del PIC, la cual debe proporcionar una transmisión confiable en cuanto a probabilidad de error se refiere. Para recibir información de parte del módulo se emplea la instrucción FT_Read( ), la cual almacena en una variable de tipo cadena el byte recibido, posteriormente debe ser representado en binario o en decimal para interpretar su valor, procesarlo y visualizarlo de forma grafica. El módulo USB presenta en sus terminales de transmisión (TX) y recepción (RX) niveles de voltaje TTL, por lo que no necesitan de circuiteria adicional para interactuar con un microcontrolador u otro dispositivo que maneje una comunicación asíncrona. B. Comunicación con el microcontrolador El instrumento virtual permite manejar el hardware desde un sistema de control implementado mediante software, que se encarga de enviar señales a los circuitos físicos, en los que se realiza la medición, posteriormente los datos son almacenados en el microcontrolador, el cual los transmite al módulo USB a una tasa de transferencia de 33,600 baudios. El sistema de control se encarga de enviar señales por el puerto USB de la PC hacia el microcontrolador. Las acciones se activan cuando ocurre un evento en el software, en ese momento se escribe el buffer de transmisión del módulo USB, posteriormente se envían los datos al microcontrolador, los cuales modifican registros internos de la RAM del microcontrolador PIC mediante direccionamiento indirecto. Cuando ocurre la interrupción por finalización de recepción asíncrona del puerto USART del microcontrolador se interpreta el valor recibido como una localidad de memoria, se activa una bandera que indica que el dato recibido fue una dirección, la cual se va a almacenar en el registro de direccionamiento indirecto FSR. Mediante una tabla de saltos incondicionales se extrae el dato del FSR, se enmascara y se realiza un salto a la rutina que afecte los puertos de entrada - salida correspondientes a la dirección enviada. El microcontrolador se cicla hasta recibir un nuevo dato mediante recepción asíncrona; una vez capturado el dato se ejecuta la acción. hasta la última etapa de diseño, la implementación en circuitos impresos, se usó placa de fibra de vidrio de doble cara, logrando circuitos de dimensiones reducidas. Fig. 6. Software de control y adquisición de datos “Neo-Q USB”. VI. RESULTADOS OBTENIDOS El sistema de medición fue probado mediante la excitación de dispositivos optoelectrónicos, como son la fotorresistencia y los fotodiodos OPT101 de Texas Instruments, en los cuales se compararon los valores entregados por el circuito y posteriormente representados en la PC, con los obtenidos por un osciloscopio digital HP mod: 546028 de 150Mhz, teniendo en ambos una lectura de tiempo de respuesta del dispositivo optoelectrónico de 3µs. Para poder observar la lectura en el osciloscopio fue necesario aplicar un tren de pulsos al fotodiodo mediante un generador de funciones, mientras que el dispositivo elaborado tomó la lectura del evento transitorio necesitando únicamente un pulso, el cual es proporcionado por el microcontrolador, sin necesidad de aplicar un instrumento externo. Se comparó también la lectura de voltaje de DC entregado por una fuente de alimentación variable, usando un multímetro autorango, el osciloscopio y el módulo de medición de voltaje desarrollado, teniendo una lectura diferente en los tres instrumentos, pero cercana uno de otro por 0.2V aproximadamente, lo cual se justifica debido a la resistencia interna que presenta cada dispositivo. El sistema de adquisición de datos se probó aplicando una señal cuadrada, senoidal y triangular proveniente de un generador de funciones, a frecuencias altas y bajas, teniendo una respuesta muy cercana a la original, siendo capaz de detectar y medir correctamente la forma de onda, voltajes pico a pico, ciclo de trabajo y frecuencia de la señal; al sobrepasar el rango de frecuencia máximo, la señal perdía su forma de onda, distorsionándose debido a la limitante del tiempo de muestreo, volviéndose una señal representativa, de la que solo la frecuencia de la misma es un valor real. VII. CONCLUSIONES Y TRABAJO FUTURO El funcionamiento del módulo cumplió las expectativas planteadas en su fase de elaboración, por lo que se llego View publication stats Fig. 7. Tarjetas del módulo de medición y adquisición de señales. Para el circuito del comparador flash, que basa su respuesta en el arreglo de resistencias, se usaron resistencias al 1% de tolerancia, para asegurar así una distancia entre escalones prácticamente idéntica. Como trabajo futuro se pretende elaborar una etapa de acondicionamiento de señal más robusta en cuanto a componentes electrónicos capaces de atenuar y amplificar la señal de forma selectiva, para adecuarla a valores que se encuentren dentro del rango de medición del módulo, ya sea mediante el uso de amplificadores operacionales o arreglos resistivos. Debido a que se emplea una cantidad pequeña de bits de resolución para poder tomar muestras a altas velocidades, es necesario elaborar un circuito con un convertidor AD de mayor resolución y menor velocidad, que trabaje en forma paralela con el convertidor flash, el cual sea posible conmutar para observar la forma de onda proveniente del mismo, brindando así, para frecuencias de la señal de entrada menores, una formas de onda con mayor detalle y calidad y logrando en conjunto un sistema capaz de medir ya sea altas o bajas frecuencias conservando una alta confiabilidad en el resultado presentado. [1] [2] [3] REFERENCIAS http://www.ni.com/dataacquisition/esa/whatis.htm, 15 de Agosto de 2005. Carrillo, L.C, Reyes, R., Ponce, M., “Sistema de Adquisición de Datos para el Análisis de Señales a través del Puerto USB de una Computadora”, articulo presentado en el 1er CMICE2005, México, D.F. Angulo, J.M. “Microcontroladores PIC Diseño practico de aplicaciones, Segunda parte: PIC16F87X”, McGaw - Hill, España, 2000.