Вы находитесь на странице: 1из 158

Desarrollo de una estacin meteorolgica USB

Adela M. Rodrguez Zaragoz Tutor: Jos Antonio Boluda Grau 5 de septiembre de 2006 Universitat de Valncia - ETSE

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. Introduccin. 1.1. 1.2. 2. 1 3

Enunciado y objetivos del proyecto.......................................................3 Resumen de la memoria.........................................................................4 7

Estado del arte. 2.1. 2.1.1.

Interconexin entre ordenador y perifricos. .........................................7 Interfaces serie. ..............................................................................9 2.1.1.1. La interfaz RS-232.......................................................................10 2.1.1.2. El Bus Serie Universal (USB)......................................................10 2.1.1.3. El estndar IEEE 1394 o FireWire...............................................14

2.1.2.

Interfaces paralelas.......................................................................16

2.1.2.1. La interfaz Centronics..................................................................16 2.1.2.2. El estndar IEEE 1284. ................................................................17 2.1.2.3. Small Computer Systems Interface (SCSI)..................................17 2.1.3. 2.2. 2.3. 3. Comunicacin inalmbrica. Bluetooth.........................................18 Microcontroladores. .............................................................................21 Sistemas de adquisicin de datos mediante sensores...........................26 29

Metodologa y materiales. 3.1. 3.2.

Metodologa. ........................................................................................29 Material utilizado. ................................................................................31 Software. ......................................................................................31 Hardware......................................................................................34 35

3.2.1. 3.2.2. 4.

Anlisis de alternativas. 4.1.

Requisitos.............................................................................................35

4.2.

Evaluacin de alternativas. ..................................................................36 Interconexin entre el perifrico y el ordenador..........................36 Microcontrolador. ........................................................................38 Lenguajes y herramientas de desarrollo de aplicaciones. ............40

4.2.1. 4.2.2. 4.2.3. 4.3. 5.

Seleccin. .............................................................................................43 47

Diseo. 5.1. 5.2.

Diseo del hardware. ...........................................................................48 Diseo del firmware.............................................................................53 Registros de configuracin. .........................................................53 Registros del oscilador.................................................................55 Registros del mdulo A/D. ..........................................................58 Registros del mdulo USB...........................................................63 Descriptores. ................................................................................66

5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.2.5. 5.3. 6.

Diseo del software..............................................................................71 73

Implementacin. 6.1. 6.2.

Implementacin del hardware..............................................................73 Implementacin del firmware. .............................................................75 Programacin del microcontrolador. ...........................................75 Creacin del fichero INF. ............................................................78 Creacin de una nueva clase. .......................................................80

6.2.1. 6.2.2. 6.2.3. 6.3. 7.

Implementacin del software...............................................................82 85

Experimentacin. 7.1. 7.2. 7.3.

Instalacin del perifrico......................................................................85 Medicin de la temperatura. ................................................................86 Comprobacin del software. ................................................................87 89

8.

Presupuesto. 8.1. 8.2. 8.3. 8.4.

Coste de los recursos hardware............................................................89 Coste de los recursos software.............................................................90 Coste de los componentes y fabricacin del PCB. ..............................91 Coste de los recursos humanos. ...........................................................92

8.5. 9.

Coste total del proyecto. ......................................................................93 95

Conclusiones y trabajo futuro. 9.1. 9.2.

Conclusiones. .......................................................................................95 Trabajo futuro. .....................................................................................97 99 101

II Planos y especificaciones 10. Planos del PCB. 10.1. 10.2. 10.3. 10.4.

Esquema elctrico. .............................................................................101 Listado de componentes.....................................................................103 Diseo del PCB. Caras Top y Bottom. ..............................................104 Pinout. ................................................................................................105 107

11. Especificaciones. 11.1. 11.2.

Condiciones econmicas....................................................................108 Especificaciones tcnicas...................................................................108 Condiciones de trabajo del sistema............................................108 Requerimientos de las seales del sistema.................................109 Especificaciones de los circuitos integrados..............................110 Componentes pasivos y conductores. ........................................111 Fabricacin del PCB. .................................................................113 Montaje de componentes. ..........................................................114 115 117 123 125

11.2.1. 11.2.2. 11.3. 11.3.1. 11.3.2. 11.4. 11.4.1. 11.4.2. III Apndices

Caractersticas de los materiales. .......................................................110

Condiciones de ejecucin. .................................................................113

A. Cdigo del microcontrolador B. Fichero .INF C. Cdigo de la aplicacin

D. Manual de usuario de TempUSB

139

D.1. Instalacin del dispositivo...139 D.2. Instalacin de la aplicacin.....140 D.3. Utilizacin de la aplicacin.141 Bibliografa 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

Figura 6.1: Diagrama de bloques del programa...........................................................77 Figura 6.2: Nueva clase en el Administrador de Dispositivos.....................................82 Figura 11.1: Dimensiones del conector USB tipo A..112

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.

1.1. Enunciado y objetivos del proyecto.


La aparicin de nuevos perifricos en el mercado es constante, desde los tradicionales ratones o impresoras hasta las cmaras digitales o los pendrives pasando por webcams, escners, conversores A/D o modems. Actualmente muchos dispositivos que se utilizan de forma cotidiana como pueden ser cmaras de fotos, vdeo, reproductores de msica o incluso un telfono mvil pueden ser conectados a un ordenador. Esto hace que el desarrollo de dispositivos perifricos est en continua evolucin, haciendo especial hincapi en la forma de interconexin entre estos dispositivos y el ordenador. Cada da aparecen nuevas utilidades de mayor potencia, con ms posibilidades y mucho ms grficas, que requieren de ms capacidad y por lo tanto, las tareas ordinarias son cada vez de mayor volumen. Para poder almacenar, transmitir o recibir dichas tareas, aparecen en el mercado perifricos y componentes de mayor capacidad pero tambin es necesario que la "va" por la que se van a transmitir esos datos sea ms fiable y ms rpida, de forma que se ajuste a los nuevos avances.

_____________________________________________________________________ Ingeniera Informtica 3 Universidad de Valencia

El objetivo de este proyecto es llevar a cabo el desarrollo de un perifrico, desde el diseo del esquema hardware del dispositivo hasta la implementacin de una aplicacin software que permita la comunicacin con l. El perifrico consiste en un sistema de adquisicin de datos a travs de sensores. Estos datos debern ser convertidos a formato digital para posteriormente, ser enviados al ordenador donde podrn ser tratados y visualizados. A continuacin se enumeran los principales objetivos del proyecto: Diseo e implementacin de un circuito impreso que realice la adquisicin de datos a travs de sensores. Estudio de los distintos medios de interconexin entre el dispositivo y el ordenador, seleccionando el que ms se adecue a nuestras necesidades. Implementacin del protocolo de comunicacin entre el perifrico y el host. Desarrollo de una aplicacin software que permita visualizar los datos adquiridos mediante los sensores.

1.2. Resumen de la memoria.


La memoria se ha dividido en los siguientes captulos intentando ofrecer una visin clara de todas las fases del proyecto: Captulo 1: Enunciado y objetivos del proyecto y resumen del contenido de la memoria. Captulo 2: Estado del arte, es decir, la base terica sobre la que se basa el proyecto. Captulo 3: Metodologa y materiales utilizados en el desarrollo del proyecto.

_____________________________________________________________________ Ingeniera Informtica 4 Universidad de Valencia

Captulo 4: Especificacin de los requisitos a cumplir por el proyecto. Exposicin y anlisis de las diferentes alternativas de las que se dispone para realizar el proyecto y justificacin de la decisin final adoptada.

Captulo 5: Diseo del hardware, firmware y software del proyecto. Captulo 6: Descripcin del proceso de implementacin. Captulo 7: Descripcin y resultados de las pruebas realizadas. Captulo 8: Estimacin econmica del proyecto. Captulo 9: Conclusiones extradas y posibles lneas de desarrollo futuras a partir del estado final del proyecto. Captulo 10: Esquema elctrico, planos del PCB y listado de componentes. Captulo 11: Especificaciones tcnicas y caractersticas de los materiales. Apndice A: Cdigo del microcontrolador. Apndice B: Fichero INF. Apndice C: Cdigo de la aplicacin software. Apndice D: Manual de usuario donde se indica cmo instalar el perifrico y utilizar la aplicacin software. Bibliografa.

_____________________________________________________________________ Ingeniera Informtica 5 Universidad de Valencia

_____________________________________________________________________ Ingeniera Informtica 6 Universidad de Valencia

2. Estado del arte.


En el presente captulo se expondrn las bases tericas del diseo de perifricos, para ello el captulo se divide en tres secciones. En la primera se van a describir los estndares ms importantes y comunes que se utilizan para conectar los perifricos al ordenador. La segunda seccin trata sobre la importancia de los microcontroladores en el desarrollo de perifricos y, por ltimo, en la tercera seccin se hablar sobre los sistemas de adquisicin de datos a travs de sensores.

2.1. Interconexin entre ordenador y perifricos.


En cualquier ordenador existe una parte muy importante llamada subsistema de Entrada/Salida, que es la que hace posible la comunicacin con el mundo exterior. Este sistema est formado por varios dispositivos perifricos que proporcionan un medio para intercambiar datos con el exterior y que se comunican con el procesador a travs de una serie de mdulos llamados de E/S. Cualquiera de estos mdulos contiene una serie de controladores que se encargan de manejar el funcionamiento de uno o varios perifricos. Los mdulos de E/S no deben conectar directamente el perifrico con el bus del sistema, sino que tienen que poseer una cierta inteligencia para poder realizar la comunicacin entre el perifrico y el procesador de forma eficiente. Si se observan _____________________________________________________________________ Ingeniera Informtica 7 Universidad de Valencia

algunas de las caractersticas del subsistema de Entrada/Salida ser posible darse cuenta de esta necesidad: Existe una gran diversidad de perifricos que utilizan mtodos de operacin diferentes. No sera lgico que la CPU tuviera que incorporar toda la lgica necesaria para controlar este rango de dispositivos. La velocidad de transferencia de los datos de los perifricos es a menudo mucho ms lenta que la que tiene el procesador con el sistema de memoria, por lo tanto resulta poco prctico usar el bus del sistema de alta velocidad para comunicarse directamente con los perifricos. A menudo los perifricos utilizan formatos y longitudes de palabra de datos diferentes a los que utiliza el procesador. Debe haber por tanto algn mecanismo para adecuar las seales de ambos dispositivos. 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. Interfaz paralela: Se utilizan varias lneas de datos para transmitir mltiples bits de forma simultnea.

_____________________________________________________________________ Ingeniera Informtica 8 Universidad de Valencia

2.1.1. Interfaces serie.


La conexin a travs de esta interfaz es muy importante debido a su gran flexibilidad. En los ordenadores personales la interfaz serie se utiliza para conectar mltiples dispositivos como plotters, mdems, ratones y tambin impresoras. En la transmisin serie se van transfiriendo los bits de informacin de uno en uno a travs de una lnea de datos, pudiendo ser las transferencias sncronas o asncronas. Si se utilizan seales adicionales (reloj o seales de peticin y reconocimiento) para indicar cundo el bit siguiente es vlido, entonces se dice que la transmisin se realiza de forma sncrona. La principal ventaja de este tipo de transferencias es que el receptor puede funcionar a varias frecuencias de reloj (siempre que no sobrepase su frecuencia mxima de funcionamiento). Simplemente bastar con retrasar el envo de la seal de reconocimiento para ralentizar el protocolo. En las transferencias asncronas, por el contrario, tanto el receptor como el transmisor deben funcionar a la misma frecuencia. En este caso se enva tambin informacin de sincronizacin a travs de la lnea de datos, que se corresponde con un bit de comienzo (bit de start), que indica el comienzo de una unidad de datos, un bit de fin (bit de stop) indicando su finalizacin y, opcionalmente, un bit de paridad para controlar los posibles errores. El bit de paridad lo generan los controladores serie de forma automtica, pudiendo configurarse entre las opciones de: sin paridad, paridad par (odd), paridad impar (even), siempre un nivel alto (mark) o siempre un nivel bajo (space). Las tasas de transferencia de datos se miden en baudios. Los baudios indican el nmero de veces que puede cambiar una seal en la lnea de transmisin por segundo. En una interfaz serie, las seales cambian siempre a la misma frecuencia y se realiza una codificacin binaria de la informacin de forma que cuando se quiere enviar un 1 se pone la lnea a nivel alto y cuando se quiere enviar un 0 se pone la lnea a nivel bajo. En este caso los baudios coinciden con el nmero de bits por segundo transferidos si se incluyen tambin los bits de comienzo, de fin y de paridad.

_____________________________________________________________________ Ingeniera Informtica 9 Universidad de Valencia

2.1.1.1. La interfaz RS-232.

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.

2.1.1.2. El Bus Serie Universal (USB).

El USB es un estndar (1995) que define un bus utilizado para conectar perifricos al ordenador. La principal caracterstica que tiene es que la conexin es muy sencilla, ya que utiliza un nico conector para conectar a travs de un bus serie todos los dispositivos. En l se definen los conectores y los cables, una topologa especial tipo estrella para conectar hasta 127 dispositivos y protocolos que permiten la deteccin y configuracin automtica de los dispositivos conectados. USB 1.0 soporta dos tasas de transferencia diferentes, una baja de 1,5 Mbps para la conexin de dispositivos lentos de bajo coste (joysticks, ratones) y otra alta de hasta 12 Mbps para la conexin de dispositivos que requieren un mayor ancho de banda (discos o CDROMS). _____________________________________________________________________ Ingeniera Informtica 10 Universidad de Valencia

La especificacin de este estndar ha sido respaldada por las empresas lderes mundiales en el campo de la informtica: Intel, IBM, DEC, Microsoft, Compac, NEC y Northem Telecom, empresas que garantizan su continuidad y utilizacin. A mediados del ao 2000 aparece la versin 2.0, que fue creada por el conjunto de compaas arriba mencionadas, a las cuales se unieron Hewlett Packard, Lucent y Philips. USB 2.0 multiplica la velocidad del bus por un factor de 30 o 40, llegando a alcanzar una velocidad de 480 Mbps, con una diferencia de coste casi inapreciable. Es compatible con la versin anterior y utiliza los mismos cables y conectores, nicamente se necesitan nuevos hubs que soporten la versin 2.0. Estos hubs son algo ms complejos que los anteriores, ya que tienen que manejar el trfico de datos de tres velocidades distintas sin ser excluyentes entre ellas. Cabe tambin destacar que USB 2.0 nunca llegar a reemplazar completamente a USB 1.0, ya que existen algunos tipos de dispositivos, como los HID (teclados, ratones,), que no requieren las altas velocidades que alcanza esta nueva versin y que nicamente encareceran el dispositivo. [Usb] Anteriormente los perifricos se conectaban mapeados directamente en direcciones de E/S, se les asignaba una direccin especfica y en algunos casos un canal DMA. Esta situacin conduca a tener conflictos en la asignacin de estos recursos, puesto que siempre han estado bastante limitados en el ordenador. Adems cada dispositivo tena su propio puerto de conexin y utilizaba sus cables especficos, lo que daba lugar a un incremento de los costes. Debido a que a cada dispositivo se le tenan que asignar unos recursos especficos la deteccin del mismo deba hacerse a la hora de arrancar el sistema y nunca se poda incorporar un nuevo dispositivo cuando el sistema estaba en marcha. Los dos aspectos fundamentales que motivaron la realizacin de este estndar fueron la necesidad de configurar de forma sencilla los perifricos conectados al ordenador y la necesidad de aumentar el nmero de puertos disponibles. Este estndar define una topologa de conexin en estrella, tal como se muestra en la figura 2.1, por medio de la incorporacin de varios concentradores (hubs) _____________________________________________________________________ Ingeniera Informtica 11 Universidad de Valencia

conectados en serie. Cada concentrador se conecta por un lado al ordenador, que contiene una o dos interfaces de este tipo en la placa base, o a otro concentrador y, por otro lado, se conecta a varios dispositivos o incluso a otro concentrador. De este modo pueden existir perifricos que vengan ya preparados con nuevos conectores USB para incorporar nuevos dispositivos, hasta un total de 127, todos ellos funcionando simultneamente. Los hubs tienen la misin de ampliar el nmero de dispositivos que se pueden conectar al bus. Son concentradores cableados que permiten la conexin simultnea de mltiples dispositivos y lo ms importante es que se pueden concatenar entre s ampliando la cantidad de puertos disponibles para los perifricos. El concentrador detecta cundo un perifrico es conectado o desconectado a/de uno de sus puertos, notificndolo de inmediato al controlador de USB. Tambin realiza funciones de acoplamiento de las velocidades de los dispositivos ms lentos.

Figura 2.1: Topologa de una conexin USB Existe una gran variedad de dispositivos USB que se conectan todos al mismo bus. La caracterstica ms importante es que todos ellos utilizan el mismo tipo de cable y de conector y se conectan de la misma forma tan sencilla. El host decide qu dispositivo puede acceder al bus, utilizando un protocolo parecido al de paso de testigo. Este protocolo se caracteriza porque entre los diferentes dispositivos se va pasando un identificador a lo largo del tiempo que permite la utilizacin del bus.

