Está en la página 1de 158

Desarrollo de una estacin

meteorolgica USB

Adela M. Rodrguez Zaragoz


Tutor: Jos Antonio Boluda Grau
5 de septiembre de 2006
Universitat de Valncia - ETSE

Agradecimientos
A mis padres, abuela, to y tas, por su apoyo, paciencia y confianza en m.
A Marian, por compartir conmigo un montn de experiencias, por todos los
buenos momentos que me has hecho pasar y por hacer que los menos buenos no
fueran tan malos, por tu paciencia aguantando mis agobios y locuras transitorias, por
todas esas bi y por lo mucho que me haces rer. Sin ninguna duda, tu amistad es lo
mejor que me ha aportado la carrera.
A Oscar, por su ayuda con la electrnica, apoyo, consejos y nimos.
A Blanca, por sufrir conmigo el PIC y el C#, por prestarme la placa y por esas
peazo de trufas belgas!!
A Sara y M. Jos, por todos esos momentos que hemos pasado juntas, me alegro
de que nuestra amistad no se haya limitado a la facul y que seis mucho ms que unas
compaeras de clase.
A mi tutor, por su disponibilidad y ayuda durante el desarrollo del proyecto.
A Isaac, por atenderme y resolver mis dudas.
A Natalia, por hacerme rer y ayudarme a desconectar.
A Marita, Miriam, Ins y Montse, por todo lo que me han enseado y
encomendado (y espero que sigan!).
A Isabel y Amparo, que aunque pase el tiempo y cambien las circunstancias,
siempre estn ah.
A Isidoro, por su ayuda en el estudio y con los exmenes, y a Beto, por estar
siempre pendiente de m y encontrarme sitio para aparcar. DOG - OIB

ndice General
I

Memoria

1.

2.

Introduccin.
1.1.

Enunciado y objetivos del proyecto.......................................................3

1.2.

Resumen de la memoria.........................................................................4

Estado del arte.


2.1.

Interconexin entre ordenador y perifricos. .........................................7

2.1.1.

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.

3.

4.

Comunicacin inalmbrica. Bluetooth.........................................18

2.2.

Microcontroladores. .............................................................................21

2.3.

Sistemas de adquisicin de datos mediante sensores...........................26

Metodologa y materiales.

29

3.1.

Metodologa. ........................................................................................29

3.2.

Material utilizado. ................................................................................31

3.2.1.

Software. ......................................................................................31

3.2.2.

Hardware......................................................................................34

Anlisis de alternativas.
4.1.

35

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

4.2.

4.2.1.

Interconexin entre el perifrico y el ordenador..........................36

4.2.2.

Microcontrolador. ........................................................................38

4.2.3.

Lenguajes y herramientas de desarrollo de aplicaciones. ............40

4.3.
5.

8.

47

5.1.

Diseo del hardware. ...........................................................................48

5.2.

Diseo del firmware.............................................................................53

5.2.1.

Registros de configuracin. .........................................................53

5.2.2.

Registros del oscilador.................................................................55

5.2.3.

Registros del mdulo A/D. ..........................................................58

5.2.4.

Registros del mdulo USB...........................................................63

5.2.5.

Descriptores. ................................................................................66

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

Implementacin.

73

6.1.

Implementacin del hardware..............................................................73

6.2.

Implementacin del firmware. .............................................................75

6.2.1.

Programacin del microcontrolador. ...........................................75

6.2.2.

Creacin del fichero INF. ............................................................78

6.2.3.

Creacin de una nueva clase. .......................................................80

6.3.
7.

Seleccin. .............................................................................................43

Diseo.

5.3.
6.

Evaluacin de alternativas. ..................................................................36

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

Experimentacin.

85

7.1.

Instalacin del perifrico......................................................................85

7.2.

Medicin de la temperatura. ................................................................86

7.3.

Comprobacin del software. ................................................................87

Presupuesto.

89

8.1.

Coste de los recursos hardware............................................................89

8.2.

Coste de los recursos software.............................................................90

8.3.

Coste de los componentes y fabricacin del PCB. ..............................91

8.4.

Coste de los recursos humanos. ...........................................................92

8.5.
9.

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

Conclusiones y trabajo futuro.

95

9.1.

Conclusiones. .......................................................................................95

9.2.

Trabajo futuro. .....................................................................................97

II Planos y especificaciones

99

10. Planos del PCB.

101

10.1.

Esquema elctrico. .............................................................................101

10.2.

Listado de componentes.....................................................................103

10.3.

Diseo del PCB. Caras Top y Bottom. ..............................................104

10.4.

Pinout. ................................................................................................105

11. Especificaciones.

107

11.1.

Condiciones econmicas....................................................................108

11.2.

Especificaciones tcnicas...................................................................108

11.2.1.

Condiciones de trabajo del sistema............................................108

11.2.2.

Requerimientos de las seales del sistema.................................109

11.3.

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

11.3.1.

Especificaciones de los circuitos integrados..............................110

11.3.2.

Componentes pasivos y conductores. ........................................111

11.4.

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

11.4.1.

Fabricacin del PCB. .................................................................113

11.4.2.

Montaje de componentes. ..........................................................114

III Apndices

115

A. Cdigo del microcontrolador

117

B. Fichero .INF

123

C. Cdigo de la aplicacin

125

D. Manual de usuario de TempUSB

139

D.1. Instalacin del dispositivo...139


D.2. Instalacin de la aplicacin.....140
D.3. Utilizacin de la aplicacin.141
Bibliografa

145

ndice de Figuras
Figura 2.1: Topologa de una conexin USB...............................................................12
Figura 2.2: Formato del tipo de cable utilizado............................................................13
Figura 2.3: Utilizacin de microcontroladores por sectores.........................................25
Figura 4.1: Encapsulado PIC18F2550..........................................................................45
Figura 5.1: Flujo de comunicaciones entre un dispositivo USB y el host....................47
Figura 5.2: Sensor de temperatura LM50.....................................................................49
Figura 5.3: Alimentacin a travs del bus USB...........................................................50
Figura 5.4: Conector USB tipo A.................................................................................50
Figura 5.5: Oscilador cristal o cermico (configuracin XT, HS o HSPLL)...............52
Figura 5.6: Deteccin de la velocidad de un dispositivo USB.....................................53
Figura 5.7: Mdulo del oscilador.................................................................................55
Figura 5.8: Registro CONFIG1L..................................................................................56
Figura 5.9: Registro CONFIG1H.................................................................................57
Figura 5.10: Registro OSCCON...................................................................................58
Figura 5.11: Registro ADCON0...................................................................................59
Figura 5.12: Registro ADCON1...................................................................................60
Figura 5.13: Secuencia de conversin A/D..................................................................61
Figura 5.14: Conversin A/D con tiempo de adquisicin manual...............................62
Figura 5.15: Registro ADCON2...................................................................................63
Figura 5.16: Registro UCON........................................................................................64
Figura 5.17: Mdulo USB............................................................................................65
Figura 5.18: Registro UCFG........................................................................................66
Figura 5.19: Jerarqua de descriptores..........................................................................67
Figura 5.20: Descriptores del perifrico.......................................................................69
Figura 5.21: Registro UEPn.........................................................................................70

Figura 6.1: Diagrama de bloques del programa...........................................................77


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

ndice de Tablas
Tabla 4.1: Comparacin entre FireWire y USB...........................................................37
Tabla 5.1: Modos de funcionamiento del oscilador en el PIC18F2550.......................51
Tabla 5.2: Registros de configuracin.........................................................................54
Tabla 5.3: TAD frente a frecuencia del oscilador........................................................62
Tabla 5.4: Valores de los registros de configuracin...................................................70
Tabla 8.1: Presupuesto de los recursos hardware.........................................................90
Tabla 8.2: Presupuesto de los recursos software..........................................................91
Tabla 8.3: Presupuesto de los componentes y el PCB.................................................92
Tabla 8.4: Presupuesto del coste de tareas del ingeniero.............................................93
Tabla 8.5: Presupuesto del coste de tareas del tcnico.................................................93
Tabla 8.6: Coste total de los recursos humanos...........................................................93
Tabla 8.7: Coste total del proyecto..............................................................................94
Tabla 10.1: Listado de componentes..........................................................................103
Tabla 10.2: Pinout del microcontrolador PIC18F2550..............................................105
Tabla 10.3: Pinout del conector USB.........................................................................106
Tabla 11.1: Condiciones de la seal de alimentacin................................................109
Tabla 11.2: Mrgenes de tensin para los niveles lgicos en USB 1.1.....................109
Tabla 11.3: Caractersticas elctricas del PIC18F2550..............................................110
Tabla 11.4: Caractersticas elctricas del sensor LM50.............................................111
Tabla 11.5: Parmetros requeridos para la fabricacin del PCB....113

Parte I
Memoria

1. Introduccin.

1.1. Enunciado y objetivos del proyecto.


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

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

El objetivo de este proyecto es llevar a cabo el desarrollo de un perifrico, desde


el diseo del esquema hardware del dispositivo hasta la implementacin de una
aplicacin software que permita la comunicacin con l.
El perifrico consiste en un sistema de adquisicin de datos a travs de sensores.
Estos datos debern ser convertidos a formato digital para posteriormente, ser
enviados al ordenador donde podrn ser tratados y visualizados.
A continuacin se enumeran los principales objetivos del proyecto:

Diseo e implementacin de un circuito impreso que realice la


adquisicin de datos a travs de sensores.

Estudio de los distintos medios de interconexin entre el dispositivo y el


ordenador, seleccionando el que ms se adecue a nuestras necesidades.

Implementacin del protocolo de comunicacin entre el perifrico y el


host.

Desarrollo de una aplicacin software que permita visualizar los datos


adquiridos mediante los sensores.

1.2. Resumen de la memoria.


La memoria se ha dividido en los siguientes captulos intentando ofrecer una
visin clara de todas las fases del proyecto:

Captulo 1: Enunciado y objetivos del proyecto y resumen del contenido


de la memoria.

Captulo 2: Estado del arte, es decir, la base terica sobre la que se basa
el proyecto.

Captulo 3: Metodologa y materiales utilizados en el desarrollo del


proyecto.

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

Captulo 4: Especificacin de los requisitos a cumplir por el proyecto.


Exposicin y anlisis de las diferentes alternativas de las que se dispone
para realizar el proyecto y justificacin de la decisin final adoptada.

Captulo 5: Diseo del hardware, firmware y software del proyecto.

Captulo 6: Descripcin del proceso de implementacin.

Captulo 7: Descripcin y resultados de las pruebas realizadas.

Captulo 8: Estimacin econmica del proyecto.

Captulo 9: Conclusiones extradas y posibles lneas de desarrollo futuras


a partir del estado final del proyecto.

Captulo 10: Esquema elctrico, planos del PCB y listado de


componentes.

Captulo 11: Especificaciones tcnicas y caractersticas de los materiales.

Apndice A: Cdigo del microcontrolador.

Apndice B: Fichero INF.

Apndice C: Cdigo de la aplicacin software.

Apndice D: Manual de usuario donde se indica cmo instalar el


perifrico y utilizar la aplicacin software.

Bibliografa.

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

2. Estado del arte.


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

2.1. Interconexin entre ordenador y perifricos.


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

Universidad de Valencia

algunas de las caractersticas del subsistema de Entrada/Salida ser posible darse


cuenta de esta necesidad:

Existe una gran diversidad de perifricos que utilizan mtodos de


operacin diferentes. No sera lgico que la CPU tuviera que incorporar
toda la lgica necesaria para controlar este rango de dispositivos.

La velocidad de transferencia de los datos de los perifricos es a menudo


mucho ms lenta que la que tiene el procesador con el sistema de
memoria, por lo tanto resulta poco prctico usar el bus del sistema de alta
velocidad para comunicarse directamente con los perifricos.

A menudo los perifricos utilizan formatos y longitudes de palabra de


datos diferentes a los que utiliza el procesador. Debe haber por tanto
algn mecanismo para adecuar las seales de ambos dispositivos.

Los mdulos de E/S establecen una serie de reglas (llamadas interfaces) que les
permiten por un lado conectarse con la CPU y la memoria a travs del bus del sistema
o del de expansin y, por otro lado, conectarse con los dispositivos perifricos a travs
de enlaces dedicados para datos. Estos enlaces se caracterizan porque son ms lentos,
tienen una menor longitud de palabra y menores velocidades de transferencia de
datos. Su diseo se basa en un estndar para permitir la interconexin de dispositivos
de diferentes fabricantes. [MBP01]
A continuacin se describirn algunos de los estndares ms importantes
utilizados en la interconexin del ordenador y los perifricos, haciendo para ello una
distincin entre interfaces serie e interfaces paralelas:

Interfaz serie: Se utiliza una nica lnea para transmitir los datos.

Interfaz paralela: Se utilizan

varias lneas de datos para transmitir

mltiples bits de forma simultnea.

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

2.1.1. Interfaces serie.


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

_____________________________________________________________________
Ingeniera Informtica

Universidad de Valencia

2.1.1.1. La interfaz RS-232.

Este estndar lo incorporan todos los ordenadores personales y est definido por
la EIA (Electronic Industries Association) aunque en Europa se le conoce como el
estndar V.24 definido por la CCITT (Consultative Committee for International
Telephone and Telegraph). En l se definen todas las caractersticas mecnicas,
elctricas y los protocolos necesarios para conectar un equipo terminal de datos
(DTE- Data Terminal Equipment) con un equipo transmisor de datos (DCE Data
Carrier Equipment). Inicialmente se defini para realizar la comunicacin entre un
ordenador personal y un mdem, aunque actualmente se utiliza con muchos otros
propsitos para enviar datos de forma serializada.
El estndar define voltajes que oscilan entre + [3-15] V para el nivel alto y [315] V para el nivel bajo. Debido a la gran diferencia de voltaje que existe entre los
niveles altos y bajos, se permiten tasas de transferencia de hasta 115.200 baudios si la
longitud del cable es de unas pocas decenas de metros.
Si se utiliza este estndar para conectar otros perifricos diferentes de los
mdems, stos se comportan como dispositivos DTE y, por lo tanto, las seales
cambian de significado.

2.1.1.2. El Bus Serie Universal (USB).

El USB es un estndar (1995) que define un bus utilizado para conectar


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

10

Universidad de Valencia

La especificacin de este estndar ha sido respaldada por las empresas lderes


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

11

Universidad de Valencia

conectados en serie. Cada concentrador se conecta por un lado al ordenador, que


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

Figura 2.1: Topologa de una conexin USB


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

_____________________________________________________________________
Ingeniera Informtica

12

Universidad de Valencia

