• No se han encontrado resultados

Comunicación USB de Alta Velocidad entre LABVIEW y un Microcontrolador para la Adquisición de Datos en Tiempo Real

N/A
N/A
Protected

Academic year: 2021

Share "Comunicación USB de Alta Velocidad entre LABVIEW y un Microcontrolador para la Adquisición de Datos en Tiempo Real"

Copied!
5
0
0

Texto completo

(1)

Resumen—En este artículo se presenta una metodología para realizar la comunicación entre LabVIEW y un microcontrolador PIC18F4550 de Microchip. Con las herramientas presentadas en este trabajo se pueden adquirir y enviar datos masivos de información hasta una velocidad de 12Mb/s. La comunicación se realiza mediante la herramienta Call Library Fuction de LabVIEW, la cual hace uso de la librería mpusbapi que nos proporciona Microchip. El puente que establece la comunicación entre el microcontrolador y la PC se realiza mediante las librerías usb del software CCS C Compiler y el driver mchpusb para Microsoft Windows XP. Por último se realizan pruebas de adquisición y envió de datos. Palabras clave: Call Library Function, Mpusbapi.dll, USB, Bulk Transfers USB, LabVIEW-USB.

I. INTRODUCCIÓN

Muchas compañías en la industria de la manufactura usan computadoras personales en sus plantas y laboratorios para probar sus productos, tomar mediciones y automatizar procesos. Al crear sistemas basados en computador, los usuarios están aprovechando las ventajas de las tecnologías de la computación más recientes tales como tarjetas de adquisición de datos.

La técnica de instrumentos virtuales mediante tarjetas de adquisición de datos, es cada vez más utilizada en la industria. Esta metodología consiste en realizar paneles de control en computador, tradicionalmente hechas por software que utiliza instrumentos virtuales como LabVIEW. A través de estos instrumentos virtuales (Vis) se pueden supervisar en tiempo real las variables del proceso (Temperatura, Humedad, Presión, entre otros.) y controlar actuadores (válvulas, termoresistencias, entre otros). Estos VIs brindan al usuario una gran flexibilidad de operación debido a que no requieren de ninguna circuitería para realizar complicados procedimientos de control, simulación y supervisión.

Actualmente la obtención de datos en LabVIEW, se realiza mediante tarjetas de adquisición (TAD) que National Instrument desarrolla. Estas TAD generalmente son muy costosas y de uso limitado, esto es, que no puede utilizarse en ningún otro software. El costo es la principal limitante que hace difícil adquirirlas por estudiantes, universidades y centros de investigación.

Considerando las problemáticas planteadas anteriormente, en este artículo se presenta una metodología para establecer la comunicación vía USB entre LabVIEW y un microcontrolador. El artículo está dividido de la siguiente forma: en la sección II se presenta el desarrollo de la comunicación entre la PC y el microcontrolador. En la sección III contiene la vía y tipo de comunicación USB y en la IV se presenta el funcionamiento de librería mpusbapi1 de microchip y la comunicación con LabVIEW, Por último, en la sección V se hace la validación de la comunicación USB, censando datos de temperatura y activando leds, que simbolizan unas electroválvulas.

II. COMUNICACIÓN ENTRE LA PC Y EL DISPOSITIVO USB Existen tres maneras de establecer la comunicación por USB (Bus Universal en Serie):

1. Bulk Transfers: transferencia bidireccional masiva de información.

2. CDC: clase de dispositivos de comunicación (emulación del protocolo RS232).

3. HID: dispositivos de interfaz humana (plug-and-play).

En este trabajo se opto por la opción Bulk Transfers, debido a que permite la transmisión de datos de alta velocidad (Full Speed) de 12Mb/s. Las transferencias Bulk están diseñadas para soportar aquellos dispositivos que precisan enviar o recibir grandes cantidades de datos.

Interconexión

Fig. 1. Etapas de comunicación entre la PC y el Dispositivo USB. En el diagrama de la Figura. 1 se ilustra el flujo de datos USB a partir del software LabVIEW que manipula al

1 Mpusbapi es una librería creada por Microchip para utilizar el

microcontrolador.

Comunicación USB de Alta Velocidad entre LABVIEW y un

Microcontrolador para la Adquisición de Datos en Tiempo Real

J. A. Pérez Cueto, F.R López Estrada

Departamento de electrónica, Instituto Tecnológico De Tuxtla Gutiérrez, México Teléfono: 961 1241592 E-mail:adrianjpca@gmail.com

PC Dispositivo USB Tarje LabVIEW Host USB Función Librería Mpusbapi Controlador del dispositivo USB TAD Microcontrolador Firmware

