Está en la página 1de 19

CAPITULO 3

COMUNICACIN VIA 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, es por ello que en este captulo trataremos el tema de la toma de datos por medio de una tarjeta de adquisicin de datos diseada por estudiantes, con dispositivos que son en esencial ms baratos. Esta comunicacin es un paso muy importante para la adquisicin de datos por medio de esta tarjeta ya que se debe hacer mediante una comunicacin UART que posee el dispositivo a utilizar, en este caso, el microcontrolador PIC18F4550. 3.1 UNIVERSAL SERIAL BUS (USB) El USB o Universal Serial Bus es una interfaz para la transmisin serie de datos y distribucin de energa desarrollado por empresas lderes del sector de las telecomunicaciones y de la computacin y que ha sido introducida en el mercado de los PCs y perifricos para mejorar las lentas interfaces serie (RS-232) y paralelo. Provee una mayor velocidad de transferencia (de hasta 100 veces ms rpido) comparado con el puerto Paralelo de 25-pin y el Serial DB-9, DB-25, RS-232 que son los puertos que se encuentran en la mayora de los computadores. El bus serie universal o en sus siglas en ingls: USB, posee algunas caractersticas como son: Integridad de la seal por el uso de apantallamientos, drivers y receptores diferenciales. Los dispositivos USB de clase HID (Human Interface Device) son soportados por los sistemas operativos des-de Windows Millennium en adelante. En dispositivos USB 2.0 se pueden transmitir datos a razn de 480 mega-bits por segundo. Los cables USB individuales pueden extenderse hasta 5 m de distancia y ms con el uso de multiplexores de puertos o HUB. El bus USB puede suplir hasta 500 mA @ 5 V a cada uno de los dispositivos conectados, eliminando el uso de fuentes y cables externos en aplicaciones de baja potencia.

Esas caractersticas hacen del bus USB una opcin til en aplicaciones de instrumentacin electrnica. Muchos fabricantes de microcontroladores programables como Microchip, estn incluyendo un modulo USB en sus dispositivos. Facilitando el desarrollo de aplicaciones de instrumentacin que aprovechen las capacidades USB. Por otra parte, el soporte brindado por los fabricantes de computadoras personales (PC) a los puertos seriales RS-232 y paralelos Centronics, de amplio uso entre los instrumentistas, cada vez es menor. En la actualidad es comn que una PC incluya solo un puerto serial RS232, o ninguno en el caso de algunas porttiles, y s varios puertos USB. Tena en un principio como objetivo el conectar perifricos relativamente lentos (ratones, impresoras, cmaras digitales, unidades ZIP, etc.) de una forma realmente sencilla, rpida y basada en comunicaciones serie, aunque por sus caractersticas tambin poda conectarse con discos duros.

Figura 3.1 Velocidad de transferencia de varias interfaces

Esta interfaz de 4 hilos distribuye 5V para la alimentacin y puede transmitir datos a una velocidad de hasta 480 Mbps en su versin 2.0. Es un bus serie que hace posible la conexin de hasta 127 perifricos a una nica puerta de un PC, con deteccin y configuracin automticas, siendo esto posible con el PC conectado a la red y sin tener que instalar software adicional, ni reiniciar el ordenador (plug and play), algo que con los puertos convencionales serie y paralelo no suceda. El xito de la interfaz USB ha sido tal que, actualmente todos los PCs tienen integrados al menos dos puertos USB para la conexin de dispositivos. Los PCs modernos adems de tener los dos traseros pueden tener ms puertos en el frontal para facilitar su conexin. A falta de puertos se pueden acoplar hubs USB para ampliar el nmero de dispositivos siempre que no se sobrepase el lmite soportado de 127. 3.1.1 DESVENTAJA El ancho de banda debe repartirse entre todos los dispositivos conectados a l, lo que quizs no tendra repercusin si se intentaran conectar varios ratones, pero s que la tendra si se quisiera grabar CDs en varias grabadoras en paralelo.

3.1.2 CARACTERSTICAS DE LA INTERFACE DE COMUNICACIN USB 3.1.2.1 Fcil uso para los usuarios: Modelo simple para el cableado y los conectores. Detalles elctricos aislados del usuario (terminaciones del bus). Perifricos auto-identificativos. Perifricos acoplados y reconfigurados dinmicamente (Hot Swappable).

3.1.2.2 Flexibilidad: Amplio rango de tamaos de paquetes, permitiendo variedad de opciones de buffering de dispositivos. Gran variedad de tasas de datos de dispositivos acomodando el tamao de buffer para los paquetes y las latencias. Control de flujo para el manejo del buffer construido en el protocolo.