El host USB tiene las funciones de:

Detectar la conexin/desconexin de dispositivos y configurarlos.

Controlar las transferencias de datos y de control que tienen lugar en el


bus.

Realizacin de auditorias sobre la actividad del sistema.

Servir como fuente de alimentacin a los dispositivos.

El USB define dos lneas para transmitir datos y otras dos para transmitir
potencia (vase la figura 2.2). Los datos de transmiten de forma balanceada a
velocidades entre 1,5 Mbps y 12 Mbps. La seal se transmite codificada en un cdigo
autoreloj de no retorno a cero invertido (NRZI) para poder incluir junto con los datos
informacin de sincronizacin. Las lneas de alimentacin (Vbus y GND) evitan la
necesidad de utilizar fuentes de alimentacin externas. Tiene una tensin de 5 V y la
corriente se limita a un mximo de 3 a 5 amperios por razones de seguridad, siendo el
consumo y la configuracin elctrica totalmente transparente al usuario. La distancia
entre dos perifricos conectados al mismo cable no debe ser superior a 5 metros para
evitar problemas de cadas de tensin.

Figura 2.2: Formato del tipo de cable utilizado


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

13

Universidad de Valencia

conectados le asignar un ancho de banda determinado. De la misma forma tambin


se pueden desconectar los dispositivos del sistema. El controlador USB del host
asigna un nmero diferente de dispositivo a cada uno de los perifricos que se
conectan a este bus. Para empezar la transferencia, ste enva un paquete que
identifica al dispositivo objeto de la transferencia. El protocolo soporta cuatro tipos de
transferencias:

Control. Son transferencias que se utilizan para leer informacin de los


descriptores en los registros de los dispositivos (llamados endpoints),
interpretarla y poder configurarlos.

Interrupcin. Usadas en los perifricos del tipo de los controladores de


juegos, teclados y ratones, cuya comunicacin es unidireccional y poco
frecuente.

Masiva. Son transferencias no peridicas que precisan de todo el ancho


de banda disponible. Utilizadas por las impresoras y los scanners.

Iscrona. Dedicadas a las transferencias de telecomunicaciones, como


voz o vdeo, que garantiza unas tasas de transferencia constantes. Se
caracterizan porque el nmero de pulsos de reloj que transcurren entre la
transmisin de dos caracteres es constante, por lo tanto, se est enviando
informacin constantemente entre el host y el dispositivo. [MBP01]

2.1.1.3. El estndar IEEE 1394 o FireWire.

Apple y Sony inventaron el FireWire a mediados de los 90 y lo desarrollaron


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

14

Universidad de Valencia

ejemplo, lo ltimo en unidades de disco duro e impresoras. Se ha convertido en la


interfaz preferida de los sectores de audio y vdeo digital, ya que rene numerosas
ventajas, entre las que se encuentran la elevada velocidad, la flexibilidad de la
conexin y la capacidad de conectar un mximo de 63 dispositivos. Adems de
cmaras y equipo de vdeo digital, la amplia gama de productos FireWire comprende
reproductores de vdeo digital, sistemas domsticos para el ocio, sintetizadores de
msica, escneres y unidades de disco duro.
Con un ancho de banda 30 veces mayor que el conocido estndar de perifricos
USB 1.1, el FireWire 400 se ha convertido en el estndar ms respetado para la
transferencia de datos a alta velocidad. Apple fue el primer fabricante de ordenadores
que incluy FireWire en toda su gama de productos. Una vez ms, Apple ha vuelto a
subir las apuestas duplicando la velocidad de transferencia con su implementacin del
estndar IEEE 1394b o FireWire 800.
La velocidad sobresaliente del FireWire 800 frente al USB 2.0 convierte al
primero en un medio mucho ms adecuado para aplicaciones que necesitan mucho
ancho de banda, como las de grficos y vdeo, que a menudo consumen cientos o
incluso miles de megabytes de datos por archivo.
Algunas de las caractersticas ms importantes del FireWire son:

Flexibles opciones de conexin. Admite un mximo de 63 dispositivos


con cables de hasta 4,25 metros.

Distribucin en el momento. Fundamental para aplicaciones de audio y


vdeo, donde un fotograma que se retrasa o pierde la sincronizacin
arruina un trabajo.

Alimentacin por el bus. Mientras el USB 2.0 permite la alimentacin de


dispositivos sencillos que consumen un mximo de 2,5 W, como un ratn,
los dispositivos FireWire pueden proporcionar o consumir hasta 45 W,
ms que suficiente para discos duros de alto rendimiento y bateras de
carga rpida.

_____________________________________________________________________
Ingeniera Informtica

15

Universidad de Valencia

Es conectable/desconectable en uso. Lo que significa que no se necesita


desactivar un dispositivo para conectarlo o desconectarlo y que no es
necesario reiniciar el ordenador.

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

2.1.2. Interfaces paralelas.


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

2.1.2.1. La interfaz Centronics.

Inicialmente se dise una interfaz con 36 pines, que utilizaba la casa Centronics
Data Computer Corporation en sus impresoras. Sin embargo, la interfaz Centronics de
los ordenadores personales actuales fue diseada por Epson Corporation.
La interfaz consta de 8 pines para datos ms 5 seales que controlan la impresora
y cinco que vienen de la misma. Se utilizan voltajes TTL con seales no balanceadas,
por lo que son susceptibles de recibir ruido y producir errores. El bus soporta tasas de
transferencia de datos de hasta 100 Kbytes/s.
Actualmente se han diseado dos estndares que tratan de aumentar el ancho de
banda de la interfaz Centronics sin perder la compatibilidad con el mismo,
permitiendo adems la comunicacin bidireccional. Son las interfaces ECP (Extended
Capabilities Port) y EPP (Enhanced Capabilities Port) que se definen en el estndar
_____________________________________________________________________
Ingeniera Informtica

16

Universidad de Valencia

del IEEE 1284. ECP se utiliza en las impresoras y escners, puesto que permite
mayores tasas de transferencia con protocolos sencillos, mientras que EPP sirve para
los dems dispositivos en donde se necesita un control de errores ms exhaustivo.

2.1.2.2. El estndar IEEE 1284.

Este nuevo estndar define 5 modos de transferencia de datos, desde el viejo


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

2.1.2.3. Small Computer Systems Interface (SCSI).

La interfaz SCSI es una interfaz paralela, con 8, 16 o 32 lneas de datos, que se


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

17

Universidad de Valencia

problemas de reflexiones de las seales. Los dispositivos funcionan de forma


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

2.1.3. Comunicacin inalmbrica. Bluetooth.


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

_____________________________________________________________________
Ingeniera Informtica

18

Universidad de Valencia

Facilitar las comunicaciones entre equipos mviles y fijos.

Eliminar cables y conectores entre stos.

Ofrecer la posibilidad de crear pequeas redes inalmbricas y facilitar la


sincronizacin de datos entre nuestros equipos personales. [Bol06]

La tecnologa Bluetooth comprende hardware, software y requerimientos de


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

_____________________________________________________________________
Ingeniera Informtica

19

Universidad de Valencia

La potencia de salida para transmitir a una distancia mxima de 10 metros es de 0


dBm (1 mW), mientras que la versin de largo alcance transmite entre 20 y 30 dBm
(entre 100 mW y 1 W).
El protocolo de banda base (canales simples por lnea) combina conmutacin de
circuitos y paquetes. Para asegurar que los paquetes no lleguen fuera de orden, los
slots pueden ser reservados por paquetes sncronos, un salto diferente de seal es
usado para cada paquete. Por otro lado, la conmutacin de circuitos puede ser
asncrona o sncrona. Tres canales de datos sncronos (voz), o un canal de datos
sncrono y uno asncrono, pueden ser soportados en un solo canal. Cada canal de voz
puede soportar una tasa de transferencia de 64 Kb/s en cada sentido, la cual es
suficientemente adecuada para la transmisin de voz. Un canal asncrono puede
transmitir como mucho 721 Kb/s en una direccin y 56 Kb/s en la direccin opuesta,
sin embargo, para una conexin asncrona es posible soportar 432,6 Kb/s en ambas
direcciones si el enlace es simtrico.
El hardware que compone el dispositivo Bluetooth esta compuesto por dos partes:

Un dispositivo de radio, encargado de modular y transmitir la seal.

Un controlador digital, compuesto por una CPU, por un procesador de


seales digitales (DSP - Digital Signal Processor) llamado Link
Controller (o controlador de enlace) y por los interfaces con el dispositivo
anfitrin.

El LC (Link Controller) est encargado de hacer el procesamiento de la banda


base y del manejo de los protocolos ARQ y FEC de capa fsica. Adems, se encarga
de las funciones de transferencia (tanto asncrona como sncrona), codificacin de
audio y encriptacin de datos.
La CPU del dispositivo se encarga de atender las instrucciones relacionadas con
Bluetooth del dispositivo anfitrin, para as simplificar su operacin. Para ello, sobre
la CPU corre un software denominado Link Manager que tiene la funcin de
comunicarse con otros dispositivos por medio del protocolo LMP.
_____________________________________________________________________
Ingeniera Informtica

20

Universidad de Valencia

2.2. Microcontroladores.
Un controlador es un dispositivo que se emplea en el gobierno de uno o varios
procesos. Aunque el concepto de controlador ha continuado inalterable a travs del
tiempo, su implementacin fsica ha variado frecuentemente. Hace tres dcadas, los
controladores se construan exclusivamente con componentes de lgica discreta;
posteriormente se utilizaron los microprocesadores, que se rodeaban con chips de
memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los
elementos del controlador se han podido incluir en un chip que recibe el nombre de
microcontrolador.
En definitiva, un microcontrolador es un circuito integrado programable que
contiene todos los componentes de un computador. Se utiliza para controlar el
funcionamiento de una tarea determinada y, debido a su reducida medida, suele ir
incorporado en el propio dispositivo que gobierna. Esta ltima caracterstica es la que
le confiere la denominacin de controlador incrustado (embedded controller).
El microcontrolador es un computador dedicado. En su memoria solamente reside
un programa destinado a gobernar una aplicacin determinada; sus lneas de
entrada/salida soportan la conexin de los sensores y actuadores del dispositivo a
controlar y todos los recursos complementarios disponibles tienen como nica
finalidad atender sus requerimientos. Una vez programado y configurado el
microcontrolador solamente sirve para gobernar la tarea asignada.
Un microcontrolador posee todos los componentes de un computador pero con
unas caractersticas fijas que no pueden alterarse. Todos disponen de los bloques
esenciales: procesador, memoria de datos y de instrucciones, mdulos de E/S,
oscilador de reloj y mdulos controladores de perifricos. Adems de estos elementos,
existen una serie de recursos especiales que los fabricantes pueden ofertar, algunos
amplan las capacidades de las memorias, otros incorporan nuevo recursos y hay
quienes reducen las prestaciones al mnimo para aplicaciones muy simples. Depende
del programador el encontrar el modelo mnimo que se ajuste a sus requerimientos y

_____________________________________________________________________
Ingeniera Informtica

21

Universidad de Valencia

as minimizar el coste, el hardware y el software. Algunos de los principales recursos


especficos que incorporan los microcontroladores son:

Temporizadores (Timers).

Perro guardin (Watchdog).

Proteccin frente a fallo de alimentacin (Brown-out).

Estado de bajo consumo.

Conversores AD y DA.

Modulador de anchura de pulsos PWM.

Comparadores analgicos.

Puertos de E/S digital.

Puertos de comunicacin: serie, CAN, USB, I2C,

Los microcontroladores pueden clasificarse segn su arquitectura, que puede ser


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

_____________________________________________________________________
Ingeniera Informtica

22

Universidad de Valencia

La Arquitectura Harvard se caracteriza por disponer de dos memorias


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

Gestin eficiente de procesos.

Aumento de la fiabilidad.

Reduccin del tamao, consumo y coste.

Mayor flexibilidad (nicamente se requiere la reprogramacin).

Existe una gran diversidad de microcontroladores. Quiz la clasificacin ms


importante sea entre microcontroladores de 4, 8, 16 o 32 bits. Aunque las prestaciones
de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad
es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten
_____________________________________________________________________
Ingeniera Informtica

23

Universidad de Valencia

a desaparecer. La razn de esta tendencia es que los microcontroladores de 4 y 8 bits


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

_____________________________________________________________________
Ingeniera Informtica

24

Universidad de Valencia

10%
33%

16%

16%

Perifricos
Electrodomsticos
Comunicacin
Industria
Automocin

25%

Figura 2.3: Utilizacin de microcontroladores por sectores


Algunos de los principales fabricantes de microcontroladores son Microchip,
Motorota, Intel, Atmel, Siemens, Philips, Hitachi o Nacional Semiconductor, entre
otros. De entre todos los fabricantes expuestos, Microchip es el que ms diversidad
posee, cuenta actualmente con 159 microcontroladores distintos adems de todas sus
versiones segn encapsulado.
A continuacin se exponen algunos de los microcontroladores ms populares:

8048 (Intel). Es el padre de los microcontroladores actuales, el primero de


todos. Su precio, disponibilidad y herramientas de desarrollo hacen que
todava sea muy utilizado.

8051 (Intel y otros). Es sin duda el microcontrolador ms popular. Fcil


de programar pero potente. Est bien documentado y posee cientos de
variantes e incontables herramientas de desarrollo.

80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los


microprocesadores 8086 y 8088. Su principal ventaja es que permiten
aprovechar las herramientas de desarrollo para PC.

68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y


con gran cantidad de variantes.

_____________________________________________________________________
Ingeniera Informtica

25

Universidad de Valencia

683xx (Motorola). Surgido a partir de la familia 68k, a la que se


incorporan algunos perifricos. Son microcontroladores de altsimas
prestaciones.

PIC (Microchip). Familia de microcontroladores que gana popularidad da


a da. Fueron los primeros microcontroladores RISC.

Es preciso resaltar en este punto que existen innumerables familias de


microcontroladores, cada una de las cuales posee un gran nmero de variantes.

2.3. Sistemas de adquisicin de datos mediante sensores.


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

26

Universidad de Valencia

El acondicionamiento de la seal es uno de los componentes ms importantes de


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

_____________________________________________________________________
Ingeniera Informtica

27

Universidad de Valencia

_____________________________________________________________________
Ingeniera Informtica

28

Universidad de Valencia

3. Metodologa y materiales.

