Está en la página 1de 5

Congreso Nacional de Ingeniera Electrnica del Golfo CONAGOLFO 2009 Instituto Tecnolgico de Orizaba

Comunicacin USB de Alta Velocidad entre LABVIEW y un Microcontrolador para la Adquisicin de Datos en Tiempo Real
J. A. Prez Cueto, F.R Lpez Estrada Departamento de electrnica, Instituto Tecnolgico De Tuxtla Gutirrez, Mxico Telfono: 961 1241592 E-mail: adrianjpca@gmail.com

ResumenEn este artculo se presenta una metodologa para realizar la comunicacin entre LabVIEW y un microcontrolador PIC18F4550 de Microchip. Con las herramientas presentadas en este trabajo se pueden adquirir y enviar datos masivos de informacin hasta una velocidad de 12Mb/s. La comunicacin se realiza mediante la herramienta Call Library Fuction de LabVIEW, la cual hace uso de la librera mpusbapi que nos proporciona Microchip. El puente que establece la comunicacin entre el microcontrolador y la PC se realiza mediante las libreras usb del software CCS C Compiler y el driver mchpusb para Microsoft Windows XP. Por ltimo se realizan pruebas de adquisicin y envi de datos. Palabras clave: Call Library Function, Mpusbapi.dll, USB, Bulk Transfers USB, LabVIEW-USB.

Considerando las problemticas planteadas anteriormente, en este artculo se presenta una metodologa para establecer la comunicacin va USB entre LabVIEW y un microcontrolador. El artculo est dividido de la siguiente forma: en la seccin II se presenta el desarrollo de la comunicacin entre la PC y el microcontrolador. En la seccin III contiene la va y tipo de comunicacin USB y en la IV se presenta el funcionamiento de librera mpusbapi 1 de microchip y la comunicacin con LabVIEW, Por ltimo, en la seccin V se hace la validacin de la comunicacin USB, censando datos de temperatura y activando leds, que simbolizan unas electrovlvulas.

II. COMUNICACIN ENTRE LA PC Y EL DISPOSITIVO USB I. INTRODUCCIN Muchas compaas 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 estn aprovechando las ventajas de las tecnologas de la computacin ms recientes tales como tarjetas de adquisicin de datos. La tcnica de instrumentos virtuales mediante tarjetas de adquisicin de datos, es cada vez ms utilizada en la industria. Esta metodologa consiste en realizar paneles de control en computador, tradicionalmente hechas por software que utiliza instrumentos virtuales como LabVIEW. A travs de estos instrumentos virtuales (Vis) se pueden supervisar en tiempo real las variables del proceso (Temperatura, Humedad, Presin, entre otros.) y controlar actuadores (vlvulas, termoresistencias, entre otros). Estos VIs brindan al usuario una gran flexibilidad de operacin debido a que no requieren de ninguna circuitera para realizar complicados procedimientos de control, simulacin y supervisin. Actualmente la obtencin de datos en LabVIEW, se realiza mediante tarjetas de adquisicin (TAD) que National Instrument desarrolla. Estas TAD generalmente son muy costosas y de uso limitado, esto es, que no puede utilizarse en ningn otro software. El costo es la principal limitante que hace difcil adquirirlas por estudiantes, universidades y centros de investigacin. Existen tres maneras de establecer la comunicacin por USB (Bus Universal en Serie): 1. Bulk Transfers: transferencia bidireccional masiva de informacin. 2. CDC: clase de dispositivos de comunicacin (emulacin del protocolo RS232). 3. HID: dispositivos de interfaz humana (plug-andplay). En este trabajo se opto por la opcin Bulk Transfers, debido a que permite la transmisin de datos de alta velocidad (Full Speed) de 12Mb/s. Las transferencias Bulk estn diseadas para soportar aquellos dispositivos que precisan enviar o recibir grandes cantidades de datos.
Interconexin PC Dispositivo USB

