Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoria Estacion Meteorologica
Memoria Estacion Meteorologica
meteorolgica USB
Agradecimientos
A mis padres, abuela, to y tas, por su apoyo, paciencia y confianza en m.
A Marian, por compartir conmigo un montn de experiencias, por todos los
buenos momentos que me has hecho pasar y por hacer que los menos buenos no
fueran tan malos, por tu paciencia aguantando mis agobios y locuras transitorias, por
todas esas bi y por lo mucho que me haces rer. Sin ninguna duda, tu amistad es lo
mejor que me ha aportado la carrera.
A Oscar, por su ayuda con la electrnica, apoyo, consejos y nimos.
A Blanca, por sufrir conmigo el PIC y el C#, por prestarme la placa y por esas
peazo de trufas belgas!!
A Sara y M. Jos, por todos esos momentos que hemos pasado juntas, me alegro
de que nuestra amistad no se haya limitado a la facul y que seis mucho ms que unas
compaeras de clase.
A mi tutor, por su disponibilidad y ayuda durante el desarrollo del proyecto.
A Isaac, por atenderme y resolver mis dudas.
A Natalia, por hacerme rer y ayudarme a desconectar.
A Marita, Miriam, Ins y Montse, por todo lo que me han enseado y
encomendado (y espero que sigan!).
A Isabel y Amparo, que aunque pase el tiempo y cambien las circunstancias,
siempre estn ah.
A Isidoro, por su ayuda en el estudio y con los exmenes, y a Beto, por estar
siempre pendiente de m y encontrarme sitio para aparcar. DOG - OIB
ndice General
I
Memoria
1.
2.
Introduccin.
1.1.
1.2.
Resumen de la memoria.........................................................................4
2.1.1.
Interfaces paralelas.......................................................................16
3.
4.
2.2.
Microcontroladores. .............................................................................21
2.3.
Metodologa y materiales.
29
3.1.
Metodologa. ........................................................................................29
3.2.
3.2.1.
Software. ......................................................................................31
3.2.2.
Hardware......................................................................................34
Anlisis de alternativas.
4.1.
35
Requisitos.............................................................................................35
4.2.
4.2.1.
4.2.2.
Microcontrolador. ........................................................................38
4.2.3.
4.3.
5.
8.
47
5.1.
5.2.
5.2.1.
5.2.2.
5.2.3.
5.2.4.
5.2.5.
Descriptores. ................................................................................66
Implementacin.
73
6.1.
6.2.
6.2.1.
6.2.2.
6.2.3.
6.3.
7.
Seleccin. .............................................................................................43
Diseo.
5.3.
6.
Experimentacin.
85
7.1.
7.2.
7.3.
Presupuesto.
89
8.1.
8.2.
8.3.
8.4.
8.5.
9.
95
9.1.
Conclusiones. .......................................................................................95
9.2.
II Planos y especificaciones
99
101
10.1.
10.2.
Listado de componentes.....................................................................103
10.3.
10.4.
Pinout. ................................................................................................105
11. Especificaciones.
107
11.1.
Condiciones econmicas....................................................................108
11.2.
Especificaciones tcnicas...................................................................108
11.2.1.
11.2.2.
11.3.
11.3.1.
11.3.2.
11.4.
11.4.1.
11.4.2.
III Apndices
115
117
B. Fichero .INF
123
C. Cdigo de la aplicacin
125
139
145
ndice de Figuras
Figura 2.1: Topologa de una conexin USB...............................................................12
Figura 2.2: Formato del tipo de cable utilizado............................................................13
Figura 2.3: Utilizacin de microcontroladores por sectores.........................................25
Figura 4.1: Encapsulado PIC18F2550..........................................................................45
Figura 5.1: Flujo de comunicaciones entre un dispositivo USB y el host....................47
Figura 5.2: Sensor de temperatura LM50.....................................................................49
Figura 5.3: Alimentacin a travs del bus USB...........................................................50
Figura 5.4: Conector USB tipo A.................................................................................50
Figura 5.5: Oscilador cristal o cermico (configuracin XT, HS o HSPLL)...............52
Figura 5.6: Deteccin de la velocidad de un dispositivo USB.....................................53
Figura 5.7: Mdulo del oscilador.................................................................................55
Figura 5.8: Registro CONFIG1L..................................................................................56
Figura 5.9: Registro CONFIG1H.................................................................................57
Figura 5.10: Registro OSCCON...................................................................................58
Figura 5.11: Registro ADCON0...................................................................................59
Figura 5.12: Registro ADCON1...................................................................................60
Figura 5.13: Secuencia de conversin A/D..................................................................61
Figura 5.14: Conversin A/D con tiempo de adquisicin manual...............................62
Figura 5.15: Registro ADCON2...................................................................................63
Figura 5.16: Registro UCON........................................................................................64
Figura 5.17: Mdulo USB............................................................................................65
Figura 5.18: Registro UCFG........................................................................................66
Figura 5.19: Jerarqua de descriptores..........................................................................67
Figura 5.20: Descriptores del perifrico.......................................................................69
Figura 5.21: Registro UEPn.........................................................................................70
ndice de Tablas
Tabla 4.1: Comparacin entre FireWire y USB...........................................................37
Tabla 5.1: Modos de funcionamiento del oscilador en el PIC18F2550.......................51
Tabla 5.2: Registros de configuracin.........................................................................54
Tabla 5.3: TAD frente a frecuencia del oscilador........................................................62
Tabla 5.4: Valores de los registros de configuracin...................................................70
Tabla 8.1: Presupuesto de los recursos hardware.........................................................90
Tabla 8.2: Presupuesto de los recursos software..........................................................91
Tabla 8.3: Presupuesto de los componentes y el PCB.................................................92
Tabla 8.4: Presupuesto del coste de tareas del ingeniero.............................................93
Tabla 8.5: Presupuesto del coste de tareas del tcnico.................................................93
Tabla 8.6: Coste total de los recursos humanos...........................................................93
Tabla 8.7: Coste total del proyecto..............................................................................94
Tabla 10.1: Listado de componentes..........................................................................103
Tabla 10.2: Pinout del microcontrolador PIC18F2550..............................................105
Tabla 10.3: Pinout del conector USB.........................................................................106
Tabla 11.1: Condiciones de la seal de alimentacin................................................109
Tabla 11.2: Mrgenes de tensin para los niveles lgicos en USB 1.1.....................109
Tabla 11.3: Caractersticas elctricas del PIC18F2550..............................................110
Tabla 11.4: Caractersticas elctricas del sensor LM50.............................................111
Tabla 11.5: Parmetros requeridos para la fabricacin del PCB....113
Parte I
Memoria
1. Introduccin.
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
Captulo 2: Estado del arte, es decir, la base terica sobre la que se basa
el proyecto.
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
Bibliografa.
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
Universidad de Valencia
Los mdulos de E/S establecen una serie de reglas (llamadas interfaces) que les
permiten por un lado conectarse con la CPU y la memoria a travs del bus del sistema
o del de expansin y, por otro lado, conectarse con los dispositivos perifricos a travs
de enlaces dedicados para datos. Estos enlaces se caracterizan porque son ms lentos,
tienen una menor longitud de palabra y menores velocidades de transferencia de
datos. Su diseo se basa en un estndar para permitir la interconexin de dispositivos
de diferentes fabricantes. [MBP01]
A continuacin se describirn algunos de los estndares ms importantes
utilizados en la interconexin del ordenador y los perifricos, haciendo para ello una
distincin entre interfaces serie e interfaces paralelas:
Interfaz serie: Se utiliza una nica lnea para transmitir los datos.
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
Universidad de Valencia
Este estndar lo incorporan todos los ordenadores personales y est definido por
la EIA (Electronic Industries Association) aunque en Europa se le conoce como el
estndar V.24 definido por la CCITT (Consultative Committee for International
Telephone and Telegraph). En l se definen todas las caractersticas mecnicas,
elctricas y los protocolos necesarios para conectar un equipo terminal de datos
(DTE- Data Terminal Equipment) con un equipo transmisor de datos (DCE Data
Carrier Equipment). Inicialmente se defini para realizar la comunicacin entre un
ordenador personal y un mdem, aunque actualmente se utiliza con muchos otros
propsitos para enviar datos de forma serializada.
El estndar define voltajes que oscilan entre + [3-15] V para el nivel alto y [315] V para el nivel bajo. Debido a la gran diferencia de voltaje que existe entre los
niveles altos y bajos, se permiten tasas de transferencia de hasta 115.200 baudios si la
longitud del cable es de unas pocas decenas de metros.
Si se utiliza este estndar para conectar otros perifricos diferentes de los
mdems, stos se comportan como dispositivos DTE y, por lo tanto, las seales
cambian de significado.
10
Universidad de Valencia
11
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
12
Universidad de Valencia
El USB define dos lneas para transmitir datos y otras dos para transmitir
potencia (vase la figura 2.2). Los datos de transmiten de forma balanceada a
velocidades entre 1,5 Mbps y 12 Mbps. La seal se transmite codificada en un cdigo
autoreloj de no retorno a cero invertido (NRZI) para poder incluir junto con los datos
informacin de sincronizacin. Las lneas de alimentacin (Vbus y GND) evitan la
necesidad de utilizar fuentes de alimentacin externas. Tiene una tensin de 5 V y la
corriente se limita a un mximo de 3 a 5 amperios por razones de seguridad, siendo el
consumo y la configuracin elctrica totalmente transparente al usuario. La distancia
entre dos perifricos conectados al mismo cable no debe ser superior a 5 metros para
evitar problemas de cadas de tensin.
13
Universidad de Valencia
14
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
15
Universidad de Valencia
Funciona tanto con Mac como con PC. Lo que garantiza la compatibilidad
con una larga lista de productos con FireWire a precios razonables. [App]
Inicialmente se dise una interfaz con 36 pines, que utilizaba la casa Centronics
Data Computer Corporation en sus impresoras. Sin embargo, la interfaz Centronics de
los ordenadores personales actuales fue diseada por Epson Corporation.
La interfaz consta de 8 pines para datos ms 5 seales que controlan la impresora
y cinco que vienen de la misma. Se utilizan voltajes TTL con seales no balanceadas,
por lo que son susceptibles de recibir ruido y producir errores. El bus soporta tasas de
transferencia de datos de hasta 100 Kbytes/s.
Actualmente se han diseado dos estndares que tratan de aumentar el ancho de
banda de la interfaz Centronics sin perder la compatibilidad con el mismo,
permitiendo adems la comunicacin bidireccional. Son las interfaces ECP (Extended
Capabilities Port) y EPP (Enhanced Capabilities Port) que se definen en el estndar
_____________________________________________________________________
Ingeniera Informtica
16
Universidad de Valencia
del IEEE 1284. ECP se utiliza en las impresoras y escners, puesto que permite
mayores tasas de transferencia con protocolos sencillos, mientras que EPP sirve para
los dems dispositivos en donde se necesita un control de errores ms exhaustivo.
17
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
18
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
19
Universidad de Valencia
20
Universidad de Valencia
2.2. Microcontroladores.
Un controlador es un dispositivo que se emplea en el gobierno de uno o varios
procesos. Aunque el concepto de controlador ha continuado inalterable a travs del
tiempo, su implementacin fsica ha variado frecuentemente. Hace tres dcadas, los
controladores se construan exclusivamente con componentes de lgica discreta;
posteriormente se utilizaron los microprocesadores, que se rodeaban con chips de
memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los
elementos del controlador se han podido incluir en un chip que recibe el nombre de
microcontrolador.
En definitiva, un microcontrolador es un circuito integrado programable que
contiene todos los componentes de un computador. Se utiliza para controlar el
funcionamiento de una tarea determinada y, debido a su reducida medida, suele ir
incorporado en el propio dispositivo que gobierna. Esta ltima caracterstica es la que
le confiere la denominacin de controlador incrustado (embedded controller).
El microcontrolador es un computador dedicado. En su memoria solamente reside
un programa destinado a gobernar una aplicacin determinada; sus lneas de
entrada/salida soportan la conexin de los sensores y actuadores del dispositivo a
controlar y todos los recursos complementarios disponibles tienen como nica
finalidad atender sus requerimientos. Una vez programado y configurado el
microcontrolador solamente sirve para gobernar la tarea asignada.
Un microcontrolador posee todos los componentes de un computador pero con
unas caractersticas fijas que no pueden alterarse. Todos disponen de los bloques
esenciales: procesador, memoria de datos y de instrucciones, mdulos de E/S,
oscilador de reloj y mdulos controladores de perifricos. Adems de estos elementos,
existen una serie de recursos especiales que los fabricantes pueden ofertar, algunos
amplan las capacidades de las memorias, otros incorporan nuevo recursos y hay
quienes reducen las prestaciones al mnimo para aplicaciones muy simples. Depende
del programador el encontrar el modelo mnimo que se ajuste a sus requerimientos y
_____________________________________________________________________
Ingeniera Informtica
21
Universidad de Valencia
Temporizadores (Timers).
Conversores AD y DA.
Comparadores analgicos.
_____________________________________________________________________
Ingeniera Informtica
22
Universidad de Valencia
Aumento de la fiabilidad.
23
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
24
Universidad de Valencia
10%
33%
16%
16%
Perifricos
Electrodomsticos
Comunicacin
Industria
Automocin
25%
_____________________________________________________________________
Ingeniera Informtica
25
Universidad de Valencia
26
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
27
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
28
Universidad de Valencia
3. Metodologa y materiales.
3.1. Metodologa.
En el diseo de sistemas se suelen seguir una serie de pasos que van desde la
especificacin de requisitos hasta la comercializacin del producto final. El presente
proyecto tiene como objetivo final la construccin de un prototipo, por lo que el ciclo
de diseo no abarcar hasta la fase final de fabricacin en serie del producto y
posterior comercializacin. Este ciclo de diseo se ha adaptado a las caractersticas
del proyecto y constar de las fases de especificacin de requisitos, establecimiento de
la arquitectura del sistema, desarrollo del hardware y software, test y debug y, por
ltimo, diseo y fabricacin del PCB. A continuacin se detallan las fases:
_____________________________________________________________________
Ingeniera Informtica
29
Universidad de Valencia
para
verificar
que
el
montaje
se
ha
realizado
correctamente.
_____________________________________________________________________
Ingeniera Informtica
30
Universidad de Valencia
3.2.1. Software.
Las herramientas software utilizadas en el desarrollo del proyecto son cinco: el
paquete Orcad 9.2, el compilador de C para PICs PCWH versin 3.235 de CCS, el
programa EduMic versin 2.0, Microsoft Windows Server 2003 SP1 Driver
Development Kit (DDK) y el Visual C# 2005 Express Edition. A continuacin se har
una descripcin de cada una de estas herramientas indicando su utilidad y sus
principales caractersticas.
Orcad
El paquete Orcad, entre otras muchas funcionalidades, permite el diseo de PCBs
multicapa de forma sencilla y rpida. Consta del Orcad Capture, con el que se
realizan los esquemas del circuito, y del Orcad Layout, con el que se realiza el
diseo del PCB.
El Orcad Capture permite la gestin de proyectos de forma jerrquica y la
divisin de grandes diseos en otros ms pequeos. Por medio del Orcad Capture se
realiza el esquema del circuito incluyendo sus componentes. Aunque posee gran
cantidad de libreras de componentes, permite la creacin de libreras propias y el
diseo de componentes especficos.
Una vez realizado el esquema del diseo se utilizar el Orcad Layout para
realizar el diseo del PCB. Para mayor facilidad permite la posibilidad de realizar un
rutado automtico de las pistas del diseo as como diferentes opciones de rutado para
minimizar los costes de implementacin.
_____________________________________________________________________
Ingeniera Informtica
31
Universidad de Valencia
Compilador CCS
Este compilador de lenguaje C ha sido desarrollado por CCS Inc. para resolver
las caractersticas especficas de los microcontroladores PIC. Es una herramienta de
desarrollo importante que permite disminuir el tiempo de desarrollo de los proyectos
ya que este software cuenta con libreras con mtodos para funciones especficas del
PIC (conversin A/D, entrada y salida, configuracin de timers, etc.) y el software ICProg para la programacin del PIC.
Incluye tambin el cdigo fuente de numerosos programas de ejemplo para
mdulos LCD, teclados, conversores A/D, etc. Este software puede ser integrado con
MPLAB y usa 1, 8, 16 y 32 bits de tipo entero y 32 bits de tipo flotante. El cdigo
ensamblador puede ser insertado en cualquier parte y puede referenciar a variables C.
Adems incluye una funcin que permite desplegar informacin formateada en HEX
o en decimal. [CCS]
EduMic
El programa EduMic se encarga de descargar sobre el microcontrolador PIC de la
tarjeta el fichero HEX generado por la herramienta de compilacin que se utilice. El
software soporta la mayora de microcontroladores PIC de la familia 16 que soporten
ICSP y la versin 2.0 permite adems grabar varios de los dispositivos de la familia
18, incluyendo todos los que tienen USB.
Algunas de sus caractersticas ms importantes son:
_____________________________________________________________________
Ingeniera Informtica
32
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
33
Universidad de Valencia
Visual C#
Visual C# .NET es un lenguaje de programacin seguro y orientado a objetos,
que combina la potencia de Visual C y Visual C++ con la sencillez funcional de las
herramientas de desarrollo de aplicaciones modernas y rpidas, permitiendo
desarrollar software .NET para Microsoft Windows, la web y un gran rango de
dispositivos. Posee una sintaxis que se asemeja a C++, un entorno de desarrollo
flexible (IDE) y ofrece la posibilidad de desarrollar soluciones para una gran gama de
plataformas y dispositivos. [Mic]
3.2.2. Hardware.
El hardware necesario para la realizacin del proyecto consiste por una parte, en
la plataforma hardware sobre la que utilizar el software de desarrollo, por otra, en los
elementos necesarios para el montaje de los componentes y testeo de la placa y, por
ltimo, en la tarjeta EduMic.
La plataforma utilizada para el software de desarrollo es un PC con procesador
Intel Pentium M a 1 GHz y con memoria RAM de 1 GB. El sistema operativo es el
Windows XP Profesional.
En cuanto al material para el montaje de los componentes sobre la placa se
utilizar un soldador de montaje superficial y para el testeo de la misma ser necesario
utilizar un multmetro.
La tarjeta Edumic ser necesaria para programar el microcontrolador PIC. Esta
tarjeta permite la programacin de la mayora de micros PIC de la familia 16 y 18 que
soporten ICSP (casi todos). La programacin se hace a travs del puerto paralelo.
_____________________________________________________________________
Ingeniera Informtica
34
Universidad de Valencia
4. Anlisis de alternativas.
En este captulo se realizar la especificacin de los requisitos que debe cumplir
el proyecto para, posteriormente y basndose en ellos, analizar distintas alternativas a
tener en cuenta en el desarrollo del proyecto, tanto desde el punto de vista del
hardware (tipo de microcontrolador o de bus) como del software (lenguaje de
programacin o herramienta de desarrollo), y seleccionar la opcin ms ptima para
la consecucin de los objetivos.
4.1. Requisitos.
Los requisitos a nivel de usuario que ha de cumplir el proyecto se pueden dividir
en tres grupos: requisitos del perifrico, requisitos de la aplicacin software y
requisitos generales del proyecto.
El perifrico debe ser manejable y tener un tamao lo ms pequeo posible. Se
pide tambin que la alimentacin sea a travs del bus de interconexin con el
ordenador, de manera que al no tener fuente de alimentacin propia, el nmero de
componentes de la placa es menor y por lo tanto esto influye en su tamao y coste.
Respecto a la aplicacin software, esta debe ser intuitiva y fcil de usar, con un
nmero de opciones por ventana limitado con el objetivo de no inundar de
_____________________________________________________________________
Ingeniera Informtica
35
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
36
Universidad de Valencia
USB
63
127
200 Mbps
400 Mbps
800 Mbps
1,5 Mbps
12 Mbps
480 Mbps
No
Velocidad de transferencia de
datos
Conexin de perifricos interna
37
Universidad de Valencia
4.2.2. Microcontrolador.
Antes de seleccionar un microcontrolador es imprescindible analizar los
requisitos de la aplicacin que se quiere desarrollar. A continuacin se indican
algunos de los aspectos que normalmente hay que tener en cuenta a la hora de realizar
la eleccin:
_____________________________________________________________________
Ingeniera Informtica
38
Universidad de Valencia
STMicroelectronics
Atmel Corp.
_____________________________________________________________________
Ingeniera Informtica
39
Universidad de Valencia
40
Universidad de Valencia
41
Universidad de Valencia
Visual C#
C# es el nuevo lenguaje diseado por Microsoft para su plataforma .NET. En
concreto, ha sido diseado por Scott Wiltamuth y Anders Hejlsberg, ste ltimo
tambin conocido por haber sido el diseador del lenguaje Turbo Pascal y la
herramienta RAD Delphi.
Aunque en realidad es posible escribir cdigo para la plataforma .NET en muchos
otros lenguajes, como Visual Basic .NET o JScript .NET, C# es el nico que ha sido
diseado especficamente para ser utilizado en esta plataforma, por lo que
programarla usando C# es mucho ms sencillo e intuitivo que hacerlo con cualquiera
de los otros lenguajes. Por esta razn, Microsoft suele referirse a C# como el lenguaje
nativo de .NET, y de hecho gran parte de la librera de clases base de .NET ha sido
escrito en este lenguaje.
C# es un lenguaje orientado a objetos sencillo, moderno, amigable, intuitivo y
fcilmente legible que ha sido diseado con el ambicioso objetivo de recoger las
mejores caractersticas de muchos otros lenguajes, fundamentalmente Visual Basic,
Java y C++, y combinarlas en uno slo en el que se unan la alta productividad y
facilidad de aprendizaje de Visual Basic con la potencia de C++.
Aunque actualmente no se consiguen prestaciones en velocidad tan altas como
usando el C++ tradicional, Microsoft asegura que en futuras versiones se ir
aumentando la eficiencia del lenguaje, gracias fundamentalmente a la posibilidad de
generar dinmicamente cdigo optimizado para aprovechar las caractersticas de la
mquina sobre la que se ejecute el programa. [Mic]
Tanto Visual Basic como Visual C++ y Visual C# forman parte del paquete
Visual Studio 2005 de Microsoft.
_____________________________________________________________________
Ingeniera Informtica
42
Universidad de Valencia
4.3. Seleccin.
Una vez realizado el estudio de las posibles alternativas para llevar a cabo el
proyecto se pasa a tomar una decisin sobre cual de ellas es la ms adecuada.
En primer lugar, se decide que el mejor modo para la interconexin del perifrico
y el ordenador es mediante USB. Aunque comparado con FireWire, USB tenga una
velocidad de transferencia de datos menor, esto no resulta un problema en el
perifrico a desarrollar, ya que la cantidad de datos a transmitir es pequea y con un
dispositivo USB a baja velocidad (1,5 Mbps) resultara suficiente. Adems de esto, la
utilizacin de USB proporciona muchas ventajas tanto desde el punto de vista del
usuario como del diseador de perifricos.
Desde el punto de vista del usuario hay que destacar su facilidad de uso,
fiabilidad, bajo coste y bajo consumo. Respecto a la facilidad de uso, hay que decir
que USB es una interface plug&play, lo que significa que es posible conectar un
dispositivo hardware al PC sin necesidad de incorporar ningn driver, ya que la
configuracin se realiza de forma automtica. Adems posee una conectividad
excepcional, ya que puede manejar hasta 127 dispositivos simultneamente, que se
pueden conectar y desconectar sin tener que reiniciar el sistema.
Desde el punto de vista del diseador hay que destacar su flexibilidad, ya que
posee diversos tipos de transferencias y la definicin de la interfaz elctrica no se hace
en funcin del dispositivo. Otra ventaja es que es soportado por todos los sistemas
operativos Windows posteriores a Windows 98 y tambin por Linux. Adems, existe
una gran cantidad de herramientas que facilitan el desarrollo de perifricos que
utilizan este estndar y la especificacin USB y otros documentos relacionados estn
disponibles de manera gratuita online por lo que, dentro de la complejidad del
protocolo USB, se facilita la tarea del diseador. [Axe99]
Entre los distintos fabricantes de microcontroladores nos decantamos por
Microchip Technology. Los microcontroladores PIC de Microchip estn muy
extendidos actualmente en el mercado gracias a su gran variedad y bajo coste. Otra
_____________________________________________________________________
Ingeniera Informtica
43
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
44
Universidad de Valencia
45
Universidad de Valencia
compilador de C C18, se ha optado por utilizar para la programacin del firmware del
PIC el extendido compilador CCS, en concreto la versin 3.235, ya que, a diferencia
de las herramientas ofrecidas por Microchip, este incorpora bibliotecas para el uso del
USB permitiendo de esta forma, disminuir el tiempo de desarrollo de los proyectos.
Adems, si se desea, el compilador CCS puede ser integrado con MPLAB.
Respecto a la herramienta de desarrollo de la aplicacin, aunque cualquiera de las
tres opciones sera vlida para este proyecto, al final se ha optado por utilizar el
Visual C# ya que se trata de una herramienta que no hemos utilizado a lo largo de
nuestra formacin acadmica y, por lo tanto, preferimos ampliar conocimientos.
_____________________________________________________________________
Ingeniera Informtica
46
Universidad de Valencia
5. Diseo.
Antes de entrar de lleno en el diseo, se realizar una pequea descripcin de la
forma en que un dispositivo USB se comunica con el host, ya que nos hemos basado
en esta arquitectura para desarrollar este proyecto.
En la siguiente figura se puede ver la arquitectura del sistema y el flujo de
comunicaciones entre los distintos niveles.
47
Universidad de Valencia
El flujo de datos del bus USB desde un punto de vista lgico hay que entenderlo
como una serie de puntos finales (endpoints), que se agrupan en conjuntos que dan
lugar a interfaces, las cuales permiten controlar la funcin del dispositivo.
La arquitectura se puede dividir en tres niveles o capas. En el nivel mas 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. 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 puntos finales.
Cada dispositivo USB est compuesto por unos puntos finales independientes y
una direccin nica asignada por el sistema en tiempo de conexin, de forma
dinmica. A su vez, cada punto final dispone de un identificador nico dentro del
dispositivo (nmero de endpoint) que viene asignado de fbrica, adems de una
determinada orientacin del flujo de datos. Cada punto final es por si solo una
conexin simple, que soporta un flujo de datos de entrada o de salida.
Una tubera USB es una conexin lgica entre un punto final del perifrico y el
software del host, que permite intercambiar datos entre ellos. La tubera que esta
formada por el punto final 0 se denomina tubera de control por defecto. Esta tubera
est siempre disponible una vez se ha conectado el dispositivo y ha recibido un reset
del bus. El resto de tuberas aparecen despus de que se configure el dispositivo. La
tubera de control por defecto es utilizada por el software USB del sistema para
obtener la identificacin y para configurar al perifrico.
_____________________________________________________________________
Ingeniera Informtica
48
Universidad de Valencia
49
Universidad de Valencia
Osciladores
primarios:
son
los
cristales
externos.
Pueden
ir
Bloque del oscilador interno: se utiliza como fuente de reloj para los
modos de bajo consumo.
Estas tres fuentes hacen que el oscilador disponga de doce modos distintos de
funcionamiento:
_____________________________________________________________________
Ingeniera Informtica
50
Universidad de Valencia
En
microcontroladores
PIC
anteriores
la
familia
51
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
52
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
53
Universidad de Valencia
Temporizador Watchdog.
Proteccin de cdigo.
_____________________________________________________________________
Ingeniera Informtica
54
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
55
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
56
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
57
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
58
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
59
Universidad de Valencia
Vref+ y Vref- pueden ser internas (VDD y GND) o externas a travs de los pines
RA3->(Vref+) y RA2->(Vref-). Aqu se utilizarn VDD y GND como voltaje de
referencia.
_____________________________________________________________________
Ingeniera Informtica
60
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
61
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
62
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
63
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
64
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
65
Universidad de Valencia
5.2.5. Descriptores.
Como puede verse en la figura 5.19, todos los dispositivos USB tienen una
jerarqua de descriptores:
_____________________________________________________________________
Ingeniera Informtica
66
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
67
Universidad de Valencia
Una clase define un marco con la funcionalidad mnima que todos los
dispositivos e interfaces de una determinada clase deben presentar. En el descriptor de
dispositivo existe un campo (bDeviceClass) que indica si el dispositivo pertenece a
una clase USB definida. En este caso, el campo presentar un valor entre 01h y FEh
dependiendo de la clase a la que pertenezca. El valor FFh significa que la clase es
especfica de un vendedor y est definida por este. Algunos dispositivos (como HIDs)
especifican la clase en el descriptor de interface, para este tipo de dispositivos este
campo ser 00h y en el campo bInterfaceClass del descriptor de interface se indicar
la clase a la que pertenece. No todos los dispositivos pertenecen a una clase.
Si el perifrico no pertenece a una clase ya definida o se le quiere asignar un
driver especfico (no genrico), los campos de clase, subclase y protocolo del
descriptor de dispositivo o interface deben de valer FFh (clase especfica de un
vendedor) y en los campos del descriptor de dispositivo idVendor y idProduct se debe
indicar tanto el identificador de vendedor y como el del producto. Cada fabricante
tiene un identificador de vendedor nico que debe incluir en el descriptor de
dispositivo de sus productos. El identificador de producto lo decide el fabricante para
identificar a los dispositivos. Estos dos valores se deben incluir tambin en un fichero
INF que el sistema operativo utilizar para decidir que driver debe asignar al
perifrico en funcin de estos dos valores.
Cuando el sistema operativo enumera un nuevo dispositivo USB, el
Administrador de Dispositivos compara los datos de todos los ficheros INF con la
informacin de los descriptores obtenida del dispositivo durante la enumeracin. Para
evitar tener que leer todos los INF cada vez que se detecta un nuevo dispositivo,
Windows tiene una base de datos de informacin sobre drivers con informacin
obtenida de los ficheros INF. [Axe99]
El perifrico que se va a desarrollar no pertenece a ninguna clase genrica, as
que habr que indicar el driver que se le quiere asignar. El driver que se utilizar ser
un driver USB de propsito general para Windows suministrado por Microchip
(mchpusb.sys). As mismo, Microchip proporciona un identificador de vendedor
(0x04D8) que puede ser utilizado en productos desarrollados con microcontroladores
PIC.
_____________________________________________________________________
Ingeniera Informtica
68
Universidad de Valencia
Respecto a los puntos finales, adems del EP0 (que siempre se utiliza), se
necesitar otro ms para pasar los datos del perifrico al host. La direccin de los
datos ser de entrada y el tipo de transferencia que se utilizar ser de interrupcin, ya
que el dispositivo es de baja velocidad y slo soporta transferencias de control y de
interrupcin. Por lo tanto, se utilizar el punto final 1.
En la siguiente figura pueden verse los descriptores del perifrico desarrollado:
Dispositivo
Vendor ID 0x04D8
Product ID 0x0011
Clase 0x00
Configuracin 1
Interface 0
Clase 0xFF
Subclase 0xFF
Protocolo 0xFF
Endpoint 1 IN
Transf. interrupcin
_____________________________________________________________________
Ingeniera Informtica
69
Universidad de Valencia
Una vez vistos todos los mdulos y registros necesarios para configurar el
microcontrolador, los valores de los registros de configuracin quedaran de la
siguiente manera:
_____________________________________________________________________
Ingeniera Informtica
70
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
71
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
72
Universidad de Valencia
6. Implementacin.
Diseo del circuito impreso. Partiendo del Netlist generado con el Orcad
Capture a partir del esquema realizado se disear el PCB. En el diseo
del circuito impreso se utilizar la herramienta de CAD Orcad Layout que
generar como resultado los ficheros gerber con el diseo.
_____________________________________________________________________
Ingeniera Informtica
73
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
74
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
75
Universidad de Valencia
FALSE
#endif
FALSE
#endif
_____________________________________________________________________
Ingeniera Informtica
76
Universidad de Valencia
Dispositivo
Enumerado??
No
Si
Led ON
Configuracin Mdulo A/D
Conversin A/D
Transmisin de datos
FIN
77
Universidad de Valencia
78
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
79
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
80
Universidad de Valencia
InstallFunction,
IN HDEVINFO
DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData
OPTIONAL
En la plantilla de recursos classinst.rc se tiene que cambiar por una parte el icono
que se utilizar y por otra, en la informacin de la versin, se incluye informacin
sobre la descripcin de la clase, el nombre del fabricante y el nombre del fichero
resultante encargado de realizar la instalacin de la clase en el Administrador de
Dispositivos (archivo DLL).
Cuando se han realizado todos estos cambios se procede a crear el archivo DLL
que necesitamos. Para ello en la lnea de comandos del DDK se ejecuta build cZ
toaster. Con este comando se crearn todos los ficheros .sys, .exe y .dll del proyecto
Toaster, incluyendo el archivo DLL necesario para instalar la clase y que se llama
tempusbci.dll. De todos los ficheros creados este ser el nico que nos servir y
permitir que al conectar el perifrico al ordenador, y una vez reconocido y con el
driver instalado, en el Administrador de Dispositivos aparezca algo as:
_____________________________________________________________________
Ingeniera Informtica
81
Universidad de Valencia
82
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
83
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
84
Universidad de Valencia
7. Experimentacin.
Una vez finalizada la implementacin, se deben realizar una serie de pruebas para
evaluar el correcto funcionamiento tanto del perifrico como de la aplicacin
software.
Las pruebas realizadas son:
_____________________________________________________________________
Ingeniera Informtica
85
Universidad de Valencia
Compaq con procesador Intel Pentium III a 1 GHz, memoria RAM de 256
MB y sistema operativo Windows XP Home Edition.
86
Universidad de Valencia
calor y cerca de una fuente de fro. En todos los casos el valor de la temperatura
medida por ambos instrumentos era similar, con una diferencia de 1C como
mucho.
Tambin se ha podido observar que al acercarlos a una fuente de calor, ambos
experimentan el mismo incremento en el valor medido aunque el termmetro lo hace
con un pequeo retraso, tardando ms en alcanzar el valor. Lo mismo ocurre al
acercarlos a una fuente de fro.
Para comprobar que las temperaturas mxima y mnima mostradas eran correctas,
se parti de una temperatura de inicio y se acerc el dispositivo a una fuente de calor
para ver como aumentaba la temperatura mxima. Posteriormente se acerc tambin a
una fuente de fro y se vio como variaba la mnima.
La captura de las temperaturas en un fichero se realiz de forma correcta,
comprobando todos los datos guardados. Para comprobar que las temperaturas
mxima y mnima almacenadas en el fichero eran las correspondientes al intervalo de
_____________________________________________________________________
Ingeniera Informtica
87
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
88
Universidad de Valencia
8. Presupuesto.
Para realizar una estimacin del coste econmico del proyecto, se han dividido
los gastos asociados al desarrollo del mismo en varios grupos:
Monitor de 10,6
_____________________________________________________________________
Ingeniera Informtica
89
Universidad de Valencia
PRECIO
PC Pentium M 1 GHz
1.000,00
Soldador
21,50
Multmetro
49,15
Tarjeta EduMic
313,57
TOTAL
1.384,22
90
Universidad de Valencia
PRECIO
Windows XP Professional
284,05
6.000,00
331,86
0,00
0,00
147,00
0,00
TOTAL
6.762,91
_____________________________________________________________________
Ingeniera Informtica
91
Universidad de Valencia
CONCEPTO
CANTIDAD
PRECIO POR
UNIDAD
PRECIO
Resistencias
0,02
0,08
Condensadores cermicos
0,04
0,16
Condensad. electrolticos
0,02
0,12
Cristal 4 MHz
0,22
0,44
1,48
2,96
Led rojo
0,06
0,12
Regleta hembra
0,51
1,02
Microcontr. PIC18F2550
7,39
7,39
Switch
0,80
1,60
Sensor LM50
0,42
0,84
Rollo de estao
7,01
7,01
2,45
2,45
Fotolitos
450,00
450,00
PCB
10,00
10,00
TOTAL
484,19
_____________________________________________________________________
Ingeniera Informtica
92
Universidad de Valencia
HORAS
COSTE
Anlisis de requisitos
65
590,85
Diseo
170
1.545,30
Implementacin
210
1.908,90
Experimentacin
50
454,5
495
4.499,55
TOTAL
HORAS
COSTE
Montaje
24,24
Testeo
30,30
54,54
TOTAL
HORAS
COSTE
495
4.499,55
54,54
504
4.554,09
Ingeniero
Tcnico
TOTAL
93
Universidad de Valencia
CONCEPTO
COSTE
Recursos hardware
1.384,22
Recursos software
6.762,91
484,19
4.554,09
TOTAL
13.185,41
_____________________________________________________________________
Ingeniera Informtica
94
Universidad de Valencia
9.1. Conclusiones.
Despus de haber realizado las pruebas y haber examinado los resultados
obtenidos, se pueden extraer conclusiones sobre el proyecto. Tanto el perifrico como
la aplicacin software desarrollados satisfacen todos los objetivos marcados
inicialmente en el apartado 1.1. as como los requisitos de usuario indicados en el
apartado 4.1.
El resultado del proyecto ha sido la obtencin de un circuito impreso con un
microcontrolador PIC que realiza una conversin A/D de los datos adquiridos por un
sensor de temperatura a la vez que controla la comunicacin con el host y el envo de
estos datos a travs de un bus USB. Estas temperaturas pueden ser visualizadas
mediante una aplicacin que permite realizar un tratamiento de los datos.
Con la eleccin de USB como medio de interconexin entre el perifrico y el
ordenador se consiguen algunos de los requisitos especificados:
_____________________________________________________________________
Ingeniera Informtica
95
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
96
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
97
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
98
Universidad de Valencia
Parte II
Planos y especificaciones
99
100
_____________________________________________________________________
Ingeniera Informtica
101
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
102
Universidad de Valencia
DESCRIPCION
R1
Resistencia de 1K
R2
Resistencia de 10K
C1
Condensador electroltico de 1 F
C2, C3
Condensadores cermicos de 27 pF
C4
Condensador electroltico de 47 F
C5
Condensador electroltico de 10 F
U1
Microcontrolador PIC18F2550
S1
Switch
D1
Led Rojo
CN1
XT1
Cristal de 4 MHz
Q1
_____________________________________________________________________
Ingeniera Informtica
103
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
104
Universidad de Valencia
10.4. Pinout.
SEAL
PIN
~MCLR/Vpp/RE3
RA0/AN0
RA1/AN1
RA2/AN2/Vref-/CVref
RA3/AN3/Vref+
RA4/T0CKI/C1OUT/RCV
RA5/AN4/~SS/HLVDIN/C2OUT
Vss
OSC1/CLKI
OSC2/CLKO/RA6
10
RC0/T1OSO/T13CKI
11
RC1/T1OSI/CCP2/~UOE
12
RC2/CCP1
13
Vusb
14
RC4/D-/VM
15
RC5/D+/VP
16
RC6/TX/CK
17
RC7/RX/DT/SDO
18
Vss
19
Vdd
20
RB0/AN12/INT0/FLT0/SDI/SDA
21
RB1/AN10/INT1/SCK/SCL
22
RB2/AN8/INT2/VMO
23
RB3/AN9/CCP2/VPO
24
RB4/AN11/KBI0
25
RB5/KBI1/PGM
26
RB6/KBI2/PGC
27
RB7/KBI3/PGD
28
105
Universidad de Valencia
SEAL
PIN
Vcc
-Data
+Data
GND
_____________________________________________________________________
Ingeniera Informtica
106
Universidad de Valencia
11. Especificaciones.
Este apartado se centra en la definicin de las exigencias relacionadas con los
conceptos econmicos y tcnicos que afectan al proyecto. Se centrar bsicamente en
los aspectos tcnicos pero tambin quedarn definidos los asuntos relacionados con la
empresa realizadora del proyecto y las subcontratas que proveern los materiales
necesarios para su realizacin. Todo lo relacionado con la ejecucin material del
proyecto deber seguir las normas y condiciones que aqu se describen, incluyendo:
_____________________________________________________________________
Ingeniera Informtica
107
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
108
Universidad de Valencia
Descripcin
Min.
Max.
Unidad
Vcc
Tensin de alimentacin
4,75
5,25
Icc
Corriente de alimentacin
500
mA
Entradas
D+ 2,8 V
D+ 2 V
D- 0,3 V
D+ - D- 0,2 V
D- > 2,8 V
D- 2 V
D+ 0,3 V
D- - D+ 0,2 V
Tabla 11.2: Mrgenes de tensin para los niveles lgicos en USB 1.1
Si D+ y D- son menores de 0,3 V se considera que en el bus hay un cero final
(Single-Ended Zero).
La seal de reloj con la que se trabaja es de 4 MHz. En caso de utilizar una
frecuencia distinta no se garantiza que el sistema funcione correctamente.
_____________________________________________________________________
Ingeniera Informtica
109
Universidad de Valencia
Microcontrolador PIC18F2550
El microcontrolador elegido es el PIC18F2550 en encapsulado DIP de 28 pines
de la empresa Microchip. Las caractersticas elctricas de este modelo pueden verse
en la siguiente tabla.
_____________________________________________________________________
Ingeniera Informtica
110
Universidad de Valencia
Descripcin
Min.
Max.
Unidad
+Vs
Tensin de alimentacin
4,5
10
Vout
Tensin de salida
-1,0
+Vs + 0,6
Iout
Corriente de salida
10
mA
_____________________________________________________________________
Ingeniera Informtica
111
Universidad de Valencia
Conectores y cableado
El conector USB utilizado es de tipo A. En la siguiente figura pueden verse sus
dimensiones.
_____________________________________________________________________
Ingeniera Informtica
112
Universidad de Valencia
VALOR
0,5 mm
Corona mnima
0,2 mm
0,15 mm
0,25 mm
0,2 mm
0,3 mm
_____________________________________________________________________
Ingeniera Informtica
113
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
114
Universidad de Valencia
Parte III
Apndices
115
116
Apndice A
Cdigo del microcontrolador
TempUSB.c
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOUSBDIV,PLL1,CPUDIV3,VREGEN
#use delay(clock = 24000000)
#define USB_HID_DEVICE FALSE // Deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Habilitamos EP1 para
// transferencias IN de interrupcin
#define USB_EP1_TX_SIZE 1 // Tamao del buffer IN del EP1
#include <pic18_usb.h>
#include <TempUSB.h>
#include <usb.c>
_____________________________________________________________________
Ingeniera Informtica
117
Universidad de Valencia
/******************************************************************
* Inicializacin de los puertos y del mdulo A/D
******************************************************************/
SET_TRIS_A(0xFF);
// Puerto A de entrada
_____________________________________________________________________
Ingeniera Informtica
118
Universidad de Valencia
TempUSB.h
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#include <usb.h>
#DEFINE USB_TOTAL_CONFIG_LEN 25
/******************************************************************
* Array que contiene el descriptor de configuracin, de interface y de punto final
******************************************************************/
char const USB_CONFIG_DESC[ ] = {
// Descriptor de configuracin
USB_DESC_CONFIG_LEN, // Tamao del descriptor
USB_DESC_CONFIG_TYPE, // Tipo de descriptor (CONFIGURACION = 0x02)
USB_TOTAL_CONFIG_LEN, 0,
1,
// Nmero de interfaces que soporta el dispositivo
0x01, // Identificador de la configuracin (si hubiera ms de una)
0x00, // Indice del descriptor de cadena para esta configuracin
0x80, // Bit 6 = 1 si el dispositivo es self powered, bit 5 = 1 si soporta wakeup remoto, bits 0-4
// reservados y bit 7 = 1
0x32, // 0x32 = 100mA
// Descriptor de interface
USB_DESC_INTERFACE_LEN, // Tamao del descriptor
USB_DESC_INTERFACE_TYPE, // Tipo de descriptor (INTERFACE = 0x04)
0x00, // Identificador de la interface
0x00,
1,
// Nmero de puntos finales de la interface, sin contar EP0
0xFF, // Cdigo de la clase, FF = definido por el vendedor
0xFF, // Cdigo de la subclase, FF = definido por el vendedor
0xFF, // Cdigo del protocolo, FF = definido por el vendedor
0x00, // Indice del descriptor de cadena para la interface
// Descriptor de punto final
USB_DESC_ENDPOINT_LEN, // Tamao del descriptor
USB_DESC_ENDPOINT_TYPE, // Tipo de descriptor (ENDPOINT = 0x05)
0x81, // Nmero de endpoint y direccin (0x81 = EP1 IN)
0x03, // Tipo de transferencia soportada (0 control, 1 iscrona, 2 masiva, 3 interrupcin)
USB_EP1_TX_SIZE, 0x00, // Tamao mximo de paquete
0x0A,
};
#define USB_NUM_HID_INTERFACES 0
#define USB_MAX_NUM_INTERFACES 1
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS] = {1};
#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif
_____________________________________________________________________
Ingeniera Informtica
119
Universidad de Valencia
// Descriptor de dispositivo
char const USB_DEVICE_DESC[ ] = {
USB_DESC_DEVICE_LEN, // Tamao del descriptor
USB_DESC_DEVICE_TYPE, // Tipo de descriptor (DISPOSITIVO = 0x01)
0x00, 0x01, // Versin USB en bcd (1.0)
0x00, // Cdigo de la clase (si es 0, la interface define la clase)
0x00, // Cdigo de la subclase
0x00, // Cdigo del protocolo
USB_MAX_EP0_PACKET_LENGTH, // Tamao mximo de paquete del EP0
0xD8, 0x04, // Identificador de vendedor (0x04D8 es Microchip)
0x11, 0x00, // Identificador de producto
0x01, 0x00,
0x01, // Indice del descriptor de cadena del fabricante
0x02, // Indice del descriptor de cadena del producto
0x00, // Indice del descriptor de cadena del nmero de serie
USB_NUM_CONFIGURATIONS // Nmero de configuraciones
};
/**********************************************************************
* Descriptores de cadena. La cadena 0 es una cadena especial y debe incluirse siempre
**********************************************************************/
const char USB_STRING_DESC_OFFSET[ ] = {0, 4, 12};
_____________________________________________________________________
Ingeniera Informtica
120
Universidad de Valencia
'p', 0,
'e', 0,
'r', 0,
'a', 0,
't', 0,
'u', 0,
'r', 0,
'a', 0,
' ', 0,
'T', 0,
'e', 0,
'm', 0,
'p', 0,
'U', 0,
'S', 0,
'B', 0
};
#ENDIF
_____________________________________________________________________
Ingeniera Informtica
121
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
122
Universidad de Valencia
Apndice B
Fichero .INF
[Version]
Signature = "$WINDOWS NT$"
Class = %ClassName%
ClassGuid = {4D36E911-E325-11CE-BFC1-08002BE10318}
Provider = %MFGNAME%
DriverVer = 05/13/2006, 1.0.0.0
CatalogFile = tempusb.cat
[DestinationDirs]
DefaultDestDir = 12
TempUSB.ClassCopyFiles = 11
;-----------------------------------------------------------------------------; Class Install Sections
;-----------------------------------------------------------------------------[ClassInstall32]
AddReg = TempUSB.ClassReg
CopyFiles = TempUSB.ClassCopyFiles
[TempUSB.ClassReg]
HKR,,,0,%ClassName%
HKR,,Class,,%ClassDesc%
HKR,,Icon,,11
HKR,,Installer32,,"tempusbci.dll,TempUSBClassInstaller"
[TempUSB.ClassCopyFiles]
tempusbci.dll
;-----------------------------------------------------------------------------; Device Install Sections
;-----------------------------------------------------------------------------[Manufacturer]
%MFGNAME% = Standard
_____________________________________________________________________
Ingeniera Informtica
123
Universidad de Valencia
[Standard]
%DESCRIPTION% = DriverInstall, USB\VID_04D8&PID_0011
[SourceDisksNames]
1 = %INSTDISK%,,,""
[SourceDisksFiles]
mchpusb.sys = 1,,
tempusbci.dll = 1,,
;-----------------------------------------------------------------------------; Windows 2000/XP Sections
;-----------------------------------------------------------------------------[DriverInstall.NT]
CopyFiles = DriverCopyFiles
[DriverCopyFiles]
mchpusb.sys
[DriverInstall.NT.Services]
AddService = TempUSB, 2, DriverService
[DriverService]
DisplayName = %SVCDESC%
ServiceType = 1
; SERVICE_KERNEL_DRIVER
StartType = 3
; SERVICE_DEMAND_START
ErrorControl = 1
; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\mchpusb.sys
LoadOrderGroup = Extended Base
;-----------------------------------------------------------------------------; String Definitions
;-----------------------------------------------------------------------------[Strings]
MFGNAME = "ARZ TempUSB"
INSTDISK = "TempUSB Device Driver Disk"
DESCRIPTION = "TempUSB"
SVCDESC = "TempUSB Device Driver"
ClassName = "PIC 18F2550 USB Devices"
ClassDesc = "PIC USB Sample Device"
_____________________________________________________________________
Ingeniera Informtica
124
Universidad de Valencia
Apndice C
Cdigo de la aplicacin
TempUSBAPI.cs
// Programa principal. Contiene las funciones que permiten la comunicacin con el dispositivo.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
_____________________________________________________________________
Ingeniera Informtica
125
Universidad de Valencia
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBReadInt(void* handle, DWORD* pData, DWORD
dwLen, DWORD* pLength, DWORD dwMilliseconds);
[DllImport("mpusbapi.dll")]
private static extern bool _MPUSBClose(void* handle);
#endregion
void* myInPipe;
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new TempUSB());
}
public void OpenPipe()
// Permite establecer una tubera
{
DWORD selection = 0;
myInPipe = _MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
}
public void ClosePipe()
// Cierra la tubera
{
_MPUSBClose(myInPipe);
}
// Permite leer datos del dispositivo
private void ReceivePacket(byte* ReceiveData, DWORD* ReceiveLength)
{
uint ReceiveDelay = 1000;
DWORD ExpectedReceiveLength = *ReceiveLength;
_MPUSBRead(myInPipe, (void*)ReceiveData, ExpectedReceiveLength, ReceiveLength,
ReceiveDelay);
}
public float MostrarTemp()
{
float result = 0;
int valor;
_____________________________________________________________________
Ingeniera Informtica
126
Universidad de Valencia
TempUSB.cs
// Formulario principal. Muestra la temperatura en pantalla y permite el acceso al resto de formularios.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TempUSB
{
public partial class TempUSB : Form
{
TempUSBAPI usbapi = new TempUSBAPI();
Estadisticas estadist = null;
float min;
float max;
bool ini_valores = true;
float min_captura;
float max_captura;
bool fich_abierto = false;
ProgCaptura.datosForm datosProg;
public TempUSB()
{
InitializeComponent();
}
// Al cargarse crea una tubera y pone en marcha el timer
private void TempUSB_Load(object sender, EventArgs e)
{
usbapi.OpenPipe();
timer1.Start();
}
// Al cerrarse para el timer y cierra la tubera
private void TempUSB_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Stop();
usbapi.ClosePipe();
}
// Cada vez que transcurre el intervalo de tiempo del timer, captura la temperatura
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
float temp = usbapi.MostrarTemp();
TempActual.Text = temp.ToString("###.#");
_____________________________________________________________________
Ingeniera Informtica
127
Universidad de Valencia
if (ini_valores == true)
{
min = temp;
max = temp;
ini_valores = false;
}
if (temp < min)
min = temp;
if (temp > max)
max = temp;
if (estadist != null) // El formulario Estadisticas est abierto
{
estadist.TempMin.Text = min.ToString("###.#");
estadist.TempMax.Text = max.ToString("###.#");
if (estadist.captura_programada == true)
{
this.datosProg = estadist.datosProg;
_____________________________________________________________________
Ingeniera Informtica
128
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
129
Universidad de Valencia
timer1.Enabled = true;
}
// Al pinchar sobre el icono se abre el formulario Estadisticas
private void pictureBox1_Click(object sender, EventArgs e)
{
estadist = new Estadisticas();
estadist.Show();
// Lo deshabilitamos para que solo pueda haber una instancia de la ventana
pictureBox1.Enabled = false;
}
}
}
_____________________________________________________________________
Ingeniera Informtica
130
Universidad de Valencia
Estadisticas.cs
// Formulario de estadsticas. Muestra las temperaturas mxima y mnima y permite acceder al resto de
// funciones.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace TempUSB
{
public partial class Estadisticas : Form
{
public Excel.Application ExcelApp = new Excel.Application();
public Excel.Workbook wbook = null;
public string fichero;
public int num_capturas;
public bool ini_valores_captura;
public int intervalo_capt = 1000;
public bool captura_programada = false;
public ProgCaptura.datosForm datosProg;
public Estadisticas()
{
InitializeComponent();
}
// Al cargarse, pone en funcionamiento el timer y muestra la fecha y la hora
private void Estadisticas_Load(object sender, EventArgs e)
{
timer1.Start();
DateTime date = DateTime.Now;
fecha.Text = date.ToShortDateString();
hora.Text = date.ToLongTimeString();
}
// Al cerrarse, para el timer y habilita el icono de acceso a este formulario desde el formulario
// principal
private void Estadisticas_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Stop();
FormCollection nbforms = Application.OpenForms;
nbforms["TempUSB"].Controls["pictureBox1"].Enabled = true;
}
_____________________________________________________________________
Ingeniera Informtica
131
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
132
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
133
Universidad de Valencia
// Al pulsar el botn Ver Grfica, abre Excel y muestra la grfica correspondiente al fichero
// indicado
private void verGrafica_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Title = "Abrir";
openFileDialog1.Filter = "Archivos de Microsoft Excel|*.xls";
openFileDialog1.FilterIndex = 1;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fichero_graf = openFileDialog1.FileName;
if (fichero_graf == fichero)
MessageBox.Show("El fichero est siendo capturado", "TempUSB Error");
else
{
Excel.Workbook wbook_graf = ExcelApp.Workbooks.Open(fichero_graf,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
ExcelApp.Visible = true;
}
}
}
// Al pulsar el botn Ver Datos, abre Excel y muestra los datos correspondiente al fichero
// indicado
private void verDatos_Click(object sender, EventArgs e)
{
OpenFileDialog openFDlog = new OpenFileDialog();
openFDlog.Title = "Abrir";
openFDlog.Filter = "Archivos de Microsoft Excel|*.xls";
openFDlog.FilterIndex = 1;
if (openFDlog.ShowDialog() == DialogResult.OK)
{
string fich = openFDlog.FileName;
if (fich == fichero)
MessageBox.Show("El fichero est siendo capturado", "TempUSB Error");
else
{
Excel.Workbook wbk = ExcelApp.Workbooks.Open(fich, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing);
Excel.Worksheet wsht = (Excel.Worksheet)wbk.Worksheets[1];
wsht.Activate();
ExcelApp.Visible = true;
}
}
}
_____________________________________________________________________
Ingeniera Informtica
134
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
135
Universidad de Valencia
ProgCaptura.cs
// Permite programar una captura introduciendo el da y la hora en que se quiere realizar, as
// como el nombre del fichero donde se guardarn los datos capturados.
// Si ya hay una captura programada muestra los datos de dicha captura, permitiendo tambin su
// deshabilitacin.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TempUSB
{
public partial class ProgCaptura : Form
{
public struct datosForm
// Almacena los datos introducidos por el usuario
{
public string fich;
// Nombre del fichero
public DateTime ini;
// Fecha y hora de inicio de captura
public DateTime fin;
// Fecha y hora de fin de captura
}
public datosForm datosProg;
public Boolean captura_programada;
public ProgCaptura()
{
InitializeComponent();
}
// Al cargar la ventana, se inicializan los campos del formulario.
// Dependiendo de si hay una captura programada o no, se inicializarn de forma distinta.
private void ProgCaptura_Load(object sender, EventArgs e)
{
iniProg.CustomFormat = "dd:MM:yyyy HH:mm:ss";
finProg.CustomFormat = "dd:MM:yyyy HH:mm:ss";
// Si hay una captura programada se muestran los datos de dicha captura.
// Si no la hay, el campo del nombre del fichero aparece vaco y los otros dos campos
// muestran la fecha y hora actuales.
if (this.captura_programada == true)
{
fichProg.Text = this.datosProg.fich;
iniProg.Value = this.datosProg.ini;
finProg.Value = this.datosProg.fin;
aceptar.Enabled = false;
deshabilitar.Enabled = true;
}
else
{
fichProg.Text = "";
iniProg.Value = DateTime.Now;
_____________________________________________________________________
Ingeniera Informtica
136
Universidad de Valencia
finProg.Value = DateTime.Now;
aceptar.Enabled = true;
deshabilitar.Enabled = false;
}
}
// Al pulsar el botn Examinar, se abre un cuadro de dilogo donde poder elegir el
// directorio y el nombre del fichero donde se quieren guardar los datos a capturar.
// Una vez seleccionado, cuando se cierre el cuadro de dilogo, se mostrar el
// nombre completo en el formulario.
private void examinar_Click(object sender, EventArgs e)
{
SaveFileDialog saveFD = new SaveFileDialog();
saveFD.Title = "Guardar Como";
saveFD.Filter = "Archivos de Microsoft Excel|*.xls";
saveFD.FilterIndex = 1;
if (saveFD.ShowDialog() == DialogResult.OK)
fichProg.Text = saveFD.FileName;
saveFD.Dispose();
}
// Al pulsar el botn Aceptar, si se han introducido valores correctos en los campos,
// se guardan los datos en la estructura
private void aceptar_Click(object sender, EventArgs e)
{
// Variables que indican si el valor de los campos es correcto
bool fichProg_OK = true;
bool iniProg_OK = true;
bool finProg_OK = true;
// Si el nombre del fichero esta vaco, se muestra una ventana de error
if (fichProg.Text == "")
{
MessageBox.Show("El nombre del fichero est vaco", "TempUSB Error");
fichProg_OK = false;
}
// Si la fecha de inicio de captura es anterior a la actual, se muestra
// una ventana de error
if (iniProg.Value <= DateTime.Now)
{
MessageBox.Show("La fecha de inicio de captura es invlida. Debe ser posterior a la
actual.", "TempUSB Error");
iniProg_OK = false;
}
_____________________________________________________________________
Ingeniera Informtica
137
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
138
Universidad de Valencia
Apndice D
Manual de usuario de TempUSB
D.1. Instalacin del dispositivo.
Al conectar el dispositivo TempUSB por primera vez, aparecer el asistente para
la instalacin de nuevo hardware, que lo primero que hace es preguntar si se quiere
conectar a Windows Update. Se marca la opcin No y se pincha sobre Siguiente. En la
siguiente pantalla se marcar la opcin de "Instalar desde una lista o ubicacin
especfica". Una vez hecho, se pincha sobre Siguiente para pasar a la prxima
pantalla, donde se marca la opcin de "Buscar el controlador ms adecuado en estas
ubicaciones". Se pincha sobre "Incluir esta ubicacin en la bsqueda" y a
continuacin sobre Examinar, entonces se selecciona la carpeta TempUSB_Driver, y
se le da a Aceptar y a Siguiente. En ese momento, comenzarn a copiarse los archivos
necesarios en el ordenador. Una vez se termine de copiar, aparecer una pantalla
indicando que la instalacin del driver est terminada. El led del dispositivo estar
encendido, lo que indica que est listo para ser usado.
Si todo ha ido bien, en el Administrador de Dispositivos debe aparecer algo as:
_____________________________________________________________________
Ingeniera Informtica
139
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
140
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
141
Universidad de Valencia
Si se desea crear un fichero con los datos capturados slo es necesario pinchar en
el botn Capturar Temperatura e indicar la ubicacin y el nombre del fichero donde
se quieren guardar. Hecho esto, se crear el fichero con los datos, indicando adems,
las temperaturas mxima y mnima de ese intervalo de captura, la fecha y las horas de
inicio y fin de la captura. Para finalizar la captura hay que pinchar sobre el botn
Parar Captura.
Si lo que se quiere es programar una captura para un da y una hora de comienzo
y fin determinados habr que pinchar el botn Programar Captura y aparecer la
siguiente ventana.
_____________________________________________________________________
Ingeniera Informtica
142
Universidad de Valencia
Para indicar la ubicacin y el nombre del fichero donde se guardarn los datos
hay que pulsar el botn Examinar y seleccionar la carpeta deseada. Una vez
introducidos todos los datos del formulario se pulsa el botn Aceptar y la
programacin ya estar realizada. En caso de no rellenar alguno de los campos o
hacerlo de forma incorrecta, se mostrar una pantalla de error (como la mostrada a
continuacin) indicando el problema.
_____________________________________________________________________
Ingeniera Informtica
143
Universidad de Valencia
_____________________________________________________________________
Ingeniera Informtica
144
Universidad de Valencia
Bibliografa
[Aje00]
[App]
Caractersticas
de
FireWire.
Disponible
en
Internet:
http://www.apple.com/la/firewire/.
[Axe99]
[Bol06]
[CCS]
[CWD02]
[DDK]
[Dev]
[Edu]
[Far]
[MBP01]
[Mic]
_____________________________________________________________________
Ingeniera Informtica
145
Universidad de Valencia
[MPL]
[Nat]
[Per05]
[PIC]
[Usb]
USB
Implementers
Forum,
Inc.
Disponible
en
Internet:
en
Internet:
http://www.usb.org
[USB11]
Especificacin
de
USB
1.1.
http://www.usb.org/developers/docs/.
Disponible
Nota: Las referencias electrnicas han sido revisadas con fecha 2 - Septiembre - 2006.
_____________________________________________________________________
Ingeniera Informtica
146
Universidad de Valencia