3.1. Metodologa.
En el diseo de sistemas se suelen seguir una serie de pasos que van desde la
especificacin de requisitos hasta la comercializacin del producto final. El presente
proyecto tiene como objetivo final la construccin de un prototipo, por lo que el ciclo
de diseo no abarcar hasta la fase final de fabricacin en serie del producto y
posterior comercializacin. Este ciclo de diseo se ha adaptado a las caractersticas
del proyecto y constar de las fases de especificacin de requisitos, establecimiento de
la arquitectura del sistema, desarrollo del hardware y software, test y debug y, por
ltimo, diseo y fabricacin del PCB. A continuacin se detallan las fases:

Especificacin de requisitos. En esta fase se establecen los requisitos que


se quiere que cumpla el producto a desarrollar. As pues, se tendrn que
especificar parmetros tales como el coste mximo, el rendimiento
mnimo, las ampliaciones futuras, el consumo de energa, tamao o peso.

Establecimiento de la arquitectura del sistema teniendo en cuenta que


lo ms importante es el micro. Tambin se habr de tener en cuenta el
subsistema de E/S, estableciendo que tipo de enlace se utilizar en la
comunicacin del perifrico con el ordenador.

_____________________________________________________________________
Ingeniera Informtica

29

Universidad de Valencia

Desarrollo del hardware y software. Una vez se tiene claro lo que se


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

firmware del micro y la aplicacin

software desarrollados en la fase actual.

Test y debug. Una vez acabado el desarrollo del hardware, firmware y


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

Diseo y fabricacin del PCB. Por ltimo, una vez se ha comprobado el


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

para

verificar

que

el

montaje

se

ha

realizado

correctamente.

_____________________________________________________________________
Ingeniera Informtica

30

Universidad de Valencia

Testeo y experimentacin. Con el prototipo listo se realizarn


experimentaciones para validarlo y comprobar que todo funciona
correctamente.

3.2. Material utilizado.

3.2.1. Software.
Las herramientas software utilizadas en el desarrollo del proyecto son cinco: el
paquete Orcad 9.2, el compilador de C para PICs PCWH versin 3.235 de CCS, el
programa EduMic versin 2.0, Microsoft Windows Server 2003 SP1 Driver
Development Kit (DDK) y el Visual C# 2005 Express Edition. A continuacin se har
una descripcin de cada una de estas herramientas indicando su utilidad y sus
principales caractersticas.
Orcad
El paquete Orcad, entre otras muchas funcionalidades, permite el diseo de PCBs
multicapa de forma sencilla y rpida. Consta del Orcad Capture, con el que se
realizan los esquemas del circuito, y del Orcad Layout, con el que se realiza el
diseo del PCB.
El Orcad Capture permite la gestin de proyectos de forma jerrquica y la
divisin de grandes diseos en otros ms pequeos. Por medio del Orcad Capture se
realiza el esquema del circuito incluyendo sus componentes. Aunque posee gran
cantidad de libreras de componentes, permite la creacin de libreras propias y el
diseo de componentes especficos.
Una vez realizado el esquema del diseo se utilizar el Orcad Layout para
realizar el diseo del PCB. Para mayor facilidad permite la posibilidad de realizar un
rutado automtico de las pistas del diseo as como diferentes opciones de rutado para
minimizar los costes de implementacin.
_____________________________________________________________________
Ingeniera Informtica

31

Universidad de Valencia

Compilador CCS
Este compilador de lenguaje C ha sido desarrollado por CCS Inc. para resolver
las caractersticas especficas de los microcontroladores PIC. Es una herramienta de
desarrollo importante que permite disminuir el tiempo de desarrollo de los proyectos
ya que este software cuenta con libreras con mtodos para funciones especficas del
PIC (conversin A/D, entrada y salida, configuracin de timers, etc.) y el software ICProg para la programacin del PIC.
Incluye tambin el cdigo fuente de numerosos programas de ejemplo para
mdulos LCD, teclados, conversores A/D, etc. Este software puede ser integrado con
MPLAB y usa 1, 8, 16 y 32 bits de tipo entero y 32 bits de tipo flotante. El cdigo
ensamblador puede ser insertado en cualquier parte y puede referenciar a variables C.
Adems incluye una funcin que permite desplegar informacin formateada en HEX
o en decimal. [CCS]
EduMic
El programa EduMic se encarga de descargar sobre el microcontrolador PIC de la
tarjeta el fichero HEX generado por la herramienta de compilacin que se utilice. El
software soporta la mayora de microcontroladores PIC de la familia 16 que soporten
ICSP y la versin 2.0 permite adems grabar varios de los dispositivos de la familia
18, incluyendo todos los que tienen USB.
Algunas de sus caractersticas ms importantes son:

Soporta casi todos los sistemas operativos (todos los MS Windows y


Linux).

El software es de libre distribucin.

Admite la especificacin en el fichero binario HEX tanto de la memoria


de programa como de la memoria de datos (EEPROM), as como la
palabra de configuracin y el identificador.

_____________________________________________________________________
Ingeniera Informtica

32

Universidad de Valencia

La palabra de configuracin se puede establecer en el propio programa


seleccionando en las opciones que se deseen.

Admite la especificacin de un identificador para el microcontrolador


PIC.

El programa sirve tanto para escribir el microcontrolador PIC como para


leerlo.

Se permite la edicin de los datos (programa y EEPROM) antes de


enviarlo al microcontrolador PIC.

Tiene la caracterstica de poder desproteger los microcontroladores PIC


protegidos contra lectura/escritura si son de tipo Flash. Una vez
desprotegido el microcontrolador pierde toda su informacin pero puede
ser reutilizado.

Dispone de un fichero de configuracin para poder incorporar nuevos


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

Windows Driver Development Kit (DDK)


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

_____________________________________________________________________
Ingeniera Informtica

33

Universidad de Valencia

Visual C#
Visual C# .NET es un lenguaje de programacin seguro y orientado a objetos,
que combina la potencia de Visual C y Visual C++ con la sencillez funcional de las
herramientas de desarrollo de aplicaciones modernas y rpidas, permitiendo
desarrollar software .NET para Microsoft Windows, la web y un gran rango de
dispositivos. Posee una sintaxis que se asemeja a C++, un entorno de desarrollo
flexible (IDE) y ofrece la posibilidad de desarrollar soluciones para una gran gama de
plataformas y dispositivos. [Mic]

3.2.2. Hardware.
El hardware necesario para la realizacin del proyecto consiste por una parte, en
la plataforma hardware sobre la que utilizar el software de desarrollo, por otra, en los
elementos necesarios para el montaje de los componentes y testeo de la placa y, por
ltimo, en la tarjeta EduMic.
La plataforma utilizada para el software de desarrollo es un PC con procesador
Intel Pentium M a 1 GHz y con memoria RAM de 1 GB. El sistema operativo es el
Windows XP Profesional.
En cuanto al material para el montaje de los componentes sobre la placa se
utilizar un soldador de montaje superficial y para el testeo de la misma ser necesario
utilizar un multmetro.
La tarjeta Edumic ser necesaria para programar el microcontrolador PIC. Esta
tarjeta permite la programacin de la mayora de micros PIC de la familia 16 y 18 que
soporten ICSP (casi todos). La programacin se hace a travs del puerto paralelo.

_____________________________________________________________________
Ingeniera Informtica

34

Universidad de Valencia

4. Anlisis de alternativas.
En este captulo se realizar la especificacin de los requisitos que debe cumplir
el proyecto para, posteriormente y basndose en ellos, analizar distintas alternativas a
tener en cuenta en el desarrollo del proyecto, tanto desde el punto de vista del
hardware (tipo de microcontrolador o de bus) como del software (lenguaje de
programacin o herramienta de desarrollo), y seleccionar la opcin ms ptima para
la consecucin de los objetivos.

4.1. Requisitos.
Los requisitos a nivel de usuario que ha de cumplir el proyecto se pueden dividir
en tres grupos: requisitos del perifrico, requisitos de la aplicacin software y
requisitos generales del proyecto.
El perifrico debe ser manejable y tener un tamao lo ms pequeo posible. Se
pide tambin que la alimentacin sea a travs del bus de interconexin con el
ordenador, de manera que al no tener fuente de alimentacin propia, el nmero de
componentes de la placa es menor y por lo tanto esto influye en su tamao y coste.
Respecto a la aplicacin software, esta debe ser intuitiva y fcil de usar, con un
nmero de opciones por ventana limitado con el objetivo de no inundar de
_____________________________________________________________________
Ingeniera Informtica

35

Universidad de Valencia

informacin al usuario. Con esta finalidad, se escribir un manual de usuario del


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

4.2. Evaluacin de alternativas.


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

4.2.1. Interconexin entre el perifrico y el ordenador.


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

_____________________________________________________________________
Ingeniera Informtica

36

Universidad de Valencia

De los distintos tipos de interconexin descritos anteriormente en la seccin 2.1.


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

USB

Nmero mximo de dispositivos

63

127

Cambio en caliente (agregar o


quitar dispositivos sin tener que
reiniciar el ordenador)

200 Mbps
400 Mbps
800 Mbps

1,5 Mbps
12 Mbps
480 Mbps

No

Velocidad de transferencia de
datos
Conexin de perifricos interna

Tabla 4.1: Comparacin entre FireWire y USB


_____________________________________________________________________
Ingeniera Informtica

37

Universidad de Valencia

Como puede verse, FireWire ofrece velocidades de transferencia de datos


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

4.2.2. Microcontrolador.
Antes de seleccionar un microcontrolador es imprescindible analizar los
requisitos de la aplicacin que se quiere desarrollar. A continuacin se indican
algunos de los aspectos que normalmente hay que tener en cuenta a la hora de realizar
la eleccin:

Procesamiento de datos: puede ser necesario que el microcontrolador


realice clculos crticos en un tiempo limitado. En ese caso debemos
asegurarnos de seleccionar un dispositivo suficientemente rpido para
ello. Por otro lado, habr que tener en cuenta la precisin de los datos a
manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser
necesario acudir a microcontroladores de 16 o 32 bits, o incluso a
hardware de coma flotante.

Entrada/Salida: para determinar las necesidades de Entrada/Salida del


sistema es conveniente conocer el diagrama de bloques del mismo, de tal
forma, que sea sencillo identificar la cantidad y tipo de seales a
controlar. Una vez realizado este anlisis puede ser necesario aadir
perifricos externos o cambiar a otro microcontrolador ms adecuado a
ese sistema.

Consumo: algunos productos que incorporan microcontroladores estn


alimentados con bateras. Lo ms conveniente en un caso como ste
puede ser que el microcontrolador est en estado de bajo consumo pero

_____________________________________________________________________
Ingeniera Informtica

38

Universidad de Valencia

que despierte ante la activacin de una seal (una interrupcin) y ejecute


el programa adecuado para procesarla.

Memoria: en cuanto a la cantidad de memoria necesaria se debe hacer


una estimacin de cunta memoria voltil y no voltil es necesaria y si es
conveniente disponer de memoria no voltil modificable.

Ancho de palabra: el criterio de diseo debe ser seleccionar el


microcontrolador de menor ancho de palabra que satisfaga los
requerimientos de la aplicacin. Usar un microcontrolador de 4 bits
supondr una reduccin en los costes importante, mientras que uno de 8
bits puede ser el ms adecuado si el ancho de los datos es de un byte. Los
microcontroladores de 16 y 32 bits, debido a su elevado coste, deben
reservarse para aplicaciones que requieran altas prestaciones.

Diseo de la placa: la seleccin de un microcontrolador concreto


condicionar el diseo de la placa. Deber tenerse en cuenta el
encapsulado del mismo.

Adems de todo lo mencionado tambin es importante tener en cuenta la


documentacin y herramientas de desarrollo disponibles para cada microcontrolador.
Segn volumen de ventas y diversidad de modelos se puede establecer como
principales fabricantes a los siguientes:

Microchip Technology Corp.

STMicroelectronics

Atmel Corp.

Motorola Semiconductors Corp.

De todos los fabricantes expuestos, Microchip es el que ms diversidad posee,


cuenta actualmente con 159 microcontroladores distintos adems de todas sus
versiones segn encapsulado.

_____________________________________________________________________
Ingeniera Informtica

39

Universidad de Valencia

4.2.3. Lenguajes y herramientas de desarrollo de aplicaciones.


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

40

Universidad de Valencia

fabricante para la formacin de programadores, Visual Basic se ha convertido en la


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

41

Universidad de Valencia

Visual C#
C# es el nuevo lenguaje diseado por Microsoft para su plataforma .NET. En
concreto, ha sido diseado por Scott Wiltamuth y Anders Hejlsberg, ste ltimo
tambin conocido por haber sido el diseador del lenguaje Turbo Pascal y la
herramienta RAD Delphi.
Aunque en realidad es posible escribir cdigo para la plataforma .NET en muchos
otros lenguajes, como Visual Basic .NET o JScript .NET, C# es el nico que ha sido
diseado especficamente para ser utilizado en esta plataforma, por lo que
programarla usando C# es mucho ms sencillo e intuitivo que hacerlo con cualquiera
de los otros lenguajes. Por esta razn, Microsoft suele referirse a C# como el lenguaje
nativo de .NET, y de hecho gran parte de la librera de clases base de .NET ha sido
escrito en este lenguaje.
C# es un lenguaje orientado a objetos sencillo, moderno, amigable, intuitivo y
fcilmente legible que ha sido diseado con el ambicioso objetivo de recoger las
mejores caractersticas de muchos otros lenguajes, fundamentalmente Visual Basic,
Java y C++, y combinarlas en uno slo en el que se unan la alta productividad y
facilidad de aprendizaje de Visual Basic con la potencia de C++.
Aunque actualmente no se consiguen prestaciones en velocidad tan altas como
usando el C++ tradicional, Microsoft asegura que en futuras versiones se ir
aumentando la eficiencia del lenguaje, gracias fundamentalmente a la posibilidad de
generar dinmicamente cdigo optimizado para aprovechar las caractersticas de la
mquina sobre la que se ejecute el programa. [Mic]
Tanto Visual Basic como Visual C++ y Visual C# forman parte del paquete
Visual Studio 2005 de Microsoft.

_____________________________________________________________________
Ingeniera Informtica

42

Universidad de Valencia

