You are on page 1of 5

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 Considerando las problemáticas planteadas
para realizar la comunicación entre LabVIEW y un anteriormente, en este artículo se presenta una metodología
microcontrolador PIC18F4550 de Microchip. Con las para establecer la comunicación vía USB entre LabVIEW y
herramientas presentadas en este trabajo se pueden adquirir y un microcontrolador. El artículo está dividido de la
enviar datos masivos de información hasta una velocidad de siguiente forma: en la sección II se presenta el desarrollo de
12Mb/s. La comunicación se realiza mediante la herramienta
la comunicación entre la PC y el microcontrolador. En la
Call Library Fuction de LabVIEW, la cual hace uso de la
librería mpusbapi que nos proporciona Microchip. El puente sección III contiene la vía y tipo de comunicación USB y en
que establece la comunicación entre el microcontrolador y la la IV se presenta el funcionamiento de librería mpusbapi 1 de
PC se realiza mediante las librerías usb del software CCS C microchip y la comunicación con LabVIEW, Por último, en
Compiler y el driver mchpusb para Microsoft Windows XP. la sección V se hace la validación de la comunicación USB,
Por último se realizan pruebas de adquisición y envió de datos. censando datos de temperatura y activando leds, que
simbolizan unas electroválvulas.
Palabras clave: Call Library Function, Mpusbapi.dll, USB,
Bulk Transfers USB, LabVIEW-USB.
II. COMUNICACIÓN ENTRE LA PC Y EL DISPOSITIVO USB
I. INTRODUCCIÓN
Existen tres maneras de establecer la comunicación por
USB (Bus Universal en Serie):
Muchas compañías en la industria de la manufactura
1. Bulk Transfers: transferencia bidireccional masiva
usan computadoras personales en sus plantas y laboratorios
de información.
para probar sus productos, tomar mediciones y automatizar
2. CDC: clase de dispositivos de comunicación
procesos. Al crear sistemas basados en computador, los
(emulación del protocolo RS232).
usuarios están aprovechando las ventajas de las tecnologías
3. HID: dispositivos de interfaz humana (plug-and-
de la computación más recientes tales como tarjetas de
play).
adquisición de datos.
En este trabajo se opto por la opción Bulk Transfers,
debido a que permite la transmisión de datos de alta
La técnica de instrumentos virtuales mediante tarjetas
velocidad (Full Speed) de 12Mb/s. Las transferencias Bulk
de adquisición de datos, es cada vez más utilizada en la
están diseñadas para soportar aquellos dispositivos que
industria. Esta metodología consiste en realizar paneles de
precisan enviar o recibir grandes cantidades de datos.
control en computador, tradicionalmente hechas por
software que utiliza instrumentos virtuales como LabVIEW.
Interconexión
A través de estos instrumentos virtuales (Vis) se pueden
supervisar en tiempo real las variables del proceso PC Dispositivo USB
(Temperatura, Humedad, Presión, entre otros.) y controlar Tarje
actuadores (válvulas, termoresistencias, entre otros). Estos LabVIEW Función
VIs brindan al usuario una gran flexibilidad de operación
debido a que no requieren de ninguna circuitería para Librería Mpusbapi
realizar complicados procedimientos de control, simulación TAD
y supervisión.
Controlador del
Actualmente la obtención de datos en LabVIEW, se dispositivo USB
Firmware
realiza mediante tarjetas de adquisición (TAD) que National
Instrument desarrolla. Estas TAD generalmente son muy Host USB Microcontrolador
costosas y de uso limitado, esto es, que no puede utilizarse
en ningún otro software. El costo es la principal limitante Fig. 1. Etapas de comunicación entre la PC y el Dispositivo USB.
que hace difícil adquirirlas por estudiantes, universidades y
centros de investigación. 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.

ISBN: -1 / 5-
CONAGOLFO 2009

