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-

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

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

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

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

Sign up to vote on this title
UsefulNot useful