_____________________________________________________________________ Ingeniera Informtica 12 Universidad de Valencia

El host USB tiene las funciones de: Detectar la conexin/desconexin de dispositivos y configurarlos. Controlar las transferencias de datos y de control que tienen lugar en el bus. Realizacin de auditorias sobre la actividad del sistema. Servir como fuente de alimentacin a los dispositivos.

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.

Figura 2.2: Formato del tipo de cable utilizado El computador identifica automticamente el dispositivo que se conecta mientras opera y lo configura sin tener que instalar drivers especficos del fabricante. Al comienzo se detectan los dispositivos conectados midiendo los niveles de voltaje de las lneas. Si un dispositivo est conectado, entonces el dispositivo enva informacin sobre el tipo o la clase a la que pertenece, qu modo de transferencia utilizar y cules son sus necesidades de ancho de banda. El host reconocer el dispositivo buscando en la lista de drivers del sistema operativo y teniendo en cuenta los dems dispositivos _____________________________________________________________________ Ingeniera Informtica 13 Universidad de Valencia

conectados le asignar un ancho de banda determinado. De la misma forma tambin se pueden desconectar los dispositivos del sistema. El controlador USB del host asigna un nmero diferente de dispositivo a cada uno de los perifricos que se conectan a este bus. Para empezar la transferencia, ste enva un paquete que identifica al dispositivo objeto de la transferencia. El protocolo soporta cuatro tipos de transferencias: Control. Son transferencias que se utilizan para leer informacin de los descriptores en los registros de los dispositivos (llamados endpoints), interpretarla y poder configurarlos. Interrupcin. Usadas en los perifricos del tipo de los controladores de juegos, teclados y ratones, cuya comunicacin es unidireccional y poco frecuente. Masiva. Son transferencias no peridicas que precisan de todo el ancho de banda disponible. Utilizadas por las impresoras y los scanners. Iscrona. Dedicadas a las transferencias de telecomunicaciones, como voz o vdeo, que garantiza unas tasas de transferencia constantes. Se caracterizan porque el nmero de pulsos de reloj que transcurren entre la transmisin de dos caracteres es constante, por lo tanto, se est enviando informacin constantemente entre el host y el dispositivo. [MBP01]

2.1.1.3. El estndar IEEE 1394 o FireWire.

Apple y Sony inventaron el FireWire a mediados de los 90 y lo desarrollaron hasta convertirlo en el estndar multiplataforma IEEE 1394. FireWire es una tecnologa para la entrada/salida de datos en serie a alta velocidad y la conexin de dispositivos digitales como videocmaras o cmaras fotogrficas digitales que ha sido ampliamente adoptado por fabricantes de perifricos digitales como Sony, Canon, JVC y Kodak. FireWire es uno de los estndares de perifricos ms rpidos que se han desarrollado, caracterstica que lo hace ideal para su uso con perifricos del sector multimedia (como cmaras de vdeo) y otros dispositivos de alta velocidad como, por _____________________________________________________________________ Ingeniera Informtica 14 Universidad de Valencia

ejemplo, lo ltimo en unidades de disco duro e impresoras. Se ha convertido en la interfaz preferida de los sectores de audio y vdeo digital, ya que rene numerosas ventajas, entre las que se encuentran la elevada velocidad, la flexibilidad de la conexin y la capacidad de conectar un mximo de 63 dispositivos. Adems de cmaras y equipo de vdeo digital, la amplia gama de productos FireWire comprende reproductores de vdeo digital, sistemas domsticos para el ocio, sintetizadores de msica, escneres y unidades de disco duro. Con un ancho de banda 30 veces mayor que el conocido estndar de perifricos USB 1.1, el FireWire 400 se ha convertido en el estndar ms respetado para la transferencia de datos a alta velocidad. Apple fue el primer fabricante de ordenadores que incluy FireWire en toda su gama de productos. Una vez ms, Apple ha vuelto a subir las apuestas duplicando la velocidad de transferencia con su implementacin del estndar IEEE 1394b o FireWire 800. La velocidad sobresaliente del FireWire 800 frente al USB 2.0 convierte al primero en un medio mucho ms adecuado para aplicaciones que necesitan mucho ancho de banda, como las de grficos y vdeo, que a menudo consumen cientos o incluso miles de megabytes de datos por archivo. Algunas de las caractersticas ms importantes del FireWire son: Flexibles opciones de conexin. Admite un mximo de 63 dispositivos con cables de hasta 4,25 metros. Distribucin en el momento. Fundamental para aplicaciones de audio y vdeo, donde un fotograma que se retrasa o pierde la sincronizacin arruina un trabajo. Alimentacin por el bus. Mientras el USB 2.0 permite la alimentacin de dispositivos sencillos que consumen un mximo de 2,5 W, como un ratn, los dispositivos FireWire pueden proporcionar o consumir hasta 45 W, ms que suficiente para discos duros de alto rendimiento y bateras de carga rpida.

_____________________________________________________________________ Ingeniera Informtica 15 Universidad de Valencia

Es conectable/desconectable en uso. Lo que significa que no se necesita desactivar un dispositivo para conectarlo o desconectarlo y que no es necesario reiniciar el ordenador.

Funciona tanto con Mac como con PC. Lo que garantiza la compatibilidad con una larga lista de productos con FireWire a precios razonables. [App]

2.1.2. Interfaces paralelas.


Los ordenadores personales incorporan tradicionalmente un puerto paralelo consistente en un conector DB25. Este tipo de interfaz se caracteriza porque se envan simultneamente los bits de datos por medio de diferentes lneas. Desde siempre se ha considerado la interfaz paralela como el puerto utilizado para conectar la impresora, pero desde comienzos de la dcada de los noventa se viene utilizando con otros fines, ya sea para comunicar diferentes sistemas informticos o bien para conectar dispositivos de almacenamiento masivo. La clave para su expansin fue la utilizacin de estndares que permitan la comunicacin bidireccional por las lneas de datos.

2.1.2.1. La interfaz Centronics.

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.

2.1.2.2. El estndar IEEE 1284.

Este nuevo estndar define 5 modos de transferencia de datos, desde el viejo Centronics hasta dos mtodos que permiten la comunicacin bidireccional entre el ordenador y el dispositivo. Debido a que los protocolos se implementan por hardware, EPP y ECP permiten tasas de transferencia de datos mucho mayores, llegando incluso al Megabyte por segundo. Los 5 modos de transferencia de datos que define el estndar son: modo compatible, 4 bits, 8 bits (modo byte), ECP y EPP. El estndar describe el formato de las seales, la asignacin de pines y los mecanismos de deteccin y correccin de errores, sin embargo las funciones de la BIOS, la interfaz software y el control de los puertos estn a cargo de los fabricantes. El puerto paralelo se configura inicialmente en el modo compatible. Despus se establece un dilogo con el perifrico para decidir el modo de funcionamiento final, aunque debido a la facilidad con la que se puede cambiar el modo, es posible realizar transferencias cambiando los modos de emisin y de recepcin de datos de forma dinmica. Los modos byte, ECP y EPP son opcionales en el estndar.

2.1.2.3. Small Computer Systems Interface (SCSI).

La interfaz SCSI es una interfaz paralela, con 8, 16 o 32 lneas de datos, que se utiliza para comunicar dispositivos rpidos, como discos CD-ROM, dispositivos de audio y dispositivos de almacenamiento externo de datos. Normalmente se considera a la configuracin SCSI como un bus (conexin multipunto), sin embargo, los dispositivos estn conectados entre s formando una conexin daisy-chain. Cada dispositivo tiene dos conectores, uno de entrada y otro de salida. El comienzo del bus se conecta con el host y el ltimo dispositivo incorpora un terminado para evitar _____________________________________________________________________ Ingeniera Informtica 17 Universidad de Valencia

problemas de reflexiones de las seales. Los dispositivos funcionan de forma independiente y pueden intercambiar datos tanto entre s como con el host. Este bus puede soportar mltiples procesadores y mltiples dispositivos perifricos. Soporta hasta 8 dispositivos, de los cuales cada uno puede tener 8 unidades lgicas, cada una de las cuales soporta 256 subunidades lgicas. La especificacin original se llam SCSI-1 y usaba 8 lneas de datos a una frecuencia de 5 MHz, permitiendo una transferencia de datos de 5 Mb/s. SCSI-1 soporta hasta 7 dispositivos que pueden ser encadenados al bus. En 1991 surgi una extensin estndar, el SCSI-2, que incrementaba el nmero de lneas de datos a 16 o 32 bits e incrementaba la frecuencia de reloj a 10 MHz. As se logran tasas de transferencia mxima de hasta 40 Mbytes/s. Las transferencias en el bus siempre tienen lugar entre un iniciador (dispositivo que manda comandos) y un objetivo (dispositivo que ejecuta los comandos). Normalmente el host es el iniciador y el controlador del dispositivo es el objetivo, aunque puede haber algn dispositivo que sea ambas cosas a la vez. Las seales que se transmiten por el bus pueden estar implementadas utilizando un solo cable cada una y compartiendo una masa comn en el caso de un single-ended SCSI o utilizando dos cables cada una en el caso del differential SCSI. El primero se utiliza para distancias menores a 6 metros y el segundo para distancias menores a 25 metros. Los conectores son de 50 pines. [MBP01]

2.1.3. Comunicacin inalmbrica. Bluetooth.


Bluetooth es la norma que define un estndar global de comunicacin inalmbrica que posibilita la transmisin de voz y datos entre diferentes equipos mediante un enlace por radiofrecuencia. Los principales objetivos que se pretende conseguir con esta norma son:

_____________________________________________________________________ Ingeniera Informtica 18 Universidad de Valencia

Facilitar las comunicaciones entre equipos mviles y fijos. Eliminar cables y conectores entre stos. Ofrecer la posibilidad de crear pequeas redes inalmbricas y facilitar la sincronizacin de datos entre nuestros equipos personales. [Bol06]

La tecnologa Bluetooth comprende hardware, software y requerimientos de interoperabilidad, por lo que para su desarrollo ha sido necesaria la participacin de los principales fabricantes de los sectores de las telecomunicaciones y la informtica, tales como: Ericsson, Nokia, Motorola, Toshiba, IBM e Intel, entre otros. Posteriormente se han ido incorporando muchas ms compaas, y se prev que prximamente lo hagan tambin empresas de sectores tan variados como automatizacin industrial, maquinaria, ocio y entretenimiento, fabricantes de juguetes, electrodomsticos, etc., con lo que en poco tiempo se nos presentar un panorama de total conectividad de nuestros aparatos tanto en casa como en el trabajo. Bluetooth proporciona una va de interconexin inalmbrica entre diversos aparatos que tengan dentro de s esta tecnologa, como mviles, consolas, ordenadores de mano, cmaras, ordenadores porttiles, impresoras o simplemente cualquier dispositivo que un fabricante considere oportuno, usando siempre una conexin segura de radio de muy corto alcance. El alcance que logran tener estos dispositivos es de 10 metros para ahorrar energa ya que generalmente estos dispositivos utilizan mayoritariamente bateras. Sin embargo, se puede llegar a un alcance de hasta 100 metros (similar a Wi-Fi) pero aumentando el consumo energtico considerablemente. La especificacin de Bluetooth define un canal de comunicacin de mximo 720Kb/s (1 Mbps de capacidad bruta) con rango ptimo de 10 metros (opcionalmente 100 m con repetidores). La frecuencia de radio con la que trabaja est en el rango de 2,4 a 2,48 GHz con amplio espectro y saltos de frecuencia con posibilidad de transmitir en full duplex con un mximo de 1600 saltos/seg. Los saltos de frecuencia se dan entre un total de 79 frecuencias con intervalos de 1 MHz; esto permite dar seguridad y robustez.

_____________________________________________________________________ Ingeniera Informtica 19 Universidad de Valencia

La potencia de salida para transmitir a una distancia mxima de 10 metros es de 0 dBm (1 mW), mientras que la versin de largo alcance transmite entre 20 y 30 dBm (entre 100 mW y 1 W). El protocolo de banda base (canales simples por lnea) combina conmutacin de circuitos y paquetes. Para asegurar que los paquetes no lleguen fuera de orden, los slots pueden ser reservados por paquetes sncronos, un salto diferente de seal es usado para cada paquete. Por otro lado, la conmutacin de circuitos puede ser asncrona o sncrona. Tres canales de datos sncronos (voz), o un canal de datos sncrono y uno asncrono, pueden ser soportados en un solo canal. Cada canal de voz puede soportar una tasa de transferencia de 64 Kb/s en cada sentido, la cual es suficientemente adecuada para la transmisin de voz. Un canal asncrono puede transmitir como mucho 721 Kb/s en una direccin y 56 Kb/s en la direccin opuesta, sin embargo, para una conexin asncrona es posible soportar 432,6 Kb/s en ambas direcciones si el enlace es simtrico. El hardware que compone el dispositivo Bluetooth esta compuesto por dos partes: Un dispositivo de radio, encargado de modular y transmitir la seal. Un controlador digital, compuesto por una CPU, por un procesador de seales digitales (DSP - Digital Signal Processor) llamado Link Controller (o controlador de enlace) y por los interfaces con el dispositivo anfitrin. El LC (Link Controller) est encargado de hacer el procesamiento de la banda base y del manejo de los protocolos ARQ y FEC de capa fsica. Adems, se encarga de las funciones de transferencia (tanto asncrona como sncrona), codificacin de audio y encriptacin de datos. La CPU del dispositivo se encarga de atender las instrucciones relacionadas con Bluetooth del dispositivo anfitrin, para as simplificar su operacin. Para ello, sobre la CPU corre un software denominado Link Manager que tiene la funcin de comunicarse con otros dispositivos por medio del protocolo LMP. _____________________________________________________________________ Ingeniera Informtica 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

as minimizar el coste, el hardware y el software. Algunos de los principales recursos especficos que incorporan los microcontroladores son: Temporizadores (Timers). Perro guardin (Watchdog). Proteccin frente a fallo de alimentacin (Brown-out). Estado de bajo consumo. Conversores AD y DA. Modulador de anchura de pulsos PWM. Comparadores analgicos. Puertos de E/S digital. Puertos de comunicacin: serie, CAN, USB, I2C,

Los microcontroladores pueden clasificarse segn su arquitectura, que puede ser Von Neumann o Harvard. La arquitectura Von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a travs de un sistema de buses nico. Hay aspectos positivos en esta configuracin como los accesos a tablas almacenadas en memoria ROM y un set de instrucciones ms ortogonal. El bus de direcciones es usado para identificar qu posicin de memoria esta siendo accedida, mientras que el bus de datos es utilizado para trasladar informacin entre la CPU y alguna direccin de memoria o viceversa. Con un nico sistema de buses, la arquitectura Von Neumann es usada secuencialmente para acceder a instrucciones de la memoria de programa y ejecutarlas regresando desde/hacia la memoria de datos. Esto significa que el ciclo de instruccin no puede solaparse con ningn acceso a la memoria de datos. Una desventaja de esta arquitectura podra ser que el contador de programa o algn otro registro se corrompieran y apuntaran a la memoria de datos y se tomara sta momentneamente como memoria de programa. Consecuentemente se ejecutara una instruccin no deseada o un error en la decodificacin de la instruccin.

_____________________________________________________________________ Ingeniera Informtica 22 Universidad de Valencia

La Arquitectura Harvard se caracteriza por disponer de dos memorias independientes, una que contiene slo instrucciones y otra con slo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias. Una de las ventajas de esta arquitectura es que la operacin del microcontrolador puede ser controlada ms fcilmente si se presentara una anomala en el contador de programa. Existe otra arquitectura que permite accesos a tablas de datos desde la memoria de programa. Esta arquitectura es la llamada arquitectura Harvard modificada. Esta ltima arquitectura es la dominante en los microcontroladores actuales ya que la memoria de programa es usualmente ROM, OTP, EPROM o FLASH mientras que la memoria de datos es usualmente RAM. Consecuentemente, las tablas de datos pueden estar en la memoria de programa sin que sean perdidas cada vez que el sistema es apagado. Otra ventaja importante en la arquitectura Harvard modificada es que las transferencias de datos pueden ser solapadas con los ciclos de decodificacin de instrucciones. Esto quiere decir que la siguiente instruccin puede ser cargada de la memoria de programa mientras se est ejecutando una instruccin que accede a la memoria de datos. La desventaja de la arquitectura Harvard modificada podra ser que se requieren instrucciones especiales para acceder a valores en memoria RAM y ROM haciendo la programacin un poco complicada. Segn [Per05] las principales ventajas que se pueden encontrar en el uso de microcontroladores son: Gestin eficiente de procesos. Aumento de la fiabilidad. Reduccin del tamao, consumo y coste. Mayor flexibilidad (nicamente se requiere la reprogramacin).

Existe una gran diversidad de microcontroladores. Quiz la clasificacin ms importante sea entre microcontroladores de 4, 8, 16 o 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten _____________________________________________________________________ Ingeniera Informtica 23 Universidad de Valencia

