Sistema de Adquisición de Datos PICAXE-18X:
Agregando un reloj de tiempo real
El Datalogger es un sistema de adquisición
de datos de cuatro canales, basado en el microcontrolador
PICAXE-18X cuyo funcionamiento y construcción
fue explicado en Saber Electrónica Nº
224 (puede bajar toda la información de
www.webelectronica.com.ar, haciendo click en el
ícono password e ingresando la clave: dataclock.
El microcontrolador de este Datalogger puede ser
reprogramado por el usuario para realizar experimentos
de adquisición de datos de muchos tipos.
Anteriormente, en Saber Electrónica Nº
224, vimos de manera básica, el diseño
del sistema de adquisición de datos y estudiamos
la operación del bus i2c con las memorias
EEPROM. Si no está familiarizado con el
bus i2c, por favor revise dicho artículo
anterior antes de seguir adelante.
La adquisición de datos en el circuito
base puede ser manejada en intervalos regulares
(típicamente de un minuto a varias horas)
usando simples retardos de tiempo. Pero en mayores
períodos de tiempo, al usar este método,
se van a experimentar algunas variaciones (posiblemente
unos segundos por día, dependiendo de las
condiciones). Esto se debe a la tolerancia de
fabricación del resonador interno del microcontrolador
PICAXE.
Si se necesita más exactitud para largos
períodos se necesita agregar un circuito
integrado RTC (reloj de tiempo real).
El RTC Dallas DS1307
El semiconductor Maxim/Dallas DS1307 (vea la figura
1) es un reloj de tiempo real exacto, el cual
automáticamente, mantiene el tiempo y la
fecha actual, incluyendo compensación para
meses con menos de 31 días y saltos de
año. El DS1307 es un dispositivo de 8 pines
al que se le conecta un cristal de cuarzo estándar,
de bajo costo, a 32.768kHz entre los pines 1 y
2 para proveer tiempo base exacto. Opcionalmente
se le puede conectar al pin3, baterías
de respaldo de 3 volt, asegurando que se mantendrá
el tiempo a la fecha aunque esté desconectada
la fuente de tensión del circuito prin
cipal. El circuito integrado automáticamente
detecta que se ha removido la energía en
el circuito principal y se conectan las baterías
de respaldo cuando es requerido.
La batería de respaldo puede durar hasta
10 años y se coloca en la misma base de
circuito impreso, tal como muestra la figura 2.
Adicionalmente el circuito integrado DS1307 tiene
dos características interesantes. El pin
7 es una salida de colector abierto, que puede
ser programada para hacer flash cada
1Hz. Esto permite la colocación de un led
como indicador de segundos en aplicaciones de
reloj. El circuito integrado también tiene
56 bytes de memoria RAM para propósito
general, el cual puede ser usado como memoria
extra por el master PICAXE si es requerido.
La figura 3 muestra el circuito completo del temporizador
de tiempo real y su conexión en el PICAXE-18.
Si quiere utilizar este reloj para otras apliaciones,
debrá realizar las conexiones apropiadas.
Tenga en cuenta que el chip no va a operar hasta
que sea puesto el tiempo y fecha actual.
Parámetros del i2c Slave
En la hoja de especificaciones del fabricante
del DS1307 (www.dalsemi.com), se encontraron los
siguientes detalles.
slave address - 1101000x
address size - 1 byte
bus speed - 100kHz
Esto significa que el comando i2c slave a programar
en el PICAXE es el siguente:
i2cslave %11010000, i2cslow, i2cbyte
Los registros del DS1307 están definidos
en la tabla 1.
Todos los datos de tiempo/fecha están en
formato BCD, lo cual hace muy fácil su
lectura y escritura usando notación hexadecimal.
Por ejemplo 11:35 a.m. va a contener $11 en el
registro de horas y $35 en el registro de minutos.
Poniendo el tiempo y la fecha
Para poner el tiempo correcto después de
que el circuito es alimentado por primera vez,
el tiempo actual debe ser escrito en los registros.
El siguiente ejemplo de un programa PICAXE va
a configurar el tiempo a las 11:59 del jueves
25/04/06 usando el comando writei2c. Esto se logra
cargando los registros en orden de la dirección
00 hacia arriba; por ejemplo segundos, después
minutos y luego horas, etc.
i2cslave %11010000, i2cslow, i2cbyte
writei2c 0, ($00, $59, $11, $03, $25, $04, $06,
$10)
end
Después de que este programa es descargado,
el led de salida (si está puesto) debería
empezar a parpadear cada segundo.
Usando el DS1307
Veremos cómo leer tiempo y fecha del DS1307
se puede apreciar mejor con un ejemplo. El programa
mostrado en la tabla 2 actúa como un reloj
de alarma de adquisición de datos, que
hace chequeos cada 23 segundo. Si son exactamente
las 7:00 entonces las lecturas de temperatura
y luz son guardadas en la memoria EEPROM (este
programa hace referencia al sistema descripto
en Saber Electrónica Nº 224, donde
dábamos ejemplos con mediciones de luz
y temperatura). El programa correrá por
30 días después de ese tiempo el
led rojo se prende indicando que la misión
ha sido completada.
Usando el asistente del siste-
ma de adquisición de datos
Se pueden usar sistemas de adquisición
de datos más complejos con el reloj de
tiempo real DS1307 y el editor de programación
PICAXE. Este editor de programación es
un software que incluye un asistente muy útil,
que automáticamente generará programas
en Basic. Esto permite programas más complejos
para ser generados con un click del Mouse.
Para usar el asistente, una vez que tenga instalado
el Editor de Programación, haga lo siguiente:
1. Ejecute el Programming Editor software (v3.5.1
o superior)
2. Seleccione View>Options y luego elija el
modo PICAXE-18X. Click OK.
3. Seleccione PICAXE>Wizards>AXE110 Datalogger>Start
New Datalogger Mission
4. Seleccione Option y haga click en OK.
La nueva pantalla de asistente para misiones
de adquisición de datos es mostrada en
la figura 4.
La mayoría de las opciones del asistente
son auto explicadas, y el programa que se genera
de Basic puede ser visto en la pantalla y modificado,
si es que lo desea. Hay dos opciones de tiempo
que usa el DS1307 RTC, uno para poner exactamente
el intervalo de tiempo y el segundo para poner
un tipo de alarma de reloj para la adquisición
de datos.
Una vez que el programa es descargado, la misión
inicia automáticamente, y los datos son
guardados en la memoria externa. No es posible
resetear la misión usando el botón
de RESET del sistema de adquisición de
datos. En vez de eso, para iniciar una nueva misión
debe descargar un nuevo programa en el sistema
de adquisición de datos.
Conclusión
El DS1307 es un reloj de tiempo real de aplicación
muy fácil, que puede usarse para largos
periodos de tiempo en el Datalogger. Es un extra
de bajo costo para el sistema datalogger de PICAXE.
Por último, y a modo de complemento, en
la figura 5 volvemos a graficar el circuito del
Datalogger desarrollado en Saber Electrónica
224. En futuras entregas daremos aplicaciones
de este sistema de adquisición de datos.