Congreso Nacional de Ingeniería Electrónica del Golfo CONAGOLFO 2009 Instituto Tecnológico de Orizaba

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

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.

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 mpusbapi 1 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 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. 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-andplay). 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 PC Dispositivo USB

LabVIEW Librería Mpusbapi
Controlador del dispositivo USB Host USB

Tarje Función TAD

Firmware Microcontrolador

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
Mpusbapi es una librería creada por Microchip para utilizar el microcontrolador.
1

ISBN:

-1 / 5-

CONAGOLFO 2009

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].
2 1 2 3 4 3 4 1

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.

Full Speed Interfaz USB 2.0 USB Regulador de Voltaje Transferencia USB Full Speed

A
Fig. 2. Conectores USB

B

PIC18F4550 MCU Core 12MIPS 48MHZ 32 Kbytes Enhanced Flash 2 Kbytes RAM 256 Bytes EEPROM

LIN-UART

I2C/SPI
16-bit Captura Quad. PWM 10-bit

ADC

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

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.
Inicio Inicializa el USB Habilita el Periférico USB Espera que sea configurado por la PC

Pin 1 2 3 4

Nombre +5.0V DataData+ Tierra

Color de cable Rojo Blanco Verde Negro

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).

¿Datos Recibido?

No

Si
Almacena el dato recibido Toma de decisiones del dato recibido Control y Adquisición de datos Trasmisión de datos a la PC

Si

¿Conexión con Windows Xp?

No
Fin

Fig. 3. Composición de un paquete de información

Fig.5. Diagrama de flujo del firmware Firmware: instrucciones de programa que establece la lógica de bajo nivel para el control de circuitos electrónicos.
2

La señal Sync es utilizada por receptor para sincronizarse con el host. El PID es un paquete identificador, que definirá

-2 / 5-

CONAGOLFO 2009

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.

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.
Inicio

mpusbopen mpusbwrite mpusbread mpusbclose Si ¿Continuar? No Fin Fig. 7. Diagrama de configuración de librería mpusbapi

Las funciones de la librería mpusbapi se analizan a continuación:
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.
3

Mpusbopen: dwReserved)

(instance,

pVID_PID,

pEP,

dwDir, -3 / 5-

CONAGOLFO 2009

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. pData, dwLen, pLenght,

 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 timeout 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.

Mpusbwrite: (handle, 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. pData, dwLen, pLenght,

Mpusbread (handle, dwMilliseconds):

Fig. 8. Diagrama electrónico del Proyecto

VID_PID es la unión entre la identificación del dispositivo (PID) y del vendedor (VID), en número hexadecimal de 16bits.

5

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. -4 / 5-

CONAGOLFO 2009

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.

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.

Fig. 9. VI PicUSB-LabVIEW

REFERENCIAS [1] Gary W. Johnson, R. J. (2006). LabVIEW Graphical Programming,
[2] Fourth Edition. New York: McGraw-Hill. Jan Axelson. (2001). USB Complete Everything You Need to Develop Custom USB Peripherals,Third Edition. Madison, WI: Lakeview Research. Lazaro, A. M. (2005). LABVIEW 7.1: PROGRAMACION GRAFICA PARA EL CONTROL DE INSTRUMENTACION, Cuarta Edición. Texas: Thomson. National Instruments (2008). http://www.ni.com Universal Serial Bus (2008). http://www.usb.org Microchip (2008). http://www.microchip.com

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.

[3]

[4] [5] [6]

Fig. 10. Diagrama Bloque

Fig. 11. Panel Frontal

-5 / 5-

Sign up to vote on this title
UsefulNot useful