4.3. Seleccin.
Una vez realizado el estudio de las posibles alternativas para llevar a cabo el
proyecto se pasa a tomar una decisin sobre cual de ellas es la ms adecuada.
En primer lugar, se decide que el mejor modo para la interconexin del perifrico
y el ordenador es mediante USB. Aunque comparado con FireWire, USB tenga una
velocidad de transferencia de datos menor, esto no resulta un problema en el
perifrico a desarrollar, ya que la cantidad de datos a transmitir es pequea y con un
dispositivo USB a baja velocidad (1,5 Mbps) resultara suficiente. Adems de esto, la
utilizacin de USB proporciona muchas ventajas tanto desde el punto de vista del
usuario como del diseador de perifricos.
Desde el punto de vista del usuario hay que destacar su facilidad de uso,
fiabilidad, bajo coste y bajo consumo. Respecto a la facilidad de uso, hay que decir
que USB es una interface plug&play, lo que significa que es posible conectar un
dispositivo hardware al PC sin necesidad de incorporar ningn driver, ya que la
configuracin se realiza de forma automtica. Adems posee una conectividad
excepcional, ya que puede manejar hasta 127 dispositivos simultneamente, que se
pueden conectar y desconectar sin tener que reiniciar el sistema.
Desde el punto de vista del diseador hay que destacar su flexibilidad, ya que
posee diversos tipos de transferencias y la definicin de la interfaz elctrica no se hace
en funcin del dispositivo. Otra ventaja es que es soportado por todos los sistemas
operativos Windows posteriores a Windows 98 y tambin por Linux. Adems, existe
una gran cantidad de herramientas que facilitan el desarrollo de perifricos que
utilizan este estndar y la especificacin USB y otros documentos relacionados estn
disponibles de manera gratuita online por lo que, dentro de la complejidad del
protocolo USB, se facilita la tarea del diseador. [Axe99]
Entre los distintos fabricantes de microcontroladores nos decantamos por
Microchip Technology. Los microcontroladores PIC de Microchip estn muy
extendidos actualmente en el mercado gracias a su gran variedad y bajo coste. Otra
_____________________________________________________________________
Ingeniera Informtica

43

Universidad de Valencia

razn de su xito es su utilizacin, ya que una vez se ha aprendido a utilizar uno,


conociendo su arquitectura y juego de instrucciones, es muy fcil emplear otro
modelo diferente. Adems de estas ventajas, la principal razn de la eleccin es que
para programar el micro se utilizar la placa EduMic y esta est diseada para su
utilizacin con PICs.
Microchip dispone de tres gamas de microcontroladores PIC para atender todas
las aplicaciones, microcontroladores de gama baja, gama media y gama alta. As, hay
disponibles microcontroladores sencillos y baratos para atender aplicaciones simples,
y otros complejos y ms costosos para las de mucha envergadura.
Con las tres gamas de PIC se dispone de gran diversidad de modelos y
encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de
acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de E/S y las
funciones auxiliares precisas. Sin embargo, todas las versiones estn construidas
alrededor de una arquitectura comn, un repertorio mnimo de instrucciones y un
conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del
voltaje de alimentacin.
Una vez se tiene claro el fabricante, hay que determinar cual es el micro que
mejor se adapta a las necesidades del proyecto. Para ello, deber tener las siguientes
caractersticas:

Debe disponer de un puerto de comunicaciones USB.

La longitud de palabra ser de 8 bits ya que no hemos de manejar gran


cantidad de informacin.

Debe disponer de un conversor A/D.

La memoria de programa debe ser Flash.

Un componente opcional sera una memoria ROM de datos donde se


podran guardar todos los datos adquiridos a travs de los sensores para
ser enviados mas tarde al ordenador. En este proyecto no se ha
implementado esta solucin, pero al escoger el microcontrolador lo
tenemos en cuenta por si se quiere implementar en un futuro.

_____________________________________________________________________
Ingeniera Informtica

44

Universidad de Valencia

Teniendo en cuenta lo anterior, se ha optado por el PIC18F2550 ya que dispone


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

Figura 4.1: Encapsulado PIC18F2550


Aunque la empresa Microchip ofrece una serie de herramientas de desarrollo
totalmente gratuitas y potentes, como el entorno de desarrollo MPLAB y el
_____________________________________________________________________
Ingeniera Informtica

45

Universidad de Valencia

compilador de C C18, se ha optado por utilizar para la programacin del firmware del
PIC el extendido compilador CCS, en concreto la versin 3.235, ya que, a diferencia
de las herramientas ofrecidas por Microchip, este incorpora bibliotecas para el uso del
USB permitiendo de esta forma, disminuir el tiempo de desarrollo de los proyectos.
Adems, si se desea, el compilador CCS puede ser integrado con MPLAB.
Respecto a la herramienta de desarrollo de la aplicacin, aunque cualquiera de las
tres opciones sera vlida para este proyecto, al final se ha optado por utilizar el
Visual C# ya que se trata de una herramienta que no hemos utilizado a lo largo de
nuestra formacin acadmica y, por lo tanto, preferimos ampliar conocimientos.

_____________________________________________________________________
Ingeniera Informtica

46

Universidad de Valencia

5. Diseo.
Antes de entrar de lleno en el diseo, se realizar una pequea descripcin de la
forma en que un dispositivo USB se comunica con el host, ya que nos hemos basado
en esta arquitectura para desarrollar este proyecto.
En la siguiente figura se puede ver la arquitectura del sistema y el flujo de
comunicaciones entre los distintos niveles.

Figura 5.1: Flujo de comunicaciones entre un dispositivo USB y el host


_____________________________________________________________________
Ingeniera Informtica

47

Universidad de Valencia

El flujo de datos del bus USB desde un punto de vista lgico hay que entenderlo
como una serie de puntos finales (endpoints), que se agrupan en conjuntos que dan
lugar a interfaces, las cuales permiten controlar la funcin del dispositivo.
La arquitectura se puede dividir en tres niveles o capas. En el nivel mas bajo el
controlador de host USB se comunica con la interfaz del bus utilizando el cable USB,
mientras que en un nivel superior el software USB del sistema se comunica con el
dispositivo lgico utilizando la tubera de control por defecto. En lo que al nivel de
funcin se refiere, el software cliente establece la comunicacin con las interfaces de
la funcin a travs de tuberas asociadas a puntos finales.
Cada dispositivo USB est compuesto por unos puntos finales independientes y
una direccin nica asignada por el sistema en tiempo de conexin, de forma
dinmica. A su vez, cada punto final dispone de un identificador nico dentro del
dispositivo (nmero de endpoint) que viene asignado de fbrica, adems de una
determinada orientacin del flujo de datos. Cada punto final es por si solo una
conexin simple, que soporta un flujo de datos de entrada o de salida.
Una tubera USB es una conexin lgica entre un punto final del perifrico y el
software del host, que permite intercambiar datos entre ellos. La tubera que esta
formada por el punto final 0 se denomina tubera de control por defecto. Esta tubera
est siempre disponible una vez se ha conectado el dispositivo y ha recibido un reset
del bus. El resto de tuberas aparecen despus de que se configure el dispositivo. La
tubera de control por defecto es utilizada por el software USB del sistema para
obtener la identificacin y para configurar al perifrico.

5.1. Diseo del hardware.


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

_____________________________________________________________________
Ingeniera Informtica

48

Universidad de Valencia

a disear el perifrico. Empezaremos por el hardware, seleccionando los componentes


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

Figura 5.2: Sensor de temperatura LM50


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

49

Universidad de Valencia

Figura 5.3: Alimentacin a travs del bus USB


Existen dos tipos de conectores USB, tipo A y tipo B. El que hemos utilizado es
de tipo A, por lo que el cable empleado para conectar el dispositivo con el ordenador
ser tipo A - tipo A.

Figura 5.4: Conector USB tipo A


Respecto al oscilador, el PIC18F2550 incorpora mltiples fuentes de reloj que se
pueden dividir en tres tipos:

Osciladores

primarios:

son

los

cristales

externos.

Pueden

ir

acompaados de los osciladores internos.

Osciladores secundarios: son las fuentes externas conectadas al Timer 1.

Bloque del oscilador interno: se utiliza como fuente de reloj para los
modos de bajo consumo.

Estas tres fuentes hacen que el oscilador disponga de doce modos distintos de
funcionamiento:

_____________________________________________________________________
Ingeniera Informtica

50

Universidad de Valencia

Tabla 5.1: Modos de funcionamiento del oscilador en el PIC18F2550


Los modos de funcionamiento del oscilador y el mdulo USB estn muy
relacionados.

En

microcontroladores

PIC

anteriores

la

familia

PIC18F2455/2550/4455/4550, todos los mdulos del microcontrolador, incluidos los


puertos de comunicaciones, utilizaban la misma fuente de reloj, pero en los
microcontroladores de esta familia, el oscilador primario forma parte del mdulo
USB, de manera que este mdulo slo puede tomar la seal de reloj del oscilador
primario. Sin embargo, el resto del micro puede utilizar cualquier otra fuente.
Dependiendo de si utilizamos USB de baja velocidad o de velocidad completa, la
seal de reloj del mdulo USB deber ser de 6 MHz o de 48 MHz, respectivamente.
Como se ha dicho en la seccin 4.3, nuestro dispositivo ser de baja velocidad as que
el reloj del mdulo USB deber ser de 6 MHz.
De los doce modos de funcionamiento, slo los ocho primeros pueden utilizarse
para USB y de estos se ha optado por HSPLL, con un cristal de 4 MHz. Al utilizar
esta frecuencia el mdulo USB tendr un reloj de 6 MHz mientras que el resto del
_____________________________________________________________________
Ingeniera Informtica

51

Universidad de Valencia

micro funcionar a 24 MHz, utilizando para ambos nicamente el oscilador primario.


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

Figura 5.5: Oscilador cristal o cermico (configuracin XT, HS o HSPLL)


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

_____________________________________________________________________
Ingeniera Informtica

52

Universidad de Valencia

Figura 5.6: Deteccin de la velocidad de un dispositivo USB


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

5.2. Diseo del firmware.

5.2.1. Registros de configuracin.


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

_____________________________________________________________________
Ingeniera Informtica

53

Universidad de Valencia

Estos elementos son:

Varias fuentes de osciladores diferentes.

Diversos tipos de RESET.

Varias fuentes de interrupcin, con dos niveles de prioridad.

Temporizador Watchdog.

Varios modos de bajo consumo.

Monitor de fallo del reloj.

Start-up de dos velocidades.

Proteccin de cdigo.

Posiciones de identificacin ID.

Circuitera de programacin serie en circuito.

Los registros de configuracin permiten controlar estas caractersticas especiales


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

Tabla 5.2: Registros de configuracin


La descripcin de estos registros as como los valores que toman se ir indicando
en los siguientes apartados.

_____________________________________________________________________
Ingeniera Informtica

54

Universidad de Valencia

5.2.2. Registros del oscilador.


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

Figura 5.7: Mdulo del oscilador

_____________________________________________________________________
Ingeniera Informtica

55

Universidad de Valencia

Antes de explicar los registros del oscilador, recordemos lo que se pretende


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

Figura 5.8: Registro CONFIG1L


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

_____________________________________________________________________
Ingeniera Informtica

56

Universidad de Valencia

Figura 5.9: Registro CONFIG1H


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

_____________________________________________________________________
Ingeniera Informtica

57

Universidad de Valencia

Figura 5.10: Registro OSCCON

5.2.3. Registros del mdulo A/D.


El mdulo conversor A/D tiene una resolucin de 10 bits con 10 canales para los
dispositivos de 28 pines y 13 canales para los de 40/44 pines.
El mdulo tiene 5 registros:

ADRESH: Parte alta del resultado de la conversin A/D.

ADRESL: Parte baja del resultado de la conversin A/D.

ADCON0: Controla el funcionamiento del mdulo A/D.

ADCON1: Configura la funcin de los pines de los puertos.

_____________________________________________________________________
Ingeniera Informtica

58

Universidad de Valencia

ADCON2: Configura el reloj del conversor A/D, el tiempo de adquisicin


y el formato del resultado de la conversin.

Figura 5.11: Registro ADCON0


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

_____________________________________________________________________
Ingeniera Informtica

59

Universidad de Valencia

Vref+ y Vref- pueden ser internas (VDD y GND) o externas a travs de los pines
RA3->(Vref+) y RA2->(Vref-). Aqu se utilizarn VDD y GND como voltaje de
referencia.

Figura 5.12: Registro ADCON1


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

_____________________________________________________________________
Ingeniera Informtica

60

Universidad de Valencia

Figura 5.13: Secuencia de conversin A/D


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

_____________________________________________________________________
Ingeniera Informtica

61

Universidad de Valencia

La conversin comienza justo despus del tiempo de adquisicin. Para completar


una conversin deben pasar 11 TAD.

Figura 5.14: Conversin A/D con tiempo de adquisicin manual


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

Tabla 5.3: TAD frente a frecuencia del oscilador


Teniendo en cuenta todo lo dicho, el registro ADCON2 se configurara de la
siguiente forma:

_____________________________________________________________________
Ingeniera Informtica

62

Universidad de Valencia

Figura 5.15: Registro ADCON2

5.2.4. Registros del mdulo USB.


El control y la configuracin del mdulo USB se lleva a cabo a travs de 22
registros de estado y control. Estos son:

Registro de control USB (UCON).

Registro de configuracin USB (UCFG).

Registro de estado de transferencia USB (USTAT).

Registro de direccin de dispositivo USB (UADDR).

Registros de nmero de frame (UFRMH:UFRML).

Registros (del 0 al 15) de habilitacin de puntos finales (UEPn).

El registro de control UCON contiene los bits necesarios para controlar el


comportamiento del mdulo USB durante las transferencias.

_____________________________________________________________________
Ingeniera Informtica

63

Universidad de Valencia

Figura 5.16: Registro UCON


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

_____________________________________________________________________
Ingeniera Informtica

64

Universidad de Valencia

Figura 5.17: Mdulo USB


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

_____________________________________________________________________
Ingeniera Informtica

65

Universidad de Valencia

Figura 5.18: Registro UCFG


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

5.2.5. Descriptores.
Como puede verse en la figura 5.19, todos los dispositivos USB tienen una
jerarqua de descriptores:

Descriptor de dispositivo: Es nico. Incluye la versin de USB, el


identificador de vendedor y producto (que identifican el driver) y el
nmero de configuraciones que el dispositivo tiene.

_____________________________________________________________________
Ingeniera Informtica

66

Universidad de Valencia

Descriptor de configuracin: Especifica la potencia requerida y si el


dispositivo tiene alimentacin propia o no. Puede haber varias
configuraciones (diferentes combinaciones de interfaces y endppoints) y
el host puede seleccionar una. Slo puede haber una activa.

Descriptor de interface: Es una unin de puntos finales en un grupo


funcional que realizan una tarea nica. Ejemplo: impresora, scaner y fax,
cada uno es un interface.

Descriptor de punto final: Especifica el tipo de transferencias usadas, la


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

Figura 5.19: Jerarqua de descriptores


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

_____________________________________________________________________
Ingeniera Informtica

67

Universidad de Valencia