3.1.2.3 Ancho de banda sincrnico: Control de flujo para el manejo del buffer construido en el protocolo. Amplia gama de aplicaciones y cargas de trabajo. Adecuando el ancho de banda desde unos pocos Kbps hasta varios Mbps. Soporta tanto el tipo de transferencia iscrono como el asncrono sobre el mismo conjunto de cables. Conexiones mltiples, soportando operaciones concurrentes de varios dispositivos. Soporta hasta 127 dispositivos fsicos. Soporta la transferencia de mltiples datos y flujos de mensajes entre el host y los dispositivos.

3.1.2.4 Robustez: Manejo de errores y mecanismos de recuperacin ante fallos implementados en el protocolo. Insercin dinmica de dispositivos. Soporte para la identificacin de dispositivos defectuosos.

3.1.2.5 Implementacin de bajo costo Sub canal de bajo costo a 1.5 Mbps. Conectores y cables de bajo costo. Adecuado para el desarrollo de perifricos de bajo costo.

Una descripcin formal de los principales procesos que realizan la comunicacin entre el dispositivo USB y la PC se enumeran a continuacin. 3.1.3 FLUJO DE DATOS Un dispositivo USB desde un punto de vista lgico hay que entenderlo como una serie de end points, a su vez los end points se agrupan en conjuntos que dan lugar a interfaces, las cuales permiten controlar la funcin del dispositivo. Su divisin est dada por tres niveles o capas. En el nivel ms bajo el controlador de host USB se comunica con la interfaz del bus utilizando el cable USB, mientras que en un nivel superior el software USB del sistema se comunica con el dispositivo lgico utilizando la tubera de control por defecto ("Default Control Pipe"). En lo que al nivel de funcin se refiere, el software cliente establece la comunicacin con las interfaces de la funcin a travs de tuberas asociadas a end points. 3.1.3.1 End points y Direcciones de dispositivo Cada dispositivo USB est compuesto por una coleccin de end points independientes y una direccin nica asignada por el sistema en tiempo de conexin de forma dinmica. A su vez cada end point dispone de un identificador nico dentro del dispositivo al que pertenece, a este identificador se le conoce como nmero de end point y viene asignado de fbrica. Cada end point tiene una determinada orientacin de flujo de datos. La combinacin de direccin, nmero de end point y orientacin, permite referenciar cada end point de forma inequvoca. Cada end point es por s solo una conexin simple que soporta un flujo de datos en una nica direccin, bien de entrada o bien de salida. Este end point se caracteriza por: Frecuencia de acceso al bus requerida. Ancho de banda requerido. Nmero de end point. Tratamiento de errores requerido. Mximo tamao de paquete que el end point puede enviar o recibir. Tipo de transferencia para el end point. La orientacin en la que se transmiten los datos.

Existen dos end points especiales que todos los dispositivos deben tener, los end points con nmero 0 de entrada y de salida, que deben de implementar un mtodo de control por defecto al que se le asocia la tubera de control por defecto. Estos end points estn siempre accesibles mientras que el resto no lo estarn hasta que no hayan sido configurados por el host.

3.1.3.2 Tuberas Una tubera USB es una asociacin entre uno o dos end points en un dispositivo y el software en el host. Las tuberas permiten mover datos entre software en el host, a travs de un buffer y un end point en un dispositivo. Hay dos tipos de tuberas: Stream: Los datos se mueven a travs de la tubera sin una estructura definida. Mensaje: Los datos se mueven a travs de la tubera utilizando una estructura USB.

Las tuberas tienen las siguientes caractersticas: Demanda de acceso al bus y uso del ancho de banda. Un tipo de transferencia. Las caractersticas asociadas a los end points.

La tubera que est formada por dos endpoints con nmero cero se denomina tubera de control por defecto. Esta tubera est siempre disponible una vez se ha conectado el dispositivo y ha recibido un reseteo del bus. El resto de tuberas aparecen despus que se configure el dispositivo, la tubera de control por defecto es utilizada por el software USB del sistema para obtener la identificacin y requisitos de configuracin del dispositivo, y para configurar al dispositivo. La cantidad de datos en cada tanda ser el tamao mximo de un paquete excepto el ltimo paquete de datos que contendr los datos que faltan. De modo que un paquete recibido por el cliente que no consiga llenar el buffer de datos de la IRP puede interpretarse de diferentes modos en funcin de las expectativas del cliente, si esperaba recibir una cantidad variable de datos considerar que se trata del ltimo paquete de datos, sirviendo pues como delimitador de final de datos, mientras que si esperaba una cantidad especfica de datos lo tomar como un error. 3.1.3.3 Streams No necesita que los datos se transmitan con una cierta estructura. Las tuberas stream son siempre unidireccionales y los datos se transmiten de forma secuencial: "first in, first out". Estn pensadas para interactuar con un nico cliente, por lo que no se mantiene ninguna poltica de sincronizacin entre mltiples clientes en caso de que as sea. Un stream siempre se asocia a un nico end point en una determinada orientacin.

