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*, J.E. Velzquez-Lpez, F.R Lpez-Estrada, R. Moreno Rincn, N. Jurez-Rodrguez y H.
Hernndez-de-Len
Departamento de ingeniera Electrnica, Instituto Tecnolgico De Tuxtla Gutirrez, Mxico, CP 29050
Telfono: (+52) (961 6150380) Ext. 311. *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.

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.

Palabras clave: Call Library Function, Mpusbapi.dll, USB,


Bulk Transfers USB, LabVIEW-USB.

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.

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

Tarje
Funcin

Librera Mpusbapi

TAD

Controlador del
dispositivo USB

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.

Host USB

Firmware
Microcontrolador

Fig. 1. Etapas de comunicacin entre la PC y el Dispositivo USB.

Mpusbapi es una librera creada por Microchip para utilizar el


microcontrolador.

ISBN: 978-607-00-1861-9

-1 / 5-

CONAGOLFO 2009

En el diagrama de la Figura. 1 se ilustra el flujo de datos


USB a partir del software LabVIEW que manipula al
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

La seal Sync es utilizada por receptor para sincronizarse


con el host. El PID es un paquete identificador, que definir
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

4
3

USB Regulador de
Voltaje

B
Fig. 2. Conectores USB

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

Pin
1
2
3
4

Nombre
+5.0V
DataData+
Tierra

Transferencia USB
Full Speed

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

LIN-UART

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

ADC

256 Bytes
EEPROM

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

Color de cable
Rojo
Blanco
Verde
Negro

Inicializar el USB
Habilitar el Perifrico USB
Espera que sea configurado por la PC

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

Datos
Recibido?

No

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

Si
Fig. 3).
Fig. 3. Composicin de un paquete de informacin

Conexin con
Windows Xp?

Fin
Firmware: instrucciones de programa que establece la lgica de bajo
nivel para el control de circuitos electrnicos.
2

-2 / 5-

CONAGOLFO 2009

No
Fig.5. Diagrama de flujo del firmware

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

Figura 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
Figura 7. Diagrama de configuracin de librera mpusbapi

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.

Las funciones de la librera mpusbapi se analizan a


continuacin:
-3 / 5-

CONAGOLFO 2009

Mpusbopen:
dwReserved)

(instance,

pVID_PID,

pEP,

dwDir,

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.

Mpusbwrite:
(handle,
dwMilliseconds)

pData,

dwLen,

pLenght,

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.

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.

Figura 8. Diagrama electrnico del Proyecto

Mpusbread
(handle,
dwMilliseconds):

pData,

dwLen,

pLenght,
La transmisin de datos va USB se realizo
manipulando el encendido de forma intencionada de unos

VID_PID es la unin entre la identificacin del dispositivo (PID) y del


vendedor (VID), en nmero hexadecimal de 16bits.

-4 / 5-

CONAGOLFO 2009

leds(Ver Fig. 8). Estos leds representan el encendido digital


de actuadores como vlvulas de paso.
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.

REFERENCIAS

Figura 9. VI PicUSB-LabVIEW

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.

[1] Gary W. Johnson, R. J. (2006). LabVIEW Graphical Programming,


[2]

[3]

[4]
[5]
[6]

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

Figura 10. Diagrama Bloque

Fig. 11. Panel Frontal

-5 / 5-