(2)

dispositivo USB a través de la librería mpusbapi. La librería realiza la transmisión de datos a la dirección del dispositivo que el host USB configuro al usar el driver. El driver establece el puente entre la PC y el microcontrolador. Dentro del microcontrolador se ejecuta el firmware el cual se comunica con elementos de la TAD, que realizan algunas funciones útiles para el usuario o lo que se desea controlar. Una descripción formal de los principales procesos o elementos que realizan la comunicación entre el dispositivo USB y la PC se enumeran a continuación.

A. Interconexión

El dispositivo USB dispone de 2 tipos de conectores (A y B) como se observa en la figura 2, que pueden ser a su vez macho o hembra [2].

A B Fig. 2. Conectores USB

De esta forma el típico cable USB sería el modelo US09. La velocidad soportada por estos cables es de 12 Mbps, hasta 480Mbps en el caso de los cables para USB 2.0. El cable está compuesto por solo cuatro cables, Vbus, D+, D- y GND (Ver Tabla1). La información y los datos se mueven por los cables D+ y D-.

TABLA 1. Pines de conexión USB

A través de esos cables se genera un tipo de señal diferencial. La transferencia de información lo realiza de manera bidireccional, pero no al mismo tiempo. En la misma señal diferencial entre D+ y D- se envía y se recibe las tramas de datos. Dentro de esta señal se observa una señal Sync, PID y Opcional, estas tres forman el paquete de trama donde va incluida la información que se desea trasmitir (Ver Fig. 3).

Fig. 3. Composición de un paquete de información La señal Sync es utilizada por receptor para sincronizarse con el host. El PID es un paquete identificador, que definirá

de cómo los bytes de información debe ser interpretado o tratados. Y por ultimo esta la opcional donde contiene los datos enviados y recibidos, que va desde 1 byte hasta 124 bytes.

B. Microcontrolador PIC

Para establecer la interfaz de comunicación USB se selecciono el microcontrolador PIC18F4550. Este dispositivo soporta la comunicación vía USB, es decir, incluyen un controlador USB interno y cuenta con pines para conectarse a la PC sin la necesidad de pull-ups o circuitería externa [5]. En la Figura. 4 se observa la estructura interna del controlador de periférico USB.

Fig. 4. Característica del PIC18F4550

El firmware 2 que se implemento en el PIC18F4550 para establecer la comunicación USB con la PC, se realizo a través de las siguientes instrucciones de programación.

No Si Si No

Fig.5. Diagrama de flujo del firmware

2Firmware: instrucciones de programa que establece la lógica de bajo

nivel para el control de circuitos electrónicos. Pin Nombre Color de cable

1 +5.0V Rojo 2 Data- Blanco 3 Data+ Verde 4 Tierra Negro Inicio Inicializa el USB Habilita el Periférico USB Espera que sea configurado por la PC

¿Datos Recibido?

Almacena el dato recibido Toma de decisiones del dato recibido

Control y Adquisición de datos Trasmisión de datos a la PC Fin ¿Conexión con Windows Xp? 1 2 3 4 1 2 3 4 Full Speed Interfaz USB 2.0 USB Regulador de Voltaje Transferencia USB Full Speed PIC18F4550 MCU Core 12MIPS 48MHZ 32 Kbytes Enhanced Flash 2 Kbytes RAM LIN-UART 16-bit Captura I2C/SPI Quad. PWM 256 Bytes EEPROM 10-bit ADC

(3)

El firmware hace uso de las librerías usb de CCS C Compiler, para configurar el dispositivo y establecer la comunicación entre la PC.

Para que el host USB reúna la información necesaria e identifique al dispositivo y lo configure, el firmware debe contener descriptores. Los descriptores contienen información básica del dispositivo como el número de serie, la clase de dispositivo, el protocolo soportado, la capacidad de transmisión, las funciones del dispositivo, entre otros. Con el propósito de que el sistema identifique al dispositivo y encuentre al driver que debe utilizar.

C. Driver del dispositivo

Cuando el dispositivo se conecta por primera vez a la PC, el sistema pedirá el controlador (driver) correspondiente, en este caso el driver mchpusb creado por Microchip. Para que el dispositivo sea reconocido por el sistema, este driver debe contener los mismos descriptores que el firmware.