3.1.3.4 Mensajes A diferencia de lo que ocurre con los streams, en los mensajes la interaccin de la tubera con el endpoint consta de tres fases. Primero se realiza una peticin desde el host al dispositivo, despus se transmiten los datos en la direccin apropiada, finalmente un tiempo despus se pasa a la fase estado. Para poder llevar a acabo este paradigma es necesario que los datos se transmitan siguiendo una determinada estructura. Las tuberas de mensajes permiten la comunicacin en ambos sentidos, de hecho la tubera de control por defecto es una tubera de mensajes. El software USB del sistema se encarga de que mltiples peticiones no se enven a la tubera de mensajes concurrentemente. Un dispositivo ha de dar nicamente servicio a una peticin de mensaje en cada instante por cada tubera de mensajes. Una tubera de mensajes se asocia a un par de endpoints de orientaciones opuestas con el mismo nmero de endpoint. 3.1.3.5 Frames y microframes USB establece una unidad de tiempo base equivalente a 1 milisegundo denominada frame y aplicable a buses de velocidad media o baja, en alta velocidad se trabaja con microframes, que equivalen a 125 microsegundos. Los (micro) frames no son ms que un mecanismo del bus USB para controlar el acceso a este, en funcin del tipo de transferencia que se realice. En un (micro) frame se pueden realizar diversas transacciones de datos.

Figura 3.1.3.5 flujo de datos USB

En la figura 3.1.3.5 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 configura al usar el driver. 3.2 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].

Figura 3.2. Conectores USB

Para poder realizar una comunicacin con el entorno grafico LABIEW es necesario descargarse algunas libreras que se deben utilizar en este entorno para realizar una comunicacin exitosa. Es importante que se tome en cuenta lo siguiente: 3.3 COMUNICACIN ENTRE LA PC Y EL DISPOSITIVO USB 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-and- play). Se usar 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.

Figura 3.3. Etapas de comunicacin entre la PC y el Dispositivo USB.

En el diagrama de la Figura 3.3 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. 3.4 Descriptores USB Cuando un dispositivo USB es conectado a la PC el sistema operativo es capaz de reconocer su fabricante, identificador de producto e instalarle un driver estndar HID o abrir un asistente para encontrar el adecuado. Tambin muestra mensajes sobre el estado del dispositivo, marca, modelo, etc. Toda esa informacin que requiere el sistema operativo para identificar al dispositivo USB est alma-cenada en el microcontrolador PIC, en una zona de memoria RAM USB. En particular en el banco 4 de la RAM USB, destinado al buffer de descriptores. Los descriptores son archivos que se incluyen junto al cdigo fuente para ser grabados a esa zona de memoria RAM USB. El diseo de un descriptor es el tema de mayor complejidad en el uso de la comunicacin USB. Las referencias (2; 5) brindan informacin sobre el diseo de descriptores. En nuestro caso tomamos y adaptamos el descriptor brindado en uno de los ejemplos USB del compilador CCS los cuales tambin son una referencia de consulta vlida. La inclusin del descriptor en el archivo fuente se realiz a travs de la directiva include de la lnea 64 de este ltimo. En el descriptor se incluyen el identificador del fabricante del dispositivo (VID) y el identificador del producto (PID). Esos identificadores son utilizados por el sistema operativo de la PC para encontrar el driver apropiado al dispositivo USB. 3.5 VIA DE COMUNICACIN Y TIPO DE TRANSFERENCIAS La interfaz de tipo USB 2.0 define las vas de comunicacin entre las aplicaciones que se ejecutan en el host (clientes) y los distinto send point 3 en los dispositivos USB (servidores), y las denomina Pipes 4. 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 send points. El sistema establece todas las vas de comunicacin (pipes) necesaria entre el sistema y cada uno de los send point disponible en dicha configuracin. El sistema elige una cierta configuracin enfuncin de la funcionalidad particular que se precise del dispositivo. Existen 4 tipos de end points (Bulk, Control, Interrupcin

eIsocrono) y 2 tipos de pipe (Control o Mensaje y Stream), de las cuales se utiliza la Pipe Stream y End point Bulk. A continuacin se describe cada una de ellas. 3.5.1 Pipe Stream La Pipe Stream es una va de comunicacin unidireccional entre el host y el end point de los tipos Bulk, Interrupcin o Iscrono. Si un dispositivo necesita realizar transferencias bidireccionales de un tipo de end point 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 end points que soporta en cada posible configuracin, etc. 3.5.2 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.