a desaparecer. La razn de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran mayora de las aplicaciones, lo que hace innecesario emplear microcontroladores ms potentes y consecuentemente ms caros. En cuanto a las tcnicas de fabricacin, cabe decir que prcticamente la totalidad de los microcontroladores actuales se fabrican con tecnologa CMOS 4 (Complementary Metal Oxide Semiconductor). Esta tecnologa supera a las tcnicas anteriores por su bajo consumo y alta inmunidad al ruido. El nmero de productos que funcionan en base a uno o varios microcontroladores aumenta de forma exponencial. La industria informtica acapara gran parte de los microcontroladores que se fabrican. Casi todos los perifricos del computador, desde el ratn o el teclado hasta la impresora, son regulados por el programa de un microcontrolador. Los electrodomsticos (desde hornos y lavadoras hasta televisores y vdeos) incorporan tambin numerosos microcontroladores e, igualmente, los sistemas de supervisin, vigilancia y alarma en los edificios, utilizan estos chips para optimizar el rendimiento de los ascensores, calefaccin, aire acondicionado, etc. Las comunicaciones y sus sistemas de transferencia de informacin utilizan profusamente estos pequeos computadores, incorporndolos en los grandes automatismos y en los telfonos mviles. La instrumentacin y la electromedicina son dos campos idneos para la implantacin de estos circuitos integrados. Finalmente, una importante industria consumidora de microcontroladores es la de la automocin, que los aplica en el control de la climatizacin, la seguridad y los frenos ABS. En la siguiente figura se puede ver la utilizacin de los microcontroladores en distintos sectores de consumo.

_____________________________________________________________________ Ingeniera Informtica 24 Universidad de Valencia

10% 16% 33% Perifricos Electrodomsticos Comunicacin Industria Automocin

16% 25%

Figura 2.3: Utilizacin de microcontroladores por sectores Algunos de los principales fabricantes de microcontroladores son Microchip, Motorota, Intel, Atmel, Siemens, Philips, Hitachi o Nacional Semiconductor, entre otros. De entre todos los fabricantes expuestos, Microchip es el que ms diversidad posee, cuenta actualmente con 159 microcontroladores distintos adems de todas sus versiones segn encapsulado. A continuacin se exponen algunos de los microcontroladores ms populares: 8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todava sea muy utilizado. 8051 (Intel y otros). Es sin duda el microcontrolador ms popular. Fcil de programar pero potente. Est bien documentado y posee cientos de variantes e incontables herramientas de desarrollo. 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las herramientas de desarrollo para PC. 68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y con gran cantidad de variantes.

_____________________________________________________________________ Ingeniera Informtica 25 Universidad de Valencia

683xx (Motorola). Surgido a partir de la familia 68k, a la que se incorporan algunos perifricos. Son microcontroladores de altsimas prestaciones.

PIC (Microchip). Familia de microcontroladores que gana popularidad da a da. Fueron los primeros microcontroladores RISC.

Es preciso resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un gran nmero de variantes.

2.3. Sistemas de adquisicin de datos mediante sensores.


Adquirir datos es el proceso de medir los parmetros fsicos que los sensores transforman en seales elctricas e introducirlos en el sistema. Mientras se adquiere, se producen procesos que involucran esos datos adquiridos: alarmas, escalado de datos, a veces control, guardar los datos, etc. Posteriormente a la adquisicin de datos se realizan anlisis para extraer informacin til a partir de la cual se reportan los datos, se visualizan resultados y se comparte la informacin. Estas fases representan la funcionalidad de los sistemas modernos de adquisicin de datos basada en PC. La funcin de adquisicin es una de las componentes ms crticas. En un sistema basado en PC la adquisicin se realiza mediante un hardware especializado de medicin que puede desglosarse en sensores, conectividad de la seal o de los sensores, acondicionamiento de la seal, y conversin analgica-digital. Una amplia variedad de sensores se usan para convertir magnitudes fsicas en seales elctricas. Los hay de todos los tipos: de temperatura como termopares y termistores, transductores de presin, galgas extensiomtricas y acelermetros, Despus de instalar los sensores, hay que conectarlos al sistema de adquisicin. La conectividad de la seal describe los componentes del hardware con los cuales se conectan los sensores al equipo. Hay muchos tipos de conectores y es un factor a decidir a la hora de configurar el equipo. _____________________________________________________________________ Ingeniera Informtica 26 Universidad de Valencia

El acondicionamiento de la seal es uno de los componentes ms importantes de un equipo de adquisicin basado en PC. Muchas seales requieren algn tipo de preparacin antes de ser digitalizadas. Por ejemplo, los termopares producen seales de muy bajo nivel que requieren amplificacin, filtrado y linealizacin. Otros sensores, como termistores, galgas y acelermetros, requieren alimentacin adems de amplificacin y filtrado, mientras que otras seales pueden requerir aislamiento para proteger el sistema de alto voltaje. Idealmente un equipo debera permitir todo tipo de acondicionamiento incluido la combinacin de algunos procesos, si bien ste ha de adaptarse a las posibles necesidades del usuario. Despus de que los parmetros fsicos se han convertido en seales elctricas y se acondicionan correctamente, las seales elctricas analgicas se convierten en valores digitales y se pasan estos valores al computador. La conversin analgica-digital se realiza a travs de una tarjeta de adquisicin de datos o en un sistema integrado con acondicionamiento y conectividad. La combinacin de sensores, conectividad de la seal, acondicionamiento y conversin analgica-digital constituye el hardware de medicin de un equipo de adquisicin basado en PC. Este hardware se configura y se controla a travs de software construyendo aplicaciones a la medida de la aplicacin deseada.

_____________________________________________________________________ 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: Especificacin de requisitos. En esta fase se establecen los requisitos que se quiere que cumpla el producto a desarrollar. As pues, se tendrn que especificar parmetros tales como el coste mximo, el rendimiento mnimo, las ampliaciones futuras, el consumo de energa, tamao o peso. Establecimiento de la arquitectura del sistema teniendo en cuenta que lo ms importante es el micro. Tambin se habr de tener en cuenta el subsistema de E/S, estableciendo que tipo de enlace se utilizar en la comunicacin del perifrico con el ordenador.

_____________________________________________________________________ Ingeniera Informtica 29 Universidad de Valencia

Desarrollo del hardware y software. Una vez se tiene claro lo que se quiere hacer, es el momento de empezar a desarrollarlo y para ello, en primer lugar, se hace una seleccin de los componentes a utilizar en la placa, realizando tambin el esquema de la circuitera. Hay que tener en cuenta que en el ciclo de diseo hardware se pueden dar situaciones de diseo-prototipo-testeo-vuelta atrs, con el consiguiente encarecimiento del producto final. Por esta razn, se deja la fase de diseo y fabricacin del PCB para el final, desarrollando antes una primera placa de prueba que servir para verificar en la siguiente fase de testeo tanto el correcto diseo de la circuitera como el firmware del micro y la aplicacin software desarrollados en la fase actual.

Test y debug. Una vez acabado el desarrollo del hardware, firmware y software se procede a comprobar su correcto funcionamiento. Para probar el firmware, se podra realizar una simulacin desde la herramienta de desarrollo utilizada, pero el gran inconveniente que presentan estos simuladores es que es difcil simular la entrada y salida de datos del microcontrolador y los posibles ruidos en las entradas. Este mismo problema de simulacin de las entradas se puede encontrar tambin en la aplicacin software desarrollada. Por esta razn, debido a que se trabaja con datos que pasan los sensores al micro y este los pasa a travs del USB a la aplicacin, se opt, como se ha dicho anteriormente, por realizar el testeo utilizando una primera versin de prueba de la placa (desarrollada en la fase anterior) antes de la fabricacin del PCB.

Diseo y fabricacin del PCB. Por ltimo, una vez se ha comprobado el correcto funcionamiento de la placa de prueba, se realiza el diseo del circuito impreso y se envan estos ficheros de diseo a un fabricante especializado. Una vez recibido el PCB se realiza una comprobacin elctrica para detectar posibles defectos de fabricacin. Despus del testeo se montarn los componentes manualmente y se realizar una nueva comprobacin correctamente. para verificar que el montaje se ha realizado

_____________________________________________________________________ Ingeniera Informtica 30 Universidad de Valencia

Testeo y experimentacin. Con el prototipo listo se realizarn experimentaciones para validarlo y comprobar que todo funciona correctamente.

3.2. Material utilizado.

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: Soporta casi todos los sistemas operativos (todos los MS Windows y Linux). El software es de libre distribucin. Admite la especificacin en el fichero binario HEX tanto de la memoria de programa como de la memoria de datos (EEPROM), as como la palabra de configuracin y el identificador.

_____________________________________________________________________ Ingeniera Informtica 32 Universidad de Valencia

La palabra de configuracin se puede establecer en el propio programa seleccionando en las opciones que se deseen. Admite la especificacin de un identificador para el microcontrolador PIC. El programa sirve tanto para escribir el microcontrolador PIC como para leerlo. Se permite la edicin de los datos (programa y EEPROM) antes de enviarlo al microcontrolador PIC. Tiene la caracterstica de poder desproteger los microcontroladores PIC protegidos contra lectura/escritura si son de tipo Flash. Una vez desprotegido el microcontrolador pierde toda su informacin pero puede ser reutilizado.

Dispone de un fichero de configuracin para poder incorporar nuevos microcontroladores PIC y funcionalidades segn vayan apareciendo, sin necesidad de descargar nuevas versiones del software. El propio usuario puede modificar este fichero de forma sencilla. [Edu]

Windows Driver Development Kit (DDK) DDK es una herramienta de desarrollo de drivers consolidada que proporciona un entorno de desarrollo, herramientas, ejemplos y documentacin que permiten el desarrollo de drivers para la familia de sistemas operativos de Windows. En concreto, la versin utilizada, Windows Server 2003 SP1 DDK, permite la creacin de drivers para los sistemas operativos Windows Server 2003, Windows XP y Windows 2000. Esta versin contiene adems una herramienta (PREfast) que detecta ciertas clases de errores que no son fcilmente detectados por los compiladores comunes. [DDK]

_____________________________________________________________________ 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

informacin al usuario. Con esta finalidad, se escribir un manual de usuario del programa para as facilitar su introduccin y manejo. Este manual se adjunta con la presente memoria (ver apndice D). Un requisito general del proyecto es la fcil instalacin tanto del perifrico como de la aplicacin (esto tambin se incluye en el manual de usuario mencionado anteriormente) y la posibilidad de que sea soportado por varios sistemas operativos. Por otra parte, se quiere que sea posible realizar ampliaciones futuras, pudiendo aadir ms sensores en la placa y, por lo tanto, nuevas funcionalidades en la aplicacin. Por ltimo, todo lo mencionado anteriormente se quiere conseguir con el mnimo coste posible.

4.2. Evaluacin de alternativas.


Una vez establecidos los requisitos que debe cumplir el proyecto, se pasa a analizar las distintas opciones que se nos plantean, indicando los pros y los contras de cada una de ellas.

4.2.1. Interconexin entre el perifrico y el ordenador.


El tipo de enlace utilizado en la interconexin del dispositivo con el ordenador es una de las decisiones que hay que tomar ms importantes, ya que de ella dependern otras decisiones tambin importantes como el tipo de microcontrolador utilizado, debido a que dependiendo del tipo de bus que se utilice para comunicar al perifrico con el ordenador, se elegir un micro que disponga de puertos que soporten ese tipo de comunicacin. Otro aspecto en el que influye tambin esta decisin es en el diseo del perifrico ya que segn el enlace que se utilice, se usarn unos componentes u otros, influyendo esto tanto en el tamao como en el coste de la placa.

_____________________________________________________________________ Ingeniera Informtica 36 Universidad de Valencia

De los distintos tipos de interconexin descritos anteriormente en la seccin 2.1. se har especial hincapi en FireWire y USB, ya que estos tipos de enlace son dos de los ms utilizados actualmente en el desarrollo de perifricos y adems ambos permiten la alimentacin a travs del bus (uno de los requisitos mencionados en la seccin 4.1.), presentando velocidades de transferencia de datos muy superiores a las interfaces paralelas y a la interfaz serie RS-232. Otro tipo de comunicacin muy utilizado actualmente es mediante Bluetooth pero este tampoco se tendr en cuenta ya que generalmente estos dispositivos utilizan mayoritariamente bateras. USB vs. FireWire En el captulo 2 ya se habl sobre estas dos tecnologas, indicando cules eran sus principales caractersticas, ventajas y desventajas. Por esta razn, este apartado se centrar, basndose en lo descrito anteriormente, en realizar una comparacin entre ambos tipos de enlace. Tanto FireWire como USB son tecnologas que persiguen un nuevo mtodo de conectar mltiples perifricos a un ordenador, permitiendo que estos sean aadidos o desconectados sin la necesidad de reiniciar. Ambos usan cables ligeros y flexibles con conectores duraderos, pero aqu terminan los parecidos. Aunque los cables de FireWire y USB pueden parecer a la vista los mismo, la cantidad de datos que por ellos transcurre es bastante diferente. Como muestra la siguiente tabla, la velocidad y la capacidad de transferencia marcan la principal distincin entre estas dos tecnologas: FireWire Nmero mximo de dispositivos Cambio en caliente (agregar o quitar dispositivos sin tener que reiniciar el ordenador) Velocidad de transferencia de datos Conexin de perifricos interna 63 S 200 Mbps 400 Mbps 800 Mbps S USB 127 S 1,5 Mbps 12 Mbps 480 Mbps No

Tabla 4.1: Comparacin entre FireWire y USB _____________________________________________________________________ Ingeniera Informtica 37 Universidad de Valencia

Como puede verse, FireWire ofrece velocidades de transferencia de datos superiores a las ofrecidas por USB pero esto no significa que FireWire gane la "guerra" de interfaces. Los conectores FireWire y USB pueden coexistir pacficamente. USB 1.0 queda reservado para perifricos con un pequeo ancho de banda (ratones, teclados, mdems, etc.), mientras que FireWire, gracias a su mayor ancho de banda, es ms adecuado para aplicaciones de vdeo digital (DV), audio profesional, cmaras fotogrficas digitales de alto nivel y aparatos de ocio domsticos.

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: Procesamiento de datos: puede ser necesario que el microcontrolador realice clculos crticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rpido para ello. Por otro lado, habr que tener en cuenta la precisin de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores de 16 o 32 bits, o incluso a hardware de coma flotante. Entrada/Salida: para determinar las necesidades de Entrada/Salida del sistema es conveniente conocer el diagrama de bloques del mismo, de tal forma, que sea sencillo identificar la cantidad y tipo de seales a controlar. Una vez realizado este anlisis puede ser necesario aadir perifricos externos o cambiar a otro microcontrolador ms adecuado a ese sistema. Consumo: algunos productos que incorporan microcontroladores estn alimentados con bateras. Lo ms conveniente en un caso como ste puede ser que el microcontrolador est en estado de bajo consumo pero

_____________________________________________________________________ Ingeniera Informtica 38 Universidad de Valencia

que despierte ante la activacin de una seal (una interrupcin) y ejecute el programa adecuado para procesarla. Memoria: en cuanto a la cantidad de memoria necesaria se debe hacer una estimacin de cunta memoria voltil y no voltil es necesaria y si es conveniente disponer de memoria no voltil modificable. Ancho de palabra: el criterio de diseo debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicacin. Usar un microcontrolador de 4 bits supondr una reduccin en los costes importante, mientras que uno de 8 bits puede ser el ms adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste, deben reservarse para aplicaciones que requieran altas prestaciones. Diseo de la placa: la seleccin de un microcontrolador concreto condicionar el diseo de la placa. Deber tenerse en cuenta el encapsulado del mismo. Adems de todo lo mencionado tambin es importante tener en cuenta la documentacin y herramientas de desarrollo disponibles para cada microcontrolador. Segn volumen de ventas y diversidad de modelos se puede establecer como principales fabricantes a los siguientes: Microchip Technology Corp. STMicroelectronics Atmel Corp. Motorola Semiconductors Corp.

De todos los fabricantes expuestos, Microchip es el que ms diversidad posee, cuenta actualmente con 159 microcontroladores distintos adems de todas sus versiones segn encapsulado.

_____________________________________________________________________ Ingeniera Informtica 39 Universidad de Valencia

4.2.3. Lenguajes y herramientas de desarrollo de aplicaciones.