Una clase define un marco con la funcionalidad mnima que todos los
dispositivos e interfaces de una determinada clase deben presentar. En el descriptor de
dispositivo existe un campo (bDeviceClass) que indica si el dispositivo pertenece a
una clase USB definida. En este caso, el campo presentar un valor entre 01h y FEh
dependiendo de la clase a la que pertenezca. El valor FFh significa que la clase es
especfica de un vendedor y est definida por este. Algunos dispositivos (como HIDs)
especifican la clase en el descriptor de interface, para este tipo de dispositivos este
campo ser 00h y en el campo bInterfaceClass del descriptor de interface se indicar
la clase a la que pertenece. No todos los dispositivos pertenecen a una clase.
Si el perifrico no pertenece a una clase ya definida o se le quiere asignar un
driver especfico (no genrico), los campos de clase, subclase y protocolo del
descriptor de dispositivo o interface deben de valer FFh (clase especfica de un
vendedor) y en los campos del descriptor de dispositivo idVendor y idProduct se debe
indicar tanto el identificador de vendedor y como el del producto. Cada fabricante
tiene un identificador de vendedor nico que debe incluir en el descriptor de
dispositivo de sus productos. El identificador de producto lo decide el fabricante para
identificar a los dispositivos. Estos dos valores se deben incluir tambin en un fichero
INF que el sistema operativo utilizar para decidir que driver debe asignar al
perifrico en funcin de estos dos valores.
Cuando el sistema operativo enumera un nuevo dispositivo USB, el
Administrador de Dispositivos compara los datos de todos los ficheros INF con la
informacin de los descriptores obtenida del dispositivo durante la enumeracin. Para
evitar tener que leer todos los INF cada vez que se detecta un nuevo dispositivo,
Windows tiene una base de datos de informacin sobre drivers con informacin
obtenida de los ficheros INF. [Axe99]
El perifrico que se va a desarrollar no pertenece a ninguna clase genrica, as
que habr que indicar el driver que se le quiere asignar. El driver que se utilizar ser
un driver USB de propsito general para Windows suministrado por Microchip
(mchpusb.sys). As mismo, Microchip proporciona un identificador de vendedor
(0x04D8) que puede ser utilizado en productos desarrollados con microcontroladores
PIC.
_____________________________________________________________________
Ingeniera Informtica

68

Universidad de Valencia

Respecto a los puntos finales, adems del EP0 (que siempre se utiliza), se
necesitar otro ms para pasar los datos del perifrico al host. La direccin de los
datos ser de entrada y el tipo de transferencia que se utilizar ser de interrupcin, ya
que el dispositivo es de baja velocidad y slo soporta transferencias de control y de
interrupcin. Por lo tanto, se utilizar el punto final 1.
En la siguiente figura pueden verse los descriptores del perifrico desarrollado:

Dispositivo
Vendor ID 0x04D8
Product ID 0x0011
Clase 0x00

Configuracin 1

Interface 0
Clase 0xFF
Subclase 0xFF
Protocolo 0xFF

Endpoint 1 IN
Transf. interrupcin

Figura 5.20: Descriptores del perifrico


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

_____________________________________________________________________
Ingeniera Informtica

69

Universidad de Valencia

Figura 5.21: Registro UEPn

Una vez vistos todos los mdulos y registros necesarios para configurar el
microcontrolador, los valores de los registros de configuracin quedaran de la
siguiente manera:

Tabla 5.4: Valores de los registros de configuracin

_____________________________________________________________________
Ingeniera Informtica

70

Universidad de Valencia

5.3. Diseo del software.


La interfaz de usuario debe proveer la funcionalidad necesaria para una buena
comunicacin entre el hombre y la mquina. Un buen diseo agiliza el uso de una
aplicacin, tanto al visualizar aquella informacin ms importante, como al realizar
aquellas tareas ms habituales con slo unos pocos clicks de ratn. El diseo de la
interfaz debe realizarse de manera que esta resulte simple e intuitiva de utilizar.
Lo primero que deber realizar la aplicacin ser establecer, de forma totalmente
transparente al usuario, una tubera para obtener los datos del dispositivo. Para ello
Microchip proporciona una API (mpusbapi.dll) que contiene un conjunto de funciones
que permiten comunicarse con el perifrico desarrollado. Una vez se tienen estos
datos (la temperatura medida por el sensor) se quiere que la aplicacin muestre
continuamente la temperatura actual.
Otras funcionalidades que deber implementar la aplicacin son:

Mostrar la temperatura mxima y mnima.

Permitir seleccionar el intervalo de tiempo de captura de la temperatura.

Capturar datos, creando un fichero que los contenga, indicando adems


las temperaturas mxima y mnima capturadas.

Programar la captura, indicando la fecha y la hora de inicio y de fin as


como el nombre del fichero donde se guardarn los datos.

Deshabilitar una captura programada.

Mostrar los datos capturados.

Generar y mostrar grficas con los datos capturados.

Adems se deber de tener en cuenta una serie de restricciones al programar una


captura:

Se debe indicar el nombre del fichero donde guardar los datos.

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

_____________________________________________________________________
Ingeniera Informtica

71

Universidad de Valencia

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


de inicio.

Otras restricciones sern:

El intervalo de tiempo de captura no puede modificarse mientras se est


realizando una captura (programada o no).

Si se est realizando una captura, no se pueden mostrar ni los datos ni la


grfica correspondiente a dicha captura hasta que esta no finalice.

_____________________________________________________________________
Ingeniera Informtica

72

Universidad de Valencia

6. Implementacin.

6.1. Implementacin del hardware.


Como se mencion en el apartado de metodologa (captulo 3), antes de la
fabricacin del circuito impreso final se crear una placa de prueba para comprobar
que la seleccin de los componentes y el diseo del esquema elctrico son correctos.
Esta placa de prueba se crea soldando los componentes sobre una tarjeta de montaje
segn el esquema diseado. Una vez terminada se realizar un testeo con un
multmetro para comprobar las conexiones.
Si el diseo es correcto se proceder a la creacin del PCB partiendo del esquema
elctrico. Esta tarea se puede dividir en dos fases:

Diseo del circuito impreso. Partiendo del Netlist generado con el Orcad
Capture a partir del esquema realizado se disear el PCB. En el diseo
del circuito impreso se utilizar la herramienta de CAD Orcad Layout que
generar como resultado los ficheros gerber con el diseo.

Fabricacin y montaje del PCB. En la fabricacin del PCB las mquinas


de fabricacin utilizarn los ficheros gerber para obtener el circuito
impreso. Una vez se ha fabricado el PCB se soldarn los componentes a
l.

_____________________________________________________________________
Ingeniera Informtica

73

Universidad de Valencia

El tamao del PCB es de 7 x 15 cm. y, aunque se podra haber hecho ms


pequeo, la razn por la que se han establecido estas medidas es que en los ensayos
realizados con la placa de pruebas, al acercar al sensor una fuente de fro o de calor, el
resto de componentes tambin sufran las variaciones de temperatura, por lo que se
pens que sera mejor alejar el sensor del resto de elementos de la placa.
Tanto la colocacin de los componentes como el rutado de las pistas se realizarn
de forma que se puedan conseguir los siguientes objetivos:

Minimizar la longitud de las pistas.

Minimizar el nmero de pistas.

Minimizar el nmero de cruces entre pistas.

Facilitar el soldado de los componentes.

Facilitar el acceso al interruptor y al conector USB.

El elemento central del diseo es el microcontrolador, el emplazamiento del resto


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

_____________________________________________________________________
Ingeniera Informtica

74

Universidad de Valencia

mala conexin siempre existe la posibilidad de correccin aplicando ms estao o


retirndolo con el soldador.
El diseo del circuito impreso, los componentes y el pinout pueden verse en el
captulo 10.

6.2. Implementacin del firmware.

6.2.1. Programacin del microcontrolador.


Para la programacin del microcontrolador se utiliza el compilador de C CSS,
concretamente la versin 3.235 que incorpora bibliotecas para el uso de USB. Antes
de empezar a escribir nuestro programa hay que modificar algunas caractersticas de
los archivos que proporciona el compilador y que utilizaremos en el proyecto. Estos
archivos contienen la definicin de los registros y funciones USB. Estos ficheros son:

18F2550.h: Fichero de cabecera estndar para dispositivos PIC18F2550.

pic18_usb.h: Capa hardware de los dispositivos PIC18Fxx5x.

USB.C: Manejador de peticiones USB estndar.

USB.H: Prototipos de funciones, definiciones y variables globales USB.

Para que la conversin A/D se realice de forma correcta, es necesario aadir en el


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

_____________________________________________________________________
Ingeniera Informtica

75

Universidad de Valencia

En el fichero pic18_usb.h se deber cambiar la velocidad del dispositivo de


velocidad completa a baja velocidad:
#ifndef USB_USE_FULL_SPEED
#define USB_USE_FULL_SPEED

FALSE

#endif

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


#ifndef USB_HID_DEVICE
#define USB_HID_DEVICE

FALSE

#endif

Una vez hechas estas modificaciones, empezamos a desarrollar el programa que


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

_____________________________________________________________________
Ingeniera Informtica

76

Universidad de Valencia

Led ON / Led OFF


Inicializacin Registros USB
Enumeracin

Dispositivo
Enumerado??

No

Si

Led ON
Configuracin Mdulo A/D

Conversin A/D
Transmisin de datos

FIN

Figura 6.1: Diagrama de bloques del programa


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

77

Universidad de Valencia

PROGRAMA. Por ltimo, se selecciona la opcin Escribir [Edu]. De esta forma, ya


tenemos el microcontrolador programado y podemos utilizarlo en nuestro dispositivo.

6.2.2. Creacin del fichero INF.


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

78

Universidad de Valencia

conecta el dispositivo y no ser de una clase genrica, Windows no encontrar un


archivo INF que pueda utilizar para asignarle un driver y lanzar el Asistente para
Agregar Nuevo Hardware donde se puede indicar la localizacin del archivo INF
necesario para la instalacin del perifrico.
Una vez localizado, se carga el driver indicado, se aade el perifrico en el
Administrador de Dispositivos y se indica al usuario que la instalacin del dispositivo
ha finalizado de forma correcta. En el Administrador de Dispositivos se puede ver
tambin la descripcin del dispositivo y el fabricante, obtenidos del archivo INF.
Adems, durante esta operacin, se ha copiado el fichero INF (tempusb.inf) en el
directorio \windows\inf, el driver (mchpusb.sys) en \windows\system32\drivers y el
instalador de clase (tempusbci.dll) en \windows\system32, de forma que la prxima
vez que se conecte el dispositivo, el ordenador lo reconocer sin necesidad de indicar
ningn dato.
La informacin en un archivo INF est dividida en secciones. Cada seccin puede
ser identificada porque su nombre est entre corchetes. Las principales secciones son:

Version: especifica el sistema operativo para el que est destinado el


fichero INF. Para dispositivos que utilizan WDM (Windows Driver
Model) drivers, el valor puede ser $Windows 98$, $Windows NT$ o
$Chicago$, independientemente del sistema operativo que est instalado
en el ordenador. En esta seccin se indica tambin el nombre de la clase
de los dispositivos instalados con este fichero as como un identificador
de clase que es utilizado por el registro del sistema para identificar a los
dispositivos pertenecientes a esta clase.

ClassInstall: en esta seccin se indica si se ha de instalar una nueva clase.


El Administrador de Dispositivos nicamente procesa la seccin si una
clase de dispositivo an no est instalada en el sistema. Aqu ser donde
indicaremos el icono, el nombre y la descripcin de la clase as como el
nombre del archivo DLL (tempusbci.dll) que instalar la nueva clase en el
Administrador de Dispositivos.

_____________________________________________________________________
Ingeniera Informtica

79

Universidad de Valencia

Manufacturer: contiene el identificador de vendedor y producto


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

DestinationDirs: indica el directorio o directorios donde se copiarn los


ficheros.

Strings: define las cadenas referenciadas en las otras secciones.

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

6.2.3. Creacin de una nueva clase.


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

_____________________________________________________________________
Ingeniera Informtica

80

Universidad de Valencia

El resto de ficheros del directorio no hace falta sustituirlos pero si que es


