Académique Documents
Professionnel Documents
Culture Documents
MONITOREO DE PARMETROS
A TRAVS DE UN SISTEMA DE TELEMETRA
TESINA
QUE PARA OBTENER LA
ESPECIALIDAD EN SISTEMAS INMERSOS
P R E S E N TA :
A mis padres, Daniel I. Mnguez Rodrguez y Guadalupe Vital Ugalde, quienes siempre me han
brindado todo su apoyo en las decisiones que he tomado en mi vida; y por su esfuerzo, que me
ha servido de inspiracin a lo largo de mi preparacin como profesionista y ser humano.
A mi abuelita Ma. Eugenia Vital Ugalde quien ha sido como una segunda madre para mi. A mi
hermana Diana G. Mnguez Vital con quien he compartido mis mejores momentos y ha sabido
levantar mi nimo en los peores.
Por ltimo, pero no menos importante, a mi familia que sin importar la distancia que nos separa
hemos mantenido la misma unidad; siempre los conservar en mi memoria ya que saben
transmitir su cario, su apoyo y su alegra.
Agradecimientos
Al Dr. Roberto Herrera Charles quien como profesor, consejero y director de Tesina me ayud
durante la Especialidad desde su inicio hasta la terminacin del proyecto de Tesina. A mis
revisores el Dr. Jess Francisco Crdoba, M.C. Adolfo Esquivel y Esp. Eduardo Barba por sus
observaciones y consejos. Al cuerpo acadmico de la especialidad, M.C. Teodoro lvarez, M.C.
Jos Montoya, M.C. David Saucedo y M.C. Juan Tapia por compartir sus experiencias y
conocimientos.
A M.C. Armando Salas y a la empresa Karl Zeiss que a travs del proyecto desarrollado entre
ambos nos sirvi como punto de partida para la propuesta del proyecto de Tesina.
A CONACYT por el apoyo brindado a travs de la beca de programas inscritos en el PNPC; a los
proyectos de investigacin SIP-20071264, Sistema de control de unidades remotas mviles
SIP-20080851 del IPN y Creacin de una especialidad en Embedded Systems Fondo Mixto
CONACYT BC Convocatoria 2006-2 Proyecto 63058. A CITEDI por aceptarme en su programa
de Especialidad y por los servicios que me permiti utilizar en sus instalaciones como estudiante.
Monitoreo de Parmetros a travs de un Sistema de Telemetra
Resumen
En este trabajo se presenta un sistema de monitoreo que realiza la lectura de parmetros de
temperatura y enviarlos a un servidor para visualizarlos a travs de un Applet generado en Java.
El sistema presentado hace uso de varias tecnologas de transmisin de datos que en los ltimos
aos a han evolucionado de manera importante. El sistema comienza con el uso de un sistema
embebido o microcontrolador para el muestreo de datos tomados de la salida de un sensor de
temperatura, el microcontrolador tambin se encarga de la comunicacin serial bajo el estndar
RS-232, con un dispositivo transceptor (Starlert ST-1) el cual usa el protocolo de paquetes UDP
para realizar el envo de datos a travs de la red de Internet por medio de la red celular GSM
utilizando el servicio de paquetes GPRS. La informacin es almacenada en un servidor Web
Apache que genera un archivo de datos el cual sirve para introducirlos a un Applet programado
en Java y utilizando sus elementos visuales poder observar el comportamiento de los parmetros
introducidos al microcontrolador.
Una caracterstica sobresaliente de este trabajo es el uso de dispositivos de alto rendimiento que
conjuga tecnologas de comunicaciones, procesamiento e Internet utilizando las herramientas
adquiridas en el curso de especialidad para desarrollar un sistema que puede ser llevado a
muchas aplicaciones para la mejora de procesos industriales, sistemas de cultivo, dispositivos de
seguridad, servicios de salud, entre otros, que cabe mencionar que al contar con un control
supervisorio, se puede automatizar procesos, accesar a la informacin de manera remota y
reducir la carga de trabajo de los recursos humanos lo cual puede resultar en un mejor
rendimiento de los mismos.
Abstract
This work introduces a monitoring system which is able to make the reading of parameters such
as temperature and sends it to a server in order to visualize them with a Java Applet.
The presented system make use of several data transmission technologies which have evolved in
a significant way. The system starts with the use of an embedded system or microcontroller unit
(MCU) for taking samples of the signal generated by a temperature sensor, also it manages the
serial communication, following the RS-232 standard, with a transceiver device (Starlert ST-1)
which uses the UDP package protocol in order to send data over the Internet through the GSM
network using the package service GPRS. The information gathered is saved in a Web Apache
server and creates a log file with data which can be parsed to an Applet written in Java and using
its visual elements be able to watch the parameters' behavior.
3GSM Third-generation Services for GSM (Servicios de Tercera generacin para GSM)
ADC Analog-to-Digital Converter (Convertidor Analgico Digital)
A-GPS Assited GPS (GPS Asistido)
APN Access Point Name (Nombre del Punto de Acceso)
ARP Address Resolution Protocol (Protocolo de Resolucin de Direcciones)
ASCII American Standard Code for Information Interchange (Cdigo Estadounidense
Estandarizado para el Intercambio de Informacin)
AuC Authentication Center (Centro de Autenticacin)
AVL Automatic Vehicle Location (Localizacin Automtica Vehicular)
BSC Base Station Controller (Controlador de Estaciones Base)
BSS Base Station Subsystem (Sub-sistema de Estaciones Base)
BTS Base Trasceiver Station (Estacion Base)
CEPT Confrence Europenne des Postes et Tlcommunications (Organizacin de
estandarizacin Europea)
CDMA Code Division Multiple Access (Acceso Mltiple por Divisin de Cdigo)
CDPD Cellular Digital Packet Data (Paquetes de Datos Celular Digital)
DCS 1800 Digital Cellular System 1800 (Sistema Celular Digital 1800)
DCO Digitally Controlled Oscilators (Osciladores Digitalmente Controlados)
DNS Domain Name System (Sistema de Nombre de Dominio)
DMIPS Dhrystone Million Instruction per Second (Millones de Instrucciones por
Segundos Dhrystone)
EDGE Enhanced Data for a Global Enviroment (Datos Mejorados para un Ambiente
Global)
FIFO First In, First Out (Primero en entrar, primero en salir)
FLL Frequency-locked Loop (Lazo Enganchado por Frecuencia)
FTP File Transfer Protocol (Protocolo de Transferencia de Archivos)
GGSN Gateway GPRS Support Node (Puerta de Enlace del Nodo de Soporte GPRS)
GPRS General Packet Radio Service (Servicio General de Paquetes por Radio)
GPS Global Positioning System (Sistema de Posicionamiento Global)
GSM Global System for Mobile Communications (Sistema Global de Comuniaciones
Mviles)
GSMA GSM Association (Asociacin GSM)
HLR Home Location Register (Registro de Localizacin de usuarios Locales)
HSCSD High Speed Circuit Switched Data (Datos Conmutados por Circuitos de Alta
Velocidad)
HSPA High Speed Packet Access (Acceso a Paquetes de Alta Velocidad)
HTTP Hypertext Transfer Protocol (Protocolo de Transferencia de Hiper-texto)
I2C Inter-Integrated Circuit (Circuitos Inter-integrados)
ICMP Internet Control Message Protocol (Protocolo de Mensajes de Control de Internet)
ICS Internal Clock Source (Fuente de Reloj Interna)
IDE Integrated Development Enviroment (Ambiente Integrado de Desarrollo)
IGMP Internet Group Management Control (Control de Manejo del Grupo de Internet )
IP Internet Protocol (Protocolo de Internet)
ISDN Integrated Services Digital Network (Red Digital de Servicios Digitales)
LAN Local Area Network (Red de rea Local)
LIN Local Interconnect Network (Red de Interconexin Local)
M2M Machine-to-Machine (Mquina a Mquina)
MoU Memorndum of Understandig (Recordatorio de Entendimiento)
MS Mobile Station (Estacin Mvil)
MSC Mobile services Switching Center (Centro de Conmutacin y servicios Mviles)
NRZ Non-return to Zero (Sin Retorno a Cero)
PAN Personal Area Network (Red de rea Personal)
PCS 1900 Personal Communication System 1900 (Sistema de Comunicacin Personal 1900)
PLMN Public Land Mobile Network (Red Mvil Pblica Terrestre)
PPP Point-to-Point Protocol (Protocolo Punto a Punto)
PSTN Public Switched Telephone Network (Red de Telefona Pblica Conmutada)
RARP Reverse Address Resolution Protocol (Protocolo Inverso de Resolucin de
Direcciones)
RF Radio Frequency (Radio frecuencia)
RTC Real-Time Counter (Contador en tiempo real)
SCI Serial Communications Interface (Interfaz Serial de Comunicaciones)
SGSN Serving GPRS Support Node (Servidor del Nodo de Soporte GPRS)
SIM Subscriber Identity Module (Mdulo de Identidad de Usuario)
SMS Short Message Service (Servicio de Mensajes Cortos)
SMTP Simple Mail Transfer Protocol (Protocolo de Transferencia de Correos Simple)
SPI Serial Peripheral Interface (Interfaz Serial de Perifricos)
SQL Structured Query Language (Lenguaje de Consulta Estructurado)
SSH Secure Shell (Intrprete de comandos Seguro)
TCP Transfer Control Protocol (Protocolo de Control de Transferencia)
TDMA Time Division Multiple Access (Acceso Mltiple por Divisin de Tiempo)
TELNET Telecommunication Network (Red de Telecomunicaciones)
TFTP Trivial File Transfer Protocol (Protocolo de Transferencias de Archivos Triviales)
TRAU Transcoder Rate and Adaptation Unit (Unidad de Adaptacin y Rango de Trans-
codificacin)
UDP User Datagram Package (Paquete de Datagrama de Usuario)
UMTS Universal Mobile Telephone System (Sistema de Telefona Mvil Universal)
USB Universal Serial Bus (Bus Universal en Serie)
VLR Visitor Location Register (Registro de Localizacin de usuarios Visitantes)
WAN Wide Area Network (Red de rea mplia)
W-CDMA Wideband Code Division Multiple Access (Mltiple Acceso por Divisin de
Cdigo de Banda Ancha)
WPAN Wireless Personal Area Network (Red de rea Personal Inalmbrica)
1. Introduccin
La introduccin de nuevas tecnologas ha sido crucial en el desarrollo del hombre, han
simplificado infinidad de labores donde era necesario contar con numerosos procesos antes de
obtener algn resultado. La observacin y control de estos procesos es una tarea muy importante
para la obtencin de resultados ms precisos y puede ser ms eficiente si se realiza de forma
automtica y sin tener que contar con recursos humanos de manera presencial en el lugar donde
se realiza este proceso. Aqu es donde la telemetra nos ofrece una solucin para esta clase de
problemas. La telemetra nos permite realizar mediciones de parmetros fsicos a distancia los
cuales pueden ser posteriormente almacenados y visualizados por el usuario interesado.
El objeto de observacin puede ser cualquier parmetro fsico o qumico, los cuales son
sensados para obtener finalmente ya sea un nivel de voltaje, una variacin en frecuencia de
alguna seal o incluso datos serializados que cumplan con algn estndar de comunicaciones.
Cuando se trata con seales elctricas analgicas es necesario acondicionarlas y digitalizarlas
para convertirse en entrada de un procesador y realizar las operaciones necesarias para colocar
1
Introduccin
los datos en el medio de transmisin. Se puede considerar, por ejemplo, la actividad elctrica del
corazn medida en un intervalo de tiempo y es sensada con electrodos.
2
Introduccin
mayor confiabilidad y tasas de transmisin tan altas que ahora vemos como un hecho el poder
realizar el envo de seales de video en tiempo real por donde hasta hace apenas algunos aos
solo era posible transmitir voz.
La recepcin de datos es similar a la transmisin en el sentido que se tienen que cumplir con los
mismos requerimientos de comunicacin que estn dados por el medio de transmisin, el sub-
sistema que recibe la informacin enviada por el transmisor, debe ser capaz de interpretar el
protocolo utilizado. En esta parte, si existiera alguna codificacin en el envo de datos, el
dispositivo encargado de la recepcin debe ser capaz de decodificarlos y almacenarlos para ms
adelante se puedan visualizar como datos numricos de manera tabular o con grficos.
La visualizacin de datos puede estar relacionada con el sub-sistema que recibe los datos, ya
que un proceso puede estar encargado de la recepcin y otro del despliegue de la informacin
que se reproduce en el dispositivo local visualizador. En el caso de la aplicacin que se presenta
en esta Tesina, el proceso de despliegue est almacenado en el servidor y se ejecuta en la
mquina virtual de Java instalada en el cliente.
Como ejemplo, la empresa AgriNET ofrece soluciones para el monitoreo y control de recursos
utilizados en la agricultura. Existen muchas ventajas que un sistema de telemetra puede aportar
a este campo. Una red de sensores de humedad o una base meteorolgica ofrecen mejoras en la
obtencin de cultivos al tener un monitoreo completo de los mismos. El uso apropiado de
recursos para producir nuevas reas de explotacin agrcola tambin representa una mejora
significativa, por ejemplo, si se tiene controlada la cantidad de fertilizante disponible y adems
3
Introduccin
se puede tener acceso a esta informacin de manera remota por medio de bases de RF de control
(Figura 1.2) combinado con tecnologas como el Internet.
Otro ejemplo muy comn que demuestra la importancia del uso de sistemas de telemetra se
puede observar en los sistemas de seguridad vehicular como los que desarrolla una compaa
llamada OnStar desarrollada por General Motors. El objetivo de OnStar es ofrecer a sus usuarios
gran rapidez de respuesta en caso de accidentes automovilsticos ya sean a causa de siniestros o
robo del vehculo. Los usuarios de vehculos equipados con este sistema como el de la Figura 1.3
pueden obtener de manera automtica, por e-mail, diagnsticos mensuales, servicio de
navegacin a travs de voz, respuesta automtica de un asesor en caso de que se desplieguen las
bolsas de aire a causa de un accidente y asistencia en caso de robo de vehculo. Todas los
servicios mencionados con anterioridad son posibles gracias al uso de un sistema que combina el
monitoreo constante del automvil con tecnologa GPS para la localizacin del vehculo as
como el uso de redes celulares. Bsicamente el usuario puede contactar directamente a un asesor
de OnStar haciendo uso de los componentes bsicos de un telfono celular, es decir, un
micrfono integrado, una antena celular y la red celular; mientras tanto el asesor del servicios
localiza al vehculo utilizando el sistema de localizacin GPS. En otro caso, cuando las bolsas de
4
Introduccin
aire del vehculo son desplegadas, un mensaje es enviado al sistema de telemetra del vehculo
equipado el cual se comunica al centro de servicios utilizando la misma red celular.
Figura 1.3: Diagnstico de servicio de un automvil va e-mail brindado por OnStar [11]
La telemedicina es una de las reas en la que se ha tenido un mayor desarrollo y sto se debe
principalmente a las necesidades que como seres humanos presentamos; conforme crece la
poblacin en el mundo, mayor es el nmero de gente que necesita tratamientos mdicos de
manera inmediata y el personal especializado para el cuidado de cierto tipo de enfermedades no
es la suficiente para cubrir estas necesidades en todos los rincones del mundo, hay ocasiones que
personas necesitan ser examinadas por estos especialistas y tienen que viajar varios kilmetros
para poder tratar sus enfermedades lo cual se traduce en gastos muy grandes. La habilidad de la
telemedicina para proveer cuidado mdico interactivo utilizando tecnologa moderna y las
telecomunicaciones es fundamental para resolver este tipo de problemas que nuestra sociedad
enfrenta. Ya sea atencin mdica en tiempo real, para incrementar la efectividad en el uso de
camas en un hospital, atender comunidades rurales muy alejadas, la telemedicina es
definitivamente la mejor opcin.
5
Introduccin
6
Introduccin
7
2. Antecedentes Tericos
Para la realizacin de este proyecto se hace uso de tecnologas desarrolladas para los sistemas de
telecomunicaciones; la red de telefona celular GSM de la cual surge GPRS, que usando las
mismas radiofrecuencias y estaciones bases que ya existen de GSM, ofrece a sus usuarios,
negocios y otras organizaciones mejoras importantes en la transmisin inalmbrica de
informacin con el desempeo de conexiones cableadas. Adems, tambin se hace mencin al
Protocolo de Datagrama de Usuario (UDP) que es el protocolo utilizado por el Starlert ST-1 para
enviar sus datos a travs de Internet.
8
Antecedentes Tericos
funcional solo para el pas donde se desarrollaban, de tal forma que stos solo funcionaban
dentro de las fronteras del mismo.
En 1991, el primer sistema GSM estuvo listo para ser utilizado de manera amigable con los
usuarios y fue entonces cuando el significado del acrnimo GSM cambio a Sistema Global para
Comunicaciones Mviles. En ese mismo ao se dio a conocer el Sistema Celular Digital 1800
(DCS 1800) que bsicamente trasladaba al sistema GSM a la banda de 1800 MHz lo cual dio
pauta a establecer en Estados Unidos el mismo sistema a los 1900 MHz que sera llamado
Sistema de Comunicacin Personal 1900 (PCS 1900).
9
Antecedentes Tericos
A pesar de que el reuso de frecuencias es una ventaja sobresaliente, las redes celulares tambin
tienen algunas desventajas:
La infraestructura de una red GSM, como se ilustra en la Figura 2.2, se puede describir a grandes
rasgos en tres partes: el usuario mvil que controla el equipo o Estacin Mvil (MS) que lo
conecta a la infraestructura de la red; dicha conexin se establece mediante el Sub-sistema de
Estaciones Mviles (BSS); y por ltimo, el Centro de Conmutacin y servicios Mviles
10
Antecedentes Tericos
(MSC) que se encarga de manejar los servicios mviles as como la conmutacin de llamadas
entre usuarios mviles y otros usuarios mviles o fijos.
La estacin mvil es el equipo fsico que conecta al usuario GSM a la red, este equipo debe de
ser porttil y se presenta en varias formas y con distintas potencias. Para establecer una buena
comunicacin con la red GSM es necesario realizar una autenticacin por medio de un Mdulo
de Identidad del Suscriptor (SIM) el cual es un chip que es insertado en el equipo mvil del
usuario con la finalidad de realizar llamadas as como recibirlas, y adems, obtener acceso a
otros servicios que tenga registrado. La MS permite recibir servicios de voz y de datos, entre los
disponibles, se encuentra el Servicio General de Paquetes por Radio (GPRS) usando una
transferencia de datos IP o X.25 a velocidades de hasta 115 kbps.
Una Estacin Base (BTS), de acuerdo a su rango de alcance, define el rea ocupada de la clula
dentro del rea de cobertura en la zona donde esta ubicada. Bsicamente se trata de un
dispositivo transceptor, cuya funcin es proveer la conectividad entre la red y la estacin mvil a
travs de la interfaz de radio Um. El tamao de la celda formada por la BTS es inversamente
proporcional a la densidad de poblacin que exista en la zona y puede tener un rango desde
200m hasta 30 km aproximadamente. El Controlador de Estaciones Base (BSC) puede
controlar a una o varias BTS con el fin de proveer de funciones de operacin y
telecomunicaciones como el manejo de las llamadas cuando atraviesan ms de una celda, la
11
Antecedentes Tericos
configuracin de los canales de radio y la conmutacin entre frecuencias tambin conocido como
frequency hopping. Entre una o ms BTS y el BSC, se forma el BSS el cual utiliza la interfaz A-
bis para formar esta conexin. Un elemento importante que se considera dentro del BSS o como
parte del MSC es la Unidad de Adaptacin y Rango de Trans-codificacin (TRAU) que sirve
para agregarle eficiencia al uso de las frecuencias realizando una compresin de datos con el fin
de tener un buen nmero de llamadas en cierto ancho de banda.
El conmutador MSC est basado en el diseo de un ISDN o un PSTN adaptado para brindar
funcionalidad extra para redes celulares, como registro, autenticacin, ruteo de llamadas,
transferencia inter-celdas, entre otros. El MSC se encarga de conectar a la red de radio-telfonos
a la red de telfonos pblica; adems, da acceso a la base de datos de la red y al Centro de
Autenticacin (AuC) el cual verifica los permisos de acceso del suscriptor.
Dentro de la red GSM tambin existe otro sub-centro llamado Registro de Localizacin de
usuarios Locales (HLR) el cual es una base de datos que almacena la informacin
administrativa de los suscriptores, por cada red GSM debe de existir como mnimo una HLR. El
Registro de Localizacin de usuarios Visitantes (VLR) fue ideada con el fin de evitar la
sobrecarga de informacin en el HLR; el VLR tambin contiene una base de datos con
informacin de los suscriptores y solo cuando el suscriptor se encuentra en otra rea de cobertura
ajena a su rea local, cuando el suscriptor abandona la red, entonces el HLR hace una peticin
para borrar la informacin del suscriptor visitante del VLR. El rea del VLR abarca la zona
cubierta por las BTS y su respectivo MSC para el cual el VLR provee servicios. El Registro de
Localizacin de usarios locales, el Registro de Localizacin de usuario Visitantes y el Centro de
Conmutacin y servicios Mviles proveen el direccionamiento de las llamadas as como las
capacidades de roaming de GSM.
12
Antecedentes Tericos
marc un paso ms hacia las redes de tercera generacin, tambin llamadas 3G, cuyo mayor
atractivo son las velocidades de transferencia de datos y la capacidad para transmitir video en
tiempo real.
Aunque el enfoque de GPRS era hacia las empresas, los servicios se han extendido hacia
usuarios en general. La tendencia hacia los dispositivos conectados a la red de Internet cada vez
parece ser marcada por los dispositivos mviles, sobrepasando a las computadoras personales
que han estado presentes desde antes.
GPRS permite acceso a los servicios de Internet con una tasa de transmisin de hasta 115 kbps
usando hasta ocho canales de radio los cuales son asignados a un usuario o compartido por varios
usuarios. La aceptacin de este sistema ha hecho que cuente con una cobertura casi total a nivel
mundial, de esta forma los usuarios pueden tener acceso a su informacin en casi cualquier lugar.
Otra ventaja de este servicio es que la conexin de los usuarios GPRS con la red es de manera
permanente de modo que el acceso a la informacin sea instantnea, y as, aumentar su
productividad.
Para implementar el servicio GPRS en la red de GSM no es necesario realizar una inversin muy
grande para las compaas que proveen de estos servicios ya que GPRS fue diseado para
coexistir con la Red Mvil Pblica Terrestre GSM (PLMN). Esto significa que GPRS puede
convivir con los servicios de paquetes de datos ya existentes, incluso los componentes del
Servicio de Mensajes Cortos (SMS) pueden trabajar con GPRS de forma que permita realizar el
envo de SMS a travs de GPRS.
Con la introduccin de GPRS y el Protocolo de Internet (IP) a las redes mviles, los usuarios
pueden disfrutar mayor rapidez y tasas de transmisin de datos; adems, GPRS permite realizar
llamadas de datos y de voz simultneamente. Los usuarios que reciben estos servicios tienen la
capacidad de estar conectados siempre a Internet de tal forma que puedan enviar correos
electrnicos con archivos adjuntos grandes, contar con el servicio de oficina mvil, navegar por
Internet de manera rpida y telemetra.
13
Antecedentes Tericos
muy drsticos en la red existente; para tal fin, se introducen dos nuevos elementos en la red y
modificaciones mnimas en los componentes existentes. El Servidor del Nodo de Soporte
GPRS (SGSN) y el Puerta de Enlace del Nodo de Soporte GPRS (GGSN) son los
componentes adicionales necesarios para agregar el servicio GPRS a la red GSM.
La GGSN como su nombre lo indica, sirve de puerta de enlace entre la red GPRS y otras redes
de paquetes de datos, como el Internet por ejemplo. Para cada red existe un Nombre del Punto de
Acceso (APN) que sirve al usuario de la red GPRS para enlazarlo, y de esa manera, intercambiar
paquetes de datos con la red de destino.
El servicio GSM/GPRS no es el nico servicio que ofrece voz y datos en el mercado, existen
otros competidores proveedores de redes WAN, de los cuales se enuncian algunos a
continuacin:
14
Antecedentes Tericos
velocidades de hasta cuatro veces 14.4 kbps. Este servicio no ofrece la caracterstica de
conexin permanente de GPRS por lo que es necesario estableces un nuevo enlace con el
usuario cada vez que desee enviar o recibir datos; el servicio de cobrado por minutos y
por canales usados.
En teora cualquier protocolo de la capa de aplicacin puede funcionar con el protocolo UDP y
TCP, ambos se encuentran en la capa de transporte y su distincin reside en la confiabilidad de
15
Antecedentes Tericos
cada uno, de modo que los requerimientos de confiabilidad de la capa de aplicacin es el factor
principal para elegir entre un protocolo u otro. UDP es menos confiable que TCP al enviar varios
paquetes en secuencia debido a que no se puede asegurar que todos llegarn a su destino. A
travs del encabezado del IP se puede identificar el protocolo que se utilizar. Hay aplicaciones
que funcionan igualmente con UDP y TCP, aunque tambin existen aplicaciones que solo podrn
utilizar un protocolo u otro.
El protocolo UDP es simple, eficiente e ideal para aplicaciones como TFTP y DNS. Bsicamente
la direccin IP es usada para direccionar un datagrama a una mquina en particular, en el
encabezado del UDP va contenido un nmero correspondiente al puerto de destino que sirve para
enviar el datagrama UDP a la cola de un proceso dentro de la mquina; adems tambin existe un
campo que contiene al puerto remitente que puede ser usado por el proceso receptor para
responder al datagrama del usuario. El formato del datagrama UDP se muestra a continuacin en
la Figura 2.4.
Los puertos remitente y destino se utilizan para definir el punto final del envio de mensajes UDP;
si no se usa, el puerto remitente debe ser cero. La longitud de mensaje sirve para indicar el
nmero de octetos que contiene el datagrama, el valor mnimo que puede contener es 8 ya que es
el nmero de octetos que comprende el encabezado (puerto remitente, puerto destino, longitud de
mensaje y checksum). El campo de checksum es opcional, si no es usado debe contener un cero;
como el protocolo de IP solo protege su encabezado a travs de su checksum, UDP provee
integridad de sus datos al tener su propio checksum.
16
3. Descripcin del sistema
En el trabajo presentado por R. Herrera [13] se muestra el desarrollo de un sistema de rastreo y
control de unidades remotas mviles. En este sistema se hace uso de un mdem GSM/GPS
Starlert ST-1 para establecer comunicacin con la red celular GSM y por medio del sistema
GPRS envi paquetes UDP a un servidor que contiene programas de comunicacin, seguimiento
y almacenamiento. Este mismo sistema es retomado en el trabajo de tesis de S. Casillas [14] en
el cual se aade una tarjeta de adquisicin de datos NI USB-6009 de National Instruments
conectada a una computadora personal con el software LabView que a su vez se comunica con el
Starlert ST-1 mediante el estndar RS-232, con el objeto de medir seales de un dispositivo
electrocardiograma y que stas puedan ser transmitidas al servidor antes mencionado como se
muestra en la Figura 3.1.
En la industria existen diversos procesos que pueden ser monitoreados por un sistema similar al
anteriormente mencionado. En el caso de este proyecto, se enfoca en la medicin de temperatura,
presin y nivel de solucin dentro de un tanque bulk-mix en el cual se hace una mezcla de
componentes qumicos que despus de varios procesos industriales, pasan a formar un lente
ptico que cumple con ciertas especificaciones. Dichos procesos son realizados dentro de una
empresa llamada Carl Zeiss.
17
Descripcin del sistema
microcontrolador. Una vez procesados los datos, se envan a travs del Puerto Serial de
Comunicaciones (SCI) siguiendo el estndar RS-232 para interfazarse con el mdem Starlert
ST-1 (Figura 3.2). El proceso de envo de datos a travs del Internet hacia el servidor es el mismo
que se implement en el sistema descrito anteriormente.
Una vez que el sistema de la Figura 3.2 sea capaz de enviar datos al Internet, el servidor que se
encuentra en el laboratorio de Sistemas Inmersos del CITEDI ser el encargado de recibir toda la
informacin. El servidor HTTP Apache 2.2.0 se encuentra actualmente ejecutndose en una
computadora con Fedora 9 que es una distribucin de Linux basada en Red Hat. El servidor
contiene una base de datos que puede ser accedida y manipulada con SQL. Cuando un paquete
de datos UDP nuevo llega al servidor, hay un proceso que se encarga de recibirlo y colocarlo en
una cola temporal para que otro proceso lo tome, verifique que la informacin est correcta para
finalmente depositarlo en la base de datos. En la verificacin de la informacin, el mismo
proceso se encarga de generar y escribir a un archivo tipo bitcora llamado net.log donde coloca
el dato llegado junto con informacin adicional como la fecha y hora de llegada. El Applet que se
ejecute desde el servidor puede utilizar la informacin directamente de la base de datos en el
servidor o a travs del registro generado.
18
Descripcin del sistema
19
Descripcin del sistema
Hasta 50 MHz ColdFire V1 CPU arriba de 2.4V, 40 MHz CPU con ms de 2.1V y 20
MHz con 1.8V.
Su desempeo es de 0.91 Dhrystone 2.1 MIPS por MHz corriendo desde la RAM interna
(0.76 DMIPS/MHz desde la memoria flash).
Memoria On-Chip
Dos modos stop con bajo consumo de energa y un modo wait con consumo reducido de
energa.
Tpicamente le toma 6 s recuperarse de los modos stop.
Reset del watch dog.
Detector de voltajes bajos.
Detector de cdigo de operacin y direccin ilegal.
Convertidor A/D de 24 canales y 12 bits de resolucin.
Dos comparadores analgicos.
Dos puertos seriales con full-duplex NRZ.
Dos interfaces SPI con full-duplex.
Dos interfaces I2C que puede alcanzar una tasa de 100 kbps.
Un temporizador de 6 canales y dos de 3 canales con input capture, output compare en
cada canal.
Contador de tiempo real de 8 bits con prescalador (prescaler) decimal y binario.
70 E/S de propsito general, 16 interrupciones de teclado y 16 bits de E/S rpidos de
propsito general conectado al bus local del CPU de alta velocidad.
20
Descripcin del sistema
Cabe mencionar que Freescale ofrece una tarjeta de desarrollo de bajo costo llamada
DEMOQE128 que sirve para programar y depurar los microcontroladores MCF51QE128 y
MC9S08QE128 ya que ofrecen compatibilidad en terminales y perifricos con esta tarjeta se
puede intercambiar fcilmente de un microcontrolador a otro. La tarjeta de desarrollo permite
que la programacin del microcontrolador se pueda realizar mediante un cable USB adems de
utilizarlo como fuente de voltaje. Entre otras caractersticas, el DEMOQE128 como el de la
Figura 3.4 tiene:
21
Descripcin del sistema
22
4. Configuracin y Programacin del
microcontrolador ColdFire
El microcontrolador MCF51QE128 es parte de la familia QE de microcontroladores de Freescale
que se caracterizan por su bajo costo, bajo consumo de potencia y alto desempeo; adems, junto
con las familias de microcontroladores JM y AC forman parte de la serie Flexis la cual ofrece
microcontroladores de 8 bits y 32 bits compatibles en pines, perifricos y herramientas. Esto
significa que las aplicaciones desarrolladas para el microcontrolador de 8 bits S08QE128 pueden
ser totalmente migradas al microcontrolador de 32 bits MCF51QE128 con el fin de agregar
mayor velocidad y desempeo.
El MCF51QE128 utiliza el ncleo mejorado V1 ColdFire que es una versin simplificada del V2
ColdFire cuya arquitectura est basada en la M68000 de Motorola. El reloj del CPU para este
microcontrolador puede alcanzar los 50.33MHz y sus perifricos operan hasta 25.165MHz.
Las etapas de los segmentos del V1 ColdFire, que se muestran en la Figura 4.1, son las
siguientes:
23
Configuracin y Programacin del microcontrolador ColdFire
24
Configuracin y Programacin del microcontrolador ColdFire
25
Configuracin y Programacin del microcontrolador ColdFire
26
Configuracin y Programacin del microcontrolador ColdFire
ADC, tendr un equivalente digital y dependiendo de la resolucin del ADC, ser la precisin
que obtendremos de los datos adquiridos a travs del ADC. Se pueden clasificar los ADC de
acuerdo a la tcnica de conversiones que realizan de la siguiente forma: aproximaciones
sucesivas, escalera, delta-sigma, entre otros.
El sistema de monitoreo est basado en la adquisicin de datos, para sto, el MCF51QE128 tiene
entre sus perifricos un mdulo convertidor analgico digital con el cual se pueden tomar
muestras de una seal analgica, dichas muestras son procesadas en el microcontrolador para ser
enviadas por el puerto serial. Entre las caractersticas ms importantes del ADC est su algoritmo
de aproximaciones sucesivas con 12 bits de resolucin, 28 entradas analgicas, un selector de
longitud de datos de salida (8, 10 y 12 bits), conversin simple o continua, interrupcin y
bandera de conversin completa, disparador asncrono por hardware seleccionable y
comparacin automtica con interrupcin para mayor que, menor que o igual que algn valor
programado. En la Tabla 4.1, se muestran algunas condiciones de operacin del ADC.
27
Configuracin y Programacin del microcontrolador ColdFire
El mdulo ADC requiere algunas conexiones externas como son los canales de entrada
analgicos, voltajes de referencia, fuente de volaje y tierra analgicas. Los voltajes de referencia
28
Configuracin y Programacin del microcontrolador ColdFire
El ADC utiliza dos disparadores para comenzar el proceso de conversin; uno por software, en el
cual al escribir un valor vlido de canal en el Registro de Estado y Control 1 (Figura 4.3) en los 5
29
Configuracin y Programacin del microcontrolador ColdFire
bits referentes al ADCH (Canal del ADC); el otro disparador que se puede elegir es por
hardware, y depende de la seal interna del mdulo llamada ADHWT que se ilustra en la Figura
4.2, cuando se presenta un flanco de subida en esta seal el ADC comienza las conversiones,
para provocar este flanco de subida, se utiliza al mdulo Real-Time Counter (RTC). Cuando el
registro contador y el registro de mdulo igualan sus valores, el RTC puede generar la condicin
recin descrita para iniciar conversiones en el ADC.
El la Figura 4.3 se ilustra el registro de estado y control 1, al escribir un valor diferente de 0x1F
en el campo ADCH, se elige uno de los canales de entrada del ADC, adems, se aborta cualquier
conversin en proceso y se inicia una nueva conversin si el ADC se encontraba inactivo. Para
esta aplicacin con este registro se habilita la interrupcin de conversin completa, tambin se
selecciona el canal 0 de entrada y se deshabilita la conversin continua, de esta forma cada vez
que ocurra un disparo de conversin solo realice una conversin, el mdulo RTC acta como
disparador de conversin.
30
Configuracin y Programacin del microcontrolador ColdFire
Ya que despus de un reset el registro de configuracin contiene en todos sus campos ceros
31
Configuracin y Programacin del microcontrolador ColdFire
lgicos, los bits que permanecen sin cambiar su estado indican que para generar el reloj interno
del ADC se toma el reloj del bus y se divide entre uno. De esta forma la frecuencia del reloj
interno del ADC es de 12 Mhz.
La configuracin de este mdulo es bastante simple ya que consiste en solo tres registros: el
registro de estado y control, el registro contador y el de mdulo. Cuando ocurre un reset en el
microcontrolador el registro contador y el de mdulo obtienen los valores de 0x00, en cuanto al
registro de estado y control, queda de tal forma que el oscilador interno de 1KHz este
seleccionado y el prescalador tambin adquiere un valor de 0x00 que es interpretado como
prescalador apagado.
32
Configuracin y Programacin del microcontrolador ColdFire
RTCPS Reloj interno 1 kHz Reloj externo 1 Mhz Reloj interno 32 kHz Reloj interno 32 kHz
(RTCLKS = 00) (RTCLKS = 00) (RTCLKS = 00) (RTCLKS = 00)
0000 Apagado Apagado Apagado Apagado
0001 8 ms 1.024 ms 250 s 32 ms
0010 32 ms 2.048 ms 1 ms 64 ms
0011 64 ms 4.096 ms 2 ms 128 ms
0100 128 ms 8.192 ms 4 ms 256 ms
0101 256 ms 16.4 ms 8 ms 512 ms
0110 512 ms 32.8 ms 16 ms 1.024 ms
0111 1.024 s 65.5 ms 32 ms 2.048 ms
1000 1 ms 1 ms 31.25 s 31.25 ms
1001 2 ms 2 ms 62.5 s 62.5 ms
1010 4 ms 5 ms 125 s 156.25 ms
1011 10 ms 10 ms 312.5 s 312.5 ms
1100 16 ms 20 ms 0.5 ms 0.625 s
1101 0.1 s 50 ms 3.125 ms 1.5625 s
1110 0.5 s 0.1 s 15.625 ms 3.125 s
1111 1s 0.2 s 31.25 ms 6.25 s
Tabla 4.3 Periodo del Prescalador
El registro de mdulo puede contener un valor entre 0x00 y 0xFF los cuales sirven para
comparar el conteo que se lleva en el registro contador y su taza de cambio depender del
prescalador seleccionado. Cuando el valor contenido en el registro de mdulo coincide con el
valor contenido en el registro de conteo, entonces el RTC provoca una peticin de interrupcin
activando la bandera de interrupcin en el registro de estado y control.
En este mdulo solo se escribe al registro de estado y control como el que se muestra en la
Figura 4.6 primeramente para elegir al reloj interno de 1KHz y obtener un conteo con un periodo
de 0.1 segundos.
33
Configuracin y Programacin del microcontrolador ColdFire
RTIF (Real-Time Interrupt Flag): Bandera que indica que el registro contador, tiene el
mismo valor que el registro de mdulo.
RTCLKS (Real-Time Clock Source Select): Selector de fuentes de reloj para el RTC.
RTIE (Real-Time Interrupt Enable): Habilita y deshabilita la interrupcin del RTIE.
RTCPS (Real-Time Clock Prescaler Select): Selector de valores divisorios para la fuente
de reloj.
Una caracterstica muy importante del contador de tiempo real es que el reloj interno de 1KHz
que puede ser programada como fuente de reloj, est disponible en el modo de bajo consumo de
energa, lo cual significa que el microcontrolador puede mantenerse en ese estado y regresar a su
estado normal cada vez que el RTC provoque una peticin de interrupcin.
En la actualidad, existen diversos protocolos que son usados para conectar dos o ms
dispositivos. Algunos pueden ser muy robustos y contar con perfiles dependiendo del tipo de
dispositivo con el que se realice la interfaz y otros tan simples como enviar cadenas de 8 bits en
una linea de datos con o sin sincronizacin. Ha habido mucho auge en los protocolos basados en
la serializacin de datos ya que representan mayor ahorro de espacio fsico aunque sacrifican un
poco la velocidad de transferencia en comparacin a su contraparte: datos en paralelo. Aunque
este mismo auge ha hecho que las tazas de transferencia no sean mucho problema para los
protocolos seriales alcanzando velocidades muy altas. Ejemplos de estos protocolos seriales que
34
Configuracin y Programacin del microcontrolador ColdFire
Caracterstica Valor
Baud Rate 57600
Bits de datos 8
Paridad ninguno
Bits de paro 1
Control de flujo ninguno
Tabla 4.4 Propiedades del puerto serial del ST-1.
35
Configuracin y Programacin del microcontrolador ColdFire
Con los valores predefinidos, el microcontrolador nos ofrece como fuente de reloj la salida del
FLL controlado con una referencia interna de reloj. Los rangos de frecuencia son elegidos con
tres Osciladores Digitalmente Controlados (DCO) que se encuentran internamente en el FLL.
Con estas caractersticas se obtiene una frecuencia de reloj del sistema de 16MHz y dividido
entre dos que es el valor seleccionado en uno de los registros de ICS (BDIV), entonces se obtiene
una frecuencia de bus de 4MHz. Modificando los registros de este mdulo se pueden conseguir
12MHz de frecuencia de bus con la cual se logra alcanzar el baud rate especificado en la gua de
inicio del Starlert ST-1.
36
Configuracin y Programacin del microcontrolador ColdFire
En la Figura 4.8 se observa el Registro de Control 1 del ICS con la nomenclatura de cada bit que
se detalla a continuacin:
Para este proyecto los nicos bits que deben estar activados son los que habilitan a la referencia
de reloj interna para controlar el FLL del microcontolador (IREFS y IRCLKEN). Adems
CLKS[7:6] deben tener el valor de 00 para seleccionar al FLL como salida de reloj.
BDIV (Bus Frequency Divider): Selecciona la cantidad para dividir a la fuente de reloj
elegida por CLKS.
RANGE (Frequency Range Select): Selecciona el rango de frecuencia del oscilador
externo.
HGO (High Gain Oscilator Select): Controla el modo de operacin del oscilador externo.
37
Configuracin y Programacin del microcontrolador ColdFire
LP (Low Power Select): Controla si el FLL es deshabilitado en los modos bypass del
FLL.
EREFS (External Reference Select): Selecciona la fuente para la referencia de reloj
externa.
ERCLKEN (External Reference Enable): Habilita la referencia de reloj externa para ser
usada como seal ICSIRCLK (Internal Clock Source Internal Reference Clock).
EREFSTEN (External Reference Stop Enable): Controla si la referencia de reloj externa
permanece habilitada cuando el ICS entra en modo stop.
Para este registro en los bits BDIV[7:6] se selecciona el divisor de reloj por 2 escribiendo 01 a
estos bits.
El rango de frecuencia del FLL del microcontrolador es controlado mediante el registro de estado
y control del ICS y se muestra a continuacin, en la Figura 4.10
38
Configuracin y Programacin del microcontrolador ColdFire
Para este registro solo se actualizan los valores de DRS y DMX32 y siguiendo la tabla 4.5
obtenemos una frecuencia de 50MHz.
DRS DMX32 Rango de Referencia Factor del FLL Factor del DCO
0 31.25 39.0625 kHz 512 16 20 MHz
00
1 32.768 kHz 608 19.92 MHz
0 31.25 39.0625 kHz 1024 32 40 MHz
01
1 32.768 kHz 1216 39.85 MHz
0 31.25 39.0625 kHz 1536 48 60 MHz
10
1 32.768 kHz 1824 59.77 MHz
11 Reservado
Tabla 4.5 Rango de Frecuencia del DCO
El registro de control 1 del SCI se muestra en la Figura 4.11 con la nomenclatura de cada bit.
LOOPS (Loop Mode Select): Selecciona entre el modo loop-back (la salida del transmisor
es conectado internamente a la entrada del receptor) y el modo normal full-duplex de 2
pines.
SCISWAI (SCI Stops in Wait Mode): Selecciona si el reloj del SCI continua en operacin
o se congela mientras el microcontrolador esta en modo de espera.
39
Configuracin y Programacin del microcontrolador ColdFire
RSRC (Receiver Source Select): Este pin solo sirve si LOOPS = 1 y determina si es usado
o no el pin RxD.
M (9-Bit or 8-Bit Mode Select): Selecciona entre modo de 8 bits o 9 bits de datos.
WAKE (Receiver Wakeup Method Select): Selecciona entre Idle-line wakeup y Address-
mark wakeup (para ms detalles consulte el manual de referencia [4]).
ILT (Idle Line Type Select): Selecciona si el contador de bits de caracter incativo
comienza despus del bit de inicio o despus del bit de parada.
PE (Parity Enable): Habilita la generacin y revisin del bit de paridad en hardware.
PT (Parity Type): Selecciona entre paridad par y paridad impar.
En este registro solo interesa configurar el SCI en modo de 8 bits y con el bit de paridad
deshabilitado.
40
Configuracin y Programacin del microcontrolador ColdFire
SBK (Send Break): Pone en cola un break character en la cadena de datos del transmisor.
R8 (Ninth Data Bit for Receiver): Cuando es configurado el SCI para datos de 9 bits, R8
se considera como el noveno bit del dato recibido.
T8 (Ninth Data Bit for Transmitter): Cuando es configurado el SCI para datos de 9 bits,
R8 se considera como el noveno bit del dato a transmitir.
TXDIR (TxD Pin Direction in Single-Wire Mode): Cuando el SCI es configurado para
operar como half-duplex con un solo cable, este bit determina la direccin del dato al pin
TxD.
TXINV (Transmit Data Inversion): Invierte la polaridad a los datos que se desean
transmitir.
ORIE (Overrun Interrup Enable): Habilita la bandera de sobreescritura para generar
peticiones de interrupcin por hardware.
NEIE (Noise Error Interrupt Enable): Habilita la bandera de error de recepcin por ruido
para generar peticiones de interrupcin por hardware.
FEIE (Framing Error Interrupt Enable): Habilita la bandera de error en la trama de bits
para generar peticiones de interrupcin por hardware.
PEIE (Parity Error Interrupt Enable): Habilita la bandera de error de paridad para
generar peticiones de interrupcin por hardware.
A continuacin se debe configurar el baud rate siguiendo la frmula tomada del manual de
referencia del microcontrolador:
41
Configuracin y Programacin del microcontrolador ColdFire
El vector de bits SBR12:SBR0 se encuentran en dos registros del mdulo SCI como se ilustra en
la Figura 4.14.
Figura 4.14: Registro de Baud Rate del SCI. Arriba: SCIxBDH. Abajo:
SCIxBDL
LBKDIE (LIN Break Detect Interrupt Enable): Habilita la interrupcin por hardware para
la bandera LBKDIF (para ms detalles consulte el manual de referencia [4]).
RXEDGIE (RxD Input Active Edge Interrupt Enable): Habilita la interrupcin por
hardware para la bandera RXEDGIF (para ms detalles consulte el manual de referencia
[4]).
SBR (Baud Rate Modulo Divisor): Fija el mdulo divisor para el generador de baud rate
del SCI.
Escribiendo a los bits SBR el valor hexadecimal 0x0E que equivale a 14 decimal se obtiene el
baud rate requerido por el mdem Starlert ST-1:
Una vez que el baud rate ha sido configurado correctamente, entonces es posible enviar datos al
Starlert-ST1. Para lograr un envio de datos satisfactorio, primero se debe verificar que el registro
de datos del puerto serie este listo para un dato nuevo y que no haya ningn envio en proceso; el
dato que se requiera ser enviado a travs del puerto serie, debe de almacenarse en el registro de
datos del SCI o SCI Data Register (SCIxD). El mdulo SCI tambin cuenta con un registro de
corrimiento de transmisin, cuando el SCI esta configurado para enviar datos de 8 bits, el
42
Configuracin y Programacin del microcontrolador ColdFire
registro de corrimiento contendr un bit de inicio, los ocho bits de datos y un bit de paro. Cuando
el registro de corrimiento esta listo para transmitir un dato, transfiere el dato del registro SCIxD
de forma sincronizada con el baud rate predefinido en la configuracin y con la bandera de
estado transmt data register empty (TDRE) en nivel lgico alto que indica que se puede escribir
datos al registro de transmisin SCIxD.
Toda la informacin adicional acerca de los perifricos del microcontrolador se pueden encontrar
en el manual de referencia del MCF51QE128 [4].
43
Configuracin y Programacin del microcontrolador ColdFire
CodeWarrior, mostrado en la Figura 4.15, no solo permite usar su interfaz para escribir cdigo
fuente en C/C++ y ensamblador; tambin ofrece la capacidad de depurar proyectos de manera
grfica, visualizando el cdigo desensamblado, datos en memoria y en los registros de propsito
especfico y general. Entre las caractersticas ms importantes de esta versin tenemos:
Ensamblador ilimitado
Compilador C limitado en tamao de cdigo objeto a 32KB para RS08/HC(S)08 y 64KB
para ColdFire V1. Para C++ limitado a 1KB.
Inicializacin de dispositivos para ensamblador y C.
Processor Expert con Basic Beans.
Visualizacin de datos / Estimulacin E/S permitido para 1 componente con 3
instrumentos.
Programador de la memoria Flash HIWAVE.
44
Configuracin y Programacin del microcontrolador ColdFire
Existen algunos archivos que se agregan al generar el proyecto con el wizard que incluye el
CodeWarrior y sirven para inicializar el microcontrolador. Entre los archivos que ms conciernen
en la creacin de nuevo cdigo est el archivo de cabecera MCF51QE128.h el cual contiene
todas las declaraciones de variables que en memoria corresponden a los registros de
configuracin de todos los perifricos incluidos en el microcontrolador. La estructura que se
utiliz es la que se muestra en la Figura 4.16.
CodeWarrior tambin genera otro archivo por el cual el desarrollador suele empezar a escribir
cdigo que es el main.c. Los dems archivos dentro de la carpeta de Sources (a excepcin de
primitive.c, primitive.h y bithandler.h) corresponden a los perifricos usados del
microcontrolador. Se utiliza un archivo de cdigo fuente C para cada perifrico y a cada uno le
corresponde un archivo de cabecera H. Los archivos de cabecera con terminacin .h que
corresponden a cada perifrico utilizado, contiene varias re-definiciones de los registros internos
as como algunas constantes y los prototipos de las funciones que se encuentran definidas en los
archivos fuente .c.
bithandler.h contiene algunas macros que pueden ser de utilidad para asignar valores a registros
completos o a un solo bit de algn registro.
45
Configuracin y Programacin del microcontrolador ColdFire
adc.c acta como manejador del convertidor analgico digital del MCF51QE128.
adc_init Esta funcin escribe a los registros del convertidor A/D los datos necesarios
para configurarlo de acuerdo a las caractersticas mostradas en la tabla 4.6:
Caracterstica Valor
Reloj de Entrada Bus Clock
Divisor de Reloj del ADC 8
Resolucin 10 bits
Canal Activo Canal 0
Disparador de conversin Hardware
Tabla 4.6 Configuracin del ADC
Para este microcontrolador la seal ADHWT depende del Real-Time Counter, es decir, cuando es
seleccionado el disparador por hardware del ADC con el bit ADTRG del registro de status y
control 2 (ADCSC2), el ADC es disparado cada vez que el registro de conteo del Real-Time
Counter RTCCNT iguala al valor contenido en el registro del mdulo RTCMOD.
rtc.c sirve para configurar los registros del mdulo contador de tiempo real.
46
Configuracin y Programacin del microcontrolador ColdFire
rtc_init Realiza la configuracin inicial del Real-Time Counter para que ste provoque
interrupciones cada 100 ms.
serial.c configura y realiza las funciones de escritura y lectura al puerto serie del
microcontrolador.
serial_init Configura al puerto serie de tal forma que cumpla con lo requerido en la
Tabla 4.4.
send Se encarga de enviar mensajes a travs por el pin TxD del puerto serie. La
variable de entrada es un apuntador hacia la cadena de datos que se enviar:
Mientras el buffer no apunte hacia el carcter de fin de cadena,
Mientras que el registro de datos no este listo para ser escrito,
Espera.
Se escribe el carcter al que apunta la variable de entrada.
Mientras la transmisin no este completa,
Espera.
Se incrementa el apuntador.
receive Los mensajes que llegan al pin TxD son almacenados en un buffer
preestablecido. Esta funcin es proveda con la direccin al primer elemento del buffer y
a partir de ah empieza a guardar los datos que llegan al microcontrolador:
Hacer, mientras el contenido del elemento actual del buffer sea diferente a un salto de
lnea:
Mientras no exista un dato disponible en el registro de datos del puerto serie,
entonces
Espera.
Transfiere el caracter en el registro de datos a la direccin del buffer.
Incrementa el apuntador del buffer.
Guardar un fin de cadena en el buffer.
47
Configuracin y Programacin del microcontrolador ColdFire
registro_RX Interrupt Service Routine del puerto serie que se encarga de leer el octeto
recin llegado al microcontrolador y borra la bandera que indica que el registro de datos
contiene un dato nuevo.
cpu_init Esta subrutina escribe a los registros relacionados con el CPU y su fuente de
reloj de forma que el perro guardin queda deshabilitado as como el modo wait, el pin de
Reset queda habilitado y de la misma forma el modo stop queda habilitado para que al
hacer un llamado a la macro que pone al microcontrolador en algunos de los modos de
bajo consumo de energa, ste responda de la forma que debe. Esta funcin hace el
llamado a otras dos funciones: InternalClockSource_init() y activateBusClock ().
activateBusClock Esta funcin hace uso de una de las caractersticas importantes del
microcontrolador que es la habilitacin y deshabilitacin de fuente de reloj del bus para
los perifricos a travs de los dos registros asignados para esta propiedad, de modo que
solo los perifricos seleccionados en la entrada de esta funcin (cpu.h contiene los
nombres vlidos de los perifricos) utilicen los recursos del microcontrolador ahorrando
48
Configuracin y Programacin del microcontrolador ColdFire
gpio.c tiene la sola funcin de usar los LEDs del DEMOQE128 que estn conectados al puerto C
y al puerto D, entonces, solo modifica los registros de direccin y los bits correspondientes a los
LED's se configuran como salidas y despus escribiendo valores altos a los bits de cada LED de
los registros de datos se apagan los LED's.
main.c es el cdigo que contiene la rutina principal del microcontrolador y es donde manda a
llamar las funciones dentro de los dems archivos que se acaban de describir.
49
Configuracin y Programacin del microcontrolador ColdFire
temperatura.
El dato que se proporciona a esta funcin es de tipo int, de esta forma, se realiza el
casting del dato al tipo double.
El dato se multiplica por el valor correspondiente al voltaje de un paso de conversin
del ADC, esto es:
50
5. Resultados
Con el fin de lograr los objetivos propuestos en la Introduccin de este trabajo, se hicieron una
serie de pruebas a todo el sistema, sin embargo, an existen pruebas que se requieren realizar de
forma que el sistema tenga como resultado un prototipo que cumpla con las funciones descritas
en esta tesina, dichas pruebas se pueden realizar conforme se le d continuidad al proyecto actual
tomando como referencia los puntos que se revisan en el apartado de Trabajo Futuro.
Las primeras pruebas consistieron en comprobar el funcionamiento del Starlert ST-1 antes de
interfazarlo con el dispositivo microcontrolador. Utilizamos la computadora de la Figura 5.1
funcionando como Terminal Serial para recibir todos las cadenas de caracteres ASCII que enva
el ST-1 desde que es alimentado hasta que se conecta a la red GSM/GPRS, y as enviar al
servidor mensajes en cdigo ASCII que pueden ser introducidos desde el teclado de la Terminal.
El objetivo principal de dichas pruebas es detectar los eventos que deben transcurrir antes de
51
Resultados
empezar a enviar cadenas de caracteres del microcontrolador al Starlert ST-1. Los eventos son
generados por el ST-1 cuando el GPS y otros elementos dentro del ST-1 detectan actividad. Un
ejemplo de evento puede ser el GPRS Registration True que se genera cuando un registro GPRS
esta disponible desde el mdem, si se genera un evento GPRS Registration False significa que el
mdem ha perdido su registro GPRS.
En las primeras pruebas de observacin del comportamiento del Starlert ST-1, como se ilustra en
la Figura 5.1, se usa el PuTTY para identificar las siguientes cadenas como indicadores de que se
ha realizado conexin con la red GSM/GPRS:
Una vez ledas estas cadenas se pueden enviar paquetes de datos a travs de la red hasta el
servidor. En el PuTTY, con el teclado, introducimos la cadena Prueba 1 y el ST-1 regres las
siguientes cadenas a manera de confirmacin:
El servidor del cual se hizo una breve mencin en el Captulo 3, captura la informacin de
recepcin de datos y son guardados al archivo net.log que es generado por el servidor. Para
accesar a este archivo volvemos a utilizar PuTTY ya que adems de poder actuar como terminal
para el puerto serie, es posible realizar una conexin SSH con el servidor desde la computadora.
De acuerdo a la misma cadena Prueba 1 que se envi, el archivo net.log muestra en su
contenido la siguiente informacin:
Mar 23, 2009 9:56:46 PM UDPNetworkReceive runINFO: UDP packet received from: /
200.95.162.54:45934 at 1224552959 milliseconds Mar 23, 2009 9:56:46 PM
UDPNetworkReceive runINFO: 992008Prueba 1
De tal forma, podemos ver que el Starlert ST-1 realiza correctamente las funciones de captura y
envo de caracteres ASCII al servidor. Las cadenas de caracteres que enva el ST-1 hacia la
52
Resultados
terminal pueden utilizarse como indicadores para el microcontrolador, de modo que sea posible
identificar ciertos eventos que ocurren en el mdulo transceptor. Las cadenas que se acaban de
mostrar son suficientes para conocer la informacin que necesitamos acerca del ST-1 ya que una
vez que el microcontrolador sea capaz de muestrear el voltaje de salida del LM-35, debe de
poder enviar dicha informacin a travs del puerto serie pero solo cuando el ST-1 se conecte a la
red GSM/GPRS y configurado apropiadamente.
Antes de utilizar la informacin recin dada, primero fue necesario programar los perifricos que
se mencionaron en el Captulo 4. Los perifricos se configuraron, primeramente, de manera
separada para comprobar el funcionamiento correcto de los mismos.
El convertidor analgico digital se program para utilizarlo con una fuente de poder y as poder
simular la salida de voltaje del LM-35 con una relacin de 10 mV/C y utilizando los LED's
incluidos en la tarjeta de desarrollo DEMOQE128 se observ la forma digital leda por el
convertidor. La siguiente prueba consista en hacer que el ADC del microcontrolador tomara
muestras de la fuente de voltaje y presentarlas en los diodos LED's con una periodicidad de un
segundo por medio de las interrupciones generadas por el RTC. En la Figura 5.2 se puede
observar con detalle la prueba recin descrita, la computadora personal ejecuta el CodeWarrior,
que como ya se mencion, se utiliza para programar y depurar el cdigo implementado en el
microcontrolador, y para realizar dichas funciones, se tiene un cable USB conectado
directamente al microcontrolador. En la parte inferior de la tarjeta de desarrollo, se encuentra el
conector llamado MCU_PORT en el cual se tiene acceso a varios pines del microcontrolador, de
esta forma, la fuente se conecta al canal 0 del ADC del microcontrolador. Para esta prueba, el
mdulo ADC del microcontrolador fue configurado con una resolucin de 8 bits; si se toma en
cuenta que el voltaje de alimentacin del microcontrolador es de 3.3 V, se tiene que por cada
53
Resultados
54
Resultados
frecuencia del bus. En el Captulo 4 de este trabajo, se mencionan los registros utilizados para
conseguir las caractersticas necesarias para generar la frecuencia de bus que requera la
especificacin, al programar dichos registros, fue posible alcanzar el baud rate de 57600.
Ya que se haban conseguido los primeros objetivos de esta aplicacin, lo siguiente era integrar
todas las partes que se programaron y hacerlas funcionar en conjunto, primeramente, con la
terminal del puerto serie de la computadora para que de esta manera, se pudiera comprobar que
los mensajes del Starlert ST-1 y los provenientes del microcontrolador sean coherentes para la
terminal, lo cual implicara que ambos dispositivos tienen las mismas caractersticas de
comunicacin y as, al conectarlos a travs de la interfaz RS-232, pudieran mantener
comunicacin entre ambos. En la Figura 5.3 se puede observar al microcontrolador enviando
cadenas de caracteres ASCII a la terminal del puerto serie en la computadora.
55
Resultados
Ahora que funciona correctamente el sistema conformado por el sensor de temperatura LM-35,
microcontrolador MCF51QE128 y el mdem transceptor Starlert ST-1, es posible enviar todo
tipo de datos en hacia el servidor a travs de la red GSM/GPRS, para esta aplicacin, enviamos
56
Resultados
caracteres ASCII que representan una medida de temperatura en grados centgrados con punto
flotante y dos decimales de precisin. El envo de caracteres se hace en intervalos de 5 minutos
una vez que el mdem ha establecido comunicacin correcta con la red GSM/GPRS.
Aunque an queda desarrollo para el Applet, se puede acceder en cualquier navegador de Internet
que tenga instalado el complemento necesario para ejecutar la mquina virtual de Java.
Bsicamente desde el navegador, se accede a la pgina web del servidor,
http://movil.citedi.mx/~minguez y dependiendo del navegador, har una peticin para ejecutar la
clase perteneciente al Applet, y el resultado se debera de observar como en la Figura 5.5. Como
se ilustra, el Applet puede graficar con los valores indicados en la clase y en la escala de tiempo
descrita con intervalos de 5 minutos, los valores que se deben de tomar para la clase son los
contenidos en el archivo net.log que genera el servidor, los cuales son introducidos manualmente
en el cdigo de la clase; la escala de tiempo se actualiza cada hora as como la fecha dada en el
ttulo de la grfica. El cdigo escrito para el Applet as como el utilizado en la pgina web se
encuentran en el Apndice B.
57
Resultados
58
6. Conclusiones
Durante el desarrollo del sistema de monitoreo se tuvo la oportunidad de implementar
tecnologas del rea de las comunicaciones y de la informacin. El mdem GPS/GSM Starlert
ST-1 tiene como base un microcontrolador 8051 que controla las funciones de localizacin por
satlite GPS, adems tambin realiza el control de las funciones de transmisin de datos GPRS
dentro de la misma unidad. El DEMOQE128 es un mdulo de desarrollo que trae varios
dispositivos perifricos interfazados al microcontrolador MCF51QE128, lo cual facilita y agiliza
la implementacin de numerosas aplicaciones. Adems, el sistema tambin cuenta con un
servidor que se encuentra fsicamente en el laboratorio de Sistemas Inmersos que fue utilizado
para almacenar la informacin enviada por el ST-1, los archivos de la pgina Web y la clase que
contiene el Applet.
El desarrollo del Applet podra considerarse como la parte ms compleja de alcanzar dentro de
este proyecto ya que la experiencia personal en programacin orientada a objetos as como con el
lenguaje Java era muy escasa, as que tomo un poco mas del tiempo planeado encontrar la mejor
manera de realizar la programacin y encontrar las libreras adecuadas para concluir con el
objetivo dado.
59
Conclusiones
En conclusin, es posible desarrollar un sistema completo de monitoreo que puede ser aplicable
dentro de la industria u otra rea, adquiriendo los conocimientos adecuados acerca de las
60
Conclusiones
61
Referencias
[1] AgriNET. Complete Hardware and Software systems. http://www.agrinet.us/ (Recuperado el
17 de Febrero de 2009).
[2] AMD Telemedicine. AMD Telemedicine Products. http://www.amdtelemedicine.com/
products.cfm (Recuperado el 17 de Febrero de 2009).
[3] Bates, Regis J. GPRS (General Packet Radio Service). McGraw-Hill, 2002.
[4] Freescale Semiconductor, ColdFire Family Programmer's Reference Manual. Rev. 3. 2005
[5] Freescale Semiconductor, MCF51QE128 MCF51QE64 MCF51QE32 Reference Manual.
Rev. 3. 2007.
[6] Freescale Semiconductor, MCF51QE128 Series Data Sheet: Technical Data. Rev. 6. 2008.
[7] Freescale Semiconductor, QE128 Quick Reference User Guide. Rev. 1.0. 2007.
[8] GSM Association, 2008 Corporate Brochure, 2008.
[9] Heine, Gunnar. GSM Networks: Protocols, Terminology, and Implementation. Artech House
Inc., 1999.
[10]Intel Corporation, GPRS Technology: Increasing productivity using packet-based data
service over the moble telephone network, 2002.
[11]OnStar by GM. Demonstration of OnStar Services. http://www.onstar.com/us_english/jsp/
services/index.jsp?make=onstar&model=homepage&deepLink=overview (Recuperado el 17
de Febrero de 2009).
[12]P&E Microcomputer Systems, Inc., DEMOQE128 User Manual. Rev 1.03. 2007.
[13]R. Herrera et. al., Rastreo de mviles con GSM/GPRS y GPS, CITEDI, 2007.
[14]S. Casillas et. al., Sistema de telemetra utilizando las redes GPS, GPRS e Internet, CITEDI,
2008.
[15]Starlert, Starlert Getting Starter Guide, Archetype Inc., 2006.
[16]Tisal, Joachim. The GSM Network. GPRS Evolution: One Step Towards UMTS. John Wiley
& Sons, Ltd., 2001.
[17]Wilder, Floyd. A Guide To The TCP/IP Protocol Suite. Artech House Inc., 1998.
62
Apndice A
En este apartado se localiza todo el cdigo fuente en lenguaje de programacin C que se utiliz
para programar al microcontrolador:
/*
* main.c
*/
#include "primitive.h" // library for C procedures
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <hidef.h> // constantes simbolicas y macros generadas por CodeWarrior
#include "derivative.h" // macros, estuctura de datos, constantes simbolicas, etc
// para el microcontrolador MC9S08QE128k
#include "serial.h" // para funciones del puerto serie
#include "adc.h" // para funciones del convertidor analogico digital
#include "gpio.h" // para funciones de los puertos paralelos
#include "timer.h" // para funciones relacionadas a los temporizadores
void main(void) {
// inicializa el CPU
CPU_init();
63
Apndice A
rtc_init();
EnableInterrupts;
for(;;) {
// Envia temperatura
send(textBuffer);
send("\r");
/*
* funcion de voltaje a temperatura en grados centrigrado
* usando las especificaciones del sensor de temperatura LM-35.
*/
void volt2temp (int volt, char* t) {
double temp;
float x;
/*
* funcion que recibe los mensajes del ST-1 hasta que
* el mensaje recibido indique que el MCU puede comenzar
* a enviar el valor de la temperatura convertido a ASCII
*/
void wait_for_GPRS_connection (void) {
64
Apndice A
int i = 0;
for(;;) {
receive(textBuffer);
if (textBuffer[1] == '<') {
do {
i++;
textBuffer[i - 1] = textBuffer[i];
} while(textBuffer[i] != '\0');
i = 0;
}
if (strcmp(textBuffer, gprsReady) == 0) {
led_off(UNKNOWN_STR_LED);
led_off(GPRS_OK_LED);
delay(100);
led_on(GPRS_OK_LED);
break;
}
else
if (strcmp(textBuffer, gprsReady2) == 0) {
led_off(UNKNOWN_STR_LED);
led_off(GPRS_OK_LED);
delay(100);
led_on(GPRS_OK_LED);
break;
}
else {
led_off(GPRS_OK_LED);
led_off(UNKNOWN_STR_LED);
delay(100);
led_on(UNKNOWN_STR_LED);
}
}
}
/*
* Prende y apaga el LED indicado en el DEMOQE128 un numero
* num de veces con un retardo entre cada evento de
* aproximadamente 50 ms
*/
void led_blink(unsigned char led, unsigned char num) {
unsigned char i;
for(i = 0; i <= num; i++) {
led_off(led);
delay(50);
led_on(led);
delay(50);
}
led_off(led);
}
65
Apndice A
/*
* cpu.h
*/
#ifndef CPU_H
#define CPU_H
/* Includes */
#include "derivative.h"
/* Redefiniciones */
#define INTERNAL_REFERENCE_SELECTED ICSSC_IREFST
#define DCO_RANGE ICSSC_DRST_DRS
#define ENABLE_WAIT_MODE SOPT1_WAITE
#define ENABLE_STOP_MODE SOPT1_STOPE
/* Macros */
#define DISABLE_WATCHDOG SOPT1_COPE = 0
#define ENABLE_RESET_PIN SOPT1_RSTPE = 1
/* Prototipos de funciones */
void CPU_init(void);
void InternalClockSource_init(void);
void activateBusClock(int peripherals1, int peripherals2);
#endif
66
Apndice A
/*
* cpu.c - Subrutinas para la incializacion del sistema.
*/
#include "cpu.h"
/*
* CPU_init - Subrutina que deshabilita el watchdog, la frecuencia del bus de
datos se
* cambia a 12Mhz y se habilita el bus clock para los perifericos
seleccionados.
*/
void CPU_init(void) {
DISABLE_WATCHDOG;
ENABLE_RESET_PIN;
ENABLE_WAIT_MODE = 0;
asm(nop);
ENABLE_STOP_MODE = 1;
InternalClockSource_init();
peripheral_clk_sel(ADC_BUSCLK|SCI1_BUSCLK,RTC_BUSCLK);
/*
* InternalClockSource_init - Inicializacion de la fuente de reloj interna para el
* reloj del sistema.
*/
void InternalClockSource_init(void) {
ICSC1 = 0x06;
// La fuente de reloj del sistema es la salida del FLL
// Referencia de reloj interna seleccionada como fuente para el FLL
ICSC2 = 0x00;
// Dividir el reloj seleccionado por 1
while(!INTERNAL_REFERENCE_SELECTED)
;
ICSSC = (byte)0x80;
// Rango alto de frecuencia seleccionado para la salida del FLL
// DCO tiene un rango del 25% (48 - 60 MHz)
while(DCO_RANGE != HIGH_RANGE)
;
}
/*
* activateBusClock - Subrutina que habilita el bus clock para los perifericos
* seleccionados.
*/
void activateBusClock(int peripherals1, int peripherals2) {
/* Deshabilitando bus clock para todos los perifericos*/
SCGC1 = 0;
SCGC2 = 0;
/* Habilitando bus clock para los perifericos seleccionados */
SCGC1 |= peripherals1;
SCGC2 |= peripherals2;
}
67
Apndice A
/* gpio.h */
#ifndef GPIO_H
#define GPIO_H
#include "derivative.h"
#include "bithandler.h"
#define ALL_LEDS 13
void gpio_init(void);
void led_on(unsigned char x);
void led_off(unsigned char x);
#endif
/* gpio.c */
#include "gpio.h"
void gpio_init(void) {
PTCDD = 0x3F;
PTEDD = 0xC0;
PTCD = 0x3F;
PTED = 0xC0;
}
68
Apndice A
/*
* rtc.h
*/
#ifndef RTC_H
#define RTC_H
#include "derivative.h"
#include "serial.h"
#include "adc.h"
#define LOW_POWER_OSC 0
#define EXTERNAL_CLOCK 1
#define INTERNAL_CLOCK_1 2
#define INTERNAL_CLOCK_2 3
void rtc_init(void);
#endif
/*
* rtc.c
*/
#include "rtc.h"
void rtc_init(void) {
REAL_TIME_CLOCK_SOURCE = LOW_POWER_OSC; // El oscilador de baja potencia
// de 1KHz seleccionado como
// fuente de reloj de tiempo
RTC_INTERRUPT_ENABLE = 1; // Peticiones de interrupcion de tiempo real
// son habilitadas
REAL_TIME_PRESCALER_SELECTOR = 0xD; // El valor divisorio del prescaler es
// de 10^2, entonces, el valor del
// real-time counter se incrementa cada
// 100ms
RTCMOD = 1; // Con la configuracion anterior y el modulo del contador
// en 1 decimal, se genera una peticion de interrupcion
// cada 100ms
}
69
Apndice A
/*
* serial.h
*/
#ifndef SERIAL_H
#define SERIAL_H
#include "derivative.h"
#include "bithandler.h"
void serial_init(void);
void send (unsigned char *buffer);
int receive(unsigned char *buffer);
#endif
70
Apndice A
/*
* serial.c
*/
#include "serial.h"
char serialBuffIn[80];
/*
* serial_init - Rutina de configuracion del modulo SCI para intercambio de datos de
8
* bits con un bit de inicio, uno de paro y
* y no se utilizan bits de paridad. Se habilita la interrupcion generada por el
* receptor, las demas interrupciones
* son deshabilitadas. El baud rate se configura a 57600 bauds.
* Registros usados:
* Registro de control 1 (SCI1C1) -
* - Conecta internamente la salida del transmisor a la entrada del
receptor.
* - El reloj del puerto serie se congela cuando el CPU entra en "Wait
Mode".
* - Modo 8-bit o 9-bit.
* - Habilita Paridad y tipo de paridad.
* Registro de control 2 (SCI1C2) -
* - Habilita o deshabilita interrupciones causadas por: transmisor listo,
* transmision terminada, datos recibidos, idle line.
* - Habilita o deshabilita el receptor y transmisor.
* Registro de control 3 (SCI1C3) -
* - Habilita o deshabilita interrupciones causadas por errores en
recepcion
* Registros de Baud Rate (SCI1BDH, SCI1BDL) - Contienen los bits [SBR12:SBR0] que
* determinan el prescaler que genera el baud rate que utilizara el puerto
serie
* para comunicarse.
*
* BUSCLK 23.90MHz
* Baud rate = -------------------- = ------------ = 57600bps
* [SBR12:SBR0] X 16 27 X 16
*
* NOTA: El valor de SCI1BDH no cambia hasta que se escribe a SCI1BDL.
*/
void serial_init (void) {
BITWRITE(SCI1C1, DATA_MODE, 0); // 8-bit mode selected , no parity
REGSET(SCI1C2,RECEIVER_ENABLE|TRANSMITTER_ENABLE|RECEIVER_IRQ_ENABLE);
REGCLR(SCI1C3, FULL_REG); // Disable all errors interrupts
REGWRITE(BAUDRATE_REGISTER_HIGH, 0);
REGWRITE(BAUDRATE_REGISTER_LOW, 0x1B); // Baud Rate = 57600
}
71
Apndice A
;
buffer++;
}
}
/*
* registro_RX - Subrutina que da servicio a la interrupcion generada por el
* receptor del puerto serie cada vez que el registro de datos reciba un dato nuevo.
*/
void interrupt VectorNumber_Vsci1rx registro_RX(void) {
unsigned char c;
DATA_AVAILABLE = 0;
c = DATA_REGISTER;
while(!DATA_REGISTER_READY)
;
DATA_REGISTER = c;
led_on(4);
}
72
Apndice A
/*
* adc.h
*/
#ifndef ADC_H
#define ADC_H
#include "derivative.h"
#include "serial.h"
#include "bithandler.h"
#define ADC_DISABLED 31
#define ADC_CHANNEL ADCSC1_ADCH
#define ADC_ENABLED ADC_CHANNEL != ADC_DISABLED
#define ADC_CLK_DIVIDE ADCCFG_ADIV
#define ADC_RESOLUTION ADCCFG_MODE
#define ADC_INPUT_CLK ADCCFG_ADICLK
#define BUS_CLK 0
#define BUS_CLK_DIV_2 1
#define ALTERNATE_CLK 2
#define ASYNCHRONOUS_CLK 3
#define RES_8BIT 0
#define RES_12BIT 1
#define RES_10BIT 2
#define INPUT_CLK_DIV_1 0
#define INPUT_CLK_DIV_2 1
#define INPUT_CLK_DIV_4 2
#define INPUT_CLK_DIV_8 3
#define SAMPLE_TIME_CONFIG ADCCFG_ADLSMP_MASK
#define LOW_POWER_CONFIG ADCCFG_ADLPC_MASK
/*
* Se pueden utilizar las siguientes definiciones
* para seleccionar el canal del ADC
*/
73
Apndice A
#define AD0 0
#define AD1 1
#define AD2 2
#define AD3 3
#define AD4 4
#define AD5 5
#define AD6 6
#define AD7 7
#define AD8 8
#define AD9 9
#define AD10 10
#define AD11 11
#define AD12 12
#define AD13 13
#define AD14 14
#define AD15 15
#define AD16 16
#define AD17 17
#define AD18 18
#define AD19 19
#define AD20 20
#define AD21 21
#define AD22 22
#define AD23 23
#define MAX_CONV 10
#endif
#include "adc.h"
int adcResult;
unsigned char conversionCounter;
74
Apndice A
75
Apndice A
/* timer.h */
#ifndef TIMER_H
#define TIMER_H
#include "derivative.h"
#include "bithandler.h"
#define TIMER_OVERFLOW_FLAG 7
#define BUS_RATE_CLK 1
#define FIXED_SYS_CLK 2
#define EXTERNAL_SCR 3
#define DIVIDE_BY_1 0
#define DIVIDE_BY_2 1
#define DIVIDE_BY_4 2
#define DIVIDE_BY_8 3
#define DIVIDE_BY_16 4
#define DIVIDE_BY_32 5
#define DIVIDE_BY_64 6
#define DIVIDE_BY_128 7
void timer_init(void);
void delay(unsigned int t);
#endif
76
Apndice A
#include "timer.h"
void timer_init(void) {
COUNTER_MODULO = 752;
TIMER_CLK_SOURCE = BUS_RATE_CLK;
TIMER_PRESCALER = TIMER_DISABLED;
}
/*
* funcion de retardo de aproximadamente 1 mS por cada entero introducido
*/
void delay(unsigned int t) {
unsigned int i;
CURRENT_COUNT = 0;
TIMER_PRESCALER = DIVIDE_BY_32;
for(i = 0; i <= t; i++) {
while(!COUNTER_OVERFLOW)
;
// Antes de escribir un '0' a la bandera TIMER_OVERFLOW_FLAG, es
// necesario leer primero el registro TPM1SC. Si no se hace esto,
// entonces, TIMER_OVERFLOW_FLAG continuara en '1' indicando que
// ya ocurrio un sobreflujo en el contador.
TPM1SC;
BITCLR(TPM1SC, TIMER_OVERFLOW_FLAG);
}
77
Apndice A
#ifndef BITHANDLER_H
#endif
78
Apndice B
A continuacin se muestra el cdigo escrito en Java utilizado para la programacin del Applet
seguido del cdigo en HTML para mostrar el Applet en http://movil.citedi.mx/~minguez/.
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JApplet;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Day;
import org.jfree.data.time.Hour;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
/**
* This is the default constructor
*/
public graficaDatosTS() {
super();
}
/**
* This method initializes this
*
* @return void
*/
public void init() {
this.setSize(640, 480);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getTSChartPane(), getTSChartPane().getName());
}
return jContentPane;
}
79
Apndice B
return chartPane;
}
80
Apndice B
<html>
<head>
<meta name="Author" content="Daniel Minguez">
<meta name="Description" content="Grafica de Temperatura">
<meta name="Keywords" content="telemetry, GSM, GPRS, Telemetria">
<title>Grafica de Temperatura</title>
<style type="text/css">
body {
background: #ffe url("background.png");
margin: 40px 0px;
padding: 0;
}
h1 {
font-family: Verdana, Helvetica, Arial, sans-serif;
color: #ffe;
border-bottom: 2px solid #ffe;
border-top: 2px solid #ffe;
margin: 10px 0px;
padding: 0;
text-align: center;
}
div {
font-family: Tahoma, Arial, sans-serif;
top: 2px;
bottom: 2px;
color: #ffe;
margin: 10px 0px;
}
#info {
font-size: 0.7em;
background-color: #96dc00;
color: #ffe;
text-align: center;
}
#main{
background-color: #ff7f2a;
border: 4px solid #96dc00;
margin: 0 auto;
padding:20px;
text-aling: left;
width: 800px;
text-align: justify;
}
</style>
</head>
<body>
<div id="main">
<h1><span style="font-weight: bold;">Sistema
de Telemetría</span></h1>
<div>El Applet que se muestra a
continuación fue desarrollado para mostrar el
funcionamiento del Sistema de Telemetría presentado en el
trabajo de Tesina dentro de la Especialidad de Sistemas Inmersos
en el Centro de Investigación y Desarrollo de
Tecnología Digital del Instituto Politécnico
81
Apndice B
Nacional.<br>
<br>
Las gráfica contenida en el Applet, es una
representación
del muestreo de una señal producida por un sensor de
temperatura LM-35, la escala mostrada es grados Celsiuis y la
diferencia de tiempo entre una y otra muestra es de 5
minutos.<br>
</div>
<hr>
<center><!--"CONVERTED_APPLET"--><!-- HTML CONVERTER -->
<script language="JavaScript" type="text/javascript"><!--
var _info = navigator.userAgent; var _ns = false; var _ns6 = false;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0 &&
_info.indexOf("Windows 3.1") < 0);
//--></script><comment>
<script language="JavaScript1.1" type="text/javascript"><!--
var _ns = (navigator.appName.indexOf("Netscape") >= 0 &&
((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0 &&
java.lang.System.getProperty("os.version").indexOf("3.5") < 0) ||
(_info.indexOf("Sun") > 0) || (_info.indexOf("Linux") > 0)));
var _ns6 = ((_ns == true) && (_info.indexOf("Mozilla/5") >= 0));
//--></script></comment>
<script language="JavaScript" type="text/javascript"><!--
if (_ie == true) document.writeln('<OBJECT
classid="clsid:E19F9331-3110-11d4-991C-005004D3B3DB" WIDTH = 700 HEIGHT = 500
codebase="http://java.sun.com/products/plugin/1.3.0_02/jinstall-130_02-
win32.cab#Version=1,3,0,2"><NOEMBED><XMP>');
else if (_ns == true && _ns6 == false) document.writeln('<EMBED
type="application/x-java-applet;jpi-version=1.3.0_02" CODE =
graficaDatosTS.class ARCHIVE = "jcommon-1.0.15.jar,jfreechart-1.0.12.jar"
WIDTH = 700 HEIGHT = 500 scriptable=false pluginspage="http://java.sun.com/
products/plugin/1.3.0_02/plugin-install.html"><NOEMBED><XMP>');
//--></script><applet
code="graficaDatosTS.class"
archive="jcommon-1.0.15.jar,jfreechart-1.0.12.jar" height="500"
width="700"><param name="CODE" value="graficaDatosTS.class"><param
name="ARCHIVE" value="jcommon-1.0.15.jar,jfreechart-1.0.12.jar"><param
name="type" value="application/x-java-applet;jpi-version=1.3.0_02"><param
name="scriptable" value="false"></applet><!--
<APPLET CODE = graficaDatosTS.class ARCHIVE =
"jcommon-1.0.15.jar,jfreechart-1.0.12.jar" WIDTH = 200 HEIGHT = 200>
</APPLET>
--><!--"END_CONVERTED_APPLET"--></center>
<hr>
<div id="info">
Creado por: <br>
Daniel Isaías Mínguez Vital<br>
Tijuana, B.C. - Abril 2009<br>
</div>
</div>
</body>
</html>
82
Apndice C
El diagrama esquemtico del sistema se muestra a continuacin:
83
Apndice D
Hoja de datos del LM35.
84
Apndice D
85