Existe gran diversidad de lenguajes de programacin convenientes para desarrollar aplicaciones software que funcionen bajo Windows. Tanto C como C++ son lenguajes de programacin de propsito general. Todo puede programarse con ellos, desde sistemas operativos y compiladores hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos, aplicaciones a medida, etc. Para un desarrollo ms fcil de aplicaciones Windows aparecieron herramientas de desarrollo visual, cuyos exponentes ms conocidos son Borland Delphi, de Inprise, y Visual Basic, de Microsoft. La escritura de aplicaciones con herramientas de este tipo se basa en el uso de componentes o controles prefabricados. As, la creacin de la interfaz de usuario deja de ser un trabajo tedioso y el programador puede centrarse en el ncleo del programa. Estos entornos de desarrollo visual tambin facilitan operaciones habituales en Windows, como la comunicacin con otras aplicaciones, el uso de cuadros de dilogo comunes, la gestin de bases de datos, etc. Cada elemento de un programa, sea visual o no, viene representado por un componente. Algunas de estas herramientas de desarrollo visual se describen a continuacin. Visual Basic Visual Basic es una herramienta de diseo de aplicaciones para Windows en la que estas se desarrollan en una gran parte a partir del diseo de una interfaz grfica. En una aplicacin Visual Basic, el programa est formado por una parte de cdigo puro y otras partes asociadas a los objetos que forman la interfaz grfica. Es por tanto, un trmino medio entre la programacin tradicional, formada por una sucesin lineal de cdigo estructurado, y la programacin orientada a objetos. Combina ambas tendencias. Desde su salida al mercado, cada versin supera y mejora la anterior. Dados los buenos resultados a nivel profesional de este producto y el apoyo prestado por el _____________________________________________________________________ Ingeniera Informtica 40 Universidad de Valencia

fabricante para la formacin de programadores, Visual Basic se ha convertido en la primera herramienta de desarrollo de aplicaciones en entorno Windows. El lenguaje base del Visual Basic es el BASIC, de gran simplicidad e ideal para el programador novel. Conserva de l su sencillez de manejo, pero si lo que se quiere es llegar al fondo de la mquina y controlar uno a uno sus registros, ser necesario utilizar otro lenguaje que permita bajar el nivel de programacin (Visual C, Visual C++, etc.) o utilizar libreras (DLLs) que lo hagan. [Mic] Visual C++ Es la herramienta preferida por los profesionales de las aplicaciones Windows. Es el compilador ms vendido del mercado y ofrece casi todo lo que se necesita. Le falta soporte CORBA y le sobran requerimientos de hardware. Aconsejable para desarrollar aplicaciones MFC. Visual C++ .NET proporciona a los programadores numerosas caractersticas de nivel profesional y les permite crear aplicaciones y componentes para Windows extremadamente eficaces. De principio a fin, la herramienta ofrece caractersticas que ayudan a optimizar el proceso de programacin de software con C++. Los asistentes para aplicaciones proporcionan plantillas eficaces para iniciar proyectos con rapidez. Las bibliotecas de marcos de aplicacin MFC y ATL que se incluyen, son las ms eficaces, productivas y populares disponibles para la programacin de aplicaciones basadas en Windows y ahora, se han mejorado para Windows XP. Estas caractersticas estn totalmente integradas con un compilador de nivel profesional y un depurador avanzado. Juntos proporcionan una experiencia de programacin eficaz y coherente. C++ es uno de los lenguajes ms conocidos del mundo y con Visual C++ .NET, los programadores disfrutan de una excelente herramienta de programacin en C++. Se trata de un lenguaje interoperable, basado en estndares, pudindose aprovechar los conocimientos de este lenguaje en varias comunidades y entornos informticos. [Mic] _____________________________________________________________________ Ingeniera Informtica 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

razn de su xito es su utilizacin, ya que una vez se ha aprendido a utilizar uno, conociendo su arquitectura y juego de instrucciones, es muy fcil emplear otro modelo diferente. Adems de estas ventajas, la principal razn de la eleccin es que para programar el micro se utilizar la placa EduMic y esta est diseada para su utilizacin con PICs. Microchip dispone de tres gamas de microcontroladores PIC para atender todas las aplicaciones, microcontroladores de gama baja, gama media y gama alta. As, hay disponibles microcontroladores sencillos y baratos para atender aplicaciones simples, y otros complejos y ms costosos para las de mucha envergadura. Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las versiones estn construidas alrededor de una arquitectura comn, un repertorio mnimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del voltaje de alimentacin. Una vez se tiene claro el fabricante, hay que determinar cual es el micro que mejor se adapta a las necesidades del proyecto. Para ello, deber tener las siguientes caractersticas: Debe disponer de un puerto de comunicaciones USB. La longitud de palabra ser de 8 bits ya que no hemos de manejar gran cantidad de informacin. Debe disponer de un conversor A/D. La memoria de programa debe ser Flash. Un componente opcional sera una memoria ROM de datos donde se podran guardar todos los datos adquiridos a travs de los sensores para ser enviados mas tarde al ordenador. En este proyecto no se ha implementado esta solucin, pero al escoger el microcontrolador lo tenemos en cuenta por si se quiere implementar en un futuro. _____________________________________________________________________ Ingeniera Informtica 44 Universidad de Valencia

Teniendo en cuenta lo anterior, se ha optado por el PIC18F2550 ya que dispone de un puerto USB que puede funcionar tanto a baja velocidad (1,5 Mbps) como a velocidad completa (12 Mbps) y soporta transferencias de control, interrupcin, masivas e iscronas. Adems tiene un mdulo conversor A/D con 10 canales de entrada y una memoria de datos EEPROM (Electrical Erasable Programmable Read Only Memory) de 256 bytes. Se trata de una memoria de lectura, programada y borrada elctricamente. La operacin de borrado y programacin es muy sencilla y se puede grabar y borrar tantas veces como se quiera. Las letras que hay en los diferentes modelos de cada PIC, en este caso la F (18F2550), indican el tipo de memoria de programa que utiliza. En este caso se tiene una memoria de tipo Flash, que es una memoria no voltil, de bajo consumo y que se puede escribir y borrar elctricamente. Su funcionamiento es como el de las memorias ROM y RAM, pero consume menos y es ms pequea. A diferencia de la ROM, la memoria Flash es programable en el propio circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa Flash es ms recomendable que la EEPROM cuando se necesita gran cantidad de memoria de programa no voltil. Es ms rpida y tolera ms ciclos de escritura/borrado. En la figura 4.1 podemos ver el encapsulado del PIC18F2550 con sus pines de entrada y salida.

Figura 4.1: Encapsulado PIC18F2550 Aunque la empresa Microchip ofrece una serie de herramientas de desarrollo totalmente gratuitas y potentes, como el entorno de desarrollo MPLAB y el _____________________________________________________________________ Ingeniera Informtica 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.

Figura 5.1: Flujo de comunicaciones entre un dispositivo USB y el host _____________________________________________________________________ Ingeniera Informtica 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.

5.1. Diseo del hardware.


En los captulos anteriores se han visto los requisitos que debe cumplir el proyecto y se han tomado decisiones importantes como el tipo de bus utilizado en la comunicacin con el ordenador y el microcontrolador que se emplear. Con todo esto claro y la arquitectura del sistema establecida, ya estamos en condiciones de empezar

_____________________________________________________________________ Ingeniera Informtica 48 Universidad de Valencia

a disear el perifrico. Empezaremos por el hardware, seleccionando los componentes a utilizar en la placa y realizando tambin el esquema de la circuitera. Respecto a los sensores se utilizar nicamente un sensor de temperatura. Se deja como trabajo futuro el aadir algn otro tipo de sensor (de humedad, luminosidad,). Como sensor de temperatura se utiliza el circuito integrado LM50 que tiene la caracterstica de que cada 10 mV de la tensin de salida equivale a 1 grado centgrado, siendo 500 mV equivalente a 0C. Este sensor permite medir temperaturas negativas, con un rango que va de -40C a 125C, sin necesidad de utilizar tensin negativa. Estas dos caractersticas permiten simplificar la circuitera en entornos donde se desee medir temperaturas negativas, ya que no es necesario utilizar ningn tipo de circuito acondicionador ni conversores de tensin. La salida del LM50 est conectada directamente a la entrada AN1/RA1 del microcontrolador PIC.

Figura 5.2: Sensor de temperatura LM50 Para ms informacin sobre el sensor de temperatura se puede consultar el datasheet del LM50 que se encuentra en la pgina web de Nacional Semiconductor. [Nat] Otros dos elementos que incluiremos en el diseo son un switch para poder realizar un reset del dispositivo y un led que indicar que el perifrico tiene alimentacin y est listo para usarse. Como se ha comentado en los requisitos, la alimentacin del dispositivo ser a travs del bus USB, que suministra una tensin de 5 V. En la siguiente figura se muestra como deben estar conectados los pines del microcontrolador para que esto sea posible. [PIC] _____________________________________________________________________ Ingeniera Informtica 49 Universidad de Valencia

Figura 5.3: Alimentacin a travs del bus USB Existen dos tipos de conectores USB, tipo A y tipo B. El que hemos utilizado es de tipo A, por lo que el cable empleado para conectar el dispositivo con el ordenador ser tipo A - tipo A.

Figura 5.4: Conector USB tipo A Respecto al oscilador, el PIC18F2550 incorpora mltiples fuentes de reloj que se pueden dividir en tres tipos: Osciladores primarios: son los cristales externos. Pueden ir

acompaados de los osciladores internos. Osciladores secundarios: son las fuentes externas conectadas al Timer 1. 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

Tabla 5.1: Modos de funcionamiento del oscilador en el PIC18F2550 Los modos de funcionamiento del oscilador y el mdulo USB estn muy relacionados. En microcontroladores PIC anteriores a la familia PIC18F2455/2550/4455/4550, todos los mdulos del microcontrolador, incluidos los puertos de comunicaciones, utilizaban la misma fuente de reloj, pero en los microcontroladores de esta familia, el oscilador primario forma parte del mdulo USB, de manera que este mdulo slo puede tomar la seal de reloj del oscilador primario. Sin embargo, el resto del micro puede utilizar cualquier otra fuente. Dependiendo de si utilizamos USB de baja velocidad o de velocidad completa, la seal de reloj del mdulo USB deber ser de 6 MHz o de 48 MHz, respectivamente. Como se ha dicho en la seccin 4.3, nuestro dispositivo ser de baja velocidad as que el reloj del mdulo USB deber ser de 6 MHz. De los doce modos de funcionamiento, slo los ocho primeros pueden utilizarse para USB y de estos se ha optado por HSPLL, con un cristal de 4 MHz. Al utilizar esta frecuencia el mdulo USB tendr un reloj de 6 MHz mientras que el resto del _____________________________________________________________________ Ingeniera Informtica 51 Universidad de Valencia

micro funcionar a 24 MHz, utilizando para ambos nicamente el oscilador primario. En la siguiente seccin se explicar ms a fondo como se consiguen estas dos frecuencias a partir de los 4 MHz del cristal, as como los valores que deben tener los registros para que esto sea posible. Segn el datasheet del microcontrolador [PIC] los valores de los condensadores que acompaan al cristal deben ser de 27 pF. Estos valores son orientativos. Una capacidad mayor produce mayor estabilidad del cristal pero tambin un tiempo de arranque mayor. La resistencia Rs puede ser necesaria para no sobre alimentar al cristal.

Figura 5.5: Oscilador cristal o cermico (configuracin XT, HS o HSPLL) La deteccin de un perifrico USB por parte de un ordenador se realiza conectando en el dispositivo, la lnea D+ o D- a 3,3 V a travs de una resistencia de pull-up. El hub tiene una resistencia de pull-down de 15 K en cada una de las dos lneas de datos del puerto USB, D+ y D-. El dispositivo tiene una resistencia de pullup de 1,5 K en la lnea D+ (para velocidad completa) o D- (para baja velocidad) conectada a una tensin de 3,3 V. Cuando el perifrico se conecta al puerto, la lnea que tiene la resistencia de pull-up conectada se pone a nivel alto y cuando el hub detecta este nivel alto en una de las lneas, asume que un dispositivo est conectado y determina su velocidad en funcin de la lnea que sea. [Axe99]

_____________________________________________________________________ Ingeniera Informtica 52 Universidad de Valencia

Figura 5.6: Deteccin de la velocidad de un dispositivo USB Para realizar esto se dispone de dos opciones: utilizar un transceiver y una resistencia de pull-up externa o utilizar el transceiver y las resistencias de pull-up internos de que dispone el microcontrolador. En el diseo se ha optado por esta ltima opcin, utilizando los componentes internos del microcontrolador. El esquema completo del diseo puede verse en el captulo 10.

5.2. Diseo del firmware.

5.2.1. Registros de configuracin.


Los PIC18F2550 incluyen varias caractersticas especiales pensadas para maximizar las prestaciones y minimizar el coste eliminando componentes externos. Adems permiten ahorrar energa y proteger el cdigo frente a copia.

_____________________________________________________________________ Ingeniera Informtica 53 Universidad de Valencia

Estos elementos son: Varias fuentes de osciladores diferentes. Diversos tipos de RESET. Varias fuentes de interrupcin, con dos niveles de prioridad. Temporizador Watchdog. Varios modos de bajo consumo. Monitor de fallo del reloj. Start-up de dos velocidades. Proteccin de cdigo. Posiciones de identificacin ID. Circuitera de programacin serie en circuito.

Los registros de configuracin permiten controlar estas caractersticas especiales del microcontrolador. Estn mapeados a partir de la direccin de memoria de programa 300000h. Esta direccin est ms all de la memoria de programa de usuario, de hecho, pertenece al espacio de memoria de configuracin (300000h3FFFFFh).

Tabla 5.2: Registros de configuracin La descripcin de estos registros as como los valores que toman se ir indicando en los siguientes apartados.

_____________________________________________________________________ Ingeniera Informtica 54 Universidad de Valencia

5.2.2. Registros del oscilador.


El funcionamiento del oscilador en el PIC18F2550 se controla a travs de dos registros de configuracin (CONFIG1L y CONFIG1H) y dos registros de control (OSCCON y OSCTUNE). A continuacin se muestra el esquema del mdulo del oscilador indicando la fuente utilizada (oscilador primario) y los valores que toman los distintos bits de estos registros para conseguir, a partir de un cristal de 4 MHz, una velocidad en el mdulo USB de 6 MHz.

Figura 5.7: Mdulo del oscilador

_____________________________________________________________________ Ingeniera Informtica 55 Universidad de Valencia

Antes de explicar los registros del oscilador, recordemos lo que se pretende hacer. Se utilizar el oscilador primario en modo HSPLL como reloj tanto para el mdulo USB como para el resto del microcontrolador. El cristal externo empleado ser de 4 MHz y, al ser el dispositivo USB de baja velocidad, hay que configurar los registros de manera que al mdulo USB llegue una frecuencia de 6 MHz. Los registros de configuracin, CONFIG1L y CONFIG1H, permiten seleccionar el modo de funcionamiento del oscilador y las opciones de pre y post-escalado.

Figura 5.8: Registro CONFIG1L El valor de USBDIV en este caso dara igual cul fuera ya que este bit se utiliza para USB de velocidad completa.

_____________________________________________________________________ Ingeniera Informtica 56 Universidad de Valencia

Figura 5.9: Registro CONFIG1H El registro de control OSCTUNE se utiliza para calibrar y ajustar la frecuencia del oscilador interno pero debido a que nicamente utilizamos el oscilador primario como fuente del reloj, el valor de este registro no nos interesa. El otro registro de control (OSCCON) controla varios aspectos de la operacin del reloj, entre ellos, el que ms nos interesa es que permite seleccionar la fuente de reloj que se utilizar (SCS1:SCS0).

_____________________________________________________________________ Ingeniera Informtica 57 Universidad de Valencia

Figura 5.10: Registro OSCCON

5.2.3. Registros del mdulo A/D.


El mdulo conversor A/D tiene una resolucin de 10 bits con 10 canales para los dispositivos de 28 pines y 13 canales para los de 40/44 pines. El mdulo tiene 5 registros: ADRESH: Parte alta del resultado de la conversin A/D. ADRESL: Parte baja del resultado de la conversin A/D. ADCON0: Controla el funcionamiento del mdulo A/D. ADCON1: Configura la funcin de los pines de los puertos.

_____________________________________________________________________ Ingeniera Informtica 58 Universidad de Valencia

ADCON2: Configura el reloj del conversor A/D, el tiempo de adquisicin y el formato del resultado de la conversin.

Figura 5.11: Registro ADCON0 El canal analgico utilizado ser el 1 que se corresponde con el pin 3 (AN1/RA1) del microcontrolador PIC. Los pines que se utilicen como entradas analgicas deben configurarse como entradas mediante los correspondientes registros TRIS. La resolucin en la conversin depende de Vref = ((Vref+) - (Vref-)): Resolucin = ((Vref+) - (Vref-)) / 1024 = Vref / 1024. Vref+ y Vref- determinan los lmites mximo y mnimo de la tensin analgica que se puede convertir. El Vref mnimo es de 2V.

_____________________________________________________________________ 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.

Figura 5.12: Registro ADCON1 El tiempo para convertir un dato est formado por dos periodos: Tiempo de Adquisicin y Tiempo de Conversin.

_____________________________________________________________________ Ingeniera Informtica 60 Universidad de Valencia

