Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Por
Joel Rafael Salazar Gil
Por
Joel Rafael Salazar Gil
RESUMEN
Se ha considerado al agua como la sustancia indispensable para la vida humana, animal y
vegetal. Debido al vertiginoso crecimiento tecnolgico, surge la necesidad de mantener este
recurso dentro de ciertos parmetros que lo consideren apto para un fin especfico, es decir,
garantizar su calidad. Por ello, se ha diseado y construido un sistema para el monitoreo y
el anlisis de la calidad de un cuerpo de agua. Durante la investigacin se determin la
influencia y la importancia de los parmetros meteorolgicos en el tema, por lo que fueron
incluidos en el proyecto. Se escogi como base un microcontrolador PIC para el control y
manejo de los datos, adems de sincronizar las mediciones con un reloj de tiempo real,
indispensable para su validez. Asimismo, se desarroll una interfaz en LabView para el
anlisis de los datos adquiridos y la visualizacin de las variables de medicin en tiempo
real. La comunicacin entre el sistema y la interfaz ser va RS-232. El prototipo ser de
utilidad para usuarios interesados en la automatizacin de la medicin de calidad del agua.
PALABRAS CLAVES
Sistema, medicin, parmetros, agua, meteorologa, comunicacin, tiempo.
CAPTULO 1: INTRODUCCIN.......................................................................... 1
CAPTULO 2: MARCO TERICO....................................................................... 3
2.1 Marco Institucional.................................................................................. 3
2.2 Marco Legal............................................................................................. 4
2.3 Bases Tericas.......................................................................................... 6
2.3.1 Calidad del Agua............................................................................. 6
2.3.2 Sistemas de Adquisicin de Datos.................................................. 7
2.3.3 Conversor Analgico Digital.......................................................... 9
2.3.4 Termistor NTC................................................................................ 10
2
2.3.5 Protocolo de Comunicacin I C..................................................... 11
2.3.6 Protocolo de Comunicacin Serial Asncrono................................ 14
2.3.7 Pantalla de Cristal Lquido (LCD).................................................. 15
2.4 Variables y su operacionalizacin............................................................ 18
CAPTULO 3: PLANTEAMIENTO DEL PROYECTO....................................... 19
3.1 Planteamiento del Sistema........................................................................ 19
3.2 El Pluvimetro.......................................................................................... 25
CAPTULO 4: PROCEDIMIENTOS.................................................................... 28
4.1 Diagrama de Bloques del Sistema........................................................... 28
4.2 Manejo del Teclado y el LCD.................................................................. 29
4.3 Bus I2C...................................................................................................... 31
4.4 Conexin Serial....................................................................................... 33
4.5 Fuente de Alimentacin........................................................................... 34
4.6 Seales de los Sensores........................................................................... 35
4.7 Integracin de los Bloques...................................................................... 47
4.7.1 Protocolo de Almacenamiento....................................................... 48
4.7.2 Unin del Bus I2C.......................................................................... 50
4.7.3 Unin de la Conexin Serial.......................................................... 51
4.7.4 Protocolo de Datos en Tiempo Real.............................................. 52
4.7.5 Prioridades...................................................................................... 52
ii
CAPTULO 5: CONCLUSIONES......................................................................... 65
CAPTULO 6: RECOMENDACIONES................................................................ 67
GLOSARIO............................................................................................................. 69
BIBLIOGRAFA..................................................................................................... 73
ANEXOS................................................................................................................. 75
iii
NDICE DE FIGURAS
NDICE DE TABLAS
C Grados Celsius
ADC Analog to Digital Converter, conversor analgico - digital
ASCII American Standard Code for Information Interchange, cdigo de caracteres
basado en el alfabeto latino
Bit Binary Digit, unidad bsica de la electrnica digital
E/S entrada/salida
GND ground, tierra
I2C Inter Integrated Circuit, protocolo de comunicacin serial sncrono
km kilmetros
L litro
LCD Liquid Crystal Display, pantalla de cristal lquido
m metros
m/s metros por segundo
mL mililitro
mm milmetros
mmHg milmetros de mercurio
nibble mitad de un byte, 4 bits
PCB Printed Circuit Board, tarjeta de circuito impreso
R/W read/write, lectura/escritura
RS-232 Protocolo de comunicacin serial entre computadores
RTC Real Time Clock, reloj de tiempo real
SI Sistema Internacional
TTL Transistor-Transistor Logic, referente a niveles de tensin tpicos 0-5V
USB Universal Serial Bus
Vcc Voltaje de Alimentacin
W/m2 Watts por metro cuadrado
CAPTULO 1: INTRODUCCIN
El agua es un recurso vital para la vida humana, animal y vegetal. Su calidad est
determinada por la presencia y la cantidad de ciertos contaminantes, factores fsico-
qumicos tales como pH y conductividad, cantidad de sales y de la presencia de
fertilizantes, entre otros. Asimismo, los factores climatolgicos tambin afectan la calidad
del agua en regiones abiertas como ros y lagos. Esto conlleva al objetivo principal del
proyecto que es el diseo y la implementacin de un prototipo de un sistema de adquisicin
de datos para la medicin de parmetros relacionados con la calidad del agua, as como, un
software de aplicacin para el procesamiento y anlisis de la informacin obtenida. El
objetivo principal del presente escrito es la descripcin del sistema y de los procedimientos
realizados para la construccin del mismo.
Podemos apreciar que el parmetro comn que es requisito legal para determinar la
calidad en los tipos de agua nombrados es el pH, por ende se considera como uno de los
parmetros de mayor importancia a medir.
6
Existe una gran cantidad de parmetros que deben ser caracterizados para
determinar detalladamente la calidad de un cuerpo de agua en particular como turbiedad,
oxgeno disuelto, turbiedad y varios elementos qumicos como aluminio, bario, cloruros,
mercurio, hierro, zinc, entre otros (vase Anexo E, artculo 4). Sin embargo, se ha
determinado que el parmetro primordial a monitorear en un cuerpo de agua es su grado de
pH. El pH es una medida adimensional que determina el grado de acidez o alcalinidad de
un lquido, haciendo una relacin de la cantidad de iones de hidrgeno H+ presentes en el
mismo. La escala de pH va generalmente de 0 a 14 (existen sustancias con valores de pH
fuera de este rango, sin embargo son muy escasos y de poco inters para el proyecto),
siendo 0 muy cido y 14 muy alcalino o bsico.
Para desarrollar un sistema de adquisicin de datos completo, hacen falta una serie
de bloques o etapas indispensables:
o Etapa de Sensores: compuesta por los transductores que transforman los parmetros
de inters en seales elctricas.
o Etapa de Acondicionamiento: compuesta por una serie de componentes tales como
amplificadores operacionales y de instrumentacin, filtros, transistores, entre otros,
8
Sistema de
Alimentacin
Sensores
Sistema de
Almacenamiento
Acondicionamiento Micro
controlador LCD
Reloj de
Tiempo Real Teclado
Interfaz Humano-Mquina
presente en la entrada del circuito. La cantidad de niveles depende del nmero de salidas N
segn la relacin 2N y por ende, la apreciacin del circuito ser segn la ecuacin 2-1:
Vref + Vref
Ap = (2-1)
2N
5V
Ap = 4,88mV (2-2)
2 = 1024
10
potencia genera calor que puede afectar la medicin que est realizando; y su fuerte
relacin no lineal R vs. T, generalmente exponencial regida por la ecuacin 2-3:
R (T ) = R (T0 ) * e (T T0 ) (2-3)
Para establecer una comunicacin en un bus I2C entre 2 dispositivos, se debe tener
preestablecido un dispositivo maestro y otro esclavo. El maestro se encargar de generar los
pulsos de reloj que viajan por la lnea SCL para la sincronizacin de datos y adems ser el
nico capaz de iniciar una comunicacin en el puerto. Sin embargo, en un solo bus I2C
pueden existir varios maestros, lo que lo convierte en un bus multi-maestro. Es importante
destacar que la validez de un bit se refleja cuando no existe ningn cambio de flanco en la
lnea SDA cuando la lnea SCL est en alto, el cambio de flanco en la lnea SDA esta
permitido nicamente cuando la lnea SCL est en bajo.
12
Por ser un protocolo, se deben llevar una serie de reglas para la transmisin vlida
de una trama por la lnea SDA:
o En un principio, cuando no exista comunicacin en el bus, ambas lneas SDA y
SCL deben estar en alto debido a las resistencias de pull-up.
o El maestro debe iniciar la comunicacin mediante un bit de inicio, a lo que se llama
condicin de inicio, que implica llevar a bajo la lnea SDA mientras el reloj SCL se
mantiene en alto.
o Seguidamente se envan los 8 bits, uno a uno, va serial del primer byte; cada bit
debe ir reflejado en cada pulso de reloj correspondiente, recordando que para que
sea vlido no debe cambiar de estado mientras en reloj permanezca en alto. Los
primeros 7 bits corresponden a la direccin del esclavo que el maestro desea
interrogar y el ltimo bit indica si se desea hacer una operacin de lectura o de
escritura.
o El esclavo interrogado debe responder con un bit de reconocimiento ACK, el cual
consiste en dejar la lnea SDA en bajo durante el siguiente pulso de reloj completo.
o Una vez que se desee terminar la transmisin de datos, el maestro debe generar una
condicin de parada, la cual consiste en un cambio de flanco ascendente en la lnea
SDA mientras el reloj est en alto. As se genera nuevamente la condicin de
inactividad en el bus I2C.
13
En la figura 2.3.5-1 podemos apreciar el formato que debe tener un byte para ser
enviado por el protocolo I2C. Si se desea mandar ms de un byte, que es lo que
generalmente ocurre, se repite toda la figura 2.3.5-1 sin las condiciones de inicio y fin, ya
que estas van reservadas nicamente al inicio y al final de la trama completa
respectivamente. Esto en caso que se desee escribir en el esclavo. Si el maestro desea leer
un dato del esclavo, debe igualmente generar la condicin de inicio, indicando en el ltimo
bit de direccin que se desea leer. El maestro debe entrar en un perodo de espera del byte
por parte del esclavo, dejando la lnea SDA disponible para el uso del esclavo interrogado.
Ahora el maestro es el que debe responder con un reconocimiento ACK. El maestro debe
cerrar la transmisin con una condicin de parada.
Tambin puede existir la posibilidad de que el maestro desee leer un dato pero el
bus est abierto en modo escritura, el maestro generar una condicin de reinicio que
consiste en una sucesin de las condiciones de fin e inicio. Esto se utiliza principalmente
cuando se desea leer un dato de una posicin de memoria especfica del esclavo, la cual
debe definirse en modo escritura.
I M=7bits,R/W=0 D F
MAESTRO
A A
ESCLAVO
A A D ESCLAVO
Por ser un protocolo, se deben cumplir ciertas normas para realizar una
comunicacin exitosa, entre ellas est el orden de los bits en el protocolo:
o Bit de inicio: en un estatus de inactividad, el pin Tx debe estar en un nivel lgico
1 (-12V para niveles RS232 y +5V para niveles TTL). El bit de inicio se
interpreta cuando hay un cambio de flanco en la lnea de 1 lgico a 0 lgico.
o Bits de datos: acto seguido vienen los bits del dato a transmitir. Se puede trabajar en
modo de 7 u 8 bits y el traslado de bits se realiza del menos significativo hacia el
ms significativo, al contrario de lo que se esperara.
o Bit de paridad: este es un bit opcional en el cual se representa la paridad de la trama
enviada. Dicho bit puede ser paridad par, en la que la suma lgica de todos los bits
debe ser par, o paridad impar, en la que la suma lgica de todos los bits debe ser
impar. Este bit se utiliza principalmente para la deteccin de errores.
o Bit de fin: indica la finalizacin de la transmisin, dejando la lnea a 1 lgico.
El manejo de las seales de control del LCD es muy importante para su correcto
funcionamiento. La lnea RS le indica al LCD si el byte que se est enviando es un
comando o un dato: los comandos son las instrucciones y los datos son los caracteres que se
mostrarn en el LCD. La lnea Enable debe estar siempre en 0 y se activa solo cuando se
desea enviar un byte al LCD, ya sea comando o dato. La lnea R/W est en 0 si se desea
escribir en el LCD o en 1 si se desea leer del mismo, en nuestro caso, como el LCD es una
pantalla nicamente para visualizacin, esta lnea se coloca a tierra directamente.
Sin embargo, no slo la OMS est en planes de accin referentes a la calidad del
agua, la Organizacin de las Naciones Unidas (ONU), Departamento de Economa y
Asuntos Sociales, Divisin para el Desarrollo Sustentable, ha creado un programa para la
calidad y suministro del agua a nivel mundial, as como educacin en el uso de la misma en
su agenda 21, captulo 18. En el artculo 18.27 se establece la importancia de los sistemas
de adquisicin de datos relacionados con parmetros de calidad del agua para mantenerla
apropiada para un fin especfico.
Existen muchos otros avances y programas referentes a mantener la calidad del agua
que justifican plenamente la realizacin del presente proyecto. En Venezuela tambin se
manifiestan estos problemas y por ello surge la necesidad de disear y construir un sistema
capaz de monitorear parmetros que determinen la condicin de un cuerpo de agua a un
bajo costo, ya que existen equipos capaces de realizar mediciones referentes al tema pero
con un costo muy elevado, lo que los hace poco alcanzables para la poblacin que requiera
de los mismos. Adems, debido a la importancia de los parmetros meteorolgicos, se ha
decidido incluirlos dentro del sistema y luego de un estudio de estaciones meteorolgicas
comerciales se concluy en medir las siguientes variables en nuestro sistema:
20
o Temperatura.
o Humedad relativa.
o Direccin y velocidad del viento.
o Presin baromtrica.
o Pluviosidad.
o Radiacin Solar.
o pH.
utilizado. Referente al LCD utilizado, es uno estndar de 4x16 caracteres que trabajar en
conjunto con el teclado para la configuracin de la estacin. La unin de estos 2 ltimos se
puede llamar tambin interfaz humano-mquina ya que el conjunto le brinda una especie de
interaccin a un usuario con el sistema.
Todo esto hizo la bsqueda de los sensores un poco compleja, quit algo de tiempo
y nos hizo eliminar muchas de las casas fabricantes. Con respecto a los parmetros
meteorolgicos, se utilizaron los sensores de la casa OMEGA Engineering, Inc. Los
modelos de los sensores utilizados son los siguientes:
o WMS-16TH: Sensor de temperatura y humedad relativa
o WMS-16BP: Sensor de presin baromtrica
o WMS-16RC: Sensor de pluviosidad
o WMS-16-2E: Sensor de direccin y velocidad del viento
o WMS-16SR: Sensor de radiacin solar
Con respecto a parmetros relacionados con calidad del agua, se utiliz el sensor
S650CD de la casa Sensorex, que es un sensor de medicin de pH con juntura doble. Se
escogi el parmetro de pH debido a que es el ms comn y uno de los de mayor inters
para la medicin en la calidad de un volumen de agua especfico. No se pudo adquirir algn
otro sensor debido a los elevados costos de estos y a la muy poca diversidad de los mismos
ya que comercialmente no se venden sensores sino medidores. Sin embargo, ya habamos
determinado que este parmetro cumple con los objetivos del proyecto.
3.2 El Pluvimetro
Se han escogido los pines del puerto B del microcontrolador como las lneas de
datos referentes al teclado y al LCD. De la figura 4.2-1 se puede apreciar que ambos
comparten 4 pines de datos, este se llama multiplexacin de los pines, lo que implica que el
teclado debe ser interrogado continuamente. Otra consecuencia es que el LCD debe ser
utilizado en modo de 4 bits para no perder otros 4 pines de E/S del microcontrolador; en
este modo, el LCD debe recibir el byte de dato por nibble. El truco est en determinar
cuando los datos en el puerto B son para el LCD y cuando son provenientes del teclado. Las
resistencias de pull-up de 10k y las serie de 330 estn para proteccin del
microcontrolador ya que existe la posibilidad que al momento de enviar datos al LCD
exista un evento por teclado y genere un nivel de voltaje inapropiado en el puerto. Adems,
se ha escogido el puerto D como bus de lneas de control, por ello las 2 seales de control
necesarias para el control del LCD son los pines RD6 y RD7.
30
Es importante destacar que se cuenta a todos los pines del puerto B como lneas de
E/S, incluyendo RB3. Esto significa que al momento de programacin del microcontrolador
se debe deshabilitar el modo LVP, por sus siglas en ingls Low Voltage Programming
(Programacin de Voltaje Bajo) y utilizar el modo HVP, por sus siglas en ingls High
Voltage Programming (Programacin de Voltaje Alto), ya que en LVP se debe colocar el
pin RB3/PGM debe estar conectado a tierra, perdindolo como lnea de E/S. La nica
ventaja que tiene la programacin de voltaje bajo es que elimina el uso de un voltaje alto de
12 V para el proceso de grabado del microcontrolador a costa de un pin de E/S que para el
diseo del sistema, es de suma importancia.
31
Por otra parte, sabemos que cada dispositivo debe tener una direccin nica de 7
bits en el bus I2C para poder ser interrogado (el ltimo bit indica si el maestro desea escribir
o leer un dato). Es evidente que el maestro de la comunicacin ser el microcontrolador y
existirn 3 esclavos en el bus, las 2 memorias y el RTC. La direccin en el bus del RTC
viene dada en su totalidad por el fabricante, lo que quiere decir que no pueden existir 2
integrados DS1307N en el mismo bus ya que no habra manera de identificarlos; dicha
direccin es 1101000. Con respecto a las memorias, el fabricante establece los primer 4
bits de la direccin que son 1010 y designa 3 pines en el integrado para los ltimos 3 bits
de direccin, lo que quiere decir que se pueden conectar hasta 23 = 8 memorias idnticas en
el bus; para nuestro caso de dos memorias se tomaron los casos 000 y 001 por lo que la
direccin de la memoria A en el bus ser 1010000 y la direccin de la memoria B en el
bus ser 1010001.
Ahora bien, debemos estudiar como se reparte la memoria de cada uno de los
dispositivos para poder manipular los datos en el bus de una manera adecuada. Con
respecto al RTC, este tiene una memoria RAM de 64 bytes lebles y escribibles, como se
32
muestra en la figura 4.3-1. Todos los datos almacenados en los registros 00 al 06 son en
formato BCD. El ltimo registro de configuracin es bsicamente para una seal cuadrada
de salida del dispositivo, para habilitarla y cambiarle la frecuencia de salida entre 4 posibles
mediante los 2 ltimos bits de dicho registro. Para nuestro sistema, esta seal es de poco
inters as que simplemente est deshabilitada. Adems de los 8 primeros registros, posee
56 registros adicionales que pueden ser utilizados como registros de propsito general.
Adicionalmente, debido a que la memoria del RTC es voltil, ste puede funcionar
con una batera auxiliar de 3V conectada al pin 3 del integrado. Esto es en caso de que la
fuente principal de alimentacin llegase a fallar y el pin de alimentacin no tenga el voltaje
necesario, el dispositivo entra a trabajar en modo de bajo consumo con esta fuente auxiliar.
El consumo de corriente es menor a los 500nA. El cambio a modo de bajo consumo y
viceversa se hace de manera inmediata y automtica por parte del integrado. Todo esto es
para que el RTC, bajo ninguna circunstancia, pierda su valiosa informacin.
almacenarn todos los datos de inters para el usuario, por lo que hay que tener especial
cuidado al momento de leer y escribir en ellas.
Es importante destacar que, para el caso de las seales analgicas, las variaciones de
los parmetros de inters son prcticamente nulas o requieren de mucho tiempo para notar
un cambio apreciable. Por esto, se pueden considerar voltajes constantes, con lo cual no se
requiere de ningn filtro en especial para el acondicionamiento, lo que hace este a su vez
mucho ms fcil de disear e implementar.
35000
30000
R(T) = 32362e-0,0446T
Resistencia ( )
25000
20000
15000
10000
5000
0
0 10 20 30 40
Tempertaura (C)
5 * RT
Vx = V (4-2)
RT + R 2
2
5 * RT
Vx
2
RT + R 2 25 * RT
2
25 * RT
PT = = = = (4-3)
RT RT RT * ( RT + R 2) 2
( RT + R 2) 2
PT 25 * ( RT + R 2) 2 25 * RT * (2 * ( RT + R 2))
= (4-4)
RT ( RT + R 2) 4
PT ( RT + R 2) * [25 * RT + 25 * R 2 50 * RT ]
= (4-5)
RT ( RT + R 2) 4
PT 25 * [RT R 2]
= (4-6)
RT ( RT + R 2) 3
25 * RT 500k
PT max = V = V = 312,5W (4-7)
( RT + 20k) RT = 20 k (40k)
2 2
Como la seal tiene un voltaje muy cercano a cero, la referencia negativa del
amplificador no puede ser tierra, ya que debemos respetar un margen de seguridad de los
42
Por otro lado, as como existe la banda de seguridad para voltajes cercanos a la
alimentacin negativa, existe la misma banda para la alimentacin positiva. Ya que el ADC
del microcontrolador acepta seales de hasta 5V, la mnima alimentacin requerida por el
amplificador ser de (5V + margen de seguridad). Sin embargo, para no introducir ms
circuitera, simplemente se conectan 12V a la alimentacin positiva del amplificador.
Vi
I = (4-8)
R1
Vi Vo Vi Vo R2
I = = R 2 * Vi = (Vo Vi ) * R1 = (1 + ) (4-9)
R1 R2 Vi R1
Para la direccin del viento se utiliz el sensor ms comn, una veleta. Su salida es
un voltaje analgico de 0V a 5V proporcional de manera lineal a la posicin en grados de la
veleta con respecto a su punto de referencia que debe de estar apuntando directamente al
norte. Esto es, para el norte, la veleta estar a 0 y el voltaje de salida ser 0V; para el sur, la
veleta estar a 180 y el voltaje de salida ser 2,5V. El circuito equivalente no es ms que
un potencimetro de 20k donde ambos extremos de la resistencia estn a un voltaje de 5V
y la salida es el voltaje que cae en el terminal mvil del potencimetro. Claro est, el
terminal mvil del potencimetro es la flecha de la veleta.
Se puede apreciar que cuando no ocurre ningn evento vlido en el sensor, ya sea
que no est lloviendo o no exista viento alguno en el lugar de medicin, ya sea que Vi1 y
Vi2 sean un cortocircuito o un abierto, el voltaje de salida Vi1 ser siempre un voltaje
constante y la medicin de la variable ser cero. Cuando Vi1 y Vi2 estn en cortocircuito,
se observa que la salida es 0V directamente. Cuando Vi1 y Vi2 estn abiertas, el capacitor
se carga a 5V y por ende la salida ser 5V. La idea de conectar el sensor a una red RC es
evitar los llamados rebotes, lo que hace que el microcontrolador cuente ms eventos de
los que realmente estn sucediendo. Ahora lo que falta por averiguar es la constante de la
red y comprobar que es considerablemente menor que la frecuencia de eventos para
garantizar que no se pierde la cuenta de los eventos ocurridos, segn la ecuacin 4-10.
Sabemos adems que para un tiempo de 5 (50s) justo despus del momento de
cambio de estado, el valor de voltaje en el capacitor ha alcanzado el 98% de ser valor final
lo que implica que ya el microcontrolador ha detectado el pulso. De ambos sensores, el que
ms rpido puede contar es el de velocidad del viento, teniendo un mximo de 100 pulsos
por segundo, lo que implica 100 cargas y 100 descargas del capacitor. Eso implica un
tiempo de 50ms, 1000 veces ms lento que el tiempo que necesita el capacitor para
establecerse en un voltaje fijo, lo que implica que no habr prdida de pulsos en el conteo.
Por ltimo, tenemos el sensor de pH, el cual tiene una salida que obedece a la
frmula 4-11. Como el valor de pH va de 0 a 14, vemos que tiene un rango entre -414mV y
+414mV, lo que no es medible por el ADC del microcontrolador. En la figura 4.6-9 se
puede apreciar el circuito diseado para el acondicionamiento de este sensor.
4
Voltaje (V)
3
V = 0,2366(pH) + 1,344
2
0
0 2 4 6 8 10 12 14 16
pH
Una vez que hemos logrado que cada bloque funcione por separado, ha llegado la
hora de unirlos para formar un todo, para construir el sistema de adquisicin de datos. Por
supuesto, el sistema de alimentacin est directamente integrado al sistema ya que es el que
suministra el voltaje para el funcionamiento de todos los dems bloques. Un punto fuerte
del proyecto est en la programacin, en el desarrollo del software del microcontrolador
que ser el encargado de arbitrar las actividades que realizan los perifricos unidos a l. El
programa utilizado para el desarrollo del software fue MPLAB v7.40, y se utiliz lenguaje
ensamblador. Para poder realizar la integracin con xito, se pens en establecer todo el
cdigo referente a cada bloque como subrutinas con variables de entrada y salida, debido a
que la unificacin en forma ordenada requiere un cdigo bastante largo y un poco
engorroso.
La primera unin que se realiz fue el bloque del manejo del teclado y LCD con los
canales anlogo-digitales del microcontrolador. Esto debido a que el primer paso debe
coincidir con el principio bsico de un datalogger: adquisicin de una seal analgica y
mostrar la medicin. Como primeras pruebas, se utilizaron potencimetros convencionales
48
Se deba establecer un tiempo de muestreo para las seales. Sabemos que las
variables escogidas tienen una frecuencia de cambio muy lenta, por lo que no era mayor
problema tomar tiempos grandes para darle tiempo al microcontrolador de realizar otras
actividades con los dems perifricos. Por medio de la bsqueda de informacin y
comparaciones con sistemas comerciales, en especial la estacin meteorolgica WMS-16
de la casa OMEGA Engineering, se determin un tiempo de muestreo por variable de 5
segundos. Tambin se investig que el tiempo de almacenamiento de las mediciones en la
memoria del sistema es generalmente de 10 minutos, ya que el propsito de este tipo de
sistemas de adquisicin de datos es el anlisis de las mediciones por un perodo de tiempo
considerable (digamos un mes por lo menos), las mediciones en tiempo real no son de
mucha importancia para la mayora de los usuarios. Con los datos anteriores, somos
capaces de crear un protocolo para el almacenamiento de las mediciones en la memoria del
sistema.
Como buen protocolo, debe iniciar con un encabezado, se ha elegido el byte 0xFC
(252 en decimal) para iniciar la trama que indicar el inicio de una trama vlida de datos
almacenados en memoria. Ahora bien, hemos reiterado la importancia de relacionar la
medicin con la fecha y hora en la que fue tomada, por ello los siguientes 5 bytes de la
trama sern referentes a los datos del RTC en el momento de almacenamiento; el orden de
los mismos ser da, mes, ao, hora y minuto, todos en formato BCD (tiene poco sentido
colocar los segundos ya que se supone que el almacenamiento se realiza cada 10 minutos,
adems que es prdida de espacio en memoria). Ya que el microcontrolador no tiene un
poder de cmputo extraordinario, se almacenar la sumatoria de todas las mediciones de
cada parmetro realizadas y el nmero de mediciones realizadas en el tiempo establecido,
49
10 * 60 seg
# mediciones = = 120mediciones (4-9)
seg
5
mediciones
y ese nmero ser el que se almacene en memoria. A pesar que ese nmero se puede
representar con un byte, se le han asignado 2 bytes por si en algn cambio futuro al sistema
quepa la posibilidad de un nmero mayor a 256 mediciones por perodo de tiempo de
almacenamiento. Seguidamente vienen los bytes correspondientes a las mediciones;
sabemos que cada medicin se puede representar con 10 bits, sin embargo, la suma de 120
mediciones de 10 bits puede sobrepasar los 2 bytes (120 * 1024 = 122880 se representa con
17 bits) por lo que cada variable debe estar en 3 bytes, y adicionalmente, cada parmetro
tendr un byte de encabezado antes de sus 3 bytes para poder identificarlo al momento de la
descarga de los datos. Los bytes de encabezado de cada variable son como siguen:
o Temperatura = 128
o Humedad Relativa = 64
o Direccin del Viento = 32
o Velocidad del Viento = 16
o Presin Baromtrica = 8
o Pluviosidad = 4
o Radiacin Solar = 2
o pH = 1
activos, esto es, cada bit corresponde a un parmetro en particular. Si el bit est en 1 indica
que el sensor est activo y en la trama viene la medicin del mismo, si el bit es 0, implica
que en la trama no est la medicin de dicho parmetro. La correspondencia de los bits y
los parmetros es la misma utilizada en el punto anterior como se puede ver en la figura
4.7.1-1 (bit ms significativo = temperatura, segundo = humedad, etc). Ahora como el
tamao de la trama de datos es dinmico, se ha decidido colocar este byte al inicio de la
trama, justo despus del encabezado para poder determinar el tamao de la trama.
X X X X X X X X
Temperatura Radiacin pH
Humedad
Pluviosidad
Direccin Velocidad
Viento Viento Presin
Figura 4.7.1-1 Correspondencia de los Parmetros y los bits de la Variable referente a los
Sensores Conectados
Ahora bien, ya que las tramas de datos son de tamao dinmico y aleatorio, de
alguna manera debemos conocer el estado de la memoria para almacenar de manera
correcta y eficaz las mediciones venideras. Para ello, se han dejado libres los primeros 4
registros de la primera memoria con motivo de utilizarlos como un apuntador a la ltima
posicin de memoria vlida. La razn de dejar 4 bytes es principalmente por si en un futuro
se llegase a instaurar un dispositivo de almacenamiento masivo que puede requerir de los 4
bytes para apuntar a la ltima posicin de memoria vlida. Una ventaja de esto es que, si en
algn momento se desease borrar la memoria, bastar con limpiar los primeros 4 espacios
de memoria para invalidar todos los datos dentro de la misma. Adems, hace que el
algoritmo de descarga sea bastante sencillo ya que ser enviar los datos desde la primera
posicin vlida (quinto registro) hasta el registro que indique este apuntador.
4.7.5 Prioridades
de prioridades para que el datalogger trabaje en armona y haga a la perfeccin todas las
tareas asignadas. Se fija como rutinas de mayor prioridad las peticiones provenientes de la
interfaz, esto debido a que el sistema debe estar en todo momento alerta a la comunicacin
serial sncrona para no perder datos importantes de configuracin para el usuario, luego, no
importa que proceso se este realizando en la estacin, al momento de una interrupcin
serial, la peticin ser acatada inmediatamente.
Como prioridad de segundo orden, tenemos las mediciones. El propsito del sistema
es tomar medidas de las variables de inters por lo que la adquisicin de datos no debe
fallar en ningn momento, a menos que un usuario est en proceso de descarga de datos.
Como ya se expuso, la peticin de los canales ADC son cada 5 segundos y tomar el
tiempo necesario para hacer un barrido por todos los sensores, recordemos que el tiempo es
variable y dependiente de la cantidad de sensores activos.
El siguiente nivel jerrquico queda en manos del bloque conformado por el teclado
y el LCD. Como el manejo del teclado es por el mtodo de encuestas y no de
interrupciones, se simplifica un poco el cdigo del microcontrolador para captar las
peticiones de teclado. La parte importante es realizar las encuestas con una frecuencia
mayor al tiempo en que un usuario permanezca pulsando una tecla, generalmente mayor a
100ms, por tanto, realizando encuestas a una frecuencia mnima de 10 veces por segundo
ser suficiente para no perder ninguna peticin del teclado. Por descarte, queda relegado al
ltimo nivel jerrquico el bus I2C debido a que el RTC no requiere de ningn dispositivo
adicional para funcionar (nicamente alimentacin y el cristal de oscilacin). Con respecto
a la lectura o escritura en la memoria, esto slo suceder se existe una peticin de primer o
segundo nivel respectivamente, no existe la posibilidad de utilizar el sistema de
almacenamiento en cualquier momento aleatorio del desempeo de la estacin.
54
Nos vimos en la obligacin de tener como base de nuestro sistema una baquelita
matricial, incluso teniendo diagramas de PCB como se observa en el Anexo B. Esto es
debido a que la empresa est en procura de una maquinaria especial para la realizacin de
circuitos impresos y se decidi esperar su llegada para su posterior traslado a baquelita
perforada. Por ser un prototipo sujeto a cambios, el hecho de que el sistema est sobre una
baquelita matricial no es de mayor importancia por los momentos. En la figura 4.7.6-1 se
observa el montaje final de la estacin encendida con los sensores conectados.
El bloque XY Graph es un grfico que posee una entrada bidimensional, esto es, el
grfico se realiza con las componentes X y Y provenientes de la entrada, se generan los
puntos en el grfico y se unen con una lnea recta aquellos puntos que sean consecutivos.
Este tipo de grficos se utiliza para representar los datos de las mediciones almacenadas en
la memoria del sistema puesto que ahora el inters primordial es observar el
comportamiento de un parmetro en particular en funcin del tiempo en que dichas
mediciones fueron tomadas. As pues, es importante que el eje X muestre la fecha y la hora
en que cierta medicin fue almacenada.
57
Ahora bien, sabemos cmo los datos estn almacenados en la estacin, pero Cmo
se almacenan los datos en el computador? Los datos ledos del sistema deben salvarse de
alguna manera para un posterior anlisis de los mismos y/o para poder llevar un registro
completo de ellos. La interfaz en LabView se encarga de salvar todos los datos ledos de la
estacin en un archivo plano de texto (*.txt) siguiendo el patrn de la figura 4.8.1-3.
Se guardan los datos con su respectiva fecha y hora para su posterior anlisis. Todos
los datos que llegan segn el protocolo de almacenamiento se almacenan en este archivo en
orden cronolgico. De la figura se puede destacar que se utiliza la hora militar, donde el da
va de 0:00 a 23:59, adems de que las unidades no se expresan en ninguna de las
mediciones ya que ests se encuentran en la interfaz.
envo de datos con su protocolo de almacenamiento, se transmiten todos los bytes tal y
como estn guardados en el sistema hasta que el apuntador de la memoria indique cuando
terminan los datos almacenados. Para indicarle a la interfaz el fin de datos, el datalogger
genera una condicin de fin que consta de 2 bytes 0xFF consecutivos con motivo de
garantizar que el computador ha recibido todos los datos disponibles en forma correcta. En
la figura 4.8.2.1-1 podemos apreciar un ejemplo de una trama vlida proveniente del
sistema de datos almacenados en memoria.
2 bytes # de
0xFC 0xFF 5 bytes de RTC Trama de datos de 32 bytes 0xFF 0xFF
mediciones
Ahora la interfaz genera un byte de encabezado 0x05 que le indica a la estacin que
se desea cambiar la configuracin de los sensores activos. Una vez ms, el sistema genera
un eco 0x05 que le indica a la interfaz que la estacin est lista para recibir el nuevo
comando de configuracin de sensores. El byte a enviar es el mismo utilizado en la seccin
5.2.1 y se puede observar en la figura X14. Si un bit en particular est en 1 significa que la
medicin de dicho parmetro en particular estar activa y si dicho bit est en 0 indicar que
no se realizar medicin alguna del parmetro en particular.
Esta es una opcin particular que slo se haya en la interfaz del computador, puesto
que se supone que la memoria de la estacin debe ser borrada una vez que sea descargada
en un computador para su posterior anlisis, evitando posibles errores de parte de algn
usuario del sistema con respecto a la prdida de los datos, lo que para este proyecto, se
considera lo ms valioso.
sistema genera un eco 0x06 que le indica al computador que la orden ha sido acatada y
todos los datos en la memoria han sido invalidados. Como vimos en la seccin 4.7.2, el
proceso de borrado de memoria no es ms que colocar 0x00000000 en los primeros 4
espacios de memoria, lo que dejar a todos los datos almacenados completamente
invlidos, haciendo el proceso prcticamente instantneo.
El cerebro central del sistema ser en PIC16F84A. Ya que deseamos un sistema con
redundancia, necesitamos 2 entradas contadoras de pulsos para la medicin de lluvia, ya
que los pluvimetros a utilizar tienen caractersticas idnticas al sistema original. Estos
pines fueron:
o RA4/T0CLK: es un contador ascendente de 8 bits que determina como evento
vlido un flanco ascendente en su entrada, por supuesto, con la configuracin
adecuada en el software.
o RB0/INT: es una entrada que genera una interrupcin en el software por cada
flanco ascendente en la misma.
Inicia con un byte 0xF0 de protocolo que indica el inicio de una trama. Luego 4
bytes provenientes del RTC que indican da, mes, ao y hora en que fue tomada dicha
medicin; como el tiempo de almacenamiento es de una hora, es de poco inters conocer el
minuto y el segundo en que la medicin fue tomada. A continuacin vienen 4 bytes de
datos, los 2 primeros bytes corresponden a la medicin de un pluvimetro y los 2 ltimos
corresponden a la medicin del segundo pluvimetro; es de esperar que ambas mediciones
sean iguales para determinar el correcto funcionamiento del sistema. Por ltimo se coloca
un byte 0xFF que indica el fin de la trama.
8192bytes 819,2horas
t= = 34das
bytes horas
10 24
hora da
64
que en un futuro se deseen almacenar ms variables de las que se tienen hasta el momento.
Debido a esto ltimo, se debe considerar la posibilidad de utilizar un segundo
microcontrolador (3 o 4 de ser necesario) especializados en alguna tarea especfica para
hacer una expansin del sistema, ya sea para medir ms variables o que se desee hacer un
controlador a un sistema externo dependiente de las mediciones del sistema original. Sin
embargo, nuevamente tiene como desventaja el tiempo requerido en el cambio de hardware
y software para la implementacin.
Por ltimo, se podra pensar en la posibilidad de instalar una red de estaciones con
un solo servidor (la interfaz en el computador) para poder realizar monitoreos en distintos
puntos y analizar los datos en un solo lugar. Esto es, realizar un protocolo de comunicacin
entre las estaciones y el servidor central. Por supuesto, para un cambio tan radical se
requiere de modificaciones importantes en el sistema, por lo que se podra convertir en un
nuevo proyecto de investigacin que tenga como base los resultados del proyecto actual.
GLOSARIO
Direccin del Viento: Punto del horizonte de donde viene o sopla el viento. Es la
componente radial del vector viento. Por ser una componente radial, la unidad de
medida es grados ().
Humedad Relativa: Cantidad de vapor de agua que contiene una masa de aire, en
relacin con la mxima humedad absoluta que podra admitir sin producirse
70
Sensor: Dispositivo que detecta variaciones de una cantidad fsica y las transforma
en una seal, generalmente elctrica, que puede ser medible.
Veleta: Instrumento para medir la direccin del viento. Consta de una parte
delantera (generalmente una flecha) que se orienta con la direccin del viento y una
parte trasera ms gruesa que atrapa el viento para quedarse alineado en la posicin
correcta.
Velocidad del Viento: Magnitud escalar del vector viento y representa la rapidez
con que este se desplaza en un momento determinado. Viene expresada en metros
por segundo (m/s) o en millas nuticas.
BIBLIOGRAFA
Organizacin de las Naciones Unidas (2004), Protection of the Quality and Supply
Freshwater Resources: Aplication of Integrated Approaches to the Development,
Management and Use of Water Resources, Agenda: 21, Captulo:18, Disponible:
http://www.un.org/esa/sustdev/documents/agenda21/english/agenda21chapter18.ht
m [Consulta: 2007, Enero 15]
Dallas Semiconductor (2005). Datasheet RTC DS1307 [Documento en lnea].
Disponible: datasheets.maxim-ic.com/en/ds/DS1307.pdf
Microchip Tenchnology Inc (2001). Datasheet PIC 16F877 [Documento en lnea].
Disponible: ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf
Microchip Technology Inc. (2002). Datasheet 24LC64 [Documento en lnea].
Disponible: ww1.microchip.com/downloads/en/devicedoc/21189f.pdf
Maxim Integrated Products (2006). Datasheet MAX-232 [Documento en lnea].
Disponible: pdfserv.maxim-ic.com/en/ds/MAX220-MAX249.pdf
STMicroelectronics (2001). Datasheet TL-084 [Documento en lnea]. Disponible:
www.datasheetcatalog.com/datasheets_pdf/T/L/0/8/TL084.shtml
ANEXOS
Los anexos del presente informe estn presentes en el CD adjunto. Cada uno tiene
asignado una carpeta identificada con la letra correspondiente y dentro de ellas se encuentra
la informacin referida.