III.VIA DE COMUNICACIÓN Y TIPO DE TRANSFERENCIAS La interfaz de tipo USB 2.0 define las vías de comunicación entre las aplicaciones que se ejecutan en el host (clientes) y los distintos endpoint3 en los dispositivos USB (servidores), y las denomina Pipes4. Cuando un dispositivo USB se conecta a un sistema, y el sistema lo reconoce y lo configura, el dispositivo queda organizado como un cierto conjunto de endpoints. El sistema establece todas las vías de comunicación (pipes) necesaria entre el sistema y cada uno de los endpoint disponible en dicha configuración. El sistema elige una cierta configuración en función de la funcionalidad particular que se precise del dispositivo.

Existen 4 tipos de endpoints (Bulk, Control, Interrupcion e Isocrono) y 2 tipos de pipe (Conrol o Mensaje y Stream), de las cuales se utiliza la Pipe Stream y Endpoint Bulk. A continuación se describe cada una de ellas.

A. Pipe Stream

La Pipe Stream es una vía de comunicación unidireccional entre el host y el endpoint de los tipos Bulk, Interrupción o Isócrono. Si un dispositivo necesita realizar transferencias bidireccionales de un tipo de endpoint concreto el sistema debe establecer dos pipes, una de salida y una pipe de entrada. A través de estas pipes, el sistema puede leer del dispositivo toda la información descriptiva necesaria para identificar el tipo de dispositivo, posibles configuraciones, protocolo que soporta, número y tipos de enpoints que soporta en cada posible configuración, etc.

3

Endpoint: Buffer (bloque de datos) o un registro que almacena bytes que se encuentran en el dispositivo.

4

Pipes: Enlace virtual o Asociación entre el host y el Endpoints.

B. Transferencia Bulk

Las transferencias Bulk están diseñadas para soportar aquellos dispositivos que precisan enviar o recibir grandes cantidades de datos con latencias que pueden tener amplias variaciones, y en que las transacciones pueden utilizar cualquier ancho de banda disponible. Para ellos las transacciones Bulk proporcionan:

 Acceso al bus en función del ancho de banda disponible.

 Reintento de trasferencias en caso de errores de entrega.

 Entrega garantizada de datos, pero sin garantía de latencia máxima ni de ancho de banda.

Las transferencias Bulk se realizan relativamente rápidas si el bus dispone de mucho ancho de banda libre. En un bus USB con mucho ancho de banda reservado, la transferencia puede alargarse durante periodos de tiempo relativamente grandes.

IV. LIBRERÍA MPUSBAPI

Como se menciono en la sección II, las funciones de acceso al puerto USB con el microcontrolador PIC18F4550 se realizan mediante la librería mpusbapi. Para hacer uso de esta librería en labview se utiliza el VI Call Library Fuction Node (Ver Fig.6).

Fig. 6. Call Library Fuction Node

Con este VI podemos asignarle parámetros a las funciones que contiene la librería mpusbapi para enviar y recibir datos. Los pasos para utilizar la librería mpusbapi en LabVIEW se muestran en el diagrama siguiente.

Si No

Fig. 7. Diagrama de configuración de librería mpusbapi Las funciones de la librería mpusbapi se analizan a continuación:

Mpusbopen: (instance, pVID_PID, pEP, dwDir, dwReserved) Fin mpusbopen mpusbwrite mpusbread mpusbclose ¿Continuar? Inicio

(4)

Devuelve el acceso al pipe del endpoints con el VID_PID5 asignado.

Instance (Input): Un número de dispositivo para abrir. Normalmente, se utiliza primero la llamada de MPUSBGetDeviceCount para saber cuántos dispositivos hay.

pVID_PID (Input): String que contiene el PID&VID del dispositivo objetivo. El formato es “vid_xxxx&pid_yyyy”. Donde xxxx es el valor del VID el yyyy el del PID, los dos en hexadecimal. Ejemplo:

Si un dispositivo tiene un VID=0x04d8 y un PID=0x0010, el string de entrada es: “vid_0x04d8&pid_0x0010”.

pEP: (Input): String con el número del Endpoint que se va a abrir. El formato es “\\MCHP_EPz” o “\MCHP_EPz” dependiendo del lenguaje de programación. Donde z es el número del Endpoint en decimal.

Ejemplo: “\\MCHP_EP1” o “\MCHP_EP1”

Este argumento puede ser NULL (nulo) para crear lazos con endpoints de funciones no específicas.

dwDir: Especifica la dirección del endpoint:

MP_READ: para MPUSBRead y

MPUSBReadInt. Y MP_Write: para MPUSBWrite.

dwReserved: indica un número reservado para el dispositivo.

Mpusbwrite: (handle, pData, dwLen, pLenght, dwMilliseconds)