Figura 5.13: Secuencia de conversin A/D El tiempo de adquisicin puede ser programado para que el micro lo tenga en cuenta durante el proceso de conversin de forma automtica. Los bits ACQT2:ACQT0 del registro ADCON2<5:3> proporcionan un rango desde 2 hasta 20 TAD (periodo de conversin por bit). De esta forma despus de seleccionar el canal no hay que esperar el periodo de adquisicin por programa hasta poder activar el bit de inicio de la conversin GO/#DONE. El micro automticamente espera el tiempo de adquisicin programado en ACQT2:ACQT0. Tambin se puede seguir haciendo la espera de forma manual por programa si la combinacin seleccionada en ACQT2:ACQT0 es 000. Cuando el bit GO/#DONE se activa, el mdulo supone que ya ha pasado el periodo de adquisicin y comienza la conversin inmediatamente. En este caso utilizaremos adquisicin manual, indicando en el programa el tiempo de espera antes de la conversin.

_____________________________________________________________________ Ingeniera Informtica 61 Universidad de Valencia

La conversin comienza justo despus del tiempo de adquisicin. Para completar una conversin deben pasar 11 TAD.

Figura 5.14: Conversin A/D con tiempo de adquisicin manual Existen 7 posibles formas de seleccionar el reloj del conversor para TAD (ADCS2:ADCS0): utilizar la seal de reloj del micro (2, 4, 8, 16, 32 o 64Tosc) o utilizar un oscilador RC interno propio del mdulo A/D que funciona a 1Mhz. TAD debe elegirse para que tenga un valor entre 0,7us - 25us para PIC18FXXXX o 1,4us - 25us para PIC18LFXXXX. En el caso de utilizar el RC interno este periodo debe ser de 1us. De esta forma, los clculos de TAD nos indican que el modo que se debe utilizar dependiendo de la frecuencia de la seal de reloj es:

Tabla 5.3: TAD frente a frecuencia del oscilador Teniendo en cuenta todo lo dicho, el registro ADCON2 se configurara de la siguiente forma:

_____________________________________________________________________ Ingeniera Informtica 62 Universidad de Valencia

Figura 5.15: Registro ADCON2

5.2.4. Registros del mdulo USB.


El control y la configuracin del mdulo USB se lleva a cabo a travs de 22 registros de estado y control. Estos son: Registro de control USB (UCON). Registro de configuracin USB (UCFG). Registro de estado de transferencia USB (USTAT). Registro de direccin de dispositivo USB (UADDR). Registros de nmero de frame (UFRMH:UFRML). Registros (del 0 al 15) de habilitacin de puntos finales (UEPn).

El registro de control UCON contiene los bits necesarios para controlar el comportamiento del mdulo USB durante las transferencias.

_____________________________________________________________________ Ingeniera Informtica 63 Universidad de Valencia

Figura 5.16: Registro UCON El mdulo USB dispone de un regulador interno de 3,3 V para suministrar tensin al transceiver interno. Esto se debe a que USB utiliza 3,3 V para las comunicaciones, por lo tanto, mientras el resto del micro puede utilizar una alimentacin de 5 V, el transceiver debe alimentarse de una fuente distinta (Vusb). El regulador se controla a travs del bit VREGEN del registro de configuracin CONFIG2L. Cuando est habilitado (VREGEN = 1), el voltaje es visible en el pin Vusb. Si el regulador est deshabilitado, una tensin de 3,3 V debe ser suministrada externamente a travs de Vusb. Hay que tener en cuenta que las resistencias de pullup internas nicamente pueden utilizarse si el transceiver interno est activo.

_____________________________________________________________________ Ingeniera Informtica 64 Universidad de Valencia

Figura 5.17: Mdulo USB Como puede verse en la figura 5.17, se ha optado por utilizar todos los elementos internos de que dispone el microcontrolador, el regulador, el transceiver y los pullups, de esta manera, el nmero de componentes del dispositivo ser menor, lo cual repercute tanto en el tamao como en el coste del perifrico. La configuracin del transceiver y los pull-ups as como de la velocidad del dispositivo se debe llevar a cabo antes de habilitar el mdulo y no puede ser cambiada mientras este est habilitado. El registro que se encarga de realizar esta configuracin es UCFG.

_____________________________________________________________________ Ingeniera Informtica 65 Universidad de Valencia

Figura 5.18: Registro UCFG Antes de configurar los registros de habilitacin de puntos finales (UEPn) analizaremos los descriptores del perifrico y veremos cuntos puntos finales se necesitan y de que tipo sern (IN/OUT y el tipo de transferencia que soportan).

5.2.5. Descriptores.
Como puede verse en la figura 5.19, todos los dispositivos USB tienen una jerarqua de descriptores: Descriptor de dispositivo: Es nico. Incluye la versin de USB, el identificador de vendedor y producto (que identifican el driver) y el nmero de configuraciones que el dispositivo tiene. _____________________________________________________________________ Ingeniera Informtica 66 Universidad de Valencia

Descriptor de configuracin: Especifica la potencia requerida y si el dispositivo tiene alimentacin propia o no. Puede haber varias configuraciones (diferentes combinaciones de interfaces y endppoints) y el host puede seleccionar una. Slo puede haber una activa.

Descriptor de interface: Es una unin de puntos finales en un grupo funcional que realizan una tarea nica. Ejemplo: impresora, scaner y fax, cada uno es un interface.

Descriptor de punto final: Especifica el tipo de transferencias usadas, la direccin de los datos y el tamao mximo del paquete de datos para cada endpoint. El punto final 0 siempre es de control por defecto y no tiene descriptor. La direccin de los datos es desde el punto de vista del host (IN: del perifrico al host, OUT: del host al perifrico).

Figura 5.19: Jerarqua de descriptores Existe un tipo de descriptor opcional, descriptor de cadena, que suministra informacin que se puede interpretar directamente (cadenas de informacin). Los descriptores de dispositivo y de interface contienen campos para su clasificacin: clase, sub-clase y protocolo. Estos campos son usados por el sistema operativo para asociar un dispositivo o un interface a un driver genrico, especificado para esa clase. La definicin de clases de dispositivos e interfaces y su estandarizacin permite el desarrollo de drivers genricos que permiten manejar mltiples implementaciones basadas en ese estndar.

_____________________________________________________________________ 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

Figura 5.20: Descriptores del perifrico Una vez determinados los puntos finales necesarios hay que configurar los registros de habilitacin de puntos finales (UEPn) del mdulo USB. Los registros UEP0 y UEP1 tendrn respectivamente los valores 0001 0110 y 0001 0010, de manera que se habilita el punto final 0 para soportar transferencias de control y el punto final 1 para soportar transferencias de interrupcin de entrada.

_____________________________________________________________________ Ingeniera Informtica 69 Universidad de Valencia

Figura 5.21: Registro UEPn

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:

Tabla 5.4: Valores de los registros de configuracin

_____________________________________________________________________ Ingeniera Informtica 70 Universidad de Valencia

5.3. Diseo del software.


La interfaz de usuario debe proveer la funcionalidad necesaria para una buena comunicacin entre el hombre y la mquina. Un buen diseo agiliza el uso de una aplicacin, tanto al visualizar aquella informacin ms importante, como al realizar aquellas tareas ms habituales con slo unos pocos clicks de ratn. El diseo de la interfaz debe realizarse de manera que esta resulte simple e intuitiva de utilizar. Lo primero que deber realizar la aplicacin ser establecer, de forma totalmente transparente al usuario, una tubera para obtener los datos del dispositivo. Para ello Microchip proporciona una API (mpusbapi.dll) que contiene un conjunto de funciones que permiten comunicarse con el perifrico desarrollado. Una vez se tienen estos datos (la temperatura medida por el sensor) se quiere que la aplicacin muestre continuamente la temperatura actual. Otras funcionalidades que deber implementar la aplicacin son: Mostrar la temperatura mxima y mnima. Permitir seleccionar el intervalo de tiempo de captura de la temperatura. Capturar datos, creando un fichero que los contenga, indicando adems las temperaturas mxima y mnima capturadas. Programar la captura, indicando la fecha y la hora de inicio y de fin as como el nombre del fichero donde se guardarn los datos. Deshabilitar una captura programada. Mostrar los datos capturados. Generar y mostrar grficas con los datos capturados.

Adems se deber de tener en cuenta una serie de restricciones al programar una captura: Se debe indicar el nombre del fichero donde guardar los datos. La fecha y hora de inicio deben ser posteriores a la fecha y hora actuales.

_____________________________________________________________________ Ingeniera Informtica 71 Universidad de Valencia

La fecha y hora de fin de captura deben ser posteriores a la fecha y hora de inicio.

Otras restricciones sern: El intervalo de tiempo de captura no puede modificarse mientras se est realizando una captura (programada o no). Si se est realizando una captura, no se pueden mostrar ni los datos ni la grfica correspondiente a dicha captura hasta que esta no finalice.

_____________________________________________________________________ Ingeniera Informtica 72 Universidad de Valencia

6. Implementacin.

6.1. Implementacin del hardware.


Como se mencion en el apartado de metodologa (captulo 3), antes de la fabricacin del circuito impreso final se crear una placa de prueba para comprobar que la seleccin de los componentes y el diseo del esquema elctrico son correctos. Esta placa de prueba se crea soldando los componentes sobre una tarjeta de montaje segn el esquema diseado. Una vez terminada se realizar un testeo con un multmetro para comprobar las conexiones. Si el diseo es correcto se proceder a la creacin del PCB partiendo del esquema elctrico. Esta tarea se puede dividir en dos fases: 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. Fabricacin y montaje del PCB. En la fabricacin del PCB las mquinas de fabricacin utilizarn los ficheros gerber para obtener el circuito impreso. Una vez se ha fabricado el PCB se soldarn los componentes a l. _____________________________________________________________________ Ingeniera Informtica 73 Universidad de Valencia

El tamao del PCB es de 7 x 15 cm. y, aunque se podra haber hecho ms pequeo, la razn por la que se han establecido estas medidas es que en los ensayos realizados con la placa de pruebas, al acercar al sensor una fuente de fro o de calor, el resto de componentes tambin sufran las variaciones de temperatura, por lo que se pens que sera mejor alejar el sensor del resto de elementos de la placa. Tanto la colocacin de los componentes como el rutado de las pistas se realizarn de forma que se puedan conseguir los siguientes objetivos: Minimizar la longitud de las pistas. Minimizar el nmero de pistas. Minimizar el nmero de cruces entre pistas. Facilitar el soldado de los componentes. Facilitar el acceso al interruptor y al conector USB.

El elemento central del diseo es el microcontrolador, el emplazamiento del resto de componentes depender de l, hacindose en funcin de la conexin de cada uno de estos elementos con el micro y poniendo especial atencin al interruptor y al conector USB, de forma que se pueda acceder a ellos con facilidad. Para la implementacin del circuito se utilizarn dos caras de trazado de pistas, Top y Bottom. La anchura de las pistas ser de 0,6 mm. y viene impuesta por la mquina de fabricacin de los PCBs. El rutado de las pistas se har de forma manual. Una vez finalizado el diseo es necesario generar los ficheros de diseo gerber para enviarlos a fbrica. Posteriormente, con el PCB llegado de fbrica se realizar una inspeccin visual para detectar posibles defectos de fabricacin y se comprobarn mediante un multmetro las conexiones. El soldado de los componentes se realizar de forma manual mediante un soldador de montaje superficial. Terminada la soldadura de los componentes, se realizar una inspeccin de las conexiones mediante un multmetro para comprobar que no existen cortocircuitos entre las seales y que cada pata de los componentes est correctamente soldada. En caso de cortocircuito o de

_____________________________________________________________________ Ingeniera Informtica 74 Universidad de Valencia

mala conexin siempre existe la posibilidad de correccin aplicando ms estao o retirndolo con el soldador. El diseo del circuito impreso, los componentes y el pinout pueden verse en el captulo 10.

6.2. Implementacin del firmware.

6.2.1. Programacin del microcontrolador.


Para la programacin del microcontrolador se utiliza el compilador de C CSS, concretamente la versin 3.235 que incorpora bibliotecas para el uso de USB. Antes de empezar a escribir nuestro programa hay que modificar algunas caractersticas de los archivos que proporciona el compilador y que utilizaremos en el proyecto. Estos archivos contienen la definicin de los registros y funciones USB. Estos ficheros son: 18F2550.h: Fichero de cabecera estndar para dispositivos PIC18F2550. pic18_usb.h: Capa hardware de los dispositivos PIC18Fxx5x. USB.C: Manejador de peticiones USB estndar. USB.H: Prototipos de funciones, definiciones y variables globales USB.

Para que la conversin A/D se realice de forma correcta, es necesario aadir en el fichero 18F2550.h la directiva #device PIC18F2550 ADC=10. Esta directiva indica el nmero de bits que debe devolver la funcin read_adc(). Es necesario indicarlo porque en caso contrario slo nos devolvera los 8 bits ms significativos de la conversin A/D (registro ADRESH). En la conversin A/D se utiliza justificacin a izquierdas por lo que, de los 10 bits resultantes de la conversin, se almacenan los 8 ms significativos en ADRESH y los 2 menos significativos en los dos bits ms significativos del registro ADRESL.

_____________________________________________________________________ Ingeniera Informtica 75 Universidad de Valencia

En el fichero pic18_usb.h se deber cambiar la velocidad del dispositivo de velocidad completa a baja velocidad:
#ifndef USB_USE_FULL_SPEED #define USB_USE_FULL_SPEED #endif FALSE

Al no ser el perifrico HID tambin hay que hacer un cambio en USB.H:


#ifndef USB_HID_DEVICE #define USB_HID_DEVICE #endif FALSE

Una vez hechas estas modificaciones, empezamos a desarrollar el programa que ejecutar el microcontrolador. Lo primero ser establecer la palabra de configuracin seleccionando las opciones adecuadas: oscilador en modo HSPLL con los valores de pre y post-escala adecuados para obtener una frecuencia de 6 MHz en el mdulo USB, habilitacin del regulador interno del mdulo USB y deshabilitacin del watchdog timer que no vamos a utilizar en el proyecto. Por ltimo, para terminar con las definiciones, se habilita el punto final 1 para que soporte transferencias de interrupcin de entrada. El programa, al conectar el perifrico al host y llegarle alimentacin, har que se encienda el led para despus de unos segundos apagarse. Lo siguiente que ocurrir ser la inicializacin de los registros USB antes del comienzo del proceso de enumeracin y si este finaliza correctamente, se volver a encender el led y se configurar el mdulo A/D. A continuacin, empezar la conversin A/D y una vez terminada, se enviarn los datos a travs del bus USB. La conversin y el envo de datos se realizar continuamente insertando un retraso de 60 us entre cada conversin, ya que, como se coment en el diseo, la adquisicin se realiza de forma manual. El diagrama de bloques del programa puede verse en la siguiente figura:

_____________________________________________________________________ Ingeniera Informtica 76 Universidad de Valencia

Led ON / Led OFF Inicializacin Registros USB Enumeracin

Dispositivo Enumerado??

No

Si

Led ON Configuracin Mdulo A/D

Conversin A/D Transmisin de datos

FIN

Figura 6.1: Diagrama de bloques del programa Se ha creado tambin un fichero de cabecera (TempUSB.h) que contiene los descriptores del dispositivo USB siguiendo el esquema de la figura 5.20. Adems de estos se han incluido dos descriptores de cadena que indican el fabricante del producto y su descripcin. Una vez se tiene todo esto, se compila el proyecto y el fichero HEX resultante se carga en el microcontrolador utilizando para ello tanto la placa como el programa EduMic. En primer lugar, se conecta la placa al ordenador mediante un cable paralelo. A continuacin, se conecta el alimentador y se encienden ste y la placa. Para cargar el programa en el micro, se ejecuta el programa EduMic y se selecciona el microcontrolador (Dispositivo PIC18F2550usb). Se abre el fichero HEX y se marcan las opciones Memoria de Programa y Palabra de Configuracin, asegurndose de que el conmutador SW18 de la placa est en la posicin _____________________________________________________________________ Ingeniera Informtica 77 Universidad de Valencia

PROGRAMA. Por ltimo, se selecciona la opcin Escribir [Edu]. De esta forma, ya tenemos el microcontrolador programado y podemos utilizarlo en nuestro dispositivo.

6.2.2. Creacin del fichero INF.


Cuando el sistema operativo detecta un nuevo perifrico USB, intenta determinar qu driver debe utilizar para comunicarse con el dispositivo y una vez determinado, cargar el driver seleccionado. Esto lo lleva a cabo el Administrador de Dispositivos, que utiliza instaladores de clase y dispositivo y archivos INF para encontrar el driver adecuado para cada dispositivo. El Administrador de Dispositivos adems de ser el responsable de instalar, configurar y desinstalar dispositivos, tambin se encarga de aadir informacin sobre cada dispositivo en el registro del sistema, el cual contiene informacin sobre el hardware y el software instalados en el sistema. Los instaladores de clase y dispositivo son DLLs. Windows tiene una serie de instaladores por defecto que el Administrador de Dispositivos utiliza para localizar y cargar drivers para dispositivos pertenecientes a clases soportadas por el sistema operativo (como HID). El archivo INF es un fichero de texto que contiene informacin que ayuda a Windows a identificar el dispositivo. Este archivo indica al sistema operativo que drivers debe utilizar y que informacin debe almacenar en el registro. [Axe99] El dispositivo desarrollado no pertenece a una de las clases USB por defecto que soporta el sistema operativo as que tanto el instalador de clase como el archivo INF habr que crearlos. Sobre el archivo DLL que se encargar de instalar una nueva clase en el Administrador de Dispositivos se hablar en prximo apartado. Cuando se conecta el dispositivo al ordenador, Windows muestra el mensaje Nuevo Hardware Encontrado. Si el perifrico nunca ha sido enumerado en el sistema, el sistema operativo necesita localizar un driver para l. Al ser la primera vez que se _____________________________________________________________________ Ingeniera Informtica 78 Universidad de Valencia