necesario realizar algunos cambios en ellos (bsicamente es cambiar el nombre de la
clase utilizada en el ejemplo por el que utilizaremos nosotros y que es
TempUSBClassInstaller). De esta forma, en el fichero sources habr que poner la
lnea TARGETNAME=tempusbci, y en classinst.c habr que sustituir el nombre,
quedando de la siguiente forma:
DWORD CALLBACK
TempUSBClassInstaller(
IN DI_FUNCTION

InstallFunction,

IN HDEVINFO

DeviceInfoSet,

IN PSP_DEVINFO_DATA DeviceInfoData

OPTIONAL

En la plantilla de recursos classinst.rc se tiene que cambiar por una parte el icono
que se utilizar y por otra, en la informacin de la versin, se incluye informacin
sobre la descripcin de la clase, el nombre del fabricante y el nombre del fichero
resultante encargado de realizar la instalacin de la clase en el Administrador de
Dispositivos (archivo DLL).
Cuando se han realizado todos estos cambios se procede a crear el archivo DLL
que necesitamos. Para ello en la lnea de comandos del DDK se ejecuta build cZ
toaster. Con este comando se crearn todos los ficheros .sys, .exe y .dll del proyecto
Toaster, incluyendo el archivo DLL necesario para instalar la clase y que se llama
tempusbci.dll. De todos los ficheros creados este ser el nico que nos servir y
permitir que al conectar el perifrico al ordenador, y una vez reconocido y con el
driver instalado, en el Administrador de Dispositivos aparezca algo as:

_____________________________________________________________________
Ingeniera Informtica

81

Universidad de Valencia

Figura 6.2: Nueva clase en el Administrador de Dispositivos

6.3. Implementacin del software.


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

La primera funcin permite establecer una tubera pasndole como parmetros el


identificador de vendedor y producto (para identificar al dispositivo), el punto final
con el que nos queremos comunicar y la direccin de los datos. La siguiente funcin
nos permitir leer los datos y la ltima cerrar la tubera.
_____________________________________________________________________
Ingeniera Informtica

82

Universidad de Valencia

El programa consta de un mdulo principal que contiene la definicin de las


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

_____________________________________________________________________
Ingeniera Informtica

83

Universidad de Valencia

private void TempUSB_Load(object sender, EventArgs e)


{
usbapi.OpenPipe();
timer1.Start();
}

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


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

El timer es el que marca el momento de la captura de la temperatura. Cada vez


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

_____________________________________________________________________
Ingeniera Informtica

84

Universidad de Valencia

7. Experimentacin.
Una vez finalizada la implementacin, se deben realizar una serie de pruebas para
evaluar el correcto funcionamiento tanto del perifrico como de la aplicacin
software.
Las pruebas realizadas son:

Instalacin del perifrico en distintas mquinas.

Medicin de la temperatura en distintos ambientes.

Comprobacin del correcto funcionamiento de la aplicacin software.

7.1. Instalacin del perifrico.


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

_____________________________________________________________________
Ingeniera Informtica

85

Universidad de Valencia

Las mquinas donde se han llevado a cabo las pruebas son:

Sony Vaio con procesador Intel Pentium M a 1 GHz, memoria RAM de 1


GB y sistema operativo Windows XP Profesional.

Compaq con procesador Intel Pentium III a 1 GHz, memoria RAM de 256
MB y sistema operativo Windows XP Home Edition.

HP con procesador Intel Pentium IV a 2 GHz, memoria RAM de 512 MB


y sistema operativo Windows 2000 Professional.

Fujitsu-Siemens con procesador AMD Athlon XP2600+ a 2,1 GHz,


memoria RAM de 512 MB y sistema operativo Windows XP Home
Edition.

En todos ellos al conectar el perifrico al puerto USB se ha detectado nuevo


hardware y se ha mostrado el asistente para agregarlo. Se ha indicado la localizacin
del fichero INF y la instalacin del driver ha sido correcta, pudiendo ver en el
Administrador de Dispositivos como apareca el perifrico. Se ha vuelto ha repetir el
proceso en todos ellos y, la segunda vez que se conectaba, lo reconoca de forma
automtica sin necesidad de indicar ningn dato.
Tambin se ha comprobado que la comunicacin del dispositivo con la aplicacin
software era correcta. Para ello simplemente se ha ejecutado la aplicacin y se ha
observado que indicaba una temperatura coherente.

7.2. Medicin de la temperatura.


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

86

Universidad de Valencia

calor y cerca de una fuente de fro. En todos los casos el valor de la temperatura
medida por ambos instrumentos era similar, con una diferencia de 1C como
mucho.
Tambin se ha podido observar que al acercarlos a una fuente de calor, ambos
experimentan el mismo incremento en el valor medido aunque el termmetro lo hace
con un pequeo retraso, tardando ms en alcanzar el valor. Lo mismo ocurre al
acercarlos a una fuente de fro.

7.3. Comprobacin del software.


Es necesario comprobar que la aplicacin software, adems de mostrar la
temperatura por pantalla, tambin realiza de forma correcta el resto de funciones que
se indicaron en el diseo, teniendo en cuenta y de forma especial, las restricciones que
se indicaron.
Las pruebas realizadas consisten en:

Comprobar las temperaturas mxima y mnima.

Capturar las temperaturas creando un fichero donde se guarden los datos.

Programar / desprogramar una captura.

Cambiar el intervalo de captura.

Ver los datos capturados y la grfica.

Para comprobar que las temperaturas mxima y mnima mostradas eran correctas,
se parti de una temperatura de inicio y se acerc el dispositivo a una fuente de calor
para ver como aumentaba la temperatura mxima. Posteriormente se acerc tambin a
una fuente de fro y se vio como variaba la mnima.
La captura de las temperaturas en un fichero se realiz de forma correcta,
comprobando todos los datos guardados. Para comprobar que las temperaturas
mxima y mnima almacenadas en el fichero eran las correspondientes al intervalo de
_____________________________________________________________________
Ingeniera Informtica

87

Universidad de Valencia

tiempo en el que tuvo lugar la captura, se realiz de nuevo lo explicado en el prrafo


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

_____________________________________________________________________
Ingeniera Informtica

88

Universidad de Valencia

8. Presupuesto.
Para realizar una estimacin del coste econmico del proyecto, se han dividido
los gastos asociados al desarrollo del mismo en varios grupos:

Recursos hardware: Hardware necesario para la realizacin del proyecto


pero que no forma parte de l.

Recursos software: Software necesario para llevar a cabo la realizacin


del proyecto pero que no forma parte constituyente de l.

Componentes y fabricacin del PCB: Coste de los componentes del


circuito impreso y coste de la fabricacin del mismo.

Recursos humanos: Mano de obra necesaria para realizar el proyecto.

8.1. Coste de los recursos hardware.


El hardware de desarrollo del sistema consta de un ordenador porttil con las
siguientes caractersticas:

Microprocesador Pentium M a 1 GHz.

Memoria RAM de 1 MB.

Disco duro de 40 GB.

Monitor de 10,6

_____________________________________________________________________
Ingeniera Informtica

89

Universidad de Valencia

Adems es necesario un soldador de montaje superficial para soldar los


componentes a la placa y un multmetro para el testeo del PCB. Tambin se utiliza la
tarjeta EduMic para programar el microcontrolador. El coste lo podemos ver en la
siguiente tabla:
CONCEPTO

PRECIO

PC Pentium M 1 GHz

1.000,00

Soldador

21,50

Multmetro

49,15

Tarjeta EduMic

313,57

TOTAL

1.384,22

Tabla 8.1: Presupuesto de los recursos hardware

8.2. Coste de los recursos software.


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

90

Universidad de Valencia

El programa EduMic que se utiliza junto a la tarjeta EduMic para cargar el


programa en el microcontrolador PIC puede descargarse gratuitamente desde su
pgina web.
El coste desglosado puede verse en la siguiente tabla:
CONCEPTO

PRECIO

Windows XP Professional

284,05

Paquete Orcad 9.2

6.000,00

Compilador CCS v. 3.235

331,86

Windows Server 2003 SP1DDK

0,00

Visual C# 2005 Express Edition

0,00

Microsoft Excel 2002

147,00

Programa EduMic v. 2.0

0,00

TOTAL

6.762,91

Tabla 8.2: Presupuesto de los recursos software

8.3. Coste de los componentes y fabricacin del PCB.


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

_____________________________________________________________________
Ingeniera Informtica

91

Universidad de Valencia

CONCEPTO

CANTIDAD

PRECIO POR
UNIDAD

PRECIO

Resistencias

0,02

0,08

Condensadores cermicos

0,04

0,16

Condensad. electrolticos

0,02

0,12

Cristal 4 MHz

0,22

0,44

Conector USB tipo A

1,48

2,96

Led rojo

0,06

0,12

Regleta hembra

0,51

1,02

Microcontr. PIC18F2550

7,39

7,39

Switch

0,80

1,60

Sensor LM50

0,42

0,84

Rollo de estao

7,01

7,01

Cable USB Tipo A - A

2,45

2,45

Fotolitos

450,00

450,00

PCB

10,00

10,00

TOTAL

484,19

Tabla 8.3: Presupuesto de los componentes y el PCB

8.4. Coste de los recursos humanos.


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

Ingeniero Junior: 9,09 /hora

Tcnico: 6,06 /hora

_____________________________________________________________________
Ingeniera Informtica

92

Universidad de Valencia

Las tareas realizadas por el ingeniero son el anlisis de requisitos, diseo,


implementacin y experimentacin, mientras que el tcnico se encargar nicamente
del montaje y testeo de la placa de prueba y del PCB. A continuacin pueden verse las
horas dedicadas a cada tarea as como el coste resultante.
TAREA

HORAS

COSTE

Anlisis de requisitos

65

590,85

Diseo

170

1.545,30

Implementacin

210

1.908,90

Experimentacin

50

454,5

495

4.499,55

TOTAL

Tabla 8.4: Presupuesto del coste de tareas del ingeniero


TAREA

HORAS

COSTE

Montaje

24,24

Testeo

30,30

54,54

TOTAL

Tabla 8.5: Presupuesto del coste de tareas del tcnico


PERSONAL

HORAS

COSTE

495

4.499,55

54,54

504

4.554,09

Ingeniero
Tcnico
TOTAL

Tabla 8.6: Coste total de los recursos humanos

8.5. Coste total del proyecto.


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

93

Universidad de Valencia

CONCEPTO

COSTE

Recursos hardware

1.384,22

Recursos software

6.762,91

Componentes y fabricacin del PCB


Recursos humanos

484,19
4.554,09

TOTAL

13.185,41

Tabla 8.7: Coste total del proyecto

_____________________________________________________________________
Ingeniera Informtica

94

Universidad de Valencia

9. Conclusiones y trabajo futuro.

9.1. Conclusiones.
Despus de haber realizado las pruebas y haber examinado los resultados
obtenidos, se pueden extraer conclusiones sobre el proyecto. Tanto el perifrico como
la aplicacin software desarrollados satisfacen todos los objetivos marcados
inicialmente en el apartado 1.1. as como los requisitos de usuario indicados en el
apartado 4.1.
El resultado del proyecto ha sido la obtencin de un circuito impreso con un
microcontrolador PIC que realiza una conversin A/D de los datos adquiridos por un
sensor de temperatura a la vez que controla la comunicacin con el host y el envo de
estos datos a travs de un bus USB. Estas temperaturas pueden ser visualizadas
mediante una aplicacin que permite realizar un tratamiento de los datos.
Con la eleccin de USB como medio de interconexin entre el perifrico y el
ordenador se consiguen algunos de los requisitos especificados:

Alimentacin por el bus. El estndar USB permite la alimentacin de


dispositivos lentos que consumen un mximo de 2,5 W.

_____________________________________________________________________
Ingeniera Informtica

95

Universidad de Valencia

Fcil instalacin. Cuando el usuario conecta el perifrico al ordenador,


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

Soportado por varios sistemas operativos. Windows 98 fue el primer


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

La eleccin del bus USB y del microcontrolador PIC18F2550 ha influido tanto en


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

_____________________________________________________________________
Ingeniera Informtica

96

Universidad de Valencia

Una de las desventajas de USB desde el punto de vista del desarrollador es la


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

9.2. Trabajo futuro.


Aunque se han cumplido los objetivos del proyecto, es posible mejorarlo
aadindole nuevas funcionalidades.
Como trabajo futuro se propone:

Aadir nuevos sensores (de humedad, luminosidad,) a la placa, de


forma que se puedan conocer ms datos sobre el entorno.

Realizar ms estadsticas sobre los datos adquiridos, como el clculo de la


media, grficas con varias capturas para poder realizar comparativas,

Desarrollar alguna aplicacin de domtica y dependiendo de los valores


de los datos adquiridos por los sensores se podran subir/bajar persianas o
encender/apagar alguna luz. Tambin se podra utilizar para controlar los
valores ambientales en entornos donde se deben vigilar los valores de
temperatura, humedad, luminosidad o cualquier otra variable ambiental,
activando alguna alarma cuando los valores de estas variables se salgan de
rango.

_____________________________________________________________________
Ingeniera Informtica

97

Universidad de Valencia

_____________________________________________________________________
Ingeniera Informtica

98

Universidad de Valencia

Parte II
Planos y especificaciones

99

100

10. Planos del PCB.

10.1. Esquema elctrico.

_____________________________________________________________________
Ingeniera Informtica

101

Universidad de Valencia

_____________________________________________________________________
Ingeniera Informtica

102

Universidad de Valencia

10.2. Listado de componentes.


En la siguiente tabla se muestran los datos de los componentes a los que hace
referencia el circuito impreso.
REFERENCIA

DESCRIPCION

R1

Resistencia de 1K

R2

Resistencia de 10K

C1

Condensador electroltico de 1 F

C2, C3

Condensadores cermicos de 27 pF

C4

Condensador electroltico de 47 F

C5

Condensador electroltico de 10 F

U1

Microcontrolador PIC18F2550

S1

Switch

D1

Led Rojo

CN1

Conector USB tipo A

XT1

Cristal de 4 MHz

Q1

Sensor de temperatura LM50


Tabla 10.1: Listado de componentes

_____________________________________________________________________
Ingeniera Informtica

103

Universidad de Valencia

10.3. Diseo del PCB. Caras Top y Bottom.

_____________________________________________________________________
Ingeniera Informtica

104

Universidad de Valencia

10.4. Pinout.
SEAL

PIN

~MCLR/Vpp/RE3

RA0/AN0

RA1/AN1

RA2/AN2/Vref-/CVref

RA3/AN3/Vref+

RA4/T0CKI/C1OUT/RCV

RA5/AN4/~SS/HLVDIN/C2OUT

Vss

OSC1/CLKI

OSC2/CLKO/RA6

10

RC0/T1OSO/T13CKI

11

RC1/T1OSI/CCP2/~UOE

12

RC2/CCP1

13

Vusb

14

RC4/D-/VM

15

RC5/D+/VP

16

RC6/TX/CK

17

RC7/RX/DT/SDO

18

Vss

19

Vdd

20

RB0/AN12/INT0/FLT0/SDI/SDA

21

RB1/AN10/INT1/SCK/SCL

22

RB2/AN8/INT2/VMO

23

RB3/AN9/CCP2/VPO

24

RB4/AN11/KBI0

25

RB5/KBI1/PGM

26

RB6/KBI2/PGC

27

RB7/KBI3/PGD

28

Tabla 10.2: Pinout del microcontrolador PIC18F2550


_____________________________________________________________________
Ingeniera Informtica

105

Universidad de Valencia

SEAL

PIN

Vcc

-Data

+Data

GND

Tabla 10.3: Pinout del conector USB

_____________________________________________________________________
Ingeniera Informtica

106

Universidad de Valencia

11. Especificaciones.
Este apartado se centra en la definicin de las exigencias relacionadas con los
conceptos econmicos y tcnicos que afectan al proyecto. Se centrar bsicamente en
los aspectos tcnicos pero tambin quedarn definidos los asuntos relacionados con la
empresa realizadora del proyecto y las subcontratas que proveern los materiales
necesarios para su realizacin. Todo lo relacionado con la ejecucin material del
proyecto deber seguir las normas y condiciones que aqu se describen, incluyendo:

La seguridad del proyecto, para que no sufra daos o se destruya, y las


personas que estn en contacto con l, antes y despus de su realizacin.

La descripcin de los materiales empleados, tanto por su carcter tcnico


y calidad como por su coste econmico.

La realizacin de los trabajos que hay que llevar a cabo determinados de


acuerdo a las categoras profesionales, as como a tiempos y
procedimientos de ejecucin.

La calidad a la hora del montaje, con las prescripciones de la ejecucin y


de la utilizacin del proyecto, y su control de calidad.

La subcontratacin, normas a seguir por el contratista y la contrata.


Descripcin de procedimientos legales en caso de incumplimiento de
alguna de las partes, desacuerdo o contratiempos que pudieran surgir y la
forma de relacionarlos.

_____________________________________________________________________
Ingeniera Informtica

107

Universidad de Valencia

11.1. Condiciones econmicas.


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

11.2. Especificaciones tcnicas.

11.2.1. Condiciones de trabajo del sistema.


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

_____________________________________________________________________
Ingeniera Informtica

108

Universidad de Valencia

11.2.2. Requerimientos de las seales del sistema.


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

Descripcin

Min.

Max.

Unidad

Vcc

Tensin de alimentacin

4,75

5,25

Icc

Corriente de alimentacin

500

mA

Tabla 11.1: Condiciones de la seal de alimentacin


Los conductores de transmisin/recepcin de datos se etiquetan como D+ y D-.
Como hemos mencionado, el parmetro a medir es la tensin diferencial entre los dos
hilos.
Salidas
Diferencial 1
Diferencial 0

Entradas

D+ 2,8 V

D+ 2 V

D- 0,3 V

D+ - D- 0,2 V

D- > 2,8 V

D- 2 V

D+ 0,3 V

D- - D+ 0,2 V

Tabla 11.2: Mrgenes de tensin para los niveles lgicos en USB 1.1
Si D+ y D- son menores de 0,3 V se considera que en el bus hay un cero final
(Single-Ended Zero).
La seal de reloj con la que se trabaja es de 4 MHz. En caso de utilizar una
frecuencia distinta no se garantiza que el sistema funcione correctamente.

_____________________________________________________________________
Ingeniera Informtica

109

Universidad de Valencia

11.3. Caractersticas de los materiales.

11.3.1. Especificaciones de los circuitos integrados.


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

Que su rango de alimentacin coincida con el especificado.

Que coincida el patillaje.

Microcontrolador PIC18F2550
El microcontrolador elegido es el PIC18F2550 en encapsulado DIP de 28 pines
de la empresa Microchip. Las caractersticas elctricas de este modelo pueden verse
en la siguiente tabla.

Tabla 11.3: Caractersticas elctricas del PIC18F2550

_____________________________________________________________________
Ingeniera Informtica

110

Universidad de Valencia

Sensor de temperatura LM50


El sensor de temperatura utilizado es el LM50 de la empresa National
Semiconductor en encapsulado SOT de 3 pines. Este sensor permite medir
temperaturas entre -40 y 125 C utilizando tensin de alimentacin positiva. La
tensin de salida es linealmente proporcional a la temperatura en grados centgrados
por lo que cada 10 mV de tensin de salida equivale a 1C.
Smbolo

Descripcin

Min.

Max.

Unidad

+Vs

Tensin de alimentacin

4,5

10

Vout

Tensin de salida

-1,0

+Vs + 0,6

Iout

Corriente de salida

10

mA

Tabla 11.4: Caractersticas elctricas del sensor LM50

11.3.2. Componentes pasivos y conductores.


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

UNE 20 543 85: Condensadores fijos utilizados en los equipos


electrnicos. Especificaciones generales.

_____________________________________________________________________
Ingeniera Informtica

111

Universidad de Valencia

Conectores y cableado
El conector USB utilizado es de tipo A. En la siguiente figura pueden verse sus
dimensiones.

Figura 11.1: Dimensiones del conector USB tipo A


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

_____________________________________________________________________
Ingeniera Informtica

112

Universidad de Valencia

Tanto en FS como en LS los cables de alimentacin nunca estarn trenzados.


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

11.4. Condiciones de ejecucin.

11.4.1. Fabricacin del PCB.


Para la elaboracin del PCB se deber recurrir a una empresa especializada en la
fabricacin de PCBs. Esto se debe a la tecnologa utilizada que hace necesaria la
utilizacin de maquinaria industrial precisa.
Para una fabricacin correcta, el fabricante deber garantizar los parmetros
tecnolgicos que aparece en la siguiente tabla.
PARAMETRO

VALOR

Dimetro mnimo de taladro

0,5 mm

Corona mnima

0,2 mm

Margen mnimo de la mscara con el pad de cobre

0,15 mm

Anchura mnima del conductor capas externas

0,25 mm

Espacio mnimo entre conductores capas externas

0,2 mm

Distancia mnima del conductor al borde del circuito impreso

0,3 mm

Tabla 11.5: Parmetros requeridos para la fabricacin del PCB

_____________________________________________________________________
Ingeniera Informtica

113

Universidad de Valencia

Se requiere el cumplimiento de la normativa que a continuacin se detalla:

DIN 40801: Espesores, taladros y fundamentos de los circuitos


impresos.

DIN 40802: Materiales base de las pistas.

UNE 20 620: Materiales base para circuitos impresos.

UNE 20 621 partes 4 y 5: Circuitos impresos. Diseo y utilizacin de


placas impresas.

11.4.2. Montaje de componentes.


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

_____________________________________________________________________
Ingeniera Informtica

114

Universidad de Valencia

Parte III
Apndices

115

116

Apndice A
Cdigo del microcontrolador
TempUSB.c
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOUSBDIV,PLL1,CPUDIV3,VREGEN
#use delay(clock = 24000000)
#define USB_HID_DEVICE FALSE // Deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Habilitamos EP1 para
// transferencias IN de interrupcin
#define USB_EP1_TX_SIZE 1 // Tamao del buffer IN del EP1
#include <pic18_usb.h>
#include <TempUSB.h>
#include <usb.c>

// Configuracin de USB y descriptores para este dispositivo

#define LED PIN_B7


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

// Si el dispositivo est configurado

_____________________________________________________________________
Ingeniera Informtica

117

Universidad de Valencia

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

// Puerto A de entrada

setup_adc_ports(AN0_TO_AN1 | VSS_VDD); // ADCON1


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

// Leemos el resultado de la conversin

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


}
}
}

