Datalogger de temperatura con 18F2550 (II) | |||||
Luego de varios días de acumular bytes en la memoria EEPROM 24C64, ha llegado la hora de descargar todos esos valiosos datos al ordenador y comprobar si todo ha funcionado según lo esperado. Para descargar la información almacenada en la memoria del datalogger utilizaremos la conectividad USB que nos ofrece el PIC 18F2550 y una sencilla aplicación realizada en VB6 para facilitarnos la tarea. Hasta ahora todo fue un trabajo silencioso de adquisición de datos, aquí comienza la verdadera acción y la obtención de los beneficios que nos brindará el datalogger.Fue muy fría esta semana por estas tierras australes y los gráficos obtenidos corroboran las gélidas temperaturas que registró el datalogger con su STCN75. |
|
||||
La ubicación que decidimos darle al desarrollo fue un pequeño lugar en una de las ventanas que dan a un patio trasero de la casa. Afortunadamente la habitación donde se realizó la acumulación de datos estaba aislada del resto de la casa ya que hubo momentos en que los valores térmicos descendieron a tan sólo 4°C. Durante el día la marcación ascendía y hasta tuvimos situaciones accidentales: por ejemplo, un mediodía, al abrir la ventana para ventilar el cuarto, por descuido el sol comenzó a dar sobre el STCN75 elevando la temperatura a valores que no correspondían con la temperatura real del momento. Es decir, el registro almacenó valores mayores a los 20°C cuando en realidad apenas teníamos 12°C en pleno mediodía. |
|||||
Otro accidente que tuvimos: una aleatoria falla en la grabación de algunos registros térmicos y horarios. La falla se debió a la lejanía de conexión entre el módulo que abarca al DS1307 y a la memoria 24C64 y el módulo que soporta al STCN75. La captación de ruidos por un bus I2C muy extenso en longitud que cruza por debajo de la placa entrenadora ha provocado este pequeño defecto que no ha complicado en absoluto al funcionamiento global de nuestro datalogger. Una construcción modular, un protoboard y módulos alejados entre sí propiciaron este pequeño defecto que notarán si analizan los archivos de texto que acompañan al software que entregamos en este artículo. Por supuesto, la solución obvia y definitiva a este problema es la construcción de un PCB optimizado para este equipo. Antes de continuar mostrándoles los resultados obtenidos, haremos un breve repaso por el hardware y las partes fundamentales que intervienen y se agregan en esta segunda parte del desarrollo. |
|||||
|
Montaje completo del datalogger |
||||
Al sistema que hemos visto en el artículo anterior le hemos suprimido la alimentación mediante la conexión USB al ordenador y le hemos agregado al montaje una pequeña fuente de alimentación construida especialmente para protoboard. Con una entrada de 12Volts a partir de una pequeña fuente de pared y dos reguladores fijos, obtenemos una construcción muy simple y efectiva. Un 7805 (5Volts) y un AZ1117 (3,3Volts) en una pequeña placa de menos de 5 centímetros por lado resumen una fuente de energía pequeña y fácil de incrustar en cualquier zona del protoboard. En nuestro caso, hemos elegido un rincón libre donde no moleste para trabajar con libertad y, por sobre todas las cosas, para que no afecte a las lecturas de temperatura del STCN75. Como mencionamos antes, dos reguladores, algunos capacitores, un par de LEDs indicadores de tensión de funcionamiento y allí tenemos nuestra fuente de alimentación para protoboard. De este modo, con una sencilla fuente de pared y un módulo muy fácil y rápido de instalar en cualquier punto del protoboard, resolvemos el tedioso trabajo de armarle a cada desarrollo una fuente incorporada dentro del experimento para usarlo de modo autónomo y ambulante. |
|||||
Vista en detalle de la pequeña fuente de alimentación para protoboard |
|||||
Utilizaremos la entrada de 5Volts proveniente desde el puerto USB para informarle al PIC 18F2550 que nos hemos comunicado con el ordenador. La placa entrenadora de Microingenia S.L. trae un pin dedicado a tal fin (USBS), pero en cualquier construcción clásica esto se resuelve con un divisor resistivo que luego se conecta a una entrada digital del microcontrolador. De este modo, con una simple instrucción IF-THEN se interroga en forma periódica para conocer el estado de conexión de nuestro datalogger. A este tipo de desarrollos lo hemos visto con anterioridad en el Receptor NeoTeo, con un PIC 18F4550. El concepto es el mismo: cuando un estado lógico alto aparece en la entrada que hemos escogido para monitorear la conexión, el firmware del PIC pasará a un “modo esclavo” y quedará a merced de las instrucciones que determine el software que utilizaremos en el ordenador. |
|||||
|
|
||||
Este pequeño software que
desarrollamos en VB6 detendrá la grabación de datos en la memoria EEPROM
y facilitará la transmisión de los datos que ella tenga almacenados
hacia el ordenador. Una vez allí, serán interpretados y mostrados en
forma adecuada para completar así el trabajo del datalogger. Una vez
extraídos los datos almacenados en la EEPROM, la grabación se reinicia
desde la posición cero de la memoria lista para ser cargada durante
otras dos semanas. No olvidemos que una memoria 24C64 permite almacenar
hasta 14 días de nuestra información. El formato de esta grabación se
realizaba de la siguiente manera: en el siguiente orden se graban seis
bytes: Día, Mes, Hora, Minutos, Signo y Temperatura. Recordemos que
“Signo” es un espacio vacío cuando la temperatura se encuentra por
encima de los cero grados centígrados y un signo “menos” cuando las
temperaturas pasan a ser “bajo cero” (El STCN75 puede medir hasta
-55°C). Por el lado de los grados de temperatura, éstos se registran en
la EEPROM como un número entero, sin decimales. De este modo, podemos
almacenar el valor dentro de un único byte. |
|||||
|
La recopilación de datos es la tarea fundamental de un datalogger |
||||
|
Luego encontramos un
segundo botón que se activará al momento de desconectarnos del puerto
USB. Este botón nos permitirá grabar información en dos archivos del
tipo TXT ya predeterminados que se encuentran junto a los ficheros que
componen la aplicación. Uno es Datalogger.txt y el otro es Temp.txt. En
el primero se graban los datos tal como los vemos en la pantalla de
aplicación, mientras que en el segundo archivo sólo se guardarán los
valores de temperatura separados por un espacio en blanco cada uno. El
primer archivo puede ser impreso y guardado cual si fuera un registro,
un libro semanal, un log de datos (datalogger). El segundo archivo puede
ser abierto por cualquier software capaz de manejar planillas de
cálculo, obteniendo de este modo la posibilidad de conseguir un gráfico
de la variación de temperatura en función del tiempo. Un gráfico de
barras o de líneas puede ser muy útil para apreciar variaciones y curvas
de comportamiento que a veces los fríos números no nos muestran. Un
gráfico es mucho más “amigable” y fácil de interpretar. |
||||
Ejemplo del gráfico obtenido en las pruebas iniciales del datalogger |
|||||
El tercer y último botón del grupo realiza esta operación: nos muestra en un gráfico las primeras 256 muestras de temperatura, es decir, desde la posición cero de memoria hasta la 255. Si deseamos analizar otros sectores, como mencionamos antes, tendremos que editar el archivo Temp.txt, extraer el sector de datos que nos interesa, crear un nuevo archivo de texto y abrirlo con la aplicación que nos permitirá graficar los parámetros seleccionados. Nada complejo, por supuesto. Lo importante que debemos recordar es lo siguiente: leer los datos almacenados en la memoria no borra ni elimina los datos almacenados en su interior, sólo se salteará la eventual grabación que pudiera tocarle en ese preciso momento que estemos “leyendo” la memoria. El firmware del PIC está preparado para llegar hasta el final de la capacidad de la memoria EEPROM y luego comenzar a sobrescribirla nuevamente como si fuese un círculo de almacenamiento. El firmware que te entregamos está preparado para ser cargado al 18F2550 con el bootloader que ya hemos utilizado en ejemplos anteriores. |
|||||
|
|||||
|
Una vez alcanzada la
posición 8190 (la memoria tiene capacidad para 8192 bytes), el firmware
comienza la grabación desde la posición cero. Es decir, si en 14 días no
tuvimos tiempo de ir a obtener los archivos de texto con un sencillo
ordenador portátil al menos, la culpa no será del datalogger. Él
comenzará su cuenta como si recién se hubiera conectado a la fuente de
alimentación. Debemos estar atentos entonces a ese concepto: Los datos
no se borran al leerlos, pero sí se reinicia la memoria (a posición
cero) al ser leída. También se reiniciará su puntero (comienza a grabar
desde posición cero de memoria) si desconectamos la energía del
datalogger o si la acumulación de datos supera los 14 días. Imagino que
al leer estas líneas ya estarás pensando en una unidad UPS o de energía
ininterrumpida para mantener siempre en funcionamiento a este
registrador de datos. De todas maneras, al reestablecerse la energía,
los datos acumulados no se borran de manera automática. Es decir,
podemos leer los datos que lleva acumulado el sistema hasta ese momento
y luego dejar que vuelva a comenzar desde cero. De otro modo, también
podría modificarse el firmware para conservar la posición de memoria
alcanzada al momento de un teórico corte energético y luego rescatar
este valor para continuar grabando desde la última posición al momento
de interrumpirse la energía. Pero, claro, eso ya es parte de tu
genialidad creativa y tu capacidad como desarrollador.
|
||||
Indice de montajes | |||||