conecta el dispositivo y no ser de una clase genrica, Windows no encontrar un archivo INF que pueda utilizar para asignarle un driver y lanzar el Asistente para Agregar Nuevo Hardware donde se puede indicar la localizacin del archivo INF necesario para la instalacin del perifrico. Una vez localizado, se carga el driver indicado, se aade el perifrico en el Administrador de Dispositivos y se indica al usuario que la instalacin del dispositivo ha finalizado de forma correcta. En el Administrador de Dispositivos se puede ver tambin la descripcin del dispositivo y el fabricante, obtenidos del archivo INF. Adems, durante esta operacin, se ha copiado el fichero INF (tempusb.inf) en el directorio \windows\inf, el driver (mchpusb.sys) en \windows\system32\drivers y el instalador de clase (tempusbci.dll) en \windows\system32, de forma que la prxima vez que se conecte el dispositivo, el ordenador lo reconocer sin necesidad de indicar ningn dato. La informacin en un archivo INF est dividida en secciones. Cada seccin puede ser identificada porque su nombre est entre corchetes. Las principales secciones son: Version: especifica el sistema operativo para el que est destinado el fichero INF. Para dispositivos que utilizan WDM (Windows Driver Model) drivers, el valor puede ser $Windows 98$, $Windows NT$ o $Chicago$, independientemente del sistema operativo que est instalado en el ordenador. En esta seccin se indica tambin el nombre de la clase de los dispositivos instalados con este fichero as como un identificador de clase que es utilizado por el registro del sistema para identificar a los dispositivos pertenecientes a esta clase. ClassInstall: en esta seccin se indica si se ha de instalar una nueva clase. El Administrador de Dispositivos nicamente procesa la seccin si una clase de dispositivo an no est instalada en el sistema. Aqu ser donde indicaremos el icono, el nombre y la descripcin de la clase as como el nombre del archivo DLL (tempusbci.dll) que instalar la nueva clase en el Administrador de Dispositivos. _____________________________________________________________________ Ingeniera Informtica 79 Universidad de Valencia

Manufacturer: contiene el identificador de vendedor y producto (USB\VID_04D8&PID_0011). Cuando el Administrador de Dispositivo encuentra una coincidencia entre estos valores y los identificadores obtenidos del dispositivo durante la enumeracin, sabe que ha encontrado el archivo INF correcto.

DestinationDirs: indica el directorio o directorios donde se copiarn los ficheros. Strings: define las cadenas referenciadas en las otras secciones.

El fichero INF creado (tempusb.inf) puede verse en el apndice B.

6.2.3. Creacin de una nueva clase.


El perifrico desarrollado no pertenece a ninguna de las clases USB definidas, as que lo que haremos ahora es crear una nueva clase que aparezca en el Administrador de Dispositivos con un icono personalizado. Para esto, ha sido necesario crear una DLL que exporte ese icono. Se necesita para ello el DDK (Driver Development Kit) de Microsoft. Esta herramienta incluye muchos ejemplos y se ha utilizado uno de ellos para crear la DLL. El ejemplo utilizado se llama Toaster y es un ejemplo genrico sencillo con cdigo comentado que puede ser usado para aprender a escribir drivers, filtros, ficheros INF o cmo instalar una clase o un paquete entre otras cosas. Incluye varios directorios que contienen todos estos ficheros, aunque el nico interesante para nosotros es el directorio classinstaller. Dentro de este directorio sustituiremos el icono del ejemplo por el que nosotros vayamos a utilizar, en este caso el icono se llama icon.ico, y el fichero tostrcls.def lo sustituiremos por otro llamado tempuspci.def que contendr el siguiente cdigo:
LIBRARY TEMPUSBCI EXPORTS TempUSBClassInstaller

_____________________________________________________________________ Ingeniera Informtica 80 Universidad de Valencia

El resto de ficheros del directorio no hace falta sustituirlos pero si que es necesario realizar algunos cambios en ellos (bsicamente es cambiar el nombre de la clase utilizada en el ejemplo por el que utilizaremos nosotros y que es TempUSBClassInstaller). De esta forma, en el fichero sources habr que poner la lnea TARGETNAME=tempusbci, y en classinst.c habr que sustituir el nombre, quedando de la siguiente forma:
DWORD CALLBACK TempUSBClassInstaller( IN DI_FUNCTION IN HDEVINFO ) InstallFunction, DeviceInfoSet, OPTIONAL

IN PSP_DEVINFO_DATA DeviceInfoData

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

Figura 6.2: Nueva clase en el Administrador de Dispositivos

6.3. Implementacin del software.


Para la comunicacin entre el perifrico y la aplicacin se utiliza una API (mpusbapi.dll) que proporciona Microchip y que contiene un conjunto de funciones que permiten que se lleve a cabo esta comunicacin. Entre las funciones que contiene se utilizarn nicamente las siguientes:
void* _MPUSBOpen(DWORD instance, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved) DWORD _MPUSBRead(void* handle, void* pData, DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds) bool _MPUSBClose(void* handle)

La primera funcin permite establecer una tubera pasndole como parmetros el identificador de vendedor y producto (para identificar al dispositivo), el punto final con el que nos queremos comunicar y la direccin de los datos. La siguiente funcin nos permitir leer los datos y la ltima cerrar la tubera. _____________________________________________________________________ Ingeniera Informtica 82 Universidad de Valencia

El programa consta de un mdulo principal que contiene la definicin de las funciones que se comunicarn con el perifrico (abrir y cerrar la tubera, leer y pasarle los datos al formulario principal) y que al ejecutarse crea y muestra automticamente el formulario principal. El resto de formularios sern mostrados a peticin del cdigo del programa, para lo que previamente tendrn que ser creados. Los formularios pueden cargarse al inicio del programa, cuando ste se carga en memoria, de tal forma que podamos hacer referencia a ellos desde cualquier punto que nos convenga. Si se hace esto, no tenemos que preocuparnos de la creacin y liberacin de los formularios. Sin embargo, el programa consumir una cantidad de memoria muy superior a la que empleara si los formularios se fuesen creando y liberando a medida que fueran necesarios. Otra desventaja de la creacin automtica es que la aplicacin tardar mucho ms tiempo en cargarse y mostrarse activa. Cuntos ms formularios se tengan que crear, el programa tardar ms tiempo en ponerse en funcionamiento. Por estas razones se ha optado por crear dinmicamente los formularios que el usuario va necesitando, de manera que un formulario se crea cuando el usuario lo solicita (interactuando con la interfaz) y cuando lo cierra, este formulario se destruye y se libera la memoria que estaba ocupando. La aplicacin est formada por tres formularios: TempUSB, Estadisticas y ProgCaptura. Los principales son los dos primeros, el ltimo nicamente se encarga de comprobar que son correctos los datos introducidos por el usuario para programar una captura y de pasrselos a los otros dos. El formulario principal es TempUSB y es el encargado de abrir y cerrar la tubera y de leer los datos a travs de esta utilizando para ello las funciones definidas en el mdulo principal. Al crearse el formulario, abre la tubera y pone el timer en funcionamiento:

_____________________________________________________________________ Ingeniera Informtica 83 Universidad de Valencia

private void TempUSB_Load(object sender, EventArgs e) { usbapi.OpenPipe(); timer1.Start(); }

y al cerrarse, para el timer y cierra la tubera:


private void TempUSB_FormClosed(object sender, FormClosedEventArgs e) { timer1.Stop(); usbapi.ClosePipe(); }

El timer es el que marca el momento de la captura de la temperatura. Cada vez que ha transcurrido el intervalo de tiempo especificado se capturan los datos y se muestran en el formulario principal. El valor por defecto del timer es de 1 segundo pero este valor puede ser cambiado en el formulario Estadisticas. Este formulario es el encargado de llevar a cabo las acciones indicadas por el usuario, como crear un fichero con los datos capturados, mostrarlo o crear una grfica entre otras opciones. Para guardar las temperaturas capturadas y crear las grficas se utiliza Excel, de forma, que ser necesario aadir al proyecto una referencia COM a la librera de objetos de Excel para poder trabajar con el modelo de objetos del mismo. Una vez aadida la referencia, ya se puede empezar a trabajar con Excel.
Excel.Application ExcelApp = new Excel.Application(); Excel.Workbook wbook = ExcelApp.Workbooks.Add(Type.Missing);

_____________________________________________________________________ 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: Instalacin del perifrico en distintas mquinas. Medicin de la temperatura en distintos ambientes. Comprobacin del correcto funcionamiento de la aplicacin software.

7.1. Instalacin del perifrico.


El perifrico se ha probado en varias mquinas con distintos sistemas operativos. El objetivo de estas pruebas era comprobar que el perifrico era reconocido como un dispositivo USB y que todo el proceso de instalacin y comunicacin perifrico-host era correcto.

_____________________________________________________________________ Ingeniera Informtica 85 Universidad de Valencia

Las mquinas donde se han llevado a cabo las pruebas son: Sony Vaio con procesador Intel Pentium M a 1 GHz, memoria RAM de 1 GB y sistema operativo Windows XP Profesional. Compaq con procesador Intel Pentium III a 1 GHz, memoria RAM de 256 MB y sistema operativo Windows XP Home Edition. HP con procesador Intel Pentium IV a 2 GHz, memoria RAM de 512 MB y sistema operativo Windows 2000 Professional. Fujitsu-Siemens con procesador AMD Athlon XP2600+ a 2,1 GHz, memoria RAM de 512 MB y sistema operativo Windows XP Home Edition. En todos ellos al conectar el perifrico al puerto USB se ha detectado nuevo hardware y se ha mostrado el asistente para agregarlo. Se ha indicado la localizacin del fichero INF y la instalacin del driver ha sido correcta, pudiendo ver en el Administrador de Dispositivos como apareca el perifrico. Se ha vuelto ha repetir el proceso en todos ellos y, la segunda vez que se conectaba, lo reconoca de forma automtica sin necesidad de indicar ningn dato. Tambin se ha comprobado que la comunicacin del dispositivo con la aplicacin software era correcta. Para ello simplemente se ha ejecutado la aplicacin y se ha observado que indicaba una temperatura coherente.

7.2. Medicin de la temperatura.


Para comprobar que la adquisicin de los datos por el sensor y su posterior conversin A/D y paso a grados centgrados era correcto se llevaron a cabo mediciones en distintos ambientes y se compar esta temperatura con la marcada por un termmetro analgico. Las pruebas consistieron en medir la temperatura colocando tanto el termmetro como el perifrico en distintos lugares: al sol, a la sombra, cerca de una fuente de _____________________________________________________________________ Ingeniera Informtica 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.

7.3. Comprobacin del software.


Es necesario comprobar que la aplicacin software, adems de mostrar la temperatura por pantalla, tambin realiza de forma correcta el resto de funciones que se indicaron en el diseo, teniendo en cuenta y de forma especial, las restricciones que se indicaron. Las pruebas realizadas consisten en: Comprobar las temperaturas mxima y mnima. Capturar las temperaturas creando un fichero donde se guarden los datos. Programar / desprogramar una captura. Cambiar el intervalo de captura. Ver los datos capturados y la grfica.

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

tiempo en el que tuvo lugar la captura, se realiz de nuevo lo explicado en el prrafo anterior. Se program tambin una captura y se pudo ver que esta comenz y finaliz a la hora establecida, guardndose adems donde se haba indicado. Al comenzar una captura programada, si en ese momento se est realizando una manual, esta ltima para y comienza la programada. Cuando se est realizando una captura programada, se deshabilita la captura manual, sin embargo, cuando se est realizando la captura de forma manual s que es posible programar o desprogramar una captura as como ver si hay alguna ya programada. Tambin se ha comprobado que es necesario introducir todos los datos en el formulario si se quiere realizar una programacin, ya que en caso contrario se muestran mensajes de error. El intervalo de captura marca el tiempo que ha de transcurrir para que se actualice la temperatura. Al realizar una captura (programada o no), se puede comprobar que no es posible cambiar este intervalo, ya que este se deshabilita de forma automtica. Por ltimo se comprob que era posible visualizar datos capturados almacenados en ficheros as como las grficas correspondientes. Si se intenta abrir un archivo que en ese momento est siendo actualizando con datos, se muestra una pantalla de error.

_____________________________________________________________________ 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: Recursos hardware: Hardware necesario para la realizacin del proyecto pero que no forma parte de l. Recursos software: Software necesario para llevar a cabo la realizacin del proyecto pero que no forma parte constituyente de l. Componentes y fabricacin del PCB: Coste de los componentes del circuito impreso y coste de la fabricacin del mismo. Recursos humanos: Mano de obra necesaria para realizar el proyecto.

8.1. Coste de los recursos hardware.


El hardware de desarrollo del sistema consta de un ordenador porttil con las siguientes caractersticas: Microprocesador Pentium M a 1 GHz. Memoria RAM de 1 MB. Disco duro de 40 GB. Monitor de 10,6

_____________________________________________________________________ Ingeniera Informtica 89 Universidad de Valencia

Adems es necesario un soldador de montaje superficial para soldar los componentes a la placa y un multmetro para el testeo del PCB. Tambin se utiliza la tarjeta EduMic para programar el microcontrolador. El coste lo podemos ver en la siguiente tabla: CONCEPTO PC Pentium M 1 GHz Soldador Multmetro Tarjeta EduMic TOTAL PRECIO 1.000,00 21,50 49,15 313,57 1.384,22

Tabla 8.1: Presupuesto de los recursos hardware

8.2. Coste de los recursos software.


El software utilizado en el desarrollo del proyecto consta del sistema operativo, herramientas CAD para el diseo de PCBs, el compilador de C CCS, DDK (Driver Development Kit) de Microsoft, Visual C# para el desarrollo de la aplicacin software, Microsoft Excel y el programa EduMic para programar el microcontrolador. El sistema operativo utilizado es el Windows XP Professional y la herramienta de CAD empleada para el diseo del circuito impreso ha sido el paquete Orcad 9.2. La herramienta DDK para el desarrollo de drivers puede descargarse de forma gratuita desde la pgina de Microsoft. Para el desarrollo de la aplicacin software se ha utilizado el Visual C# Express Edition que es gratuito y se puede descargar tambin desde la pgina de Microsoft. Aunque esta versin no dispone de todas las funcionalidades y potencia del Visual C# es suficiente para el desarrollo del proyecto. Adems del VC# se ha utilizado tambin el Excel en el desarrollo de la aplicacin ya que utilizamos este programa para almacenar los datos adquiridos y generar las grficas. _____________________________________________________________________ Ingeniera Informtica 90 Universidad de Valencia

El programa EduMic que se utiliza junto a la tarjeta EduMic para cargar el programa en el microcontrolador PIC puede descargarse gratuitamente desde su pgina web. El coste desglosado puede verse en la siguiente tabla: CONCEPTO Windows XP Professional Paquete Orcad 9.2 Compilador CCS v. 3.235 Windows Server 2003 SP1DDK Visual C# 2005 Express Edition Microsoft Excel 2002 Programa EduMic v. 2.0 TOTAL PRECIO 284,05 6.000,00 331,86 0,00 0,00 147,00 0,00 6.762,91

Tabla 8.2: Presupuesto de los recursos software

8.3. Coste de los componentes y fabricacin del PCB.


Al realizar antes de la fabricacin del PCB una primera placa de prueba para comprobar el correcto funcionamiento del diseo, el nmero de componentes utilizados est duplicado. El nico elemento del que disponemos slo una unidad es el microcontrolador PIC18F2550, ya que al utilizar zcalos en ambas placas, podemos emplearlo indistintamente en una u otra. Los costes de fabricacin del PCB estn compuestos por los costes de creacin de los fotolitos y el coste de fabricacin del circuito impreso propiamente dicho. Estos costes pueden verse en la siguiente tabla:

_____________________________________________________________________ Ingeniera Informtica 91 Universidad de Valencia

CONCEPTO Resistencias Condensadores cermicos Condensad. electrolticos Cristal 4 MHz Conector USB tipo A Led rojo Regleta hembra Microcontr. PIC18F2550 Switch Sensor LM50 Rollo de estao Cable USB Tipo A - A Fotolitos PCB TOTAL

CANTIDAD 4 4 6 2 2 2 2 1 2 2 1 1 1 1

PRECIO POR UNIDAD 0,02 0,04 0,02 0,22 1,48 0,06 0,51 7,39 0,80 0,42 7,01 2,45 450,00 10,00

PRECIO 0,08 0,16 0,12 0,44 2,96 0,12 1,02 7,39 1,60 0,84 7,01 2,45 450,00 10,00 484,19

Tabla 8.3: Presupuesto de los componentes y el PCB

