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-

0. Vbus. 3.0 USB Regulador de Voltaje Transferencia USB Full Speed A Fig. La librería realiza la transmisión de datos a la dirección del dispositivo que el host USB configuro al usar el driver. 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 1 2 3 4 3 4 1 de cómo los bytes de información debe ser interpretado o tratados. Microcontrolador PIC Para establecer la interfaz de comunicación USB se selecciono el microcontrolador PIC18F4550. Dentro de esta señal se observa una señal Sync. que definirá -2 / 5- . A. En la Figura. es decir. hasta 480Mbps en el caso de los cables para USB 2. La velocidad soportada por estos cables es de 12 Mbps. D. 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. 2. PWM 10-bit ADC De esta forma el típico cable USB sería el modelo US09. PID y Opcional. Y por ultimo esta la opcional donde contiene los datos enviados y recibidos. En la misma señal diferencial entre D+ y D.se envía y se recibe las tramas de datos. La transferencia de información lo realiza de manera bidireccional. Composición de un paquete de información Fig. El cable está compuesto por solo cuatro cables. D+. B. El PID es un paquete identificador. Este dispositivo soporta la comunicación vía USB. que realizan algunas funciones útiles para el usuario o lo que se desea controlar.y GND (Ver Tabla1). 4. TABLA 1. Inicio Inicializa el USB Habilita el Periférico USB Espera que sea configurado por la PC Pin 1 2 3 4 Nombre +5. El driver establece el puente entre la PC y el microcontrolador.5. Dentro del microcontrolador se ejecuta el firmware el cual se comunica con elementos de la TAD. ¿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. 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]. Full Speed Interfaz USB 2. 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. que va desde 1 byte hasta 124 bytes. Interconexión El dispositivo USB dispone de 2 tipos de conectores (A y B) como se observa en la figura 2. 2 La señal Sync es utilizada por receptor para sincronizarse con el host. La información y los datos se mueven por los cables D+ y D-. que pueden ser a su vez macho o hembra [2]. pero no al mismo tiempo.0V DataData+ Tierra Color de cable Rojo Blanco Verde Negro A través de esos cables se genera un tipo de señal diferencial. se realizo a través de las siguientes instrucciones de programación. 3). estas tres forman el paquete de trama donde va incluida la información que se desea trasmitir (Ver Fig. 4 se observa la estructura interna del controlador de periférico USB. Pines de conexión USB Fig.CONAGOLFO 2009 dispositivo USB a través de la librería mpusbapi. Característica del PIC18F4550 El firmware 2 que se implemento en el PIC18F4550 para establecer la comunicación USB con la PC.

Para que el dispositivo sea reconocido por el sistema. Cuando un dispositivo USB se conecta a un sistema. el firmware debe contener descriptores.  Reintento de trasferencias en caso de errores de entrega. de las cuales se utiliza la Pipe Stream y Endpoint Bulk. la capacidad de transmisión. el sistema puede leer del dispositivo toda la información descriptiva necesaria para identificar el tipo de dispositivo. Las transferencias Bulk se realizan relativamente rápidas si el bus dispone de mucho ancho de banda libre. Interrupcion e Isocrono) y 2 tipos de pipe (Conrol o Mensaje y Stream).VIA DE COMUNICACIÓN Y TIPO DE TRANSFERENCIAS La interfaz de tipo USB 2. A continuación se describe cada una de ellas. dwDir. Existen 4 tipos de endpoints (Bulk. III. 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. Con el propósito de que el sistema identifique al dispositivo y encuentre al driver que debe utilizar. Interrupción o Isócrono. y en que las transacciones pueden utilizar cualquier ancho de banda disponible. Driver del dispositivo Cuando el dispositivo se conecta por primera vez a la PC. -3 / 5- . 3 Mpusbopen: dwReserved) (instance. pVID_PID. la clase de dispositivo. en este caso el driver mchpusb creado por Microchip. El sistema elige una cierta configuración en función de la funcionalidad particular que se precise del dispositivo. En un bus USB con mucho ancho de banda reservado. Inicio mpusbopen mpusbwrite mpusbread mpusbclose Si ¿Continuar? No Fin Fig. posibles configuraciones. A. IV. y las denomina Pipes4. el sistema pedirá el controlador (driver) correspondiente. 7. Para ellos las transacciones Bulk proporcionan:  Acceso al bus en función del ancho de banda disponible. Para hacer uso de esta librería en labview se utiliza el VI Call Library Fuction Node (Ver Fig. Los pasos para utilizar la librería mpusbapi en LabVIEW se muestran en el diagrama siguiente. el protocolo soportado. 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.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). Para que el host USB reúna la información necesaria e identifique al dispositivo y lo configure. LIBRERÍA MPUSBAPI Como se menciono en la sección II. etc. las funciones del dispositivo. 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. pEP. para configurar el dispositivo y establecer la comunicación entre la PC. C. pero sin garantía de latencia máxima ni de ancho de banda. este driver debe contener los mismos descriptores que el firmware. el dispositivo queda organizado como un cierto conjunto de endpoints. A través de estas pipes. Pipe Stream La Pipe Stream es una vía de comunicación unidireccional entre el host y el endpoint de los tipos Bulk. 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 descriptores contienen información básica del dispositivo como el número de serie. entre otros. la transferencia puede alargarse durante periodos de tiempo relativamente grandes. número y tipos de enpoints que soporta en cada posible configuración. y el sistema lo reconoce y lo configura. las funciones de acceso al puerto USB con el microcontrolador PIC18F4550 se realizan mediante la librería mpusbapi. Fig.CONAGOLFO 2009 El firmware hace uso de las librerías usb de CCS C Compiler.  Entrega garantizada de datos. Control. 6. 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.6). B. protocolo que soporta. 4 Pipes: Enlace virtual o Asociación entre el host y el Endpoints.

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

(2001).com Universal Serial Bus (2008). 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.Third Edition. 10. LabVIEW Graphical Programming.org Microchip (2008). [2] Fourth Edition. (2005). 11. VI PicUSB-LabVIEW REFERENCIAS [1] Gary W.microchip. Fig. se logra trasferir datos de alta velocidad. VI. http://www. El subVI creado se muestra en la siguiente figura. LABVIEW 7. National Instruments (2008). http://www. Jan Axelson. Madison. M. http://www. New York: McGraw-Hill. Lazaro. (2006). 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. Texas: Thomson. se muestra la programación estructurada con el respectivo subVI creado y en la Figura.ni.1: PROGRAMACION GRAFICA PARA EL CONTROL DE INSTRUMENTACION. Panel Frontal -5 / 5- .com En la Figura 10. Cuarta Edición.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. [3] [4] [5] [6] Fig. 9. Diagrama Bloque Fig. R. USB Complete Everything You Need to Develop Custom USB Peripherals. A. Johnson. supervisión y control.usb. J. 11. se muestran la programación virtual del proyecto. Los resultados obtenidos demuestran que la metodología implementada funciona perfectamente. WI: Lakeview Research.

Sign up to vote on this title
UsefulNot useful