handle (Input): Identifica la pipe del endpoint que se va a escribir. La pipe unidad tiene que crearse con el atributo de acceso MP_WRITE.

pData (Output): Puntero al buffer que contiene los datos que se van a escribir en la pipe.

dwLen (Input): Especifica el número de bytes que se van a escribir en la pipe.

pLenght (Output): Puntero al número de bytes que se escriben al llamar esta función. MPUSBWrite pone este valor a cero antes de cualquier lectura o de chequear un error.

dwMilliseconds (Input): Especifica el intervalo de time-out en milisegundos. La función vuelve si transcurre el intervalo, aunque no se complete la operación. Si dwMilliseconds=0, la función comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de time-out nunca termina.

Mpusbread (handle, pData, dwLen, pLenght, dwMilliseconds):

5 VID_PID es la unión entre la identificación del dispositivo (PID) y del

vendedor (VID), en número hexadecimal de 16bits.

handle (input): Identifica la pipe del Endpoint que se va a leer. La pipe unidad tiene que crearse con el atributo de acceso MP_READ.

pData (output): Puntero al buffer que recibe el dato leído de la pipe.

dwLen (input): Especifica el número de bytes que hay que leer de la pipe.

pLenght (output): Puntero al número de bytes leídos. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequear un error.

dwMilliseconds (input): Especifica el intervalo de time-out en milisegundos. La función vuelve si transcurre el intervalo aunque no se complete la operación. Si dwMilliseconds=0, la función comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de time-out nunca termina. Mpusbclose (handle):

Cierra una determinada unión.

handle (Input): Identifica la pipe del endpoint que se va a cerrar.

VI. ADQUISICION DE DATOS EN LABVIEW

LabVIEW es una herramienta de programación gráfica que permite realizar simulaciones, pruebas, control y diseño de procesos y sistema. El lenguaje que usa se llama lenguaje G (Gráfico).Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales (Vis).

Para probar la recepción de datos entre LABVIEW y el exterior, se realizó la siguiente prueba: Se midió la temperatura ambiental de forma continua utilizando el sensor LM35.

Fig. 8. Diagrama electrónico del Proyecto

La transmisión de datos vía USB se realizo manipulando el encendido de forma intencionada de unos leds(Ver Fig. 8). Estos leds representan el encendido digital de actuadores como válvulas de paso.

(5)

La programación en LabVIEW se realizo a través de un subVI (PicUSB-Labview) que permite manipular de manera más fácil al dispositivo. El subVI creado se muestra en la siguiente figura.

Fig. 9. VI PicUSB-LabVIEW

En la Figura 10, se muestra la programación estructurada con el respectivo subVI creado y en la Figura. 11, se muestran la programación virtual del proyecto.

Fig. 10. Diagrama Bloque

Fig. 11. Panel Frontal

VI. CONCLUSIONES

En este artículo se presento una metodología que permite la comunicación entre un microcontrolador PIC18F4550 y LabVIEW para tareas de adquisición de datos. Los resultados obtenidos demuestran que la metodología implementada funciona perfectamente, se logra trasferir datos de alta velocidad. Con esta técnica se pretende que estudiante e investigadores puedan construir una tarjeta de adquisición de datos y que pueda implementarse para tareas de simulación, supervisión y control.

REFERENCIAS

[1] Gary W. Johnson, R. J. (2006). LabVIEW Graphical Programming, Fourth Edition. New York: McGraw-Hill.

[2] Jan Axelson. (2001). USB Complete Everything You Need to Develop Custom USB Peripherals,Third Edition. Madison, WI: Lakeview Research.

[3] Lazaro, A. M. (2005). LABVIEW 7.1: PROGRAMACION GRAFICA PARA EL CONTROL DE INSTRUMENTACION, Cuarta Edición. Texas: Thomson.

[4] National Instruments (2008). http://www.ni.com [5] Universal Serial Bus (2008). http://www.usb.org [6] Microchip (2008). http://www.microchip.com

Referencias

Documento similar

Paola Bongiovani Unidad de Gestión de Acceso Abierto Comité de Acceso Abierto Universidad Nacional de Rosario, Argentina Capacitación "Gestión de datos de investigación en

Un problema técnico que se presentó fue en la comunicación serial entre el microcontrolador y el ST-1 ya que la tasa de transmisión de bauds que el microcontrolador podía

Considerando lo anterior el modelo del canal discreto empleado para evaluar el desempeño de las diferentes técnicas de ecualización, considera los efectos del filtro transmisor

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

El desarrollo de una conciencia cáritas es esencial para identificar cuando un momento de cuidado se convierte en transpersonal, es necesaria para identificar