8.4. Coste de los recursos humanos.


Los recursos humanos en el proyecto corren a cargo del proyectista al que se le aplicar un sueldo de Ingeniero Junior hipottico de 1.500 /mes. El proyecto se ha dividido en tareas cada una con un coste estimado en horas/hombre. No todas estas tareas necesitan de un ingeniero, algunas pueden ser realizadas por un tcnico oficial de 2, en cuyo caso el proyectista tomar su papel. El salario hipottico del tcnico ser de 1.000 /mes. Teniendo en cuenta que un mes tiene 165 horas hbiles, se obtienen los siguientes salarios por hora: Ingeniero Junior: 9,09 /hora Tcnico: 6,06 /hora

_____________________________________________________________________ Ingeniera Informtica 92 Universidad de Valencia

Las tareas realizadas por el ingeniero son el anlisis de requisitos, diseo, implementacin y experimentacin, mientras que el tcnico se encargar nicamente del montaje y testeo de la placa de prueba y del PCB. A continuacin pueden verse las horas dedicadas a cada tarea as como el coste resultante. TAREA Anlisis de requisitos Diseo Implementacin Experimentacin TOTAL HORAS 65 170 210 50 495 COSTE 590,85 1.545,30 1.908,90 454,5 4.499,55

Tabla 8.4: Presupuesto del coste de tareas del ingeniero TAREA Montaje Testeo TOTAL HORAS 4 5 9 COSTE 24,24 30,30 54,54

Tabla 8.5: Presupuesto del coste de tareas del tcnico PERSONAL Ingeniero Tcnico TOTAL HORAS 495 9 504 COSTE 4.499,55 54,54 4.554,09

Tabla 8.6: Coste total de los recursos humanos

8.5. Coste total del proyecto.


Hay que indicar que todos los precios antes mencionados son con IVA incluido, as que una vez vistos todos los gastos derivados de la realizacin del proyecto, el coste total del proyecto quedara de la siguiente forma: _____________________________________________________________________ Ingeniera Informtica 93 Universidad de Valencia

CONCEPTO Recursos hardware Recursos software Componentes y fabricacin del PCB Recursos humanos TOTAL

COSTE 1.384,22 6.762,91 484,19 4.554,09 13.185,41

Tabla 8.7: Coste total del proyecto

_____________________________________________________________________ Ingeniera Informtica 94 Universidad de Valencia

9. Conclusiones y trabajo futuro.

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: Alimentacin por el bus. El estndar USB permite la alimentacin de dispositivos lentos que consumen un mximo de 2,5 W.

_____________________________________________________________________ Ingeniera Informtica 95 Universidad de Valencia

Fcil instalacin. Cuando el usuario conecta el perifrico al ordenador, Windows automticamente lo detecta y carga el driver apropiado. La primera vez que se conecte, Windows pedir al usuario que indique la ubicacin del driver, pero el resto de veces, la instalacin ser automtica. No es necesario ejecutar ningn programa de instalacin ni reiniciar el sistema.

Soportado por varios sistemas operativos. Windows 98 fue el primer sistema operativo Windows en soportar USB y sus sucesores tambin lo soportan. Aunque este proyecto se ha centrado en PCs con sistema operativo Windows, USB tambin es soportado por otros ordenadores como iMac o sistemas operativos como Linux.

La eleccin del bus USB y del microcontrolador PIC18F2550 ha influido tanto en el tamao del perifrico como en su coste. USB dispone de conectores muy sencillos, de tamao reducido y bastante econmicos. Por su parte, el microcontrolador dispone de una serie de caractersticas como un conversor A/D y, en el mdulo USB, regulador, transceiver y resistencias de pull-up internas. Al utilizar estos componentes internos del microcontrolador, disminuye el nmero de componentes necesarios de la placa y, por lo tanto, el tamao y coste de la misma. Respecto a la aplicacin software, se puede decir que lleva a cabo todas las funciones para las que fue diseada, presentando una interfaz de usuario intuitiva y fcil de utilizar. Se puede concluir que los ordenadores actuales utilizan una gama muy amplia de componentes. La interconexin de dichos dispositivos cumple un rol trascendental, donde aquellos ms simples en su instalacin y verstiles en su operacin invaden rpidamente el mercado. Un mercado marcado por los dispositivos Plug and Play, siendo el medio ms utilizado el estndar USB, el cual provee una interfaz nica, prctica y fcil de usar para la gran mayora de perifricos que puede utilizar el ordenador, adems de extender notoriamente la cantidad de dichos dispositivos que se pueden utilizar de forma simultnea.

_____________________________________________________________________ Ingeniera Informtica 96 Universidad de Valencia

Una de las desventajas de USB desde el punto de vista del desarrollador es la complejidad del protocolo aunque, gracias a que su uso est muy extendido, se ha podido comprobar que existen gran cantidad de herramientas que facilitan el desarrollo de perifricos que utilizan ste estndar, pudiendo decir que la nica limitacin en el diseo de estos dispositivos sera la imaginacin de los diseadores.

9.2. Trabajo futuro.


Aunque se han cumplido los objetivos del proyecto, es posible mejorarlo aadindole nuevas funcionalidades. Como trabajo futuro se propone: Aadir nuevos sensores (de humedad, luminosidad,) a la placa, de forma que se puedan conocer ms datos sobre el entorno. Realizar ms estadsticas sobre los datos adquiridos, como el clculo de la media, grficas con varias capturas para poder realizar comparativas, Desarrollar alguna aplicacin de domtica y dependiendo de los valores de los datos adquiridos por los sensores se podran subir/bajar persianas o encender/apagar alguna luz. Tambin se podra utilizar para controlar los valores ambientales en entornos donde se deben vigilar los valores de temperatura, humedad, luminosidad o cualquier otra variable ambiental, activando alguna alarma cuando los valores de estas variables se salgan de rango.

_____________________________________________________________________ Ingeniera Informtica 97 Universidad de Valencia

_____________________________________________________________________ Ingeniera Informtica 98 Universidad de Valencia

Parte II Planos y especificaciones

99

100

10. Planos del PCB.

10.1. Esquema elctrico.

_____________________________________________________________________ Ingeniera Informtica 101 Universidad de Valencia

_____________________________________________________________________ Ingeniera Informtica 102 Universidad de Valencia

10.2. Listado de componentes.


En la siguiente tabla se muestran los datos de los componentes a los que hace referencia el circuito impreso. REFERENCIA R1 R2 C1 C2, C3 C4 C5 U1 S1 D1 CN1 XT1 Q1 DESCRIPCION Resistencia de 1K Resistencia de 10K Condensador electroltico de 1 F Condensadores cermicos de 27 pF Condensador electroltico de 47 F Condensador electroltico de 10 F Microcontrolador PIC18F2550 Switch Led Rojo Conector USB tipo A Cristal de 4 MHz Sensor de temperatura LM50 Tabla 10.1: Listado de componentes

_____________________________________________________________________ Ingeniera Informtica 103 Universidad de Valencia

10.3. Diseo del PCB. Caras Top y Bottom.

_____________________________________________________________________ Ingeniera Informtica 104 Universidad de Valencia

10.4. Pinout.
SEAL ~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 RC0/T1OSO/T13CKI RC1/T1OSI/CCP2/~UOE RC2/CCP1 Vusb RC4/D-/VM RC5/D+/VP RC6/TX/CK RC7/RX/DT/SDO Vss Vdd RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2/VPO RB4/AN11/KBI0 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD PIN 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

Tabla 10.2: Pinout del microcontrolador PIC18F2550 _____________________________________________________________________ Ingeniera Informtica 105 Universidad de Valencia

SEAL Vcc -Data +Data GND

PIN 1 2 3 4

Tabla 10.3: Pinout del conector USB

_____________________________________________________________________ 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: La seguridad del proyecto, para que no sufra daos o se destruya, y las personas que estn en contacto con l, antes y despus de su realizacin. La descripcin de los materiales empleados, tanto por su carcter tcnico y calidad como por su coste econmico. La realizacin de los trabajos que hay que llevar a cabo determinados de acuerdo a las categoras profesionales, as como a tiempos y procedimientos de ejecucin. La calidad a la hora del montaje, con las prescripciones de la ejecucin y de la utilizacin del proyecto, y su control de calidad. La subcontratacin, normas a seguir por el contratista y la contrata. Descripcin de procedimientos legales en caso de incumplimiento de alguna de las partes, desacuerdo o contratiempos que pudieran surgir y la forma de relacionarlos.

_____________________________________________________________________ Ingeniera Informtica 107 Universidad de Valencia

11.1. Condiciones econmicas.


Para la adquisicin de los materiales necesarios para el desarrollo normal del proyecto, debern observarse siempre los criterios de calidad-precio, siempre y cuando los materiales cumplan los requisitos especificados. En el caso de las subcontratas, la demora en la entrega de las piezas podr suponer un agravio econmico para la subcontrata, por cuanto el contratista se reserva el derecho a aceptar o no las piezas entregadas fuera de plazo. Los fallos que pudieran ser cometidos durante el mecanizado de las piezas, por negligencia o mala interpretacin de los planos, no supondrn en ningn momento agravio por parte de la empresa contratista. No sern abonados ni materiales, ni coste-hora extra por los motivos anteriormente citados.

11.2. Especificaciones tcnicas.

11.2.1. Condiciones de trabajo del sistema.


Est previsto que el sistema realice su trabajo en un entorno controlado. En un entorno incontrolado, el sistema se ver forzado a condiciones extremas de temperatura y humedad. Se supondr entonces que en dichos entornos la temperatura es un factor importante y habr que asegurarse de que la temperatura ambiente no se salga del rango entre -40 y 85 C. En cuanto a las posibles interferencias electromagnticas, al estar en un entorno controlado, tampoco debern ser de consideracin, pero en el caso de que hubiera alguna, es aconsejable que se proteja el sistema de estas fuentes de ruido alejndolo de dichas fuentes o aislando el sistema mediante algn habitculo metlico o planos conectados a tierra.

_____________________________________________________________________ Ingeniera Informtica 108 Universidad de Valencia

11.2.2. Requerimientos de las seales del sistema.


USB utiliza un cable de 4 conductores, de los cuales dos de ellos son de alimentacin y los otros dos transmiten/reciben una seal de datos, en modo de tensin diferencial. Los conductores de alimentacin se etiquetan como Vbus y GND y entregan una tensin continua de 5V y 500mA mximo. La seal de alimentacin deber cumplir las condiciones mostradas en la siguiente tabla. Smbolo Vcc Icc Descripcin Tensin de alimentacin Corriente de alimentacin Min. 4,75 Max. 5,25 500 Unidad V mA

Tabla 11.1: Condiciones de la seal de alimentacin Los conductores de transmisin/recepcin de datos se etiquetan como D+ y D-. Como hemos mencionado, el parmetro a medir es la tensin diferencial entre los dos hilos. Salidas Diferencial 1 Diferencial 0 D+ 2,8 V D- 0,3 V D- > 2,8 V D+ 0,3 V Entradas D+ 2 V D+ - D- 0,2 V D- 2 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

11.3. Caractersticas de los materiales.

11.3.1. Especificaciones de los circuitos integrados.


El circuito integrado que se corresponde con el microcontrolador se colocar sobre un zcalo. Esto permite una fcil sustitucin en caso de rotura. Si se desea utilizar otros integrados distintos a los especificados, se deber de tener especial cuidado en dos factores: Que su rango de alimentacin coincida con el especificado. Que coincida el patillaje.

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.

Tabla 11.3: Caractersticas elctricas del PIC18F2550

_____________________________________________________________________ Ingeniera Informtica 110 Universidad de Valencia

Sensor de temperatura LM50 El sensor de temperatura utilizado es el LM50 de la empresa National Semiconductor en encapsulado SOT de 3 pines. Este sensor permite medir temperaturas entre -40 y 125 C utilizando tensin de alimentacin positiva. La tensin de salida es linealmente proporcional a la temperatura en grados centgrados por lo que cada 10 mV de tensin de salida equivale a 1C. Smbolo +Vs Vout Iout Descripcin Tensin de alimentacin Tensin de salida Corriente de salida Min. 4,5 -1,0 Max. 10 +Vs + 0,6 10 Unidad V V mA

Tabla 11.4: Caractersticas elctricas del sensor LM50

11.3.2. Componentes pasivos y conductores.


Resistencias Las resistencias fijadas son de 1 y 10 K y un 10% de tolerancia de tecnologa de montaje superficial en formato 1206. Debern tener un lmite de funcionamiento normal entre -40 y 85C. Para el manejo de resistencias en circuitos impresos existe una normativa que se puede seguir. Condensadores Los condensadores utilizados son dos cermicos de 27 pF para la seal de reloj y tres electrolticos de 1, 10 y 47 F. Deben cumplir las normas descritas para las resistencias y adems la siguiente norma: UNE 20 543 85: Condensadores fijos utilizados en los equipos electrnicos. Especificaciones generales.

_____________________________________________________________________ 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.

Figura 11.1: Dimensiones del conector USB tipo A USB requiere de un cable de 4 conductores: dos encargados de la alimentacin y dos cables para envo y recepcin de datos. La seccin de los conductores de alimentacin vara entre 20 y 26 AWG, y la de los cables de datos es 28 AWG. En LS no es obligatorio que los conductores de seal estn trenzados entre s. En F/H-S esto s es obligatorio. Estos requerimientos influyen en la distribucin espacial de los conductores en el interior del cable USB, as como en el grosor y la longitud mxima de ste. En los dispositivos LS la longitud de un tramo de cable no podr exceder los 3 metros, y en dispositivos FS no podr ser mayor de 5 metros. Se podr hacer uso de alargadores, pero para ello ser necesario ubicar un repetidor entre cada tramo.

_____________________________________________________________________ Ingeniera Informtica 112 Universidad de Valencia

Tanto en FS como en LS los cables de alimentacin nunca estarn trenzados. Obligatoriamente para ambos, el cable deber contar con un apantallamiento metlico de aluminio-polister y tambin con un cable trenzado de cobre de seccin 28 AWG, para que dote de rigidez al cable final. Adems, los cables FS contarn con un segundo apantallamiento, que consistir en una malla de cobre estaada alrededor de todo el cable. Finalmente, y como ltima capa, nos encontramos la cubierta exterior de PVC.

11.4. Condiciones de ejecucin.

11.4.1. Fabricacin del PCB.


Para la elaboracin del PCB se deber recurrir a una empresa especializada en la fabricacin de PCBs. Esto se debe a la tecnologa utilizada que hace necesaria la utilizacin de maquinaria industrial precisa. Para una fabricacin correcta, el fabricante deber garantizar los parmetros tecnolgicos que aparece en la siguiente tabla. PARAMETRO Dimetro mnimo de taladro Corona mnima Margen mnimo de la mscara con el pad de cobre Anchura mnima del conductor capas externas Espacio mnimo entre conductores capas externas Distancia mnima del conductor al borde del circuito impreso VALOR 0,5 mm 0,2 mm 0,15 mm 0,25 mm 0,2 mm 0,3 mm

Tabla 11.5: Parmetros requeridos para la fabricacin del PCB

_____________________________________________________________________ Ingeniera Informtica 113 Universidad de Valencia

Se requiere el cumplimiento de la normativa que a continuacin se detalla: DIN 40801: Espesores, taladros y fundamentos de los circuitos impresos. DIN 40802: Materiales base de las pistas. UNE 20 620: Materiales base para circuitos impresos. UNE 20 621 partes 4 y 5: Circuitos impresos. Diseo y utilizacin de placas impresas.

11.4.2. Montaje de componentes.


Una vez se ha obtenido el circuito impreso, se deben emplazar los componentes. Antes del montaje de los componentes se realizar una verificacin de pistas visual y despus, una verificacin mediante un multmetro de cada pista y desde sus diferentes extremos para comprobar que hay conexin. Para la soldadura y montaje de componentes se deber de tener en cuenta el estao y el soldador. Se utilizar un estao formado por un 60% de estao y un 40% de plomo, como establece la norma DIN 1707. Se recomienda el uso de hilo de estao enrollado de 1 mm. de grosor. Respecto al soldador, se utilizar uno de como mnimo 30 W, pero se recomienda de 50 - 60 W. Tendr que ser de punta fina y que sta est limpia. Se recomienda el uso de porta-soldador con una almohadilla humedecida para la limpieza de la punta del soldador de excesos de estao. Los elementos sern soldados en el siguiente orden: resistencias y condensadores, zcalos, conectores de bus plano y circuitos integrados.

_____________________________________________________________________ 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> // Configuracin de USB y descriptores para este dispositivo

#define LED PIN_B7 #define LED_ON output_high #define LED_OFF output_low void main(void) { int16 buffer[1] = 0; LED_ON(LED); delay_ms(2000); LED_OFF(LED); usb_init(); // Inicializamos los registros USB usb_wait_for_enumeration(); // Esperamos hasta terminar la enumeracin if (usb_enumerated()) { delay_ms(2000); LED_ON(LED); // Si el dispositivo est configurado

_____________________________________________________________________ Ingeniera Informtica 117 Universidad de Valencia