LabVIEW Librera Mpusbapi


Controlador del dispositivo USB Host USB

Tarje Funcin TAD

Firmware Microcontrolador

Fig. 1. Etapas de comunicacin 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 librera creada por Microchip para utilizar el microcontrolador.
1

ISBN:

-1 / 5-

CONAGOLFO 2009

dispositivo USB a travs de la librera mpusbapi. La librera realiza la transmisin de datos a la direccin 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 descripcin formal de los principales procesos o elementos que realizan la comunicacin entre el dispositivo USB y la PC se enumeran a continuacin. A. Interconexin 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 cmo los bytes de informacin 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 comunicacin USB se selecciono el microcontrolador PIC18F4550. Este dispositivo soporta la comunicacin va USB, es decir, incluyen un controlador USB interno y cuenta con pines para conectarse a la PC sin la necesidad de pull-ups o circuitera externa [5]. En la Figura. 4 se observa la estructura interna del controlador de perifrico USB.

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

A
Fig. 2. Conectores USB

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 tpico cable USB sera 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 informacin y los datos se mueven por los cables D+ y D-.
TABLA 1. Pines de conexin USB

Fig. 4. Caracterstica del PIC18F4550

El firmware 2 que se implemento en el PIC18F4550 para establecer la comunicacin USB con la PC, se realizo a travs de las siguientes instrucciones de programacin.
Inicio Inicializa el USB Habilita el Perifrico 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 travs de esos cables se genera un tipo de seal diferencial. La transferencia de informacin lo realiza de manera bidireccional, pero no al mismo tiempo. En la misma seal diferencial entre D+ y D- se enva y se recibe las tramas de datos. Dentro de esta seal se observa una seal Sync, PID y Opcional, estas tres forman el paquete de trama donde va incluida la informacin que se desea trasmitir (Ver Fig. 3).

Datos Recibido?

No

Si
Almacena el dato recibido Toma de decisiones del dato recibido Control y Adquisicin de datos Trasmisin de datos a la PC

Si

Conexin con Windows Xp?

No
Fin

Fig. 3. Composicin de un paquete de informacin

Fig.5. Diagrama de flujo del firmware Firmware: instrucciones de programa que establece la lgica de bajo nivel para el control de circuitos electrnicos.
2

La seal 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 libreras usb de CCS C Compiler, para configurar el dispositivo y establecer la comunicacin entre la PC. Para que el host USB rena la informacin necesaria e identifique al dispositivo y lo configure, el firmware debe contener descriptores. Los descriptores contienen informacin bsica del dispositivo como el nmero de serie, la clase de dispositivo, el protocolo soportado, la capacidad de transmisin, las funciones del dispositivo, entre otros. Con el propsito 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 COMUNICACIN Y TIPO DE TRANSFERENCIAS La interfaz de tipo USB 2.0 define las vas de comunicacin 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 vas de comunicacin (pipes) necesaria entre el sistema y cada uno de los endpoint disponible en dicha configuracin. El sistema elige una cierta configuracin en funcin 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 continuacin se describe cada una de ellas. A. Pipe Stream La Pipe Stream es una va de comunicacin unidireccional entre el host y el endpoint de los tipos Bulk, Interrupcin o Iscrono. 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 travs de estas pipes, el sistema puede leer del dispositivo toda la informacin descriptiva necesaria para identificar el tipo de dispositivo, posibles configuraciones, protocolo que soporta, nmero y tipos de enpoints que soporta en cada posible configuracin, etc.

B. Transferencia Bulk Las transferencias Bulk estn diseadas 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 funcin del ancho de banda disponible. Reintento de trasferencias en caso de errores de entrega. Entrega garantizada de datos, pero sin garanta de latencia mxima ni de ancho de banda. Las transferencias Bulk se realizan relativamente rpidas 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. LIBRERA MPUSBAPI Como se menciono en la seccin II, las funciones de acceso al puerto USB con el microcontrolador PIC18F4550 se realizan mediante la librera mpusbapi. Para hacer uso de esta librera en labview se utiliza el VI Call Library Fuction Node (Ver Fig.6).

