comunicación usb de alta velocidad entre labview y un microcontrolador para la adquisición de...

5

Click here to load reader

Upload: fernando-miguel

Post on 02-Aug-2015

722 views

Category:

Documents


1 download

DESCRIPTION

comunicacion Labview y un microcontrolador PIC

TRANSCRIPT

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

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

ISBN: -1 / 5-

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: [email protected]

PC Dispositivo USB

Tarje LabVIEW

Host USB

Función

Librería Mpusbapi

Controlador del

dispositivo USB

TAD

Microcontrolador

Firmware

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

CONAGOLFO 2009

-2 / 5-

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

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

CONAGOLFO 2009

-3 / 5-

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

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

CONAGOLFO 2009

-4 / 5-

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.

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

CONAGOLFO 2009

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