/****************************************************************** * Inicializacin de los puertos y del mdulo A/D ******************************************************************/ SET_TRIS_A(0xFF); // Puerto A de entrada

setup_adc_ports(AN0_TO_AN1 | VSS_VDD); // ADCON1 setup_adc(ADC_CLOCK_DIV_8); // ADCON2.ADCS[0-2] set_adc_channel(1); while (TRUE) { delay_us(60); buffer[0] = read_adc(); } } }

// Leemos el resultado de la conversin

usb_put_packet(1, buffer, 1, USB_DTS_TOGGLE); // Enviamos 1 byte del EP1 al PC

_____________________________________________________________________ Ingeniera Informtica 118 Universidad de Valencia

TempUSB.h
#IFNDEF __USB_DESCRIPTORS__ #DEFINE __USB_DESCRIPTORS__ #include <usb.h> #DEFINE USB_TOTAL_CONFIG_LEN 25 // Configuracin + interface + endpoint

/****************************************************************** * 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}; // Dnde comienza cada cadena

#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET) char const USB_STRING_DESC[ ] = { // String 0 4, // Tamao de la cadena USB_DESC_STRING_TYPE, 0x09, 0x04, // String 1 --> Fabricante 8, // Tamao de la cadena USB_DESC_STRING_TYPE, 'A', 0, 'R', 0, 'Z', 0, // String 2 --> Producto 60, // Tamao de la cadena USB_DESC_STRING_TYPE, 'S', 0, 'e', 0, 'n', 0, 's', 0, 'o', 0, 'r', 0, ' ', 0, 'd', 0, 'e', 0, ' ', 0, 'T', 0, 'e', 0, 'm', 0, // Tipo de descriptor (STRING = 0x03)

_____________________________________________________________________ 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; using DWORD = System.UInt32; namespace TempUSB { unsafe public class TempUSBAPI { #region Definicin de los Strings: VID_PID y EndPoint string vid_pid_norm = "vid_04d8&pid_0011"; string in_pipe = "\\MCHP_EP1"; #endregion #region Funciones importadas de la DLL: mpusbapi.dll [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBGetDLLVersion(); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBGetDeviceCount(string pVID_PID); [DllImport("mpusbapi.dll")] private static extern void* _MPUSBOpen(DWORD instance, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBRead(void* handle, void* pData, DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBWrite(void* handle, void* pData, DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds);

// Clase para importar DLL

_____________________________________________________________________ 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; // Lee los datos del dispositivo y devuelve la temperatura

byte* receive_buf = stackalloc byte[1]; DWORD RecvLength = 1; ReceivePacket(receive_buf, &RecvLength); valor = receive_buf[0]; result = (float)(valor * 500); result = result / 1024; return result; } } }

_____________________________________________________________________ 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("###.#"); // Datos de una captura programada

_____________________________________________________________________ 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; // Hay una captura programada

// La fecha y hora de inicio de la captura programada coinciden con la actual if ((this.datosProg.ini == DateTime.Now) && (fich_abierto == false)) { estadist.wbook = estadist.ExcelApp.Workbooks.Add(Type.Missing); estadist.wbook.SaveAs(this.datosProg.fich, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); ((Excel.Worksheet)estadist.wbook.Sheets[3]).Delete(); ((Excel.Worksheet)estadist.wbook.Sheets[2]).Delete(); ((Excel.Worksheet)estadist.wbook.Sheets[1]).Name = "TempUSB"; estadist.wbook.Save(); estadist.wbook.Close(true, Type.Missing, Type.Missing); estadist.ExcelApp.Quit(); estadist.ini_valores_captura = true; estadist.num_capturas = 0; estadist.finCaptura.Enabled = true; estadist.capturar.Enabled = false; estadist.programarCaptura.Enabled = false; estadist.intervaloCapt.Enabled = false; fich_abierto = true; } // La fecha y hora de fin de captura programada coinciden con la actual if (this.datosProg.fin == DateTime.Now) { estadist.finCaptura_Click(estadist.finCaptura, e); estadist.captura_programada = false; fich_abierto = false; } }

_____________________________________________________________________ Ingeniera Informtica 128 Universidad de Valencia

if (estadist.finCaptura.Enabled == true) // Se guardan los datos en un fichero { if (estadist.programarCaptura.Enabled == false) estadist.fichero = this.datosProg.fich; estadist.wbook = estadist.ExcelApp.Workbooks.Open(estadist.fichero, 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 wsheet = (Excel.Worksheet)estadist.wbook.ActiveSheet; if (estadist.ini_valores_captura == true) { wsheet.Cells[6, 1] = "Tiempo (seg)"; wsheet.Cells[6, 3] = "Temperatura (C)"; wsheet.Cells[2, 6] = "Mnima"; min_captura = temp; wsheet.Cells[2, 7] = min_captura; wsheet.Cells[3, 6] = "Mxima"; max_captura = temp; wsheet.Cells[3, 7] = max_captura; wsheet.Cells[1, 1] = "Fecha"; wsheet.Cells[2, 1] = "Inicio Captura"; wsheet.Cells[3, 1] = "Fin Captura"; wsheet.Cells[4, 1] = "Nmero Capturas"; DateTime date = DateTime.Now; wsheet.Cells[1, 3] = date.ToLongDateString(); wsheet.Cells[2, 3] = date.ToLongTimeString(); estadist.ini_valores_captura = false; } if (temp < min_captura) { min_captura = temp; wsheet.Cells[2, 7] = min_captura; } if (temp > max_captura) { max_captura = temp; wsheet.Cells[3, 7] = max_captura; } int tiempo = (timer1.Interval * estadist.num_capturas) / 1000; wsheet.Cells[estadist.num_capturas + 7, 1] = tiempo; wsheet.Cells[estadist.num_capturas + 7, 3] = temp; estadist.num_capturas++; estadist.wbook.Save(); estadist.wbook.Close(true, Type.Missing, Type.Missing); estadist.ExcelApp.Quit(); } timer1.Interval = estadist.intervalo_capt; }

_____________________________________________________________________ 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; } // Datos de una captura programada

_____________________________________________________________________ Ingeniera Informtica 131 Universidad de Valencia

private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); DateTime date = DateTime.Now; hora.Text = date.ToLongTimeString(); timer1.Enabled = true; } // Al pinchar sobre el botn Capturar, comienza la captura de los datos private void capturar_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Title = "Guarda Como"; saveFileDialog1.Filter = "Archivos de Microsoft Excel|*.xls"; saveFileDialog1.FilterIndex = 1; DialogResult dRes = saveFileDialog1.ShowDialog(); if (dRes == DialogResult.OK) { fichero = saveFileDialog1.FileName; // Se crea un fichero Excel con el nombre indicado wbook = ExcelApp.Workbooks.Add(Type.Missing); wbook.SaveAs(fichero, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); ((Excel.Worksheet)wbook.Sheets[3]).Delete(); ((Excel.Worksheet)wbook.Sheets[2]).Delete(); ((Excel.Worksheet)wbook.Sheets[1]).Name = "TempUSB"; wbook.Save(); wbook.Close(true, Type.Missing, Type.Missing); ExcelApp.Quit(); ini_valores_captura = true; num_capturas = 0; finCaptura.Enabled = true; capturar.Enabled = false; intervaloCapt.Enabled = false; } else if (dRes == DialogResult.Cancel) saveFileDialog1.Dispose(); } // Se pulsa el botn de fin de captura public void finCaptura_Click(object sender, EventArgs e) { DateTime date = DateTime.Now; if ((captura_programada == true) && (programarCaptura.Enabled == false)) fichero = datosProg.fich;

_____________________________________________________________________ Ingeniera Informtica 132 Universidad de Valencia

wbook = ExcelApp.Workbooks.Open(fichero, 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 wsheet = (Excel.Worksheet)wbook.ActiveSheet; wsheet.Cells[3, 3] = date.ToLongTimeString(); wsheet.Cells[4, 3] = num_capturas; if (programarCaptura.Enabled == false) programarCaptura.Enabled = true; intervaloCapt.Enabled = true; capturar.Enabled = true; finCaptura.Enabled = false; // Generacin de la grfica int fila = num_capturas + 6; string rng = "C7:C" + fila.ToString(); Excel.Range rango = wsheet.get_Range(rng, Type.Missing); rango.NumberFormat = "00.0"; wsheet.get_Range("G2:G3", Type.Missing).NumberFormat = "00.0"; Excel.Chart graf = (Excel.Chart)wbook.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); graf.Name = "TempUSB Grafica"; graf.SetSourceData(rango, Excel.XlRowCol.xlColumns); graf.ChartType = Excel.XlChartType.xlLineMarkers; graf.HasLegend = false; graf.HasTitle = false; Excel.Series serie = (Excel.Series)graf.SeriesCollection(1); serie.XValues = wsheet.get_Range("A7", "A" + fila.ToString()); Excel.Axis ejeX; ejeX = (Excel.Axis)graf.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); ejeX.HasTitle = true; ejeX.AxisTitle.Text = "Tiempo (mseg)"; Excel.Axis ejeY; ejeY = (Excel.Axis)graf.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); ejeY.HasTitle = true; ejeY.AxisTitle.Text = "Temperatura (C)"; graf.SizeWithWindow = true; wbook.Save(); wbook.Close(true, Type.Missing, Type.Missing); ExcelApp.Quit(); fichero = null; }

_____________________________________________________________________ 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

// Abre el formulario para programar una captura private void programarCaptura_Click(object sender, EventArgs e) { ProgCaptura progCapt = new ProgCaptura(); progCapt.captura_programada = this.captura_programada; if (this.captura_programada == true) progCapt.datosProg = this.datosProg; if (progCapt.ShowDialog() == DialogResult.OK) this.datosProg = progCapt.datosProg; this.captura_programada = progCapt.captura_programada; progCapt.Dispose(); } // Permite cambiar el intervalo de captura (por defecto es 1 seg) private void intervaloCapt_SelectedIndexChanged(object sender, EventArgs e) { switch (intervaloCapt.Text) { case "1 seg": intervalo_capt = 1000; break; case "3 seg": intervalo_capt = 3000; break; case "30 seg": intervalo_capt = 30000; break; case "1 min": intervalo_capt = 60000; break; case "5 min": intervalo_capt = 300000; break; case "10 min": intervalo_capt = 600000; break; default: break; } } } }

_____________________________________________________________________ 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; // Indica si est programada una captura

_____________________________________________________________________ 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

// Si la fecha de fin de captura es anterior a la de inicio, se muestra // una ventana de error if (iniProg.Value >= finProg.Value) { MessageBox.Show("La fecha de fin de captura es invlida. Debe ser posterior a la de inicio.", "TempUSB Error"); finProg_OK = false; } // Si todo est correcto se almacenan los datos if ((fichProg_OK == true) && (iniProg_OK == true) && (finProg_OK == true)) { this.datosProg.fich = fichProg.Text; this.datosProg.ini = iniProg.Value; this.datosProg.fin = finProg.Value; this.captura_programada = true; this.DialogResult = DialogResult.OK; this.Close(); } } // Se deshabilita una captura programada private void deshabilitar_Click(object sender, EventArgs e) { this.captura_programada = false; fichProg.Text = ""; iniProg.Value = DateTime.Now; finProg.Value = DateTime.Now; aceptar.Enabled = true; deshabilitar.Enabled = false; } } }

_____________________________________________________________________ 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

El resto de veces que se conecte el dispositivo al ordenador, este ser reconocido de forma automtica con lo que no ser necesario indicar ningn tipo de informacin.

D.2. Instalacin de la aplicacin.


Antes de indicar cmo instalar el software que permite la comunicacin con el dispositivo y mostrar la temperatura en pantalla, se indicarn una serie de requisitos que debe cumplir el sistema para poder ejecutar la aplicacin. Estos requisitos son: Sistema operativo Windows 2000 o XP. Microsoft Excel 2002.

Para instalar la aplicacin hay que ejecutar el programa instalar.exe que lo primero que har ser preguntar el idioma que se quiere utilizar durante la instalacin. Una vez seleccionado el idioma, el siguiente paso es indicar la carpeta dnde se quiere que se instale el programa. Por defecto, la instalacin se realiza en \Archivos de Programa\TempUSB. Si se quiere cambiar la ubicacin, se hace clic en Examinar y una vez indicada la nueva carpeta, se pincha en Aceptar. El siguiente paso ser indicar dnde se desea que se creen los accesos directos del programa en el Men Inicio. Al igual que antes, si se quiere cambiar de carpeta, ser necesario pinchar en Examinar. Por ltimo, se pregunta si se desea crear un icono de acceso directo en el escritorio y, a continuacin, empieza la instalacin del programa. Una vez se han terminado de copiar los archivos, el asistente da la opcin de instalar .NET Framework 2.0. Si ya se

_____________________________________________________________________ Ingeniera Informtica 140 Universidad de Valencia

tiene instalado, se recomienda desactivar la opcin, pero si no se tiene, es necesario instalarlo para poder ejecutar la aplicacin.

D.3. Utilizacin de la aplicacin.


La aplicacin TempUSB tiene una ventana principal que muestra la temperatura y la actualiza por defecto cada segundo. Si se desea acceder a la ventana de estadsticas que muestra ms datos y opciones, es necesario pinchar en el icono de la esquina inferior derecha.

Al pinchar sobre el icono aparecer la ventana TempUSB Estadsticas:

_____________________________________________________________________ Ingeniera Informtica 141 Universidad de Valencia

En esta ventana se indican la fecha, la hora y las temperaturas mxima y mnima capturadas desde que el programa est en funcionamiento. El intervalo de tiempo que ha de transcurrir para realizar la captura de la temperatura es por defecto de 1 segundo pero se puede cambiar seleccionando entre los posibles valores indicados en la lista desplegable.

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.

Si ya existe una captura programada, al pulsar Programar Captura (en la ventana TempUSB Estadsticas) se pueden ver los datos y si se desea se puede deshabilitar la captura pulsando el botn Deshabilitar Captura. Hay que tener en cuenta que al almacenar los datos en un fichero, el intervalo de captura de dichos datos ser el que estaba seleccionado antes de comenzar la captura y este no podr ser modificado mientras esta dure.

_____________________________________________________________________ Ingeniera Informtica 143 Universidad de Valencia

Para ver los datos almacenados en un fichero o las grficas correspondientes a esos datos slo habr que pulsar sobre Ver Datos o Ver Grfica e indicar el nombre del fichero y estos se mostrarn.

_____________________________________________________________________ Ingeniera Informtica 144 Universidad de Valencia

Bibliografa
[Aje00] A. Domingo Ajenjo. Direccin y Gestin de Proyectos. RA-MA, 1 edicin, 2000. Caractersticas de FireWire. Disponible en Internet:

[App]

http://www.apple.com/la/firewire/.

[Axe99] [Bol06]

Jan Axelson. USB complete. Lakeview Research, 1 edicin, 1999. J. Antonio Boluda. Notas de la asignatura Perifricos. Ingeniera Informtica. Universidad de Valencia, 2005-2006. Caractersticas del compilador de C CCS. Disponible en Internet:
http://www.ccsinfo.com.

[CCS]

[CWD02]

G. Martn, C.W. Dawson. El Proyecto Fin de Carrera en Ingeniera Informtica. Una gua para el estudiante. Prentice-Hall, 1 edicin, 2002. Windows Driver Development Kit (DDK). Disponible en Internet:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx

[DDK]

[Dev]

Artculos, cursos y foro sobre programacin en Visual C#. Disponible en internet: http://www.developer.com/net/csharp/. Tarjeta EduMic. Disponible en Internet: http://tapec.uv.es/edumic/. Distribuidor de productos electrnicos Farnell InOne. Disponible en Internet: http://es.farnell.com. R.J. Martnez, J.A. Boluda, J.J. Prez. Estructura de computadores y perifricos. RA-MA, 1 edicin, 2001. Caractersticas de Microsoft Visual Basic, Visual C++ y Visual C#. Disponible en Internet: http://www.microsoft.com.

[Edu] [Far]

[MBP01]

[Mic]

_____________________________________________________________________ Ingeniera Informtica 145 Universidad de Valencia

[MPL]

Entorno de desarrollo MPLAB de Microchip. Disponible en Internet: http://www.microchip.com. Datasheet del sensor de temperatura LM50. Disponible en Internet: http://www.national.com. J.J. Prez. Notas de la asignatura Sistemas Basados en Microprocesador. Ingeniera Informtica. Universidad de Valencia, 2004-2005. Datasheet del microcontrolador PIC18F2550. Disponible en Internet:
http://ww1.microchip.com/downloads/en/DeviceDoc/39632c.pdf

[Nat]

[Per05]

[PIC]

[Usb]

USB

Implementers

Forum,

Inc.

Disponible

en

Internet:

http://www.usb.org

[USB11]

Especificacin

1.1. http://www.usb.org/developers/docs/.

de

USB

Disponible

en

Internet:

Nota: Las referencias electrnicas han sido revisadas con fecha 2 - Septiembre - 2006.

_____________________________________________________________________ Ingeniera Informtica 146 Universidad de Valencia

Вам также может понравиться