Fig. 6. Call Library Fuction Node

Con este VI podemos asignarle parmetros a las funciones que contiene la librera mpusbapi para enviar y recibir datos. Los pasos para utilizar la librera mpusbapi en LabVIEW se muestran en el diagrama siguiente.
Inicio

mpusbopen mpusbwrite mpusbread mpusbclose Si Continuar? No Fin Fig. 7. Diagrama de configuracin de librera mpusbapi

Las funciones de la librera mpusbapi se analizan a continuacin:


Endpoint: Buffer (bloque de datos) o un registro que almacena bytes que se encuentran en el dispositivo. 4 Pipes: Enlace virtual o Asociacin 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 nmero de dispositivo para abrir. Normalmente, se utiliza primero la llamada de MPUSBGetDeviceCount para saber cuntos 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 nmero del Endpoint que se va a abrir. El formato es \\MCHP_EPz o \MCHP_EPz dependiendo del lenguaje de programacin. Donde z es el nmero del Endpoint en decimal. Ejemplo: \\MCHP_EP1 o \MCHP_EP1 Este argumento puede ser NULL (nulo) para crear lazos con endpoints de funciones no especficas. dwDir: Especifica la direccin del endpoint: MP_READ: para MPUSBRead y MPUSBReadInt. Y MP_Write: para MPUSBWrite. dwReserved: indica un nmero 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 ledo de la pipe. dwLen (input): Especifica el nmero de bytes que hay que leer de la pipe. pLenght (output): Puntero al nmero de bytes ledos. 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 funcin vuelve si transcurre el intervalo aunque no se complete la operacin. Si dwMilliseconds=0, la funcin 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 unin. handle (Input): Identifica la pipe del endpoint que se va a cerrar.

VI. ADQUISICION DE DATOS EN LABVIEW LabVIEW es una herramienta de programacin grfica que permite realizar simulaciones, pruebas, control y diseo de procesos y sistema. El lenguaje que usa se llama lenguaje G (Grfico).Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales (Vis). Para probar la recepcin 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 nmero de bytes que se van a escribir en la pipe. pLenght (Output): Puntero al nmero de bytes que se escriben al llamar esta funcin. 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 funcin vuelve si transcurre el intervalo, aunque no se complete la operacin. Si dwMilliseconds=0, la funcin 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 electrnico del Proyecto

VID_PID es la unin entre la identificacin del dispositivo (PID) y del vendedor (VID), en nmero hexadecimal de 16bits.

La transmisin de datos va USB se realizo manipulando el encendido de forma intencionada de unos leds(Ver Fig. 8). Estos leds representan el encendido digital de actuadores como vlvulas de paso. -4 / 5-

CONAGOLFO 2009

La programacin en LabVIEW se realizo a travs de un subVI (PicUSB-Labview) que permite manipular de manera ms fcil al dispositivo. El subVI creado se muestra en la siguiente figura.

VI. CONCLUSIONES En este artculo se presento una metodologa que permite la comunicacin entre un microcontrolador PIC18F4550 y LabVIEW para tareas de adquisicin de datos. Los resultados obtenidos demuestran que la metodologa implementada funciona perfectamente, se logra trasferir datos de alta velocidad. Con esta tcnica se pretende que estudiante e investigadores puedan construir una tarjeta de adquisicin de datos y que pueda implementarse para tareas de simulacin, supervisin 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 Edicin. 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 programacin estructurada con el respectivo subVI creado y en la Figura. 11, se muestran la programacin virtual del proyecto.

[3]

[4] [5] [6]

Fig. 10. Diagrama Bloque

Fig. 11. Panel Frontal

-5 / 5-

También podría gustarte