Академический Документы
Профессиональный Документы
Культура Документы
Prestador
Salas Albarrn Oscar
Carrera
Ingeniera Mecatrnica
No. De Boleta
2005640114
ndice
1. Introduccin............................................................................................................................ 1
2. Objetivo .................................................................................................................................. 3
3. Qu es la instrumentacin virtual? [3].................................................................................. 4
3.1 Elementos de un Instrumento Virtual................................................................................... 4
4. Introduccin a LabVIEW [4], [5] ........................................................................................... 6
4.1 Creacin y ejecucin de un instrumento virtual en LabVIEW [6], [7], [8] ........................ 10
4.2 Creacin de SubVIs [9] ..................................................................................................... 12
5. Protocolo USB...................................................................................................................... 14
5.1 Versiones del protocolo [13] .............................................................................................. 15
5.2 Tipos de transferencia [12] ................................................................................................ 17
5.3 Enumeracin [14]............................................................................................................... 18
5.4 El foro de implementadores USB ...................................................................................... 18
6. Familia de microcontroladores PIC18FXX5X....................................................................... 19
6.1 El controlador USB [14] .................................................................................................... 19
6.2 Microcontrolador PIC18F4550 ........................................................................................... 20
7. Bibliotecas dll [16] ............................................................................................................... 22
7.1 Estructura de una DLL de 32 bits [16] ............................................................................... 22
7.2 LabVIEW y las bibliotecas de enlace dinmico [17]........................................................ 23
8. Programacin del PIC18F4550 ............................................................................................ 30
8.1 Firmware ............................................................................................................................ 30
8.2 Unidad de Control .............................................................................................................. 40
9. Programacin del Instrumento Virtual (VI) ........................................................................... 43
9.1 OpenUSB........................................................................................................................... 44
9.2 WriteUSB ........................................................................................................................... 57
9.3 ReadUSB ........................................................................................................................... 62
9.4 Close USB ......................................................................................................................... 67
9.5 Ejemplo de uso ................................................................................................................. 72
10.
11.
Referencias ...................................................................................................................... 75
12.
13.
14.
15.
16.
II
1.
Introduccin
Durante los ltimos aos, los desarrollos tecnolgicos han tenido un gran avance, poniendo
a disposicin de los consumidores equipos de cmputo con grandes capacidades de
procesamiento, as como una gran capacidad de almacenaje de informacin y, por supuesto,
velocidades de transferencia de datos cada vez ms altas.
Desde el punto de vista de la ingeniera, las mediciones y el anlisis de datos son
actividades de suma importancia, sin embargo existe una limitacin al momento de efectuar
cualquier medicin: las caractersticas del instrumento de medicin, las cuales limitan el tipo y
caractersticas de las magnitudes fsicas o datos que se desean medir.
De manera paralela al ya mencionado desarrollo de los equipos de cmputo, se busc la
manera de integrar las altas capacidades de procesamiento y almacenaje con las actividades
propias de la ingeniera, surgiendo de esta forma la Instrumentacin Virtual. Esta nueva forma
de realizar mediciones, ha terminado con la rigidez de los equipos de medicin en los cuales
era necesario conformarse con las caractersticas presentes de fbrica, para dar lugar a
instrumentos al gusto del usuario. Una caracterstica sobresaliente de esta nueva generacin de
instrumentos es que son capaces de evolucionar de acuerdo a las necesidades de medicin del
usuario con poco o nulo desembolso econmico; Siendo la mayor inversin la hecha para
adquirir las herramientas de desarrollo de los instrumentos virtuales. Lo que es ms, los
instrumentos virtuales son capaces de almacenar y analizar los datos dentro de s mismos [1].
Una de las herramientas para el desarrollo de estos instrumentos virtuales, es LabVIEW, el
cual es un software desarrollado por National Instruments.
En el presente documento se muestra el desarrollo de un instrumento virtual capaz de
realizar la adquisicin y envo de datos entre una PC y un microcontrolador, a travs del puerto
USB, el cual se realiz dentro del programa de servicio social titulado Estudio y desarrollo de
aplicaciones basadas instrumentacin virtual con LabVIEW.
Se decidi realizar el proyecto utilizando el puerto USB, por sus grandes prestaciones y
cualidades, algunas de las cuales se pueden observar en las siguientes tablas.
Tabla No. 1. Configuracin de diferentes tipos de protocolos de transmisin de datos [2].
BUS
Configuracin1
Ethernet / LXI
Bueno
GPIB
Mejor
PCI
Mejor
Notas
Configuracin de la IP y subred
Bsqueda en el bus por el
instrumento
Necesidad de apagar el equipo
(PC) para detectar el instrumento
La evaluacin se refiere a la facilidad con la que se configura el dispositivo para su uso con el BUS
seleccionado.
PCI Express
Mejor
USB
La mejor
BUS
GPIB
USB
Ethernet / LXI
PCI
PCI Express
Ancho de banda
ideal (MB/s)
1.8 (488.1)
8 (HS488)
60 (Hi-Speed USB)
12.5 (Fast)
125 (Gigabit)
132
250 (x1)
4000 (x16)
Distribucin
Compartido
Compartido
Compartido
Compartido
Dedicado por dispositivo y
direccin
Como puede apreciarse, las caractersticas del protocolo USB, lo hacen un excelente
candidato para efectuar la comunicacin y transmisin de datos de un instrumento virtual, que
es el objeto del presente proyecto. Para ello, se presenta en primer lugar el objetivo del
proyecto, para enseguida mostrar una breve introduccin al software LabVIEW, al puerto USB
y a las bibliotecas de enlace dinmico, las cuales son la parte central del proyecto. Una vez
introducidos estos conceptos, se documenta la realizacin del instrumento virtual, as como la
programacin del firmware del microcontrolador y el programa a ejecutar por parte del mismo.
Finalmente, se pueden encontrar los anexos del proyecto, que contienen informacin
importante sobre el uso de las herramientas utilizadas, as como cdigos y diagramas
referentes al mismo.
2.
Objetivo
El objetivo que se persigue con el programa de Servicio Social titulado Estudio y desarrollo
de aplicaciones basadas instrumentacin virtual con LabVIEW es Estudiar y desarrollar
aplicaciones basadas en instrumentacin virtual y que tengan una relacin directa con las
carreras cursadas en la UPIITA del IPN para poder sentar las bases de una lnea de
investigacin.
En el caso del presente proyecto, se realiz un estudio del software LabVIEW de National
Instruments como una herramienta para el desarrollo de instrumentos virtuales, para
posteriormente desarrollar un instrumento capaz de realizar una comunicacin de tipo
bidireccional entre una computadora y un microcontrolador (PIC). Dicha comunicacin se
realizar empleando el puerto USB y la informacin se controlar a travs de LabVIEW.
3.
Queslainstrumentacinvirtual?[3]
El concepto de instrumentacin virtual nace a partir del uso del computador personal (PC)
como "instrumento" de medicin de magnitudes o seales tales como temperatura, presin,
caudal, etc.
Es decir, el PC comienza a ser utilizado para realizar mediciones de fenmenos fsicos
representados en seales de corriente (Ej. 4-20mA) y/o voltaje (Ej. (0-5Vdc). Sin embargo, el
concepto de "instrumentacin virtual" va ms all de la simple medicin de corriente o voltaje,
sino que tambin involucra el procesamiento, anlisis, almacenamiento, distribucin y
despliegue de los datos e informacin relacionados con la medicin de una o varias seales
especficas. Es decir, el instrumento virtual no se conforma con la adquisicin de la seal, sino
que tambin involucra la interfaz hombre-mquina, las funciones de anlisis y procesamiento de
seales, las rutinas de almacenamiento de datos y la comunicacin con otros equipos.
Veamos un ejemplo; el osciloscopio tradicional tiene una funcionalidad ya predefinida desde
la fbrica donde lo disean, producen y ensamblan. Esto implica que la funcionalidad de este
tipo de instrumento es definida por el fabricante del equipo, y no por el usuario mismo. El
trmino "virtual" nace precisamente a partir del hecho de que cuando se utiliza el PC como
"instrumento" es el usuario mismo quin, a travs del software, define su funcionalidad y
"apariencia" y por ello decimos que "virtualizamos" el instrumento, ya que su funcionalidad
puede ser definida una y otra vez por el usuario y no por el fabricante.
El instrumento virtual es definido entonces como una capa de software y hardware que se le
agrega a un PC en tal forma que permite a los usuarios interactuar con la computadora como si
estuviesen utilizando su propio instrumento electrnico "hecho a la medida".
3.1ElementosdeunInstrumentoVirtual
Para construir un instrumento virtual, se requiere un PC, una tarjeta de adquisicin de datos
con acondicionamiento de seales (PCMCIA, ISA, XT, PCI, etc.) y el software apropiado, estos
tres son los elementos clave en la conformacin de un instrumento virtual, teniendo un chasis
de acondicionamiento de seales como elemento opcional.
Se dice que el "acondicionamiento de seales" es opcional, porque dependiendo de cada
seal y/o aplicacin, se puede o no requerir amplificacin, atenuacin, filtraje, aislamiento, etc.
de cada seal. Si la seal est en el rango de los +/- 5Vdc y no se requiere de aislamiento o
filtraje, la misma puede ser conectada directamente a la tarjeta de adquisicin de datos.
En el instrumento virtual, el software es la clave del sistema, a diferencia del instrumento
tradicional, donde la clave es el hardware. Con el sistema indicado anteriormente, podramos
construir un osciloscopio "personalizado", con la interfaz grfica que uno desee, agregndole
inclusive ms funcionalidad que cualquier instrumento comercial. Sin embargo, este mismo
sistema puede tambin ser utilizado en la medicin de temperatura, o en el control de arranque
y paro de un motor. Es all donde radica uno de los principales beneficios del instrumento
4
virtual, su flexibilidad. Este instrumento virtual no slo permitira visualizar la onda, sino que a la
vez permite graficar su espectro de potencia en forma simultnea. Podra hacer algo as con
un instrumento convencional?
Para finalizar, la siguiente tabla nos indica algunas de las principales diferencias entre el
instrumento convencional o tradicional, y el instrumento virtual:
Tabla No. 3. Tabla comparativa instrumento virtual vs tradicional [3].
InstrumentoTradicional
Definidoporelfabricante
Funcionalidad
especfica,
con
conectividadlimitada.
Elhardwareeslaclave.
InstrumentoVirtual
Definidoporelusuario
Funcionalidad ilimitada, orientado a
aplicaciones,conectividadamplia.
Elsoftwareeslaclave
Altocosto/funcin
4.
IntroduccinaLabVIEW[4],[5]
Panel Frontal
Es la interfaz del usuario con el instrumento virtual. La siguiente figura muestra un ejemplo
de este panel:
Se puede apreciar el aspecto del panel frontal, junto con la paleta de controles, que sirve
para colocar los elementos que el usuario podr manipular desde el panel frontal. Este panel
puede contener dos tipos de iconos: Controles, como perillas, botones, interruptores, que
permiten al usuario introducir informacin al programa e indicadores, tales como LEDs,
grficas, barras, que permiten mostrar informacin al usuario del VI.
La paleta de controles
Permite agregar al panel frontal los diferentes controles, indicadores o elementos decorativos
necesarios para la realizacin y personalizacin del instrumento virtual. Aparece nicamente en
el panel frontal.
Para abrirla, basta con dar clic en el men View y posteriormente seleccionar la opcin
Controls Palette.
Diagrama de Bloques
Una vez que el usuario ha terminado de construir el panel frontal, se aade el cdigo
necesario para el correcto funcionamiento a travs de este panel. El cul tiene el aspecto
mostrado en la siguiente figura:
En la figura anterior tambin puede verse la paleta de funciones, mediante la cual se pueden
aadir diferentes funciones, desde matemticas hasta de procesamiento de seales al
instrumento virtual (VI). Para ello, se conectan los controles por medio de cables, utilizando la
herramienta carrete.
Paleta de funciones
Sirve para agregar las funciones o cdigo al programa, el cual determinar el funcionamiento
del instrumento virtual. Esta paleta nicamente aparece al trabajar en el diagrama de bloques.
8
Para abrir la paleta de funciones basta con dar clic en el men View, y seleccionar la opcin
Functions Palette.
Paleta de herramientas
4.1CreacinyejecucindeuninstrumentovirtualenLabVIEW[6],[7],[8]
Para la creacin de los instrumentos virtuales en el entorno grfico de programacin ofrecido
por LabVIEW, se requiere la colocacin de los elementos que permitirn la entrada y la salida
de datos, entendidos estos como todos aquellos elementos que nos permitirn ingresar valores
a nuestro instrumentos, as como los que nos permitirn visualizar el resultado de cualquier
operacin.
Para ello, se emplea la paleta de controles dentro del panel frontal y se colocan los que se
estimen necesarios. Cada vez que se coloca un nuevo objeto en el panel frontal, se coloca
tambin y de forma automtica una nueva terminal en el diagrama de bloques. Cada bloque
colocado tanto en el diagrama de bloques como en el panel frontal proporciona informacin
sobre el tipo de dato que maneja a travs de su color, pudiendo ser naranja, verde, azul o algn
otro.
Una vez que se han colocado todos los controles e indicadores necesarios en el panel
frontal, puede procederse a realizar la programacin del instrumento desde el diagrama de
bloques utilizando la paleta de funciones. Esta paleta nos permitir colocar funciones de
diferentes tipos, pudiendo ser matemticas, booleanas, arreglo o estructuras conocidas en
lenguajes de programacin basados en texto como las sentencias for, while, etc. LabVIEW
permite incluso el uso de funciones basadas en lenguaje C y cdigo de MATLAB. Cabe
mencionar que es posible diferenciar por su aspecto los controles de los indicadores. Los
controles tienen una flecha en el lado derecho y tienen un borde grueso. Por otro lado, los
indicadores tienen una flecha en el lado izquierdo y un borde fino.
Despus de que se han colocado las funciones adecuadas en el diagrama de bloques, se
unen stas con los controles e indicadores previamente colocados haciendo uso de la
herramienta de cableado. Es recomendable que al momento de realizar el cableado, se tome en
cuenta el color de las terminales, de modo que se unan terminales del mismo tipo, por ejemplo,
terminales naranjas (de tipo doble) con terminales naranjas. Existen ciertas reglas lgicas al
momento de efectuar el cableado: Cada cable debe tener una (pero solo una) fuente (o control),
y cada cable puede tener varios destinos (o indicadores).
10
El resto de los botones de esta barra sirve para alinear, distribuir y dar tamao a los
elementos colocados, as como configurar el tipo y tamao de fuente de las etiquetas utilizadas
tanto en el panel frontal como en el diagrama de bloques, lo cual nos permitir dar un mejor
aspecto al instrumento.
Para comprobar el funcionamiento del VI bastar con oprimir el botn de ejecucin, en caso
de que exista algn error, se mostrar una ventana con una pequea descripcin del mismo la
cual permitir corregirlo.
En LabVIEW se sigue un modelo de flujo de datos al momento de ejecutar los VIs. Un
nodo o funcin del diagrama de bloques se ejecuta cuando todas sus entradas estn
disponibles. Cuando se completa la ejecucin en dicho nodo, suministra datos a sus terminales
de salida, los cuales estarn disponibles en la entrada correspondiente si la hubiera.
4.2CreacindeSubVIs[9]
LabVIEW es un programa muy verstil que nos permite crear instrumentos virtuales que
puedan ser llamados desde otros instrumentos, los cuales son llamados subVIs. A estos
subVIs es posible definirles la configuracin de sus terminales y crearles un icono
personalizado, para ello basta con hacer doble click sobre el icono ubicado en la parte superior
derecha del panel frontal, para poder ver el editor de iconos.
En esta ventana, podemos cambiar el aspecto del icono que distinguir a los subVIs
creados. Pueden realizarse creaciones propias o importar imgenes desde cualquier archivo de
imagen.
12
Para editar las terminales del subVI, es necesario dar click con el botn derecho del mouse y
seleccionar la opcin Show connector con ello el icono se transformar en un patrn, llamado
Connector Pane, como el mostrado a continuacin:
En el caso de que la configuracin del conector no satisfaga los requerimientos del VI, es
posible cambiarla, para ello se da un click derecho sobre el patrn mostrado y del men
mostrado se selecciona la opcin Patterns.
13
5.
ProtocoloUSB
El Bus Serial Universal (USB, por sus siglas en ingls) fue desarrollado y estandarizado por
un grupo de siete empresas dedicadas a la manufactura de computadoras y perifricos (IBM,
Intel, Northern, Telecom, Compaq, Microsoft, Digital Equipment y Nec) en 1995 [10]. La idea era
tomar todo lo relacionado al puerto y protocolo serial para mejorarlo con la tecnologa del siglo
XXI; buscando crear una tecnologa que permitiera una actividad de bus de baja y alta
velocidad de transmisin de datos, proporcionando un protocolo robusto, configuracin
automtica de dispositivos y un bus serial al que fuera sencillo conectarse [11].
El USB es un bus punto a punto: dado que el lugar de partida es el host (PC o hub), el
destino es un perifrico u otro hub. No hay ms que un nico host (PC) en una arquitectura
USB. Cada host soporta solo un bus, cada conector en el bus representa un puerto USB por lo
tanto sobre el bus puede haber varios conectores, pero solo existe una ruta y solo un dispositivo
puede transmitir informacin a un tiempo.
Los perifricos comparten un mismo bus. El protocolo se basa en el llamado paso de testigo
(token). La computadora (o host) proporciona el testigo al perifrico seleccionado y
seguidamente, ste le devuelve el testigo en su respuesta.
El desarrollo del protocolo USB representa un gran aumento en las velocidades de
transmisin de datos, as como la instalacin de los dispositivos en caliente, es decir, con este
protocolo no se requiere de reiniciar los equipos cada vez que se conecta un dispositivo, lo cual
lo hace ms prctico y sencillo de utilizar comparado con los protocolos de conexiones de tipo
serial (DB-9) o paralelo (DB-25), por lo que en la actualidad estos puertos ya no se encuentran
presentes en equipos de computo modernos.
A continuacin se describen los aspectos esenciales de este protocolo.
A nivel elctrico, el cable USB transfiere la seal y la alimentacin sobre 4 hilos. En las
normas que regulan la versin 1.1 y 2.0 se distinguen dos tipos de conectores [12]:
Tipo A, de forma rectangular es usado en dispositivos que no requieren demasiado ancho
de banda (como teclado, mouse, memorias USB, entre otros.).
Tipo B, poseen una forma cuadrada y se utilizan principalmente para dispositivos de alta
velocidad (como discos duros externos, quemadores externos, entre otros).
Conector Tipo B
Conector Tipo A
14
No. De Pin
Nombre
Descripcin
VBUS
D-
Data-
D+
Data+
GND
Fuente de alimentacin
+5Vdc mx 100mA
El cable VBUS puede proporcionar una tensin nominal de 5 V de corriente directa para
suministrarla al dispositivo, sin embargo depender de ste ltimo el consumo, pudiendo ser
auto-alimentado (self powered) en caso de que el consumo de energa lo realice a travs del
puerto o con alimentacin propia (como en el caso de la mayora de las impresoras), omitiendo
el uso de la alimentacin proporcionada por el puerto.
A nivel de seal: Los cables utilizados en la transmisin de los datos (D+ y D-) constituyen un
par trenzado con una impedancia caracterstica de 90 a fin de reducir las interferencias y el
ruido. Se debe vigilar que la extensin de los cables transmisores de datos no supere los 5 m.
Las direcciones de los diferentes dispositivos conectados a travs de un host y diversos
hubs estn cifradas en 7 bits, por lo que 128 dispositivos (27) pueden estar conectados
simultneamente a un puerto de este tipo. En realidad, es recomendable reducir esta cantidad a
127 porque la direccin 0 es una direccin reservada.
Por otra parte, es posible conectar hasta 5 concentradores o hubs, por lo que, tomando en
cuenta la longitud mxima de 5 metros del cable entre dos dispositivos, es posible crear una
cadena de transmisin de datos de hasta 25 metros de longitud.
5.1Versionesdelprotocolo[13]
Desde el surgimiento del USB en el ao de 1995, se han desarrollado diferentes versiones
del protocolo, las cuales se muestran a continuacin.
-
15
La compatibilidad entre USB 1.0, 1.1 y 2.0 est garantizada. Sin embargo, el uso de
un dispositivo USB 2.0 en un puerto USB de baja velocidad (1.0 1.1) limitar la
velocidad a un mximo de 12 Mbps. Adems, es probable que el sistema operativo
muestre un mensaje que indique que la velocidad ser restringida.
WUSB (Wireless USB): Es una extensin del USB 2.0 con las capacidades de una
transferencia inalmbrica, con una velocidad de 480Mbps al estar a menos de 3 metros
de distancia y de 100 Mbps al estar a menos de 100 metros. Su logotipo es el siguiente.
USB On-The-Go: Siendo una mejora de la interfaz USB, permite elegir el estado de
cada puerto USB, y es posible transferir los datos desde un puerto USB actuando como
servidor hasta otro sin la necesidad de un ordenador, y tambin es posible cambiar en
cualquier momento el perfil de servidor a dispositivo o viceversa. Su logotipo es el
siguiente
USB 3.0: Aun en fase de prueba. Los desarrolladores de este protocolo prevn innovar
al incluir la fibra ptica, lo cual elevara hasta 4.8 Gbps la tasa de transferencia, y de
manera inalmbrica en forma de Wireless USB se planea lograr una transferencia de
hasta 1 Gbps.
16
5.2Tiposdetransferencia[12]
El enlace virtual (pipe) puede ser de cuatro tipos:
- Control: Modo utilizado para realizar configuraciones; existe siempre sobre el Punto
Terminal 0 (EndPoint 0). Todos los dispositivos USB deben soportar este tipo de
transferencia. Los datos de control sirven para configurar el perifrico en el momento de
conectarse al USB. Algunos drivers especficos pueden utilizar este enlace para transmitir
su propia informacin de control.
Este enlace no tiene prdida de datos, puesto que los dispositivos de deteccin de
recuperacin de errores estn activos a nivel USB.
- Isochronous o Flujo en tiempo real: modo utilizado para la transmisin de audio o video
comprimido. Este tipo de transmisin funciona en tiempo real. Este es el modo de mayor
prioridad.
La transmisin de la voz es un ejemplo de esta aplicacin. Si sta no se transmite
correctamente, pueden llegar a orse parsitos (glich) y la aplicacin puede no procesar de
forma correcta la informacin.
17
5.3Enumeracin[14]
Antes de cualquier aplicacin se pueda comunicar con un dispositivo a travs del puerto
USB, el host necesita aprender sobre el dispositivo para comunicarse de la forma adecuada.
Para poder llevar a cabo estas tareas se requiere de un intercambio de informacin entre el
dispositivo y el host. Este proceso incluye la asignacin de una direccin al dispositivo, leer los
descriptores del dispositivo, asignar y ejecutar el driver adecuado y seleccionar la configuracin
adecuada que especifique los requerimientos de energa del dispositivo, los endpoints y
algunas otras caractersticas.
Para que se ejecute la enumeracin, cuando el host detecta que se ha conectado un nuevo
dispositivo enva informacin solicitando la informacin antes mencionada, el dispositivo
entonces enva la respuesta a los requerimientos solicitados para establecer la comunicacin.
Acto seguido se establecen las tuberas (pipes) para poder dar el canal adecuado a la
informacin, en este momento el dispositivo se encuentra listo para efectuar la trasmisin de
datos.
Desde la perspectiva del usuario, la enumeracin es un proceso completamente invisible y
automtico excepto tal vez por la aparicin de mensajes que anuncien la deteccin de un nuevo
dispositivo y cuando la configuracin ha sido exitosa. En algunas ocasiones durante el primer
uso, el usuario debe seleccionar el driver o especificar la ubicacin donde el host debe localizar
los archivos.
5.4ElforodeimplementadoresUSB
Uno de los datos que debe conocer el host para poder enumerar correctamente a los
dispositivos es el fabricante del dispositivo y el tipo o modelo de dispositivo conectado. Todos
los dispositivos con conexin va puerto USB cuentan con estos nmeros, que se denominan
Vendor ID (VID), y Product ID (PID), ambos son nmeros hexadecimales, el primero de ellos
define el fabricante del dispositivo y el segundo es exclusivo del modelo de dispositivo. Esto
quiere decir que, por ejemplo, una cmara fabricada por cierta marca tendr un determinado
Product ID, mientras que una impresora fabricada por la misma compaa tendr un Product ID
distinto, aunque ambos dispositivos tendrn el mismo Vendor ID.
Los nmeros que identifican a cada productor (VID) son asignados por el foro de
implementadores USB (USB-IF2), a los productores que forman parte de este foro, o a cualquier
persona que cubra los costos administrativos establecidos. Cada productor que cuenta con su
VID puede asignar a los dispositivos que produce un nico PID.
El objetivo de asignar los VID y PID es poder listar todos los nmeros de identificacin de los
dispositivos en un archivo para que los sistemas operativos puedan identificar y enumerar
adecuadamente los diversos dispositivos que se conecten en el host que ejecuta dicho sistema
operativo.
18
6.
FamiliademicrocontroladoresPIC18FXX5X
Cuando se desarrolla una aplicacin capaz de transmitir datos va puerto USB, debe
considerarse la presencia de un controlador USB, dicho controlador debe detectar y responder
a las peticiones realizadas por el puerto, adems de proporcionar datos por el bus y recibirlos.
Un microcontrolador o un circuito integrado de aplicacin especfica (ASIC, por sus siglas en
ingls) cumplen perfectamente con este cometido.
En el mercado existen una gran variedad de chips capaces de realizar estas acciones. Las
diferencias principales estriban en la cantidad de lneas de cdigo necesarias para crear el
firmware del dispositivo. El firmware, se refiere a la informacin contenida en el dispositivo que
permite responder a las peticiones de informacin del host referente al VID, PID, velocidad,
versin del protocolo, etc. Adems de esto, debe considerarse la posibilidad de que el chip
contenga una unidad de procesamiento (CPU) o por el contrario, que si se desea tener acceso
a una unidad de este tipo, sta tenga que conectarse de forma externa al chip.
6.1ElcontroladorUSB[14]
Un controlador USB tpico contiene un transmisorreceptor USB, una interfaz serial, buffers,
registros de configuracin, estado y control para la comunicacin.
El transceptor
Proporciona una interfaz en hardware entre el conector USB del dispositivo y el circuito que
controla la comunicacin USB. El transceptor se encuentra tpicamente en el chip, pero algunos
controladores permiten la conexin hacia un transceptor externo.
Interfaz Serial
Los circuitos que enlazan el transceptor y el host, forman una unidad llamada interfaz serial.
Esta interfaz serial es la encargada de manejar las transacciones de envo y recepcin de
datos, sin interpretarlos o utilizarlos, solamente enva cualquier dato disponible y almacena
cualquier dato entrante en las localidades disponibles.
Buffers
Los controladores USB utilizan los buffers para almacenar los datos conforme se van
recibiendo y para almacenar de igual manera los datos que se encuentran listos para ser
19
enviados. Para retener los datos a transmitir o recibidos, la mayora de los buffers cuentan con
una estructura de tipo FIFO (Primero en entrar, primero en salir)
Reloj
Las comunicaciones USB requieren de una fuente de tiempos, tpicamente esta fuente es un
cristal oscilador, aunque en los dispositivos de baja velocidad puede utilizarse un resonador
cermico.
Componentes Adicionales
Adems de los componentes de la interfaz USB antes descritos, muchos dispositivos
incluyen una unidad de procesamiento, memoria de programa y de datos, interfaces de entrada
y salida as como caractersticas adicionales, por ejemplo temporizadores, contadores, etc.
6.2MicrocontroladorPIC18F4550
Todas las caractersticas previamente descritas podemos encontrarlas en una familia de
chips, se trata de la familia de microcontroladores PIC18FXX5X de Microchip Technology, la
cual incorpora un controlador USB capaz de trabajar a baja y alta velocidad. Para el desarrollo
del presente proyecto, se selecciono el microcontrolador PIC18F4550, cuyas caractersticas
principales se enlistan a continuacin:
20
21
7.
Bibliotecasdll[16]
Una dll o biblioteca de enlace dinmico (Dynamic Linking Library), es un archivo que
contiene funciones y/o recursos (mapas de bits, definiciones de fuentes, etc.) que pueden ser
llamados desde cualquier aplicacin Windows, de hecho, se puede considerar que Windows
est construido sobre una gran cantidad de DLLs. La mayora de bibliotecas de enlace
dinmico se guardan en archivos que tienen extensin DLL, pero tambin pueden ser
guardados en archivos con extensiones EXE (ejecutable), DRV (controlador de dispositivo) y
FON (fuente de Windows).
La diferencia entre las bibliotecas de enlace dinmico con extensin DLL y el resto, es que
las primeras se cargan porque el programa que las ha de utilizar lo pide a Windows y las
dems, en cambio, se cargan porque estn referenciadas en archivos de inicializacin de
Windows. Estas referencias pueden ser creadas por el propio Windows o por el programa de
instalacin de alguna aplicacin.
Tabla No. 5. Caractersticas de las dll.
Ventajas
Inconvenientes
7.1EstructuradeunaDLLde32bits[16]
Una DLL se puede dividir, bsicamente, en tres partes:
Archivo de cabecera: Contendr todas las declaraciones y/o definiciones (de variables,
funciones, etc.) que use la DLL.
Punto de entrada y salida: Es la funcin principal de la DLL, y es la que se encarga de
cargar la DLL (cuando se vaya a usar) y descargarla de la memoria (cuando se deje de
usar). Dicha funcin se llama DllEntryPoint.
Funciones: Son las funciones que contiene la DLL y que fueron declaradas por el
programador de la misma.
22
Es importante conocer lo anterior debido a que LabVIEW nos permite hacer uso de estas
bibliotecas dinmicas como se muestra a continuacin:
7.2LabVIEWylasbibliotecasdeenlacedinmico[17]
LabVIEW dentro de sus funciones, contiene un nodo para llamar a las bibliotecas de
enlace dinmico (dlls). Se accede a l desde la paleta de Funciones/Conectivity/Libraries &
Executables/Call Library Function Node
Figura 11. Ubicacin del Call Library Function Node en la paleta de funciones.
Permite realizar el llamado de una funcin contenida dentro de una dll de manera directa. El
Call Library Function Node, soporta un amplio nmero de tipos de informacin y convenciones
de llamado, adems, es expandible y muestra los tipos de informacin para las entradas y
salidas conectadas.
23
24
Figura 13. Cuadro de dialogo del Call Library Function Node (Pestaa Function).
Pestaa Function: Esta pestaa nos sirve para configurar la funcin que ser llamada por el
Call Library Function Node, contiene lo siguientes componentes:
-Library name or path: Especifica el nombre de la librera o ruta para la funcin que se est
llamando. Es posible introducir slo el nombre de la librera si sta se encuentra en la
direccin de bsqueda del sistema, en caso contrario, ser necesario introducir la ruta o
direccin completa de la ubicacin de la librera.
-Specify path on diagram: Al activarlo, permite ingresar el nombre o la direccin de la
librera desde el panel frontal a travs de un control.
-Function name: Especifica el nombre de la funcin que se est llamando.
-Thread: Controla si se ejecuta sobre la interfaz de usuario o si es re-operado. El valor por
defecto es Run in UI Thread.
*Run in UI Thread: Controla si el objeto se ejecuta en la interfaz de usuario.
*Run in any thread: Controla si el objeto es re-operado. Para utilizar esta funcin es
necesario asegura que pueda hacer varas funciones simultneamente.
-Calling convention: Especificar la convencin de llamado para la funcin, es decir, la forma
en que ser tratado el cdigo. El valor por defecto es C.
* stdcall (WINAPI)-Controla si el objeto usa el formato de llamado estndar de Windows.
*C-Controla si el objeto usa la convencin de llamado de tipo __cdecl.
- Function prototype: Muestra el prototipo, o estructura, en C para la funcin.
Pestaa Parameters: En esta pestaa se configura los parmetros con los que se llamar a
la funcin a travs del Call Library Function Node. Es posible configurar la lista de parmetros
25
utilizando los botones que aparecen del lado derecho. Return type es un parmetro requerido
que no se puede borrar.
Figura 14. Cuadro de dialogo del Call Library Function Node (pestaa Parameters).
Botones
Add a parameter: Agrega un parmetro debajo del parmetro seleccionado de la lista
de parmetros.
Delete the selected parameter: Elimina el parmetro seleccionado de la lista de
parmetros.
Move the selected parameter up one: Mueve el parmetro seleccionado un nivel arriba
en la lista de parmetros, lo cual modifica el orden de los parmetros en el Function
prototype.
Move the selected parameter down one: Mueve el parmetro seleccionado un nivel
abajo en la lista de parmetros, lo cual modifica el orden de los parmetros en el
Function prototype.
26
Figura 15. Cuadro de dialogo del Call Library Function Node (pestaa Callbacks).
27
Pestaa Error Checking: Se usa para especificar el nivel de revisin en el error para el Call
Library Function Node.
Figura 16. Cuadro de dialogo del Call Library Function Node (pestaa Error Checking).
28
En resumen, se puede considerar al Call Library Function Node como las salidas y entradas
de una funcin, de las cuales es posible usar solo una o ambas terminales. En el caso de que
no se desee que el nodo genere un valor de retorno (return value), la primera terminal quedar
sin conectarse. Cada par de terminales corresponden a un parmetro en la lista de parmetros
de la funcin en orden descendente. Se pasa o introduce un valor a la funcin al conectar en las
terminales del lado izquierdo cualquier control o constante y se lee el valor del parmetro
despus de la funcin llamada, al conectar desde la terminal derecha del nodo.
29
8.
ProgramacindelPIC18F4550
8.1Firmware
Se conoce con este nombre a todas aquellas instrucciones que forman parte del dispositivo y
que le permiten establecer la comunicacin con otro equipo, en este caso con el host. En el
caso del microcontrolador a utilizar en el presente proyecto, el firmware se encuentra en el
archivo que ha sido nombrado descriptores.h.
Para la construccin de este cdigo, se tomo como base el archivo usb_desc_scope.h, que
se instala junto con el software PIC C Compiler y se encuentra localizado en la ruta C:\Program
Files\PICC\Drivers. Dicho cdigo es un ejemplo de la configuracin de los descriptores
necesarios para efectuar una transmisin de informacin de forma masiva (bulk).
Para poder utilizar el archivo usb_desc_scope.h, es necesario conocer la funcin de cada
una de las lneas de cdigo que lo componen, lo que permitir posteriormente modificarlas.
En las siguientes pginas, se presentan fragmentos de cdigo del archivo descriptores.h, y
en seguida de los mismos la tabla correspondiente al descriptor mencionado, la cual ha sido
tomada del Captulo 9 de las especificaciones USB 2.04. La finalidad de presentar estas tablas
es dar una gua al lector sobre los valores que pueden ser modificados en el archivo de
descriptores dependiendo del tipo de dispositivo a desarrollar.
En el Anexo D se encuentra una gua para el uso del software y la creacin de proyectos en el mismo.
Las especificaciones USB 2.0 pueden consultarse en el foro de implementadores USB (USB-IF) en su
pgina web http://www.usb.org.
30
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
//Descripcindelaconfiguracin
charconstUSB_CONFIG_DESC[]={
USB_DESC_CONFIG_LEN,//longituddeldescriptor
USB_DESC_CONFIG_TYPE,//constanteparaCONFIGURATION(0x02)
USB_TOTAL_CONFIG_LEN,0,
//Tamaodedatosqueregresaestconfiguracin
1,
//Nmerodeinterfacessoportadasporeldispositivo
0x01,
//Identificadordeestaconfiguracin
0x00,
//ndicedelacadenaquedescribeestaconfiguracin
0xC0,
//bit6=1:autoalimentado(selfpowered)
//bit5=1:activacinremota
//bits04:reservados
//bit7=1
0x32,
//energamximarequeridaporelpuerto
//(maximummilliamperes/2)(0x32=100mA)
Tabla No. 6. Descriptor estndar para la configuracin del dispositivo (Tabla 9-10 Norma USB 2.0)
Offset
Campo
Tamao
Valor
Descripcin
bLength
Nmero
bDescriptorType
Constante
wTotalLength
Nmero
bNumInterfaces
Nmero
bConfigurationValue
Nmero
iConfiguration
ndice
bmAttributes
Bitmap
bMaxPower
mA
32
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
//Descripcindelainterfaz
USB_DESC_INTERFACE_LEN,//longituddeldescriptor
USB_DESC_INTERFACE_TYPE,//constanteparaINTERFACE(0x04)
0x00,//Nmeroquedefineestainterfaz
0x00,//Seleccinalternativadeinterfaz
2,//Numerodeendpoints
0xFF,//Cdigodeclase
0xFF,//Cdigodesubclase
0xFF,//Cdigodeprotocolo
0x00,//ndicedelacadenaque
//describeestaconfiguracin
Tabla No. 7. Descriptor estndar para la interfaz del dispositivo (Tabla 9-12 Norma USB 2.0)
Offset
Campo
Tamao
Valor
Descripcin
bLength
Nmero
bDescriptorType
Constante
2
3
bInterfaceNumber
bAlternateSettings
1
1
Nmero
Nmero
bNumEndpoints
Nmero
bInterfaceClass
Clase
bInterfaceSubClass
SubClase
bInterfaceProtocol
Protocolo
iInterface
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
ndice
//Descripcindeendpointdeentrada
USB_DESC_ENDPOINT_LEN,
//longituddeldescriptor
USB_DESC_ENDPOINT_TYPE,
//constanteparaENDPOINT(0x05)
0x81,
//NmeroydireccindelEndpoint(0x81=EP1IN)
0x02,
//Tipodetransferencia
//0:control,1:iso,2:masiva,3:interrupciones
USB_EP1_TX_SIZE,0x00,
//Tamaomximodepaquetesoportado
0x01,
//intervalodepollingenms
//sloparatransferenciaconinterrupciones
Tabla No. 8. Descriptor estndar para el endpoint (Tabla 9-13 Norma USB 2.0)
Offset
Campo
Tamao
Valor
Descripcin
bLength
Nmero
bDescriptorType
Constante
bEndpointAdress
Endpoint
bmAttributes
Bitmap
wMaxPacketSize
Nmero
bInterval
Nmero
36
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
//Descriptoresdeldispositivo
charconstUSB_DEVICE_DESC[]={
USB_DESC_DEVICE_LEN,//Longituddelreporte
0x01,//Constantedetipodedescriptor,dispositivo(0x01)
0x10,0x01,//VersindeUSB(1.1)
0x00,//Cdigodeclase
0x00,//Cdigodesubclase
0x00,//Cdigodeprotocolo
USB_MAX_EP0_PACKET_LENGTH,
//Tamaomximodepaqueteparaendpoint0.
//(BajaVelocidadespecifica8)
0xd8,0x04,//vendorid(0x04D8Microchip)
0x0b,0x00,//productid(0x000bPIC18Family)
0x01,0x00,//Nmerodeversindeldispositivo
0x01,//Indicedecadenadelproductor
0x02,//Indicedecadenadelproducto
0x00,//Indicedecadenadelnumerodeserie
USB_NUM_CONFIGURATIONS//Numerodeposiblesconfiguraciones
Tabla No. 9. Descriptor estndar para el dispositivo (Tabla 9-8 Norma USB 2.0)
Offset
Campo
Tamao
Valor
Descripcin
bLength
Nmero
bDescriptorType
Constante
bcdUSB
BCD
bDeviceClass
Clase
bDeviceSubClass
bDeviceProtocol
Subclase
Protocolo
bMaxPacketSize0
Nmero
idVendor
ID
10
idProduct
ID
12
bcdDevice
BCD
14
iManufacturer
ndice
15
iProduct
ndice
16
iSerialNumber
ndice
17
bNumConfigurations
Nmero
38
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
charconstUSB_STRING_DESC[]={
//string0
4,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
0x0a,0x08,//DefinicindeMicrosoftparaidiomaespaoldeMxico
//string1
8,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
'U',0,
'S',0,
'B',0,
//string2
24,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
'D',0,
'A',0,
'Q',0,
'_',0,
'L',0,
'a',0,
'b',0,
'V',0,
'I',0,
'E',0,
'W',0
};
Estas ltimas lneas permiten configurar los nombres que aparecern en el host al momento
de instalar el dispositivo en el host, como se muestra en la siguiente figura.
39
Tabla No. 10. Descripcin de la cadena de caracteres (Tabla 9-15 Norma USB 2.0)
Offset
Campo
Tamao
Valor
Descripcin
bLength
N+2
bDescriptorType
Constante
wLANGID[0]
wLANGID[x]
Nmero
Nmero
Cdigo de lenguaje x
8.2UnidaddeControl
El cdigo desarrollado para la unidad de control, permitir efectuar las operaciones de
lectura y escritura de datos desde y hacia el PIC. El archivo que contiene dichas operaciones se
nombr LectoEscr.c, del cual se explica a continuacin la forma de configurar el reloj, lo cual se
localiza en las siguientes lneas de cdigo:
15:
16:
17:
18:
19:
//Configuracindelreloj
#FUSESHSPLL
#FUSESPLL5
#FUSESUSBDIV
#FUSESCPUDIV1
Para el correcto funcionamiento del mdulo USB del PIC, es necesario contar con una seal
de reloj con una frecuencia de 48MHz, sin embargo, el cristal a utilizar es de 20MHz por lo que
debern configurarse los distintos divisores de frecuencia con los que cuenta el
microcontrolador.
La palabra de configuracin HSPLL, sirve para indicar que se trabaja con un cristal de alta
velocidad (mayor de 4 MHz). Con PLL5, indicamos que la frecuencia de entrada deber ser
dividida entre 5, obteniendo una frecuencia de 4MHz, la cul es requerida por el
microcontrolador para obtener una nueva frecuencia de 96MHz, esta nueva frecuencia pasa por
40
otro bloque interno del PIC, el cual la divide entre dos, obteniendo los 48MHz necesarios para el
USB. Finalmente se utiliza USBDIV, para seleccionar la seal proveniente de los bloques
anteriores.
La configuracin anterior nicamente afecta al reloj para el uso del USB, an es necesario
configurar el reloj que utilizar la unidad de control para la ejecucin de las instrucciones del
programa, para ello se utiliza CPUDIV1, lo cual divide la seal de 96MHz entre dos, dando una
seal de 48MHz, que ser la que se utilizar tambin para la ejecucin del programa.
Es importante mencionar que el valor de CPUDIV1 es de cero para efectuar la divisin entre
dos, sin embargo el compilador utilizado nombra las variables CPUDIV1, CPUDIV2, CPUDIV3 y
CPUDIV4, las cuales corresponden a los valores de cero, uno, dos y tres respectivamente.
En la Tabla No. 11 se muestran diferentes configuraciones de los divisores de frecuencia
para el cristal utilizado, adems se presenta resaltada la configuracin seleccionada. Despus
de la tabla, se puede observar una imagen mostrando la configuracin del reloj seleccionada,
resaltando con una lnea en color rojo el camino seguido por la seal de reloj.
Frecuencia del
oscilador de
entrada
20 MHz
Divisin PLL
Modo de reloj
Divisin de reloj
para e
5 (100)
Ninguna (00)
2 (01)
3 (10)
4 (11)
2 (00)
3 (01)
4 (10)
6 (11)
HSPLL, ECPLL,
ECPIO
Frecuencia de
reloj para el
Microcontrolador
20 MHz
10 MHz
6.67 MHz
5 MHz
48 MHz
32 MHz
24 MHz
16 MHz
41
Figura 19. Configuracin de los divisores para obtener una seal de 48MHz a partir de un cristal de 20MHz.
42
9.
ProgramacindelInstrumentoVirtual(VI)
MPUSBGetDeviceCount
MPUSBOpen
MPUSBRead
MPUSBWrite
MPUSBReadInt
MPUSBClose
MPUSBGetDeviceDescriptor
MPUSBGetConfigurationDescriptor
MPUSBGetStringDescriptor
MPUSBSetConfiguration
Para llevar a cabo la comunicacin deseada, se requiere realizar la apertura del puerto USB
para establecer el pipe, as como el envo y recepcin de informacin de forma masiva desde el
host hacia el dispositivo y viceversa, adems, es necesario efectuar el cierre del pipe y del
puerto al momento de terminar la comunicacin. Para efectuar estas operaciones nicamente
son necesarias las funciones MPUSBGetDeviceCount, MPUSBOpen, MPUSBRead,
MPUSBWrite, MPUSBClose, las cuales se configurarn dentro de los subVIs creados a travs
del Call Library Function Node.
En el desarrollo del proyecto, se crearon cuatro subVIs, los cuales llevan por nombre
OpenUSB.vi, WriteUSB.vi, ReadUSB.vi y CloseUSB.vi, para cada uno de ellos se cre un cono
que permita identificarlo y usarlo posteriormente en otro instrumento virtual. La forma en que se
configur cada uno de estos SubVIs se muestra en las siguientes pginas.
43
9.1OpenUSB
Este SubVI consiste en una secuencia que permite monitorear la presencia de un dispositivo
USB determinado, de acuerdo a sus valores de VID y PID. Su construccin (panel frontal y
diagrama de bloques) se muestra en las siguientes figuras:
44
45
El diagrama de bloques est formado por una secuencia de tres frames, a continuacin se
explican los parmetros necesarios dentro de cada uno de los mismos.
Primer frame:
Figura 23. Primer frame del diagrama de bloques del SubVI OpenUSB.
Permite localizar al dispositivo USB con el Product ID y Vendor ID sealados, en este caso,
el VID 04d8 corresponde a Microchip, mientras que el PID 000b corresponde a la familia
PIC18.
Dentro del
bloque Call Library Function Node, se hace referencia a la funcin
MPUSBGetDeviceCount. Esta funcin, regresa el nmero de dispositivos que concuerdan con
el PID y VID especificado. La estructura de la funcin es la siguiente:
DWORD MPUSBGetDeviceCount (PCHAR pVID_PID)
Donde, DWORD, representa un nmero entero sin signo de 32 bits y PCHAR, un apuntador
a una cadena de caracteres.
Los parmetros del Call Library Function Node, se configuran como se muestra a
continuacin:
46
Figura 24. Configuracin de la funcin MPUSBGetDeviceCount dentro del Call Library Function Node
47
48
Segundo frame:
Figura 26. Segundo frame del diagrama de bloques del SubVI OpenUSB.
En este frame se configura y abre el puerto, estableciendo un pipe, o tubera, para poder
efectuar la comunicacin desde la PC al PIC volviendo a hacer uso del Call Library Function
Node y la funcin MPUSBOpen de la librera dll. La estructura de la funcin es:
DWORD MPUSBOPEN (DWORD selection, PCHAR pVID_PID_norm, PCHAR end_point,
DWORD dir, DWORD res);
49
Figura 27. Configuracin de la funcin MPUSBOpen dentro del Call Library Function Node.
50
Al parmetro return type ser necesario cambiarle el nombre por handle y configurarlo como
se muestra en la siguiente figura:
51
Una vez configurado este parmetro, se procede a agregar los parmetros restantes como
se muestra en las siguientes imgenes:
52
53
Tercer frame:
Figura 35. Tercer frame del diagrama de bloques del SubVI OpenUSB.
En este frame se realiza la configuracin y apertura del puerto para poder efectuar la
comunicacin desde el PIC a la PC, haciendo uso del Call Library Function Node y la funcin
MPUSBOpen de la librera dll. La estructura de la funcin es la misma que el frame anterior:
DWORD MPUSBOPEN (DWORD selection, PCHAR pVID_PID_norm, PCHAR end_point,
DWORD dir, DWORD res);
55
56
9.2WriteUSB
Este VI permite realizar la escritura de datos desde el host (PC) hacia el dispositivo (PIC). A
continuacin se presentan el panel frontal y el diagrama de bloques que componen este SubVI.
57
Para el funcionamiento de este VI, se hace uso de la funcin MPUSBWrite, cuya estructura y
configuracin dentro del Call Library Function Node se muestran enseguida.
58
Figura 40. Configuracin de la funcin MPUSBWrite dentro del Call Library Function Node.
59
60
61
9.3ReadUSB
Este VI permite llevar a cabo la lectura de los datos enviados por el dispositivo (PIC). Su
construccin, panel frontal y diagrama de bloques, se muestran a continuacin.
62
DWORD
MPUSBRead
ExpectedReceiveLenght,
(HANDLE
InPipe,
PVOID
ReceiveData,
DWORD
PDWORD ReceiveLenght, DWORD ReceiveDelay)
63
Figura 49. Configuracin de la funcin MPUSBRead dentro del Call Library Function Node.
64
65
66
9.4CloseUSB
Este subVI permitir llevar a cabo el cierre del puerto USB, concretamente de los pipes
establecidos al abrirlo. A continuacin se presentan el panel frontal y el diagrama a bloques.
67
El diagrama de bloques, se encuentra formado por una secuencia de tres frames, los cuales
se describen a continuacin.
Primer Frame:
Este frame se encarga de poner la salida de datos a nivel bajo, enviando una cadena de
ceros. La configuracin del Call Library Function Node, es idntica a la utilizada en el subVI
llamado WriteUSB, solamente se agrega la cadena de caracteres en lugar de los controles.
68
Segundo Frame:
Se encarga de cerrar el pipe de salida, para ello se emplea la funcin MPUSBClose, cuya
estructura y configuracin se muestran en seguida.
DWORD MPUSBClose (Handle OutPipe)
Figura 60. Configuracin de la funcin MPUSBClose dentro del Call Library Function Node.
69
Tercer Frame:
70
En este frame se lleva a cabo el cierre del pipe de entrada, utilizando la misma funcin que el
frame anterior, pero cambiando el nombre del parmetro.
Los dems elementos presentes en este frame, corresponden a la lgica necesaria para
mostrar apagado el LED indicador del estado del dispositivo USB.
71
9.5Ejemplodeuso
En las siguientes imgenes se muestra una forma de conectar los SubVIs anteriores a fin de
poder efectuar las operaciones de lectura y escritura.
Figura 64. Panel Frontal del ejemplo de uso de los SubVIs desarrollados.
72
Diagrama de bloques:
Figura 65. Diagrama de Bloques del ejemplo de uso de los SubVIs desarrollados.
Con este instrumento virtual, es posible llevar a cabo la lectura y escritura de datos desde y
hacia la tarjeta de adquisicin basada en el PIC18F4550.
73
10.
Trabajofuturo
Una vez lograda la comunicacin entre la PC y el PIC a travs del puerto USB, se propone la
utilizacin de todas las caractersticas que ofrece el microcontrolador, como son el convertidor
analgico-digital, el modulo comparador, y el mdulo PWM. Dichas caractersticas permitiran la
conexin de sensores con salidas analgicas a la tarjeta de adquisicin y de sta a la PC a
travs del puerto USB, con la finalidad de analizar la informacin en LabVIEW. Otra
aplicacin, relacionada con el mdulo PWM, es el control de motores, a travs de modulacin
por ancho de pulso (PWM), la cual puede ser manejada desde LabVIEW enviando el valor de
los ciclos de trabajo por el puerto USB a la tarjeta de adquisicin y sta conectada a un driver
para motor como pudiera ser el circuito integrado L293.
Por otro lado, el desarrollo de este proyecto se enfoc al uso del protocolo USB de forma
general, tomando las especificaciones de la norma USB 2.0, sin embargo, puede realizarse ms
adelante una transmisin de datos utilizando las especificaciones USB Test and Measurement
Class, las cuales permitirn utilizar la herramienta VISA de National Instruments.
En general, con la tarjeta generada con este proyecto, pueden llevarse a cabo las rutinas
que se ejecutan en cualquier microcontrolador, con la ventaja de realizar la programacin en el
entorno grfico de LabVIEW, en lugar de ensamblador, basic o C. Tambin se elimina el tener
que usar un programador que permita llevar la rutina escrita a la memoria del microcontrolador y
finalmente, es posible aprovechar todas las funciones y herramientas de LabVIEW para
efectuar el anlisis de los datos obtenidos, poniendo en prctica, de esta forma, los principios
de la instrumentacin virtual.
74
11.
Referencias
12.
ANEXOA.TerminologaUSB[22]
Hub: Dispositivo que contiene uno o ms conectores o conexiones internas hacia otros
dispositivos USB, el cual habilita la comunicacin entre el host y diversos dispositivos.
Cada conector representa un puerto USB.
Driver: Se trata de un programa que habilita las instrucciones necesarias para poderse
comunicar con el dispositivo. Cada dispositivo sobre el bus debe tener un driver, algunos
perifricos utilizan los drivers que proporciona el sistema operativo Windows.
Tuberas (Pipes): Es un enlace virtual entre el host (la PC) y el dispositivo USB, este
enlace configura los parmetros asociados con el ancho de banda y el tipo de
transferencia a utilizar (Control, Bulk, Isocrona o Interrupt); direccin del flujo de datos y
el mximo y/o mnimo tamao de los paquetes/buffers.
Cada enlace est caracterizado por su banda de paso (Token), su tipo de servicio, el
nmero de punto terminal (End Point) y el tamao de los paquetes.
Estos enlaces se definen y crean durante la inicializacin del USB. Siempre existe un
enlace virtual 0 que permite tener acceso a la informacin de configuracin del perifrico
USB (estado, control e informacin).
La norma USB define 2 tipos de enlaces virtuales (pipe); stream y message.
Stream Pipes: Se trata de un flujo sin formato USB definido, esto significa que se
puede enviar cualquier tipo de dato. Este tipo de pipe soporta las transferencias bulk,
isochronous, e interrupt. Adems tanto el host como el dispositivo USB pueden fungir
como controladores del proceso.
Message Pipes: este tipo de enlace virtual si tiene un formato USB definido y solo
puede soportar la transferencia Control.
77
13.
ANEXOB.UsodelPICCCompiler
El compilador utilizado para el desarrollo del proyecto, se llama PIC C Compiler, el cual es
desarrollado por la empresa Custom Computer Services Inc. En la pgina web de dicha
empresa (www.ccsinfo.com), puede descargarse una versin de prueba o comprarse la versin
ms actual del software.
Este compilador presenta diversas caractersticas, entre las cuales podemos destacar la
inclusin de operadores de lenguaje C estndar, libreras para acceder a registros especficos
del PIC, adems de ser un ambiente integrado de desarrollo (IDE). En este anexo se explica la
forma de construir un nuevo proyecto para la realizacin del programa a grabar en el PIC.
Una vez instalado el compilador en el escritorio aparecer, si seleccionamos dicha opcin
durante la instalacin, el siguiente icono:
78
79
Para iniciar, se debe crear el archivo fuente, que contendr el cdigo a grabar, para ello es
necesario dirigirse al men archivo, a travs del icono
, seleccionar el submen nuevo
(New) y posteriormente seleccionar archivo fuente (Source File).
Una vez hecho esto, se abrir el siguiente cuadro de dialogo que nos pedir seleccionar la
ubicacin y el nombre del archivo.
80
Figura 69. Cuadro de dialogo para especificar la ubicacin del archivo fuente a crear.
Una vez realizado este procedimiento, aparece una nueva hoja de trabajo, con el nombre del
archivo, como ejemplo, se muestra la siguiente figura, donde el nombre del archivo
seleccionado es USB.c.
81
En este momento podemos comenzar a editar el cdigo fuente del programa a grabar en el
PIC. Una vez que se ha capturado el cdigo necesario, es necesario crear un nuevo proyecto
para poder compilarlo y generar el archivo hexadecimal (*.hex) necesario para cargar el
programa.
Para la creacin de un proyecto se selecciona el men Project, y en la cinta de opciones, se
elige la opcin Crear (Create).
Al hacer click en esta opcin, aparecer el siguiente cuadro de dialogo, pidiendo que se
indique el archivo con el cdigo fuente que se desea grabar en el PIC, en nuestro ejemplo,
seleccionaremos el archivo USB.c que es archivo previamente creado.
82
Una vez seleccionado el archivo fuente, aparece el siguiente cuadro de dialogo que nos
permitir elegir el tipo o modelo de PIC que deseamos programar. Por defecto, el programa
nombra el proyecto con el mismo nombre del archivo fuente, solo que con extensin *.pjt, la
ubicacin donde es guardado es la misma de donde se selecciono el archivo fuente, aunque
ambas opciones pueden ser modificadas al hacer click en el botn marcado con tres puntos
mostrado.
Figura 73. Especificacin del PIC a usar y la ubicacin y nombre del proyecto a crear.
Toda vez que se ha creado el proyecto, es necesario asegurarse que estamos trabajando en
el proyecto que se quiere, para ello se posiciona el cursor sobre la pestaa proyecto (Project)
ubicada en el lado izquierdo de la ventana del programa y se agrega el proyecto haciendo click
en el signo +.
83
Esto abrir un nuevo cuadro de dialogo del cual se seleccionar el proyecto con el cual se
quiere trabajar. En caso de que dentro de la pestaa Projects se encuentre un proyecto distinto
al que deseamos trabajar, bastara con seleccionarlo y dar click en el botn con el signo menos
para eliminar el proyecto de la pestaa. S la pestaa Project no se encuentre disponible en el
lado izquierdo de la ventana, se deber activar desde el men View, seleccionando la opcin
mostrada.
Una vez que se ha terminado de editar el cdigo, de crear el proyecto y agregarlo a la lista
de proyectos, es posible compilarlo, para ello se selecciona el men Compile y se elige la
opcin Compile.
Al dar click en este botn, aparece el siguiente cuadro que muestra el progreso de la
compilacin, al final del cual aparecer la barra de estado que nos indicar si el cdigo se ha
84
compilado de manera exitosa o si por el contrario existen errores y advertencias, las cuales se
indicaran por el nmero de la lnea de cdigo donde existe dicho error.
85
14.
ANEXOC.InstalacindelMCHPFSUSBFrameworkv2.3
Una vez hecho lo anterior, se mostrar un cuadro de dialogo pidiendo que aceptemos o
rechacemos los trminos de la licencia.
86
87
Figura 81. Cuadro de dialogo para seleccionar el directorio de instalacin del framework de Microchip.
Figura 82. Cuadro de dialogo que permite la creacin de copias de seguridad al momento de la instalacin.
88
Figura 83. Cuadro de dialogo para comenzar la instalacin del framework de Microchip.
Figura 84. Cuadro de dialogo mostrando el proceso de la instalacin del framework de Microchip .
89
Finalmente, la ltima pantalla nos permitir abrir archivos relacionados con la instalacin.
Una vez realizado este procedimiento, contamos con la biblioteca de enlace dinmico (dll)
para poder realizar el instrumento virtual. En caso de cambiar la ubicacin de instalacin por
defecto, ser necesario recordarla, pues posteriormente se utilizar al momento de instalar el
driver del dispositivo.
90
15.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
ANEXOD.CdigoenlenguajeCutilizadoenelPIC
///////////////////////////////////////////////////////////////////////////
////Descriptores.h////
////////
////Enestearchivoseconfiguranloselementosdescriptoresdel////
////PIC,comosonelVIDyelPIDparaelcorrectofuncionamiento////
////deldispositivo.Ademsseconfigurelnombreconelqueel////
////dispositivoserreconocidoporlaPC.////
////////
////Estaconfiguracinsebasaenlosparametrosindicados////
////enlanormaUSB2.0////
////////
/////////////////////////////////////////////////////////////////////////
#IFNDEF__USB_DESCRIPTORS__
#DEFINE__USB_DESCRIPTORS__
#include<usb.h>//SeincluyelalibreraconlasdirectivasUSB
#DEFINEUSB_TOTAL_CONFIG_LEN32
//Longitud=config+interface+class+endpoint
//Descripcindelaconfiguracin
charconstUSB_CONFIG_DESC[]={
USB_DESC_CONFIG_LEN,//longituddeldescriptor
USB_DESC_CONFIG_TYPE,//constanteparaCONFIGURATION(0x02)
USB_TOTAL_CONFIG_LEN,0,
//Tamaodedatosqueregresaestconfiguracin
1,
//Nmerodeinterfacessoportadasporeldispositivo
0x01,
//Identificadordeestaconfiguracin
0x00,
//ndicedelacadenaquedescribeestaconfiguracin
0xC0,
//bit6=1:autoalimentado(selfpowered)
//bit5=1:activacinremota
//bits04:reservados
//bit7=1
0x32,
//energamximarequeridaporelpuerto
//(maximummilliamperes/2)(0x32=100mA)
//Descripcindelainterfaz
USB_DESC_INTERFACE_LEN,//longituddeldescriptor
91
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
USB_DESC_INTERFACE_TYPE,//constanteparaINTERFACE(0x04)
0x00,//Nmeroquedefineestainterfaz
0x00,//Seleccinalternativadeinterfaz
2,//Numerodeendpoints
0xFF,//Cdigodeclase
0xFF,//Cdigodesubclase
0xFF,//Cdigodeprotocolo
0x00,//ndicedelacadenaque
//describeestaconfiguracin
//Descripcindeendpointdeentrada
USB_DESC_ENDPOINT_LEN,
//longituddeldescriptor
USB_DESC_ENDPOINT_TYPE,
//constanteparaENDPOINT(0x05)
0x81,
//NmeroydireccindelEndpoint(0x81=EP1IN)
0x02,
//Tipodetransferencia
//0:control,1:iso,2:masiva,3:interrupciones
USB_EP1_TX_SIZE,0x00,
//Tamaomximodepaquetesoportado
0x01,
//intervalodepollingenms
//sloparatransferenciaconinterrupciones
//Descripcindeendpointdesalida
USB_DESC_ENDPOINT_LEN,
//longituddeldescriptor
USB_DESC_ENDPOINT_TYPE,
//constanteparaENDPOINT(0x05)
0x01,
//NmeroydireccindelEndpoint(0x01=EP1OUT)
0x02,
//Tipodetransferencia
//0iscontrol,1isiso,2isbulk,3isinterrupt
USB_EP1_RX_SIZE,0x00,
//Tamaomximodepaquetesoportado
0x01,
//intervalodepollingenms
//sloparatransferenciaconinterrupciones
};
#defineUSB_NUM_HID_INTERFACES0
#defineUSB_MAX_NUM_INTERFACES1
92
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
constcharUSB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};
#if(sizeof(USB_CONFIG_DESC)!=USB_TOTAL_CONFIG_LEN)
#errorUSB_TOTAL_CONFIG_LENnotdefinedcorrectly
#endif
//Descriptoresdeldispositivo
charconstUSB_DEVICE_DESC[]={
USB_DESC_DEVICE_LEN,//Longituddelreporte
0x01,//Constantedeldispositivo(0x01)
0x10,0x01,//VersindeUSB(1.1)
0x00,//Cdigodeclase
0x00,//Cdigodesubclase
0x00,//Cdigodeprotocolo
USB_MAX_EP0_PACKET_LENGTH,
//Tamaomximodepaqueteparaendpointt0.
//(BajaVelocidadespecifica8)
0xd8,0x04,//vendorid(0x04D8Microchip)
0x0b,0x00,//productid(0x000bPIC18Family)
0x01,0x00,//Nmerodeversindeldispositivo
0x01,//Indicedecadenadelproductor
0x02,//Indicedecadenadelproducto
0x00,//Indicedecadenadelnumerodeserie
USB_NUM_CONFIGURATIONS//Numerodeposiblesconfiguraciones
};
constcharUSB_STRING_DESC_OFFSET[]={0,4,12};
//Ubicacindeliniciodelascadenas
#defineUSB_STRING_DESC_COUNTsizeof(USB_STRING_DESC_OFFSET)
charconstUSB_STRING_DESC[]={
//string0
4,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
0x0a,0x08,//DefinicindeMicrosoftparaidiomainglesdeEUA
//string1
8,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
'U',0,
'S',0,
'B',0,
//string2
24,//Longituddelacadena
USB_DESC_STRING_TYPE,//Tipodedescriptor:String
'D',0,
'A',0,
'Q',0,
93
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
'_',0,
'L',0,
'a',0,
'b',0,
'V',0,
'I',0,
'E',0,
'W',0
};
#ENDIF
Unidaddeprocesamiento
Este cdigo lleva por ttulo LectoEscr.c y contiene todas las actividades y configuraciones
necesarias para llevar a cabo la comunicacin.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
/////////////////////////////////////////////////////////////////////////
////LectoEscr.c////
////////
////Estearchivocontienelasrutinasyconfiguracinnecesaria////
////paraelfuncionamientodelPIC,conestecdigoseleenlos////
////valoresdelasentradasdelmicrocontroladoryseenvan,////
////tambinserecibenlosdatosenviadosporlaPCysecolocan////
////enlassalidas.////
////Estaconfiguracinsebasaenlosparametrosindicados////
////enlanormaUSB2.0////
////////
////////////////////////////////////////////////////////////////////////
#include<18F4550.h>//LibreriaconlasinstruccionesdelPIC
//Configuracindelreloj
#FUSESHSPLL
#FUSESPLL5
#FUSESUSBDIV
#FUSESCPUDIV1
#FUSESNOWDT,NOPROTECT,NOLVP,NODEBUG,VREGEN
//Findeconfiguracindelosfuses
#usedelay(clock=48000000)//Definimoslafrecuenciadeloscilador
#defineUSB_HID_DEVICEFALSE
//deshabilitamoselusodelasdirectivasHID
94
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
#defineUSB_EP1_TX_ENABLEUSB_ENABLE_BULK
//HabilitamosEP1(EndPoint1)deentradaparatransferenciasmasivas(bulk)
#defineUSB_EP1_RX_ENABLEUSB_ENABLE_BULK
//HabilitamosEP1(EndPoint1)desalidaparatransferenciasmasivas(bulk)
#defineUSB_EP1_TX_SIZE8
//Tamaodelbufferparaelendpointdetransferencias
#defineUSB_EP1_RX_SIZE8
//Tamaodelbufferparaelendpointderecepcin
#include<pic18_usb.h>
//DriverparalafamiliaMicrochipPIC18Fxx5x
#include<Descriptores.h>
//ConfiguracindelUSBylosdescriptoresparaestedispositivo
#include<usb.c>
//LibreriaconlasinstruccionesparaelmanejodelpuertoUSB
#defineLEDVPIN_C0//Sedefinenlospinesqueseocuparn
#defineLEDRPIN_C1//losLED'sindicadores
#defineEnciendeoutput_high//ascomolasinstrucciones
#defineApagaoutput_low//paraencenderlosyapagarlos
//Sedefinenvariablesparacadaunadelasposiciones
//delavariablerecbuf,lacualesunarreglode8elementos
#defineB0recbuf[0]
#defineB1recbuf[1]
#defineB2recbuf[2]
#defineB3recbuf[3]
#defineB4recbuf[4]
#defineB5recbuf[5]
#defineB6recbuf[6]
#defineB7recbuf[7]
//SedefineunnombreparacadaunodelospinesdelpuertoB
#defineBIT0PIN_B0
#defineBIT1PIN_B1
#defineBIT2PIN_B2
#defineBIT3PIN_B3
#defineBIT4PIN_B4
#defineBIT5PIN_B5
#defineBIT6PIN_B6
#defineBIT7PIN_B7
//Rutinaprincipal
voidmain(void){
int1recbuf[8];//Sedeclaranlasvariablesdondeseran
int1envia[8];//almacenadoslosdatosaenviaryrecibir
//ambassernde8bits
95
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
Apaga(LEDV);//encendemosledrojohastaquese
Enciende(LEDR);//enumereeldispositivo
usb_init();//seinicializaelpuertoUSB
usb_task();//sehabilitaelperiferico
usb_wait_for_enumeration();
//laejecucindelcdigosedetieneenestepuntohastaque
//eldispositivohayasidoenumeradoporelhost,unavez
//queestoocurraelprogramacontinuasuejecucin
while(TRUE)//Estarutinaserefectuadaincondicionalmente
{
if(usb_enumerated())//sieldispositivohasidoenumerado
Apaga(LEDR);//seapagaelLEDindicadorrojoyse
Enciende(LEDV);//enciendeelLEDverde
{
while(true){/*Unavezencendidoslosindicadoresseejecuta
esteciclodemaneraincondicional
ParalacomunicacindesdeelPICalaPC(host):
Dependiendodelestadodelasentradas(10)sealmacenasu
valorenlavariableenva,lacualesunarreglode8bits
*/
if(input(PIN_D0))
{envia[0]=1;}
else
{envia[0]=0;}
if(input(PIN_D1))
{envia[1]=1;}
else
{envia[1]=0;}
if(input(PIN_D2))
{envia[2]=1;}
else
{envia[2]=0;}
if(input(PIN_D3))
{envia[3]=1;}
else
{envia[3]=0;}
if(input(PIN_D4))
{envia[4]=1;}
else
{envia[4]=0;}
if(input(PIN_D5))
{envia[5]=1;}
else
{envia[5]=0;}
if(input(PIN_D6))
96
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
{envia[6]=1;}
else
{envia[6]=0;}
if(input(PIN_D7))
{envia[7]=1;}
else
{envia[7]=0;}
usb_put_packet(1,envia,8,USB_DTS_TOGGLE);
/*Seenvialavariable"envia",lacualtieneuntamaode
8bits,porelendpoint1*/
//ParaefectuarlacomunicacindesdelaPC(host)alPIC
if(usb_kbhit(1)){
//sielendpointdeentradacontienedatosprovenientesdelhostel
//programacontinuasuejecucin,delocontrariosaltaestaseccin
usb_get_packet(1,recbuf,8);
/*Serecibelainformacinysealmacenaenlavariablerecbuf
queesdetipoarreglo,cadaunadelasposicionescorresponde
acadaunodelosbitsdelpuertoB*/
if(B0==1)
Enciende(BIT0);
else
Apaga(BIT0);
if(B1==1)
Enciende(BIT1);
else
Apaga(BIT1);
if(B2==1)
{Enciende(BIT2);}
else
{Apaga(BIT2);}
if(B3==1)
{Enciende(BIT3);}
else
{Apaga(BIT3);}
if(B4==1)
{Enciende(BIT4);}
else
{Apaga(BIT4);}
if(B5==1)
{Enciende(BIT5);}
else
97
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
{Apaga(BIT5);}
if(B6==1)
{Enciende(BIT6);}
else
{Apaga(BIT6);}
if(B7==1)
{Enciende(BIT7);}
else
{Apaga(BIT7);}
}
}
}
}
}//Findelprograma
98
16.
ANEXOE.Diagramaselctricos
Para llevar a cabo las operaciones requeridas, se utiliz el circuito mostrado a continuacin:
99
15.1ListadeMateriales
Receptculo USB tipo B para circuito impreso
C1: Capacitor 100nF
C2 y C3: Capacitores de 22pF
CN1, CN2, CN3, CN4, CN5 y CN6: Conectores chicos de tres tornillos
D1: LED Verde
D2: LED Rojo
IC1: Microcontrolador PIC18F4550
R1: Resistencia de 1k
R2 y R3: Resistencias de 330
RP1: 8 Resistencias de 1k
X1: Cristal de cuarzo de 20MHz
100
17.
ANEXOF.Instalacindelatarjetadeadquisicin
Para instalar la tarjeta de adquisicin de datos, es necesario conectarla con un cable USB a
la PC, una vez realizado esto, es necesario especificar la ubicacin del driver necesario para
poder utilizarla, este proceso solo se realiza la primera vez que se conecta el dispositivo. A
continuacin se presenta el proceso de instalacin necesario para los sistemas operativos
Windows XP y Windows Vista .
Windows Vista
Una vez conectada la tarjeta, aparecer el siguiente cuadro de dialogo, del cual debe
seleccionarse la opcin recomendada: Buscar e instalar el software del controlador. Ntese
que el nombre del dispositivo es el que nosotros asignamos al momento de realizar el programa
en lenguaje C para el PIC.
Figura 87. Cuadro de dialogo mostrado al conectar el dispositivo por primera vez.
Es conveniente dar click en el globo para ver el estado de la instalacin, despus de algunos
segundos, veremos el siguiente cuadro de dialogo y seleccionamos el botn mostrado.
101
Figura 90. Cuadro de dialogo para realizar la bsqueda del controlador del dispositivo.
102
Hecho esto, daremos click en el botn Examinar del cuadro de dialogo mostrado
Figura 91. Cuadro de dialogo donde se especifica la ubicacin del controlador del dispositivo.
Se mostrar el cuadro de dialogo que permitir seleccionar la ubicacin del driver, para ello,
seleccionaremos la carpeta mostrada en la imagen, que se encuentra dentro de la carpeta
Microchip Solutions, que es donde se instala por defecto el framework proporcionado por
Microchip. Una vez seleccionada la carpeta, daremos click en el botn Aceptar.
103
104
Figura 93. Cuadro de dialogo mostrando la ubicacin del controlador del sispositivo.
105
En este momento se cuenta con el driver necesario para poder trabajar con el dispositivo
desde LabVIEW.
106
Windows XP
En este sistema operativo, aparece el siguiente globo al conectar el dispositivo por primera
vez, despus de ello es necesario elegir la ubicacin del driver necesario, la cual es la misma
que la mostrada anteriormente para el caso de Windows Vista .
La versin 2.3 del framework proporcionado por Microchip, que es la utilizada en este
proyecto, es compatible completamente con ambas versiones del sistema operativo Windows.
107