dispositivo USB a través de la librería mpusbapi. La librería de cómo los bytes de información debe ser interpretado o
realiza la transmisión de datos a la dirección del dispositivo tratados. Y por ultimo esta la opcional donde contiene los
que el host USB configuro al usar el driver. El driver datos enviados y recibidos, que va desde 1 byte hasta 124
establece el puente entre la PC y el microcontrolador. Dentro bytes.
del microcontrolador se ejecuta el firmware el cual se
comunica con elementos de la TAD, que realizan algunas B. Microcontrolador PIC
funciones útiles para el usuario o lo que se desea controlar. Para establecer la interfaz de comunicación USB se
selecciono el microcontrolador PIC18F4550. Este
Una descripción formal de los principales procesos o dispositivo soporta la comunicación vía USB, es decir,
elementos que realizan la comunicación entre el dispositivo incluyen un controlador USB interno y cuenta con pines para
USB y la PC se enumeran a continuación. conectarse a la PC sin la necesidad de pull-ups o circuitería
externa [5]. En la Figura. 4 se observa la estructura interna
A. Interconexión del controlador de periférico USB.
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].
PIC18F4550 LIN-UART
Full Speed MCU Core
Interfaz USB 2.0 12MIPS I2C/SPI
2 1
48MHZ 16-bit Captura
1 2 3 4
USB Regulador de 32 Kbytes
3 4
Voltaje Enhanced Flash Quad. PWM
A B 2 Kbytes 10-bit
Fig. 2. Conectores USB Transferencia USB RAM ADC
Full Speed 256 Bytes
De esta forma el típico cable USB sería el modelo EEPROM
US09. La velocidad soportada por estos cables es de 12
Mbps, hasta 480Mbps en el caso de los cables para USB Fig. 4. Característica del PIC18F4550
2.0. El cable está compuesto por solo cuatro cables, Vbus,
D+, D- y GND (Ver Tabla1). La información y los datos se El firmware 2 que se implemento en el PIC18F4550
mueven por los cables D+ y D-. para establecer la comunicación USB con la PC, se realizo a
través de las siguientes instrucciones de programación.
TABLA 1.
Pines de conexión USB Inicio
Pin Nombre Color de cable Inicializa el USB
1 +5.0V Rojo
2 Data- Blanco Habilita el Periférico USB
3 Data+ Verde
Espera que sea configurado por la PC
4 Tierra 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
¿Datos No
señal diferencial entre D+ y D- se envía y se recibe las
Recibido?
tramas de datos. Dentro de esta señal se observa una señal
Si
Sync, PID y Opcional, estas tres forman el paquete de trama
donde va incluida la información que se desea trasmitir (Ver Almacena el dato recibido
Fig. 3).
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

La señal Sync es utilizada por receptor para sincronizarse 2


con el host. El PID es un paquete identificador, que definirá Firmware: instrucciones de programa que establece la lógica de bajo
nivel para el control de circuitos electrónicos.

-2 / 5-
CONAGOLFO 2009

El firmware hace uso de las librerías usb de CCS C B. Transferencia Bulk


Compiler, para configurar el dispositivo y establecer la Las transferencias Bulk están diseñadas para soportar
comunicación entre la PC. aquellos dispositivos que precisan enviar o recibir grandes
cantidades de datos con latencias que pueden tener amplias
Para que el host USB reúna la información necesaria e variaciones, y en que las transacciones pueden utilizar
identifique al dispositivo y lo configure, el firmware debe cualquier ancho de banda disponible. Para ellos las
contener descriptores. Los descriptores contienen transacciones Bulk proporcionan:
información básica del dispositivo como el número de serie,  Acceso al bus en función del ancho de banda disponible.
la clase de dispositivo, el protocolo soportado, la capacidad  Reintento de trasferencias en caso de errores de entrega.
de transmisión, las funciones del dispositivo, entre otros.  Entrega garantizada de datos, pero sin garantía de
Con el propósito de que el sistema identifique al dispositivo latencia máxima ni de ancho de banda.
y encuentre al driver que debe utilizar. Las transferencias Bulk se realizan relativamente rápidas si
el bus dispone de mucho ancho de banda libre. En un bus
C. Driver del dispositivo USB con mucho ancho de banda reservado, la transferencia
Cuando el dispositivo se conecta por primera vez a la puede alargarse durante periodos de tiempo relativamente
PC, el sistema pedirá el controlador (driver) correspondiente, grandes.
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. IV. LIBRERÍA MPUSBAPI

Como se menciono en la sección II, las funciones de


III.VIA DE COMUNICACIÓN Y TIPO DE TRANSFERENCIAS acceso al puerto USB con el microcontrolador PIC18F4550
se realizan mediante la librería mpusbapi. Para hacer uso de
La interfaz de tipo USB 2.0 define las vías de esta librería en labview se utiliza el VI Call Library Fuction
comunicación entre las aplicaciones que se ejecutan en el Node (Ver Fig.6).
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
Fig. 6. Call Library Fuction Node
sistema y cada uno de los endpoint disponible en dicha
configuración. El sistema elige una cierta configuración en
Con este VI podemos asignarle parámetros a las
función de la funcionalidad particular que se precise del
funciones que contiene la librería mpusbapi para enviar y
dispositivo.
recibir datos. Los pasos para utilizar la librería mpusbapi en
Existen 4 tipos de endpoints (Bulk, Control, Interrupcion e
LabVIEW se muestran en el diagrama siguiente.
Isocrono) y 2 tipos de pipe (Conrol o Mensaje y Stream), de
las cuales se utiliza la Pipe Stream y Endpoint Bulk. A Inicio
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, mpusbopen
Interrupción o Isócrono. Si un dispositivo necesita realizar
mpusbwrite
transferencias bidireccionales de un tipo de endpoint
concreto el sistema debe establecer dos pipes, una de salida mpusbread
y una pipe de entrada. A través de estas pipes, el sistema
puede leer del dispositivo toda la información descriptiva mpusbclose
necesaria para identificar el tipo de dispositivo, posibles Si
configuraciones, protocolo que soporta, número y tipos de ¿Continuar?
enpoints que soporta en cada posible configuración, etc. No
Fin