_____________________________________________________________________
Ingeniera Informtica

118

Universidad de Valencia

TempUSB.h
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#include <usb.h>
#DEFINE USB_TOTAL_CONFIG_LEN 25

// Configuracin + interface + endpoint

/******************************************************************
* Array que contiene el descriptor de configuracin, de interface y de punto final
******************************************************************/
char const USB_CONFIG_DESC[ ] = {
// Descriptor de configuracin
USB_DESC_CONFIG_LEN, // Tamao del descriptor
USB_DESC_CONFIG_TYPE, // Tipo de descriptor (CONFIGURACION = 0x02)
USB_TOTAL_CONFIG_LEN, 0,
1,
// Nmero de interfaces que soporta el dispositivo
0x01, // Identificador de la configuracin (si hubiera ms de una)
0x00, // Indice del descriptor de cadena para esta configuracin
0x80, // Bit 6 = 1 si el dispositivo es self powered, bit 5 = 1 si soporta wakeup remoto, bits 0-4
// reservados y bit 7 = 1
0x32, // 0x32 = 100mA
// Descriptor de interface
USB_DESC_INTERFACE_LEN, // Tamao del descriptor
USB_DESC_INTERFACE_TYPE, // Tipo de descriptor (INTERFACE = 0x04)
0x00, // Identificador de la interface
0x00,
1,
// Nmero de puntos finales de la interface, sin contar EP0
0xFF, // Cdigo de la clase, FF = definido por el vendedor
0xFF, // Cdigo de la subclase, FF = definido por el vendedor
0xFF, // Cdigo del protocolo, FF = definido por el vendedor
0x00, // Indice del descriptor de cadena para la interface
// Descriptor de punto final
USB_DESC_ENDPOINT_LEN, // Tamao del descriptor
USB_DESC_ENDPOINT_TYPE, // Tipo de descriptor (ENDPOINT = 0x05)
0x81, // Nmero de endpoint y direccin (0x81 = EP1 IN)
0x03, // Tipo de transferencia soportada (0 control, 1 iscrona, 2 masiva, 3 interrupcin)
USB_EP1_TX_SIZE, 0x00, // Tamao mximo de paquete
0x0A,
};
#define USB_NUM_HID_INTERFACES 0
#define USB_MAX_NUM_INTERFACES 1
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS] = {1};
#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif

_____________________________________________________________________
Ingeniera Informtica

119

Universidad de Valencia

// Descriptor de dispositivo
char const USB_DEVICE_DESC[ ] = {
USB_DESC_DEVICE_LEN, // Tamao del descriptor
USB_DESC_DEVICE_TYPE, // Tipo de descriptor (DISPOSITIVO = 0x01)
0x00, 0x01, // Versin USB en bcd (1.0)
0x00, // Cdigo de la clase (si es 0, la interface define la clase)
0x00, // Cdigo de la subclase
0x00, // Cdigo del protocolo
USB_MAX_EP0_PACKET_LENGTH, // Tamao mximo de paquete del EP0
0xD8, 0x04, // Identificador de vendedor (0x04D8 es Microchip)
0x11, 0x00, // Identificador de producto
0x01, 0x00,
0x01, // Indice del descriptor de cadena del fabricante
0x02, // Indice del descriptor de cadena del producto
0x00, // Indice del descriptor de cadena del nmero de serie
USB_NUM_CONFIGURATIONS // Nmero de configuraciones
};
/**********************************************************************
* Descriptores de cadena. La cadena 0 es una cadena especial y debe incluirse siempre
**********************************************************************/
const char USB_STRING_DESC_OFFSET[ ] = {0, 4, 12};

// Dnde comienza cada cadena

#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET)


char const USB_STRING_DESC[ ] = {
// String 0
4, // Tamao de la cadena
USB_DESC_STRING_TYPE,
0x09, 0x04,

// Tipo de descriptor (STRING = 0x03)

// 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,

_____________________________________________________________________
Ingeniera Informtica

120

Universidad de Valencia

'p', 0,
'e', 0,
'r', 0,
'a', 0,
't', 0,
'u', 0,
'r', 0,
'a', 0,
' ', 0,
'T', 0,
'e', 0,
'm', 0,
'p', 0,
'U', 0,
'S', 0,
'B', 0
};
#ENDIF

_____________________________________________________________________
Ingeniera Informtica

121

Universidad de Valencia

_____________________________________________________________________
Ingeniera Informtica

122

Universidad de Valencia

Apndice B
Fichero .INF
[Version]
Signature = "$WINDOWS NT$"
Class = %ClassName%
ClassGuid = {4D36E911-E325-11CE-BFC1-08002BE10318}
Provider = %MFGNAME%
DriverVer = 05/13/2006, 1.0.0.0
CatalogFile = tempusb.cat
[DestinationDirs]
DefaultDestDir = 12
TempUSB.ClassCopyFiles = 11
;-----------------------------------------------------------------------------; Class Install Sections
;-----------------------------------------------------------------------------[ClassInstall32]
AddReg = TempUSB.ClassReg
CopyFiles = TempUSB.ClassCopyFiles
[TempUSB.ClassReg]
HKR,,,0,%ClassName%
HKR,,Class,,%ClassDesc%
HKR,,Icon,,11
HKR,,Installer32,,"tempusbci.dll,TempUSBClassInstaller"
[TempUSB.ClassCopyFiles]
tempusbci.dll
;-----------------------------------------------------------------------------; Device Install Sections
;-----------------------------------------------------------------------------[Manufacturer]
%MFGNAME% = Standard

_____________________________________________________________________
Ingeniera Informtica

123

Universidad de Valencia

[Standard]
%DESCRIPTION% = DriverInstall, USB\VID_04D8&PID_0011
[SourceDisksNames]
1 = %INSTDISK%,,,""
[SourceDisksFiles]
mchpusb.sys = 1,,
tempusbci.dll = 1,,
;-----------------------------------------------------------------------------; Windows 2000/XP Sections
;-----------------------------------------------------------------------------[DriverInstall.NT]
CopyFiles = DriverCopyFiles
[DriverCopyFiles]
mchpusb.sys
[DriverInstall.NT.Services]
AddService = TempUSB, 2, DriverService
[DriverService]
DisplayName = %SVCDESC%
ServiceType = 1
; SERVICE_KERNEL_DRIVER
StartType = 3
; SERVICE_DEMAND_START
ErrorControl = 1
; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\mchpusb.sys
LoadOrderGroup = Extended Base
;-----------------------------------------------------------------------------; String Definitions
;-----------------------------------------------------------------------------[Strings]
MFGNAME = "ARZ TempUSB"
INSTDISK = "TempUSB Device Driver Disk"
DESCRIPTION = "TempUSB"
SVCDESC = "TempUSB Device Driver"
ClassName = "PIC 18F2550 USB Devices"
ClassDesc = "PIC USB Sample Device"

_____________________________________________________________________
Ingeniera Informtica

124

Universidad de Valencia

Apndice C
Cdigo de la aplicacin
TempUSBAPI.cs
// Programa principal. Contiene las funciones que permiten la comunicacin con el dispositivo.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;

// Clase para importar DLL

using DWORD = System.UInt32;


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

_____________________________________________________________________
Ingeniera Informtica

125

Universidad de Valencia

