SISTEMA DE ADQUISICIÓN DE DATOS DE 12 BITS PARA PC. Surga, Rafael Poth, Antonio Agostini, Giovanni Resumen: El presente trabajo trata sobre la construcción y puesta en marcha de un sistema de adquisición de datos con resolución de 12 bits que pueda adaptarse a un computador de manera de adquirir datos digitales y analógicos del medio para poder ser procesados digitalmente, además de poseer salidas digital y analógica en caso de querer controlar un proceso. Palabras Clave: Interrupción en PC/Resoluc1ón 12 Bits/Sistema de adqu1s1c1ón de datos/ Tratamiento digital de señales. A 12-BITS DATA ACQUISITION SYSTEM FOR PERSONALCOMPUTERS Abstract: The present work deals with the building and set up of a data acquisition system with a 12-bits resolution, capable of adapting itself toa computer so that it acquires digital and analog data from the system for digital processing. lt also possesses digital and analog output in case a process control is required. Key words: Data Acquisition System/Digital Treatment of Signals/ PC lnterruption/12-Bits Resolution. l. INTRODUCCION Actualmente, los proyectos que se realizan en el Opto. de Ingeniería Electrónica de la Universidad Nacional Experimental Politécnica "Antonio José de Sucre" . Vicerrectorado de Puerto Ordaz, están orientados hacia el estudio y desarrollo de la automatización de procesos industriales. La aplicación de computadores personales como herramienta para el manejo y control de los procesos constituye una buena solución. Sin embargo, es necesario que exista una mterface entre la planta y el sistema que lo controlará, función que ejercen las tarjetas de adquisición y control de datos. Con la impldntación de este sistema, se resuelve el problema de la puesta a punto de la interface entre el proceso estudiado y el controlador (PC's) utilizado para la automatización del proceso en sí, problema que afecta a los estudiantes en el momento de realizar sus proyectos. Con la tarjeta, se pueden realizar proyectos con mayor prec1sión y envergadura en el área de control. 11. OBJETIVOS 2.1. Objetivo general: Construcción de la tarjeta de adquisición de datos para el Bus ISA de 12 Bits para adaptarla a un computador personal. 2.2. Objetivos específicos: • Diseño de la tarjeta de adquiSICión de datos de 12 bits de propósitos generales. ·Diseño del circuito 1mpreso de la tarjeta de adquisición de datos en base a s1stemas CAD • Realización de las pruebas necesarias para la puesta Manuscnto finalizado el30/09/97, recibido el24/10/97, en su forma final (aceptado) el 07/05/98. Ellng. Rafael Surga es m1embro del Centro de Automatización y Control y Profesor del área de Microprocesadores y Control de Procesos por Computadoras de la Universidad Nacional Experimental Politécnica "Antonio José de Sucre", VICerrectorado Puerto Ordaz Telef.086~13563 . E-mail [email protected]. Los Bachilleres Antonio Poth (E-mail: [email protected]) y Giovanní Agostini, son estudiantes de la carrera de lngenierla Electrónica en la misma universidad. - - - - - -··IYI!MIIÁI, CII!.CI.Á. 7II!C.elMI.&. Volumen 2. Número 6. Junio 1998. pp. en funcionamiento de la tarjeta de adquisición de datos en el computador. • Diset'lo del programa software que permita la interface entre la tarjeta y el computador 111. DESARROLLO 3.1. Tarjeta de adquisición de datos. La tarjeta de adquisición de datos es un dispositivo especializado capaz de controlar el intercambio de información entre el microprocesador y el exterior (o viceversa). En general, la tarjeta realiza dos funciones, una que rige la comunicación entre el microprocesador y el mundo exterior (conversión digital-analógica), y la otra encargada de la comunicación entre el penférico y el microprocesador (conversión analógica-digital) Para hacer compatible la comunicación, se incluyen circuiterías de sincronismo, adaptadores de set'lales analógicas, circuitos de almacenamiento, etc. Figura 1. Tarjeta de Adquisición de Datos. Diagrama en Bloques 3.2. Descripción general de la tarjeta de adquisición de datos para el BUS ISA. • La tarjeta posee ocho (8) canales de entrada analógica bipolares, cuatro canales de salida analógica unipolar, 20 entradas y salidas dig1tales (seleccionadas por software) • La tar¡eta diseñada se conectará al Bus ISA del PC, por lo tanto la Tarjeta de Adquisición de Datos será atendida como un conjunto de puertos más del computador Para la lectura y escritura de datos se emplea la técnica de atención por interrupción, el requerimiento de interrupción empleado es la interrupción N° S (IRQS). • La tarjeta posee buffers de protección hacia el BUS ISA, de tal manera que al haber algún desperfecto en algún componente, el efecto no llegue al board del computador ni al microprocesador. A continuación se presenta una exphcac1ón del funcionamiento de cada uno de los módulos de la tar¡eta. 3.3. Estructura. La Tarjeta de Adquisición de Datos está diseñada en forma modular, es decir se trata de mantener la independencia entre cada uno de los módulos, por razones operacionales y para facilitar los procesos de mantenimiento preventivo o correctivo de la tarjeta impresa. La Tarjeta de Adquisición de Datos está constituida por los siguientes Módulos (ver Figura 1): A. Módulo de Conversión Analógico-Digital (CAD): con sus módulos Interfaces para adaptar sus circuitos y set'lales internas a los requerimientos de la tarjeta. La circuitería del módulo básicamente está constituida por un conversor analógico-d igital ADC1 2451 de 12 bits (multiplexados) de resoluc1ón y niveles de tensión de entrada b1polar (entre -SV y +SV), un multiplexor analógico 4051 de ocho (8) entradas sencillas. Para el muestreo y retención de la set'lal analógica multiplexada se utiliza el muestreador interno del m1smo conversor, que se configura para operar con él o sin él, es decir, el conversor posee dos modos de trabajo, uno donde no se ut1llza el muestreador interno y otro en el que sí se utiliza. Estos dos modos de trabajo son configurables por "Hardware" en la tarjeta de adquisición por medio de unos Jumpers. La principal razón de la selección de estos circuitos es la cantidad de canales de entrada a multiplexar. Para la selección de este conversor se tomó en cuenta su resoluc1ón y su rap1dez de conversión. B.Módulo de Conversión Digital-Analógica (COA): con sus módulos interfaces, de cuatro conversores Digital-Analógico C.Módulo de Entrada/Salida Dig1tal (ESO). 3.3.1. Módulo Analógico Digital Encargado de la adquisición de las set'lales analógicas previamente acondicionadas por Circuitos externos a la Tarjeta de Adquisición de Datos Posee ocho (8) entradas analógicas bipolares (Figura 2). Entrada Bipolar 5V a 5V Figura 2.-Diagrama en Bloques del módulo CAD. - - - - -- - - -- - ---Surga R., Poth A., Agostini G., Sistema de adquisición de datos de 12 bits para PC A la salida del conversor se obtiene un código digital (entre OD y 4095 O) representativo del valor analógico de la señal de entrada. En el momento de interrumpir el computador, se debe proceder a leer los 4 MSB más el Bit de signo (Bit 13) y luego los 8 LSB para así conformar la palabra de 12 Bits. El conversor tiene además un ciclo que ejecuta automáticamente la Autocalibración al encender el computador; sin embargo, como en un primer momento la señal de reloj y la fuente de poder no se han estabilizado, se recomienda reiniciar el ciclo cuando se utiliza la tarjeta de adquisición. De esta manera, el conversor determina su nuevos valores de offset y demás parámetros internos necesarios para su correcto funcionamiento. Así como existe el ciclo de Autocalibración, existe también un ciclo de auto-cero (Auto-Zero Cycle), que corrige los cambios en el offset del error del voltaje de referencia del cero (O V.). Este ciclo sólo puede ser utilizado cuando el conversor está configurado para trabajar en el modo de conversión directa, es decir, no utiliza su muestreador interno (S/H =1). 3 3.2. Módulo Digital Analógico Es el encargado de la generación de las señales analógicas de salida. Está compuesto por cuatro conversores digital-analógico DAC1231(1); cada uno se emplea para generar salidas analógicas unipolares (+5, +1 O) dependiendo del voltaje de referencia aplicado. El conversor posee salida analógica a corriente (seleccionada por "Hardware"). El circuito DAC1231 posee una resolución de 12 bits (multiplexados) para un total de 4095 pasos. La particularidad de que el conversor posea salida de corriente obliga a la implantación de un circuito con amplificadores operacionales en su salida para poder obtener salidas analógicas de voltaje (ver Figura 3). SALIDA DE CORRIENTE V REF - DO .. D7 SALIDA UNIPOlAR Figura 3: Diagrama del COA. La velocidad de conversión es 1mseg. (tiempo de colocación o de puesta actual), que proporciona una gran ventaja para los requerimientos de la conversión. Para tener la salida analógica, primero se envían los 8 bits MSB y luego los 4 bits LSB de la palabra digital a convertir Otra característica es su compatibilidad con microprocesadores, además posee un latch interno que da la posibilidad de tener señales constantemente a la salida. La magnitud del voltaje de salida está dada por la siguiente expresión: V --V OlJT - RFF x (CodigoDecimalA 0 4095 Como se observa, el voltaje de salida umpolar depende tanto del signo como de la magnitud del voltaje de referencia. El conversor fue configurado para que trabajara en el modo de transferencia automática(2), es decir, en el momento de escribir los 4 bits LSB en el conversor, éste automáticamente colocará en la salida el valor analógico correspondiente a la palabra digital enviada. 3.3.3. Módulo Entrada/Salida Digital. El módulo de entrada y salida d igital está constituido básicamente por el puerto programable 8255. Este dispositivo es un circUito programable de entrada/salida de utilización general Dispone de 24 líneas compatibles con tecnología TTL, estas 24 líneas se subdividen en 3 grupos de 8 bit (PUERTOS A, B y C), que pueden ser programados para que operen como dos puertos de 12 bits o tres de 8 bits. La configuración funcional de cada puerto es programada por el sistema , básicamente el microprocesador emite una palabra de control al8255 que da la información requerida para su funcionamiento. El circuito presenta tres modos de operación para la transferencia de datos, en el cual en la tarjeta operan los modos de: • Entrada o salida de operación normal (puerto A, B y C). • Bidireccional (puerto A solamente). De este módulo se utiliza la parte alta del puerto C (PC4 ... PC7), para codificar el número del canal de entrada al módulo de conversión Analógico Digital, teniendo así que programar siempre la parte alta del puerto como SALIDA Para detalles acerca de la programación (vía "Software") del 8255 remítase a la Hoja del Fabricante(3). 3.3.4. Módulo de Direccionamiento Cada componente de la taqeta debe ser seleccionado para habilitarlo La taqeta completa ocupa las direcciones 340h hasta la 35Fh, con esto se requiere que el computador las tenga disponibles en el momento de instalar la taoeta, así como su interrupción 5 (IROS) La habilitación de cada periférico es posible mediante la Dirección fiJa que posee cada dispositivo; este direccionamiento se realiza mediante un decodificador(de 3 a 8) como el C.l.74138, que se encarga de recibir la dirección correspondiente a cada integrado y habilitarlo. A continuación se presenta una tabla de direccionamiento con la dirección específica de cada componente dentro de la tarjeta. Tabla de Direccionamiento DRCaON 340H 341H 342H 343H 344H 34CH 350H 354H PERIFtRJCO SELECCIONADO PUERTO PROGRAMABLE 8255. PUERTO A. PUERTO PROGRAMABLE 8255. PUERTO B. PUERTO PROGRAMABLE 8255. PUERTO C. PUERTO PROGRAMABLE 8255. PALABRA DE CONTROL. Conversor ADC 12451 . Conversor DAC1231 (Referencia U9 en la tarjeta, DAC1) Conversor DAC1231 (Referencia U10 en la ta~eta, DAC2) Conversor DAC1231 (Referencia U14 en la Dependiendo del componente a utilizar, se envían las palabras de programación o control a las anteriores direcciones a través del "Software" para la programación de los módulos de la Tarjeta de Adquisición de Datos. 3.4. Caracteristicas Técnicas de la Tarjeta de Adquisición de Datos. A continuación se dan las principales características técnicas de la tarjeta: ENTRADAS ANALÓGICAS: Cantidad: Ocho (8) Multiplexadas. Tipo: Bipolar. Magnitud: -5Va 5V SALIDAS ANALOGICAS Cantidad Salida Unipolar: Magnitud (VREF 5V): Magnitud (VREF 12V): = = Entrada/Salida Digitales: Total de Entradas/Salidas Digitales: Cuatro (4) OVa 5V OVa 10V 20 Salidas y Entradas Veinte (20), distribuidas de la siguiente forma : Dos (2) puertos (Entrada o Salida) de ocho (8) B1ts C/ U; y un (1) puerto de cuatro (4) Bits C/U. 3.5. "Software" de configuración Para iniciar la función de adquisición, se debe configurar el módulo que se requiera a través de programación de Configuración de la Tarjeta de Adquisición. Para esto se envían las palabras de programación a las direcciones respectivas (determinada por la Dirección Base seleccionada en el Módulo de Direccionamiento). El "Software" de Configuración básicamente está constituido por las palabras de programación de cada uno de los componentes de los módulos de la Tal)eta de Adquisición. Existen tres maneras fundamentales de programar cada uno de los módulos de la tarjeta para su funcionamiento: • Programación Directa: donde el usuario programa cada módulo paso a paso, dando al módulo sus palabras de control, es decir, utiliza los comandos descritos en cada módulo de la tarjeta. • Programación en Asemblar: en este modo de programación se utiliza un programa residente en memoria, en el que se usa un servicio de una interrupción de "Software", de manera que el usuario simplemente utiliza los servicios correspondientes a cada módulo, entregando los parámetros deseados para cada uno de ellos. • Programación en el Lenguaje C: en este modo de programación, se utiliza un programa residente en memoria y una librería creada para el C, en el que utiliza funciones de lenguaje de alto n1vel, para programar cada uno de los módulos. 3.5.1. Programación en Lenguaje Assembler El programa residente en memoria es un programa que es utilizado tanto para programar en Asemblar como en Lenguaje C. La librería utilizada en Lenguaje C utiliza el programa residente en memoria para ejecutar las funciones. A continuación se explica los diferentes servicios del programa residente en memoria para ser utilizados en Asemblar: La interrupción a utilizar es la INT 62h, en el cual el byte de control es el registro AH, en donde· INT 62h (Inicio de conversión del módulo CAD) AH =O Al = número de canal a convertir (O al 7) No devuelve ningún valor INT 62h (Enviar un valor al módulo COA) AH= 01h BX = palabra digital a convertir CL = número del conversor a utilizar (CL=01 h => DAC1, CL=02h => DAC2, CL=03h => DAC3, CL=04h => DAC4) No devuelve ningún valor INT 62h (Leer el conversor Analógico-Digital) AH= 02h En AX devuelve el valor leido del conversor AnalógicoDigital INT 62h (Escribir una palabra digital por el8255) AH= 03h - - -- - - - - - - - -- -Surga R., Potb A., Agostini G., Sistema de adquisición de datos de 12 bits JH11V1 BL = carga el número del puerto a utilizar, (BL=O => Puerto A, BL = 1 Puerto B, BL = 2 Puerto C. No devuelve ningún valor INT 62h (Leer una palabra digital por el8255) AH= 04h BL = carga el número del puerto a utilizar, (BL=O => Puerto A, BL = 1 Puerto B, BL = 2 Puerto C. En AL devuelve el valor leído del puerto. INT 62h (Programar la interface digital (el 8255)) AH= 05h BL = carga el número del puerto a utilizar, BL=O =>Puerto A= SALIDA, BL=1 => Puerto A = ENTRADA, BH=O => Puerto B = SALIDA, BH=1 => Puerto B = ENTRADA, CL=O =>Puerto C =SALIDA, CL=1 =>Puerto C =ENTRADA, No devuelve ningún valor INT 62h (Autocalibración del Módulo de CAD) AH= 06h No devuelve ningún Valor. INT 62h (Habilitar Interrupción utilizada por el módulo CAD) AH= 07h BX = segmento de la nueva rutina de interrupción DX = offset de la nueva rutina de interrupción No devuelve ningún valor INT 62h (Deshabilitar interrupción utilizada por el módulo CAD) AH= 08h No devuelve ningún valor 3.5.2. Programación de tarjeta en Lenguaje C A continuación se muestran las funciones a utilizar en LENGUAJE C para programar cada uno de los módulos. • Para deshabiltar la interrupción del conversor ADC La función que deshabilita la interrupción es: DESHABILITAR_INT ( ) En esta función no se necesita darle parámetros, ella automáticamente restablece la interrupción que había anteriormente. •Para habilitar la interrupción del conversor ADC La función para habilitar la interrupción es: HABILITAR_INT( nombre de la nueva función de interrupción). En esta función se escribe el nombre de la función de interrupción creada por el usuario. r L.- 3.6. Ejemplos de Aplicación Ejemplo: Si se tiene una función de interrupción denominada adquisición void interrupt adquisición ( ) { ... sentencias utilizadas en el momento de interrumpir el conversor ADC } Entonces dentro del programa principal , simplemente se utiliza la función de la siguiente manera: HABILITAR_INT (adquisición); De esta manera se habilita la función adquisición en el momento de realizarse una interrupción por parte del conversor ADC. • Para iniciar conversión en el Módulo CAD. La función para iniciar la conversión es la siguiente: INICIO_ADC( nombre del canal a convertir) En esta función se le entrega el nombre del canal al que se quiere convertir la señal analógica. Ejemplo: si se desea hacer conversión de una señal Analógica-Digital, que se encuentra en el canal #3 de la tarjeta, se utiliza la función de la siguiente manera: INICIO_ADC ( Canal3 ); De esta manera se inicia la conversión de la señal ubicada en el canal #3 • Para convertir un valor digital a una señal analógica a determinado conversor (DAC) La función que se utiliza para dar conversión de un dato digital a una señal analógica, en cualquiera de los conversores Digital-Analógico es la siguiente: ESCRIBIR_DAC( nombre del conversor , variable que contiene el dato ) En esta función se le entregan los parámetros del nombre del conversor en el que se quiere obtener la salida y el nombre de la variable que contiene el dato a convertir. Ejemplo: supóngase que se tiene una variable denominada valor que contiene el dato que se quiere convertir, y se desea tener la salida en el conversor número #3, la sentencia a utilizar es: ESCRIBIR_DAC ( DAC3, valor); Teniendo así, la señal analógica correspondiente a la palabra digital contenida en la variable valor: • Leer el conversor Analógico-Digital La función que se utiliza para leer el valor obtenido por el conversor Análogo-Digital es: LEER_ADC() Donde ella devuelve el valor digital proporcional a la señal analógica que se encuentra en el canal seleccionado en el momento del inicio de conversión. Ejemplo: Es ideal colocar esta función dentro de la función de interrupción, de tal manera que, en el mismo --, momento de interrumpir el conversor se lea el dato. Por lo tanto, suponiendo que se tiene la función de interrupción denominada adquisición dentro de ella, una de las sentencias sería: void interrupt adquisición ( ) { ... sentencias dato = LEER_ADC ( ); . . . sentencias } De esta manera, se tendrá en dato (variable declarada como entera) la palabra digital correspondiente a la e 1 onversión de la señal de entrada. LEER_8255( tipo de puerto a leer) En donde el tipo de puerto viene definido como. Puerto A = PUERTO_A Puerto B = PUERTO_B Puerto C = PUERTO_ C De esta manera, la función devuelve el valor digital de la palabra que se encuentra en la entrada del puerto a leer. Ejemplo: supóngase que se desea leer la palabra digital que se encuentra en el puerto A del módulo, y esta palabra se tiene en una variable denominada valor_A, la sentencia a utilizar sería: valor_A LEER_8255 ( PUERTO_A ). • Programar el módulo Digital-Digital (8255) Esta función se utiliza para programar el módulo de EIS digital; la función es la siguiente: PROG_8255(configurar puerto A, configurar puerto B, configurar puerto C); A esta función se le entrega los parámetros deseados para configurar cada puerto independientemente, bien sea como ENTRADA o como SALIDA. Ejemplo: supóngase que se desea configurar este módulo de la siguiente manera: El Puerto A como Entrada, el puerto B como Salida y la parte baja del puerto C como Entrada, entonces la sentencia a utilizar en el programa sería la siguiente: PROG_8255(ENTRADA, SALIDA, ENTRADA); De esta manera, el primer parámetro dentro de la función corresponde a la manera como se quiere configurar el puerto A, el segundo, el puerto B y el tercero, la parte baja (Nible bajo) del puerto C. IV. CONCLUSIONES • Escritura de una palabra digital en el módulo DigitalDigital Esta función se utiliza para enviar una palabra digital por un determinado puerto. ESCRIBIR_8255( tipo de puerto, palabra digital ); En donde el tipo de puerto viene definido como: Puerto A= PUERTO_A Puerto B = PUERTO_B Puerto C = PUERTO_C Ejemplo: supóngase que se desea enviar por el puerto B el valor contenido en una variable denominada dato, la sentencia a utilizar sería: ESCRIBIR_8255( PUERTO_B, dato); De esta manera se tendrá a la salida del puerto B. la palabra digital contenida en la variable dato. V. BIBLIOGRAFIA • Lectura de una palabra digital en el módulo DigitalDigital Esta función se utiliza para leer una palabra digital que se encuentra en la entrada de alguno de los puertos. I~I!HI•ü. = De acuerdo a los resultados anteriores, se pueden establecer las siguientes conclusiones: 1. La ta~eta diser'\ada permite trabajar con un máximo de 8 señales analógicas y con un tiempo de conversión de 7 mseg. 2. El diseño de la tarjeta permite la utilizac ión individual o un conjunto de los distintos dispositivos que se encuentran en ella para los diseños con que se trabaje. 3. La tarjeta permite el diseño de proyectos de investigación tanto académicos como de aplicación industrial, a un bajo costo. 4. Con la tarjeta se pueden obtener diferentes tipos de medición y de control, por tener los dispositivos esenciales de estos sistemas dentro de ella 5. La tarjeta se puede conectar a cualquier computador con el bus ISA. 1 Analog Devices, lntegrated Circuit, Silicon Valley, Analog Devices, 1991 , 567 pp. 2 Brey, B. Los Microprocesadores lntel. Tercera edición, México. Editorial Prentice Hall, 1994, 1200 pp. 3 Coughlin, R. , Circuitos Integrados Lineales y Amplificadores Operacionales, 2da. edición, San Francisco, Prent1ce Hall, 1987, 430 pp. 4 Creus , A ., Instrumentación Industrial, Massachusetts, Prentice Hall, 1990, 1025 pp. 5 Hemández, J., "Principios Básicos de la adquisición y conversión de datos" , Electrón ica y Computadores, 1(10), 1995, 40 pp. 6 lntel, Memory, Silicon Valley, lntel Corporation, 1989, 500 pp. 7 lntel, Microprocessor and Peripheral Handbook (vol 11), Silicon Valley, lntel Corporation, 1989, 1000 pp. 8 Kemighan, W., El Lenguaje de Programación C, New York, Prentice Hall, 1991 , 350 pp. CII!.CI.A 7 II!C•eaM•.A. Volumen 1. Número 6. Junio 1998. - - -- -- - -- - - -- - - - -- - - --Surp R., Poth A., Agostini G., Sistenu1 de adquisición de timos de 12 bits parG PC 9 10 11 12 13 14 Manual Motorola, Fast and LS TTL Data, Atlanta Motorola, 1989, 300 pp. Martínez, M., Manual del Oread PCB, México, Paraninfo,1993, 200 pp. Millman, J., Circuitos de Pulsos, Digitales y de Conmutación, La Habana, Pueblo y Educación, 1982. 780 pp. National lnstruments, Manual del Programa de Instrumentación Lab-Windows, Atlanta, National lnstruments, 1991 , 389 pp. Navarro , H., Apuntes de Instrumentación Electrónica, Caracas, UCV, 1990, 340 pp. National Semiconductor, Linear Data Book (Voll), Honk Kong, National Semiconductor Corporation, 1991, 1200 pp. 15 National Semiconductor, Linear Data Book (Volll), Honk Kong, National Semiconductor Corporation 1991 , 1200 pp. 16 Oceano/centrum, Enciclopedia de la Electrónica Ingeniería y Téroica # 2, Madrid Oceano/Centrum, 1986, 1800 pp. 17 Petersen, 0 ., Circuitos Integrados Digitales, Puerto Ordaz, Fundiup,1994, 100 pp. 18 Phillips, Ch., Digital Control System Analysis and Design, Chicago, Prentice Hall, 1990, 1OSO pp. 19 Williams, A., Microprocesadores, Dispositivos Periféricos, Optoelectrónicos y de Interfaz, Ottawa, Me Graw Hill, 1989, 278. 20 Tablero A. Tarjeta de Adquisición de Datos para el Bus ISA no extendido. Informe de Proyecto