Академический Документы
Профессиональный Документы
Культура Документы
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
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
3.2.1. 3.2.2. 4.
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
Seleccin. .............................................................................................43 47
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
Implementacin del hardware..............................................................73 Implementacin del firmware. .............................................................75 Programacin del microcontrolador. ...........................................75 Creacin del fichero INF. ............................................................78 Creacin de una nueva clase. .......................................................80
Instalacin del perifrico......................................................................85 Medicin de la temperatura. ................................................................86 Comprobacin del software. ................................................................87 89
8.
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.
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
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
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.
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.
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.
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.
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.
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.
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]
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.
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]
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.
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.
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]
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.
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
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.
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.
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.
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.
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.
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.
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
Testeo y experimentacin. Con el prototipo listo se realizarn experimentaciones para validarlo y comprobar que todo funciona correctamente.
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.
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]
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.
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.
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
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.
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.
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.
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.
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:
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]
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.
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.
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.
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).
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.
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.
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.
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:
El registro de control UCON contiene los bits necesarios para controlar el comportamiento del mdulo USB durante las transferencias.
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.
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.
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.
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:
Configuracin 1
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.
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:
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.
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.
6. Implementacin.
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
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.
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.
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
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:
Dispositivo Enumerado??
No
Si
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.
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 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:
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:
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);
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.
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.
calor y cerca de una fuente de fro. En todos los casos el valor de la temperatura medida por ambos instrumentos era similar, con una diferencia de 1C como mucho. Tambin se ha podido observar que al acercarlos a una fuente de calor, ambos experimentan el mismo incremento en el valor medido aunque el termmetro lo hace con un pequeo retraso, tardando ms en alcanzar el valor. Lo mismo ocurre al acercarlos a una fuente de fro.
Para comprobar que las temperaturas mxima y mnima mostradas eran correctas, se parti de una temperatura de inicio y se acerc el dispositivo a una fuente de calor para ver como aumentaba la temperatura mxima. Posteriormente se acerc tambin a una fuente de fro y se vio como variaba la mnima. La captura de las temperaturas en un fichero se realiz de forma correcta, comprobando todos los datos guardados. Para comprobar que las temperaturas mxima y mnima almacenadas en el fichero eran las correspondientes al intervalo de _____________________________________________________________________ Ingeniera Informtica 87 Universidad de Valencia
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.
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.
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
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
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
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
CONCEPTO Recursos hardware Recursos software Componentes y fabricacin del PCB Recursos humanos TOTAL
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.
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.
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.
99
100
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
PIN 1 2 3 4
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.
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.
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.
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
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.
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.
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.
115
116
#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
/****************************************************************** * 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(); } } }
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
// 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)
'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
[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"
[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; } } }
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
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; } }
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; }
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; } } }
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
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;
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; }
// 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; } } }
// 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; } } } }
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
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; }
// 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; } } }
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.
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
tiene instalado, se recomienda desactivar la opcin, pero si no se tiene, es necesario instalarlo para poder ejecutar la aplicacin.
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.
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.
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.
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]
[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.