[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBReadInt(void* handle, DWORD* pData, DWORD
dwLen, DWORD* pLength, DWORD dwMilliseconds);
[DllImport("mpusbapi.dll")]
private static extern bool _MPUSBClose(void* handle);
#endregion
void* myInPipe;
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new TempUSB());
}
public void OpenPipe()
// Permite establecer una tubera
{
DWORD selection = 0;
myInPipe = _MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
}
public void ClosePipe()
// Cierra la tubera
{
_MPUSBClose(myInPipe);
}
// Permite leer datos del dispositivo
private void ReceivePacket(byte* ReceiveData, DWORD* ReceiveLength)
{
uint ReceiveDelay = 1000;
DWORD ExpectedReceiveLength = *ReceiveLength;
_MPUSBRead(myInPipe, (void*)ReceiveData, ExpectedReceiveLength, ReceiveLength,
ReceiveDelay);
}
public float MostrarTemp()
{
float result = 0;
int valor;

// Lee los datos del dispositivo y devuelve la temperatura

byte* receive_buf = stackalloc byte[1];


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

_____________________________________________________________________
Ingeniera Informtica

126

Universidad de Valencia

TempUSB.cs
// Formulario principal. Muestra la temperatura en pantalla y permite el acceso al resto de formularios.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TempUSB
{
public partial class TempUSB : Form
{
TempUSBAPI usbapi = new TempUSBAPI();
Estadisticas estadist = null;
float min;
float max;
bool ini_valores = true;
float min_captura;
float max_captura;
bool fich_abierto = false;
ProgCaptura.datosForm datosProg;

// Datos de una captura programada

public TempUSB()
{
InitializeComponent();
}
// Al cargarse crea una tubera y pone en marcha el timer
private void TempUSB_Load(object sender, EventArgs e)
{
usbapi.OpenPipe();
timer1.Start();
}
// Al cerrarse para el timer y cierra la tubera
private void TempUSB_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Stop();
usbapi.ClosePipe();
}
// Cada vez que transcurre el intervalo de tiempo del timer, captura la temperatura
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
float temp = usbapi.MostrarTemp();
TempActual.Text = temp.ToString("###.#");

_____________________________________________________________________
Ingeniera Informtica

127

Universidad de Valencia

if (ini_valores == true)
{
min = temp;
max = temp;
ini_valores = false;
}
if (temp < min)
min = temp;
if (temp > max)
max = temp;
if (estadist != null) // El formulario Estadisticas est abierto
{
estadist.TempMin.Text = min.ToString("###.#");
estadist.TempMax.Text = max.ToString("###.#");
if (estadist.captura_programada == true)
{
this.datosProg = estadist.datosProg;

// Hay una captura programada

// La fecha y hora de inicio de la captura programada coinciden con la actual


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

_____________________________________________________________________
Ingeniera Informtica

128

Universidad de Valencia

if (estadist.finCaptura.Enabled == true) // Se guardan los datos en un fichero


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

_____________________________________________________________________
Ingeniera Informtica

129

Universidad de Valencia

timer1.Enabled = true;
}
// Al pinchar sobre el icono se abre el formulario Estadisticas
private void pictureBox1_Click(object sender, EventArgs e)
{
estadist = new Estadisticas();
estadist.Show();
// Lo deshabilitamos para que solo pueda haber una instancia de la ventana
pictureBox1.Enabled = false;
}
}
}

_____________________________________________________________________
Ingeniera Informtica

130

Universidad de Valencia

Estadisticas.cs
// Formulario de estadsticas. Muestra las temperaturas mxima y mnima y permite acceder al resto de
// funciones.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace TempUSB
{
public partial class Estadisticas : Form
{
public Excel.Application ExcelApp = new Excel.Application();
public Excel.Workbook wbook = null;
public string fichero;
public int num_capturas;
public bool ini_valores_captura;
public int intervalo_capt = 1000;
public bool captura_programada = false;
public ProgCaptura.datosForm datosProg;

// Datos de una captura programada

public Estadisticas()
{
InitializeComponent();
}
// Al cargarse, pone en funcionamiento el timer y muestra la fecha y la hora
private void Estadisticas_Load(object sender, EventArgs e)
{
timer1.Start();
DateTime date = DateTime.Now;
fecha.Text = date.ToShortDateString();
hora.Text = date.ToLongTimeString();
}
// Al cerrarse, para el timer y habilita el icono de acceso a este formulario desde el formulario
// principal
private void Estadisticas_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Stop();
FormCollection nbforms = Application.OpenForms;
nbforms["TempUSB"].Controls["pictureBox1"].Enabled = true;
}

_____________________________________________________________________
Ingeniera Informtica

131

Universidad de Valencia

private void timer1_Tick(object sender, EventArgs e)


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

_____________________________________________________________________
Ingeniera Informtica

132

Universidad de Valencia

wbook = ExcelApp.Workbooks.Open(fichero, Type.Missing, Type.Missing, Type.Missing,


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

_____________________________________________________________________
Ingeniera Informtica

133

Universidad de Valencia

// Al pulsar el botn Ver Grfica, abre Excel y muestra la grfica correspondiente al fichero
// indicado
private void verGrafica_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Title = "Abrir";
openFileDialog1.Filter = "Archivos de Microsoft Excel|*.xls";
openFileDialog1.FilterIndex = 1;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fichero_graf = openFileDialog1.FileName;
if (fichero_graf == fichero)
MessageBox.Show("El fichero est siendo capturado", "TempUSB Error");
else
{
Excel.Workbook wbook_graf = ExcelApp.Workbooks.Open(fichero_graf,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
ExcelApp.Visible = true;
}
}
}
// Al pulsar el botn Ver Datos, abre Excel y muestra los datos correspondiente al fichero
// indicado
private void verDatos_Click(object sender, EventArgs e)
{
OpenFileDialog openFDlog = new OpenFileDialog();
openFDlog.Title = "Abrir";
openFDlog.Filter = "Archivos de Microsoft Excel|*.xls";
openFDlog.FilterIndex = 1;
if (openFDlog.ShowDialog() == DialogResult.OK)
{
string fich = openFDlog.FileName;
if (fich == fichero)
MessageBox.Show("El fichero est siendo capturado", "TempUSB Error");
else
{
Excel.Workbook wbk = ExcelApp.Workbooks.Open(fich, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing);
Excel.Worksheet wsht = (Excel.Worksheet)wbk.Worksheets[1];
wsht.Activate();
ExcelApp.Visible = true;
}
}
}

_____________________________________________________________________
Ingeniera Informtica

134

Universidad de Valencia

// Abre el formulario para programar una captura


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

_____________________________________________________________________
Ingeniera Informtica

135

Universidad de Valencia

ProgCaptura.cs
// Permite programar una captura introduciendo el da y la hora en que se quiere realizar, as
// como el nombre del fichero donde se guardarn los datos capturados.
// Si ya hay una captura programada muestra los datos de dicha captura, permitiendo tambin su
// deshabilitacin.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TempUSB
{
public partial class ProgCaptura : Form
{
public struct datosForm
// Almacena los datos introducidos por el usuario
{
public string fich;
// Nombre del fichero
public DateTime ini;
// Fecha y hora de inicio de captura
public DateTime fin;
// Fecha y hora de fin de captura
}
public datosForm datosProg;
public Boolean captura_programada;

// Indica si est programada una captura

public ProgCaptura()
{
InitializeComponent();
}
// Al cargar la ventana, se inicializan los campos del formulario.
// Dependiendo de si hay una captura programada o no, se inicializarn de forma distinta.
private void ProgCaptura_Load(object sender, EventArgs e)
{
iniProg.CustomFormat = "dd:MM:yyyy HH:mm:ss";
finProg.CustomFormat = "dd:MM:yyyy HH:mm:ss";
// Si hay una captura programada se muestran los datos de dicha captura.
// Si no la hay, el campo del nombre del fichero aparece vaco y los otros dos campos
// muestran la fecha y hora actuales.
if (this.captura_programada == true)
{
fichProg.Text = this.datosProg.fich;
iniProg.Value = this.datosProg.ini;
finProg.Value = this.datosProg.fin;
aceptar.Enabled = false;
deshabilitar.Enabled = true;
}
else
{
fichProg.Text = "";
iniProg.Value = DateTime.Now;

_____________________________________________________________________
Ingeniera Informtica

136

Universidad de Valencia

finProg.Value = DateTime.Now;
aceptar.Enabled = true;
deshabilitar.Enabled = false;
}
}
// Al pulsar el botn Examinar, se abre un cuadro de dilogo donde poder elegir el
// directorio y el nombre del fichero donde se quieren guardar los datos a capturar.
// Una vez seleccionado, cuando se cierre el cuadro de dilogo, se mostrar el
// nombre completo en el formulario.
private void examinar_Click(object sender, EventArgs e)
{
SaveFileDialog saveFD = new SaveFileDialog();
saveFD.Title = "Guardar Como";
saveFD.Filter = "Archivos de Microsoft Excel|*.xls";
saveFD.FilterIndex = 1;
if (saveFD.ShowDialog() == DialogResult.OK)
fichProg.Text = saveFD.FileName;
saveFD.Dispose();
}
// Al pulsar el botn Aceptar, si se han introducido valores correctos en los campos,
// se guardan los datos en la estructura
private void aceptar_Click(object sender, EventArgs e)
{
// Variables que indican si el valor de los campos es correcto
bool fichProg_OK = true;
bool iniProg_OK = true;
bool finProg_OK = true;
// Si el nombre del fichero esta vaco, se muestra una ventana de error
if (fichProg.Text == "")
{
MessageBox.Show("El nombre del fichero est vaco", "TempUSB Error");
fichProg_OK = false;
}
// Si la fecha de inicio de captura es anterior a la actual, se muestra
// una ventana de error
if (iniProg.Value <= DateTime.Now)
{
MessageBox.Show("La fecha de inicio de captura es invlida. Debe ser posterior a la
actual.", "TempUSB Error");
iniProg_OK = false;
}

_____________________________________________________________________
Ingeniera Informtica

137

Universidad de Valencia

// Si la fecha de fin de captura es anterior a la de inicio, se muestra


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

_____________________________________________________________________
Ingeniera Informtica

138

Universidad de Valencia

Apndice D
Manual de usuario de TempUSB
D.1. Instalacin del dispositivo.
Al conectar el dispositivo TempUSB por primera vez, aparecer el asistente para
la instalacin de nuevo hardware, que lo primero que hace es preguntar si se quiere
conectar a Windows Update. Se marca la opcin No y se pincha sobre Siguiente. En la
siguiente pantalla se marcar la opcin de "Instalar desde una lista o ubicacin
especfica". Una vez hecho, se pincha sobre Siguiente para pasar a la prxima
pantalla, donde se marca la opcin de "Buscar el controlador ms adecuado en estas
ubicaciones". Se pincha sobre "Incluir esta ubicacin en la bsqueda" y a
continuacin sobre Examinar, entonces se selecciona la carpeta TempUSB_Driver, y
se le da a Aceptar y a Siguiente. En ese momento, comenzarn a copiarse los archivos
necesarios en el ordenador. Una vez se termine de copiar, aparecer una pantalla
indicando que la instalacin del driver est terminada. El led del dispositivo estar
encendido, lo que indica que est listo para ser usado.
Si todo ha ido bien, en el Administrador de Dispositivos debe aparecer algo as:

_____________________________________________________________________
Ingeniera Informtica

139

Universidad de Valencia

El resto de veces que se conecte el dispositivo al ordenador, este ser reconocido


de forma automtica con lo que no ser necesario indicar ningn tipo de informacin.

D.2. Instalacin de la aplicacin.


Antes de indicar cmo instalar el software que permite la comunicacin con el
dispositivo y mostrar la temperatura en pantalla, se indicarn una serie de requisitos
que debe cumplir el sistema para poder ejecutar la aplicacin. Estos requisitos son:

Sistema operativo Windows 2000 o XP.

Microsoft Excel 2002.

Para instalar la aplicacin hay que ejecutar el programa instalar.exe que lo


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

_____________________________________________________________________
Ingeniera Informtica

140

Universidad de Valencia

tiene instalado, se recomienda desactivar la opcin, pero si no se tiene, es necesario


instalarlo para poder ejecutar la aplicacin.

D.3. Utilizacin de la aplicacin.


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

Al pinchar sobre el icono aparecer la ventana TempUSB Estadsticas:

_____________________________________________________________________
Ingeniera Informtica

141

Universidad de Valencia

En esta ventana se indican la fecha, la hora y las temperaturas mxima y mnima


capturadas desde que el programa est en funcionamiento.
El intervalo de tiempo que ha de transcurrir para realizar la captura de la
temperatura es por defecto de 1 segundo pero se puede cambiar seleccionando entre
los posibles valores indicados en la lista desplegable.

Si se desea crear un fichero con los datos capturados slo es necesario pinchar en
el botn Capturar Temperatura e indicar la ubicacin y el nombre del fichero donde
se quieren guardar. Hecho esto, se crear el fichero con los datos, indicando adems,
las temperaturas mxima y mnima de ese intervalo de captura, la fecha y las horas de
inicio y fin de la captura. Para finalizar la captura hay que pinchar sobre el botn
Parar Captura.
Si lo que se quiere es programar una captura para un da y una hora de comienzo
y fin determinados habr que pinchar el botn Programar Captura y aparecer la
siguiente ventana.

_____________________________________________________________________
Ingeniera Informtica

142

Universidad de Valencia

Para indicar la ubicacin y el nombre del fichero donde se guardarn los datos
hay que pulsar el botn Examinar y seleccionar la carpeta deseada. Una vez
introducidos todos los datos del formulario se pulsa el botn Aceptar y la
programacin ya estar realizada. En caso de no rellenar alguno de los campos o
hacerlo de forma incorrecta, se mostrar una pantalla de error (como la mostrada a
continuacin) indicando el problema.

Si ya existe una captura programada, al pulsar Programar Captura (en la ventana


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

_____________________________________________________________________
Ingeniera Informtica

143

Universidad de Valencia

Para ver los datos almacenados en un fichero o las grficas correspondientes a


esos datos slo habr que pulsar sobre Ver Datos o Ver Grfica e indicar el nombre
del fichero y estos se mostrarn.

_____________________________________________________________________
Ingeniera Informtica

144

Universidad de Valencia

Bibliografa
[Aje00]

A. Domingo Ajenjo. Direccin y Gestin de Proyectos. RA-MA, 1


edicin, 2000.

[App]

Caractersticas

de

FireWire.

Disponible

en

Internet:

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

[Axe99]

Jan Axelson. USB complete. Lakeview Research, 1 edicin, 1999.

[Bol06]

J. Antonio Boluda. Notas de la asignatura Perifricos. Ingeniera


Informtica. Universidad de Valencia, 2005-2006.

[CCS]

Caractersticas del compilador de C CCS. Disponible en Internet:


http://www.ccsinfo.com.

[CWD02]

[DDK]

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

[Dev]

Artculos, cursos y foro sobre programacin en Visual C#. Disponible


en internet: http://www.developer.com/net/csharp/.

[Edu]

Tarjeta EduMic. Disponible en Internet: http://tapec.uv.es/edumic/.

[Far]

Distribuidor de productos electrnicos Farnell InOne. Disponible en


Internet: http://es.farnell.com.

[MBP01]

R.J. Martnez, J.A. Boluda, J.J. Prez. Estructura de computadores y


perifricos. RA-MA, 1 edicin, 2001.

[Mic]

Caractersticas de Microsoft Visual Basic, Visual C++ y Visual C#.


Disponible en Internet: http://www.microsoft.com.

_____________________________________________________________________
Ingeniera Informtica

145

Universidad de Valencia

[MPL]

Entorno de desarrollo MPLAB de Microchip. Disponible en Internet:


http://www.microchip.com.

[Nat]

Datasheet del sensor de temperatura LM50. Disponible en Internet:


http://www.national.com.

[Per05]

J.J. Prez. Notas de la asignatura Sistemas Basados en


Microprocesador. Ingeniera Informtica. Universidad de Valencia,
2004-2005.

[PIC]

Datasheet del microcontrolador PIC18F2550. Disponible en Internet:


http://ww1.microchip.com/downloads/en/DeviceDoc/39632c.pdf

[Usb]

USB

Implementers

Forum,

Inc.

Disponible

en

Internet:

en

Internet:

http://www.usb.org

[USB11]

Especificacin

de

USB

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

Disponible

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

_____________________________________________________________________
Ingeniera Informtica

146

Universidad de Valencia

También podría gustarte