Fig. 7. Diagrama de configuración de librería mpusbapi

Las funciones de la librería mpusbapi se analizan a


continuación:
3
Endpoint: Buffer (bloque de datos) o un registro que almacena
bytes que se encuentran en el dispositivo. Mpusbopen: (instance, pVID_PID, pEP, dwDir,
4 dwReserved)
Pipes: Enlace virtual o Asociación entre el host y el Endpoints.

-3 / 5-
CONAGOLFO 2009

 handle (input): Identifica la pipe del Endpoint que se va


Devuelve el acceso al pipe del endpoints con el a leer. La pipe unidad tiene que crearse con el atributo
VID_PID5 asignado. de acceso MP_READ.
 pData (output): Puntero al buffer que recibe el dato
 Instance (Input): Un número de dispositivo para abrir. leído de la pipe.
Normalmente, se utiliza primero la llamada de  dwLen (input): Especifica el número de bytes que hay
MPUSBGetDeviceCount para saber cuántos que leer de la pipe.
dispositivos hay.  pLenght (output): Puntero al número de bytes leídos.
 pVID_PID (Input): String que contiene el PID&VID MPUSBRead pone este valor a cero antes de cualquier
del dispositivo objetivo. El formato es lectura o de chequear un error.
“vid_xxxx&pid_yyyy”. Donde xxxx es el valor del  dwMilliseconds (input): Especifica el intervalo de time-
VID el yyyy el del PID, los dos en hexadecimal. out en milisegundos. La función vuelve si transcurre el
Ejemplo: intervalo aunque no se complete la operación. Si
Si un dispositivo tiene un VID=0x04d8 y un dwMilliseconds=0, la función comprueba los datos de
PID=0x0010, el string de entrada es: la pipe y vuelve inmediatamente. Si dwMilliseconds es
“vid_0x04d8&pid_0x0010”. infinito, el intervalo de time-out nunca termina.
 pEP: (Input): String con el número del Endpoint que
se va a abrir. El formato es “\\MCHP_EPz” o Mpusbclose (handle):
“\MCHP_EPz” dependiendo del lenguaje de Cierra una determinada unión.
programación. Donde z es el número del Endpoint en  handle (Input): Identifica la pipe del endpoint que se
decimal. va a cerrar.
Ejemplo: “\\MCHP_EP1” o “\MCHP_EP1”
Este argumento puede ser NULL (nulo) para crear
lazos con endpoints de funciones no específicas. VI. ADQUISICION DE DATOS EN LABVIEW
 dwDir: Especifica la dirección del endpoint:
MP_READ: para MPUSBRead y LabVIEW es una herramienta de programación gráfica
MPUSBReadInt. Y MP_Write: para MPUSBWrite. que permite realizar simulaciones, pruebas, control y diseño
 dwReserved: indica un número reservado para el de procesos y sistema. El lenguaje que usa se llama lenguaje
dispositivo. G (Gráfico).Los programas desarrollados con LabVIEW se
llaman Instrumentos Virtuales (Vis).
Mpusbwrite: (handle, pData, dwLen, pLenght,
dwMilliseconds) Para probar la recepción de datos entre LABVIEW y el
exterior, se realizó la siguiente prueba: Se midió la
 handle (Input): Identifica la pipe del endpoint que se temperatura ambiental de forma continua utilizando el
va a escribir. La pipe unidad tiene que crearse con el sensor LM35.
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, Fig. 8. Diagrama electrónico del Proyecto
dwMilliseconds):
La transmisión de datos vía USB se realizo
manipulando el encendido de forma intencionada de unos
5
leds(Ver Fig. 8). Estos leds representan el encendido digital
VID_PID es la unión entre la identificación del dispositivo (PID) y del
de actuadores como válvulas de paso.
vendedor (VID), en número hexadecimal de 16bits.

-4 / 5-
CONAGOLFO 2009

La programación en LabVIEW se realizo a través de un VI. CONCLUSIONES


subVI (PicUSB-Labview) que permite manipular de manera En este artículo se presento una metodología que
más fácil al dispositivo. El subVI creado se muestra en la permite la comunicación entre un microcontrolador
siguiente figura. 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
En la Figura 10, se muestra la programación
[1] Gary W. Johnson, R. J. (2006). LabVIEW Graphical Programming,
estructurada con el respectivo subVI creado y en la Figura. Fourth Edition. New York: McGraw-Hill.
11, se muestran la programación virtual del proyecto. [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

Fig. 10. Diagrama Bloque

Fig. 11. Panel Frontal

-5 / 5-

You might also like