3.6 LIBRERA MPUSBAPI Como se conoce las funciones de acceso al puerto USB con el microcontrolador a utilizarse en el proyecto se realizan mediante la librera MPUSBAPI. Para hacer uso de esta librera en labview se utiliza el VI Call Library Fuction Node de la figura 3.

Figura 3.6 VI Call Library Fuction Node

3.6.1 Funciones 3.6.1.1 Mpusbgetdllversion (void) Lee el nivel de revisin del MPUSAPI.dll. Es un nivel de revisin de 32bits. Esta funcin no devuelve la versin del cdigo, no realiza nada con el USB. Devuelve la versin de la dll en formato hexadecimal de 32bits. 3.6.1.2 Mpusbgetdevicecount (pvid_pid) Devuelve el nmero de dispositivo con VID_PID asignado. pVID_PID: Input: cadena de caracteres del nmero de identificacin asignado. 3.6.1.3 MpusbOpen (instance, pVID_PID, pep, dwdir, dwre served) Devuelve el acceso al pipe del Endpoint con el VID_PID asignado. Todos los pipes se abren con el atributo FILE_FLAG_OVERLAPPED. Esto permite que MPUSBRead, MPUSBWrite y MPUSBReadInt tengan un valor de timeout. 3.6.1.4 Instance: Input Un nmero de dispositivo para abrir. Normalmente, se utiliza primero la llamada de MPUSBGetDeviceCount para saber cuantos dispositivos hay. Es importante entender que el driver lo comparten distintos dispositivos. El nmero devuelto por el MPUSBGetDeviceCount tiene que ser igual o menor que el nmero de todos los dispositivos actualmente conectados y usando el driver genrico. Los dispositivos se deben etiquetar de la siguiente manera, dependiendo de los PID_VID conectados: Dispositivo tipo 0, VID 0x04d8, PID 0x0001 Dispositivo tipo 1, VID 0x04d8, PID 0x0002 Dispositivo tipo 2, VID 0x04d8, PID 0x0003

Si el dispositivo que nos interesa tiene VID=0x04d8 y PID=0x0002 el MPUSBGetDeviceCount devolver un 1.

3.6.2 Tipos de transferencias


Tipo Interrupt IN Interrupt OUT Bulk IN Bulk OUT Isochronous IN Isochronous OUT Funcin MPUSRead, MPUSReadInt MPUSBWrite si MPUSBRead si MPUSWrite si MPUSBRead no MPUSBWrite Aplicable timeout? si si si si no no

Tabla 3.6.2 tipos de transferencia

3.7 MICROCONTROLADOR PIC18F4550 3.7.1 Especificaciones tcnicas:


Caracterstica Frecuencia de operacin Memoria de programa (bytes) Memoria RAM de datos (bytes) Memoria EEPROM datos (bytes) Interrupciones Lneas de E/S Temporizadores Mdulos de comparacin/captura/pwm(CCP) Mdulos de comparacin/captura/pwm mejorado (ECCP) Canales de comunicacin serie Canal USB Puerto paralelo de transmisin de datos Canales de conversin A/D de 10 bits Comparadores analgicos Juego de instrucciones Encapsulados
Tabla 3.7.1 Especificaciones tcnicas

Hasta 48 MHz 32.768 2.048 256 20 35 4 1 1

MSSP,EUSART 1 1 13 canales 2 75 PDIP 40pines

3.7.2 Distribucin de pines:

Figura 3.7.2 Distribucin de pines

ANEXOS
ANEXO 1: Diagrama de flujo para implementar la programacin de temperatura.

ANEXO 2: Diagrama de flujo para implementar la programacin de desplazamiento.

ANEXO 3: Diagrama de flujo para implementar la programacin de humedad.

ANEXO 4: Diagrama de flujo para implementar la programacin de luminosidad.

ANEXO 5: Programa para la Transmisin

ANEXO 6: Programa para la Recepcin de la informacin.

BIBLIOGRAFA
http://www.pcbporladerecha.com/descargas/USB%20con%20PIC18F4550%20y%20LabVIE W%20-%20rev%202012.pdf

http://www.todopic.com.ar/foros/index.php?topic=29516.0 http://repositorio.espe.edu.ec/bitstream/21000/3069/1/T-ESPEL-0744.pdf http://es.scribd.com/doc/48592449/Comunicacion-USB-de-Alta-Velocidad-entreLABVIEW-y-un-Microcontrolador-para-la-Adquisicion-de-Datos-en-Tiempo-Real