Sei sulla pagina 1di 9

Datalogger: Adquisicin de datos con

18F2550

Anuncios Google
Datalogger Avalywww.taylorla.com - Termohigrometro digital usb Compre ahora
al mejor precio

Sbado 10/07/2010 por Mario Sacco . Vista 15014 veces


51

52 Votos
29 Comentarios
29>> comenta

Un datalogger es un equipo electrnico encargado de obtener mediciones de


magnitudes diversas ordenadas en el tiempo. La toma o adquisicin de datos puede
realizarse desde diversas fuentes de informacin o sensores. Dichos datos son almacenados
en memorias para luego ser estudiados en forma textual o estadstica mediante cartas
grficas. Los campos de aplicacin de un datalogger son ilimitados en procesos de
monitoreo de variables ya sea en el mbito industrial, domstico o como simple ensayo de
laboratorio a nivel educacional. Si existe una magnitud que experimenta cambios en el
tiempo y deseamos estudiar las caractersticas de esa variacin, necesitamos un registrador
y acumulador de datos: un datalogger.

Anuncios Google
Medio de Temperatura
www.italterm.com - Medio de Temperatura em Metais INDICMAX,
FORNERO, ITALTEMP
Universal Programmer
www.Xeltek.com/UniversalProgrammers - Easily Program EPROM,
EEPROM, Flash & More at Low Rates. View & Buy Now

Un sistema de adquisicin de datos puede recibir informacin desde los ms


diversos tipos de sensores: de temperatura, de humedad, de tensin, de corriente,
de peso, de aceleracin, de velocidad, de caudal de lquidos, de fuerzas mecnicas,
de movimientos y un etctera interminable. En nuestra aplicacin utilizaremos una
nica informacin de entrada, un nico tipo de datos ya que no estaremos
desarrollando un producto comercial o un equipo dedicado a una aplicacin
especfica. Bastar con un ejemplo para que puedas comprender el funcionamiento
de este tipo de equipos y luego adaptarlo al uso que t necesites. Sera intil
construir un sistema cerrado, sin posibilidades de ampliacin. Si as fuera, slo
estaramos mostrndote un desarrollo propio que te sera de muy poca utilidad en el
futuro y aqu lo que se trata de lograr es que obtengas el concepto para luego
aplicarlo a tus desarrollos y expandirlos hasta donde las necesidades te lo exijan.

Un datalogger comercial puede costar muchos billetes. Anmate y constryelo t


mismo.
El instrumento que veremos en este artculo es un instrumento de campo capaz
de almacenar los valores que adquiera la variable elegida y almacenar en una
memoria la mayor cantidad de muestras como le sea posible para facilitarnos un
posterior estudio y anlisis de la evolucin de la mencionada variable. En nuestro
diseo utilizaremos un medidor de temperaturas que ya hemos visto en otro artculo
anterior: el STCN75. Este sensor nos brinda la facilidad de trabajo a la que el bus
I2C ya nos tiene acostumbrados y nos ayuda a trazar una lnea de diseo a partir de
sensores de diversos tipos, todos colgados del mismo bus de datos. Si por el

contrario decides agregar canales de entradas analgicos, la placa de Microingenia


o nuestra entrenadora NeoTeo con su PIC 18F2550 (el corazn de este
instrumento) te permitirn trabajar con mltiples convertidores analgico
digitales para monitorear y controlar a lo largo del tiempo variables de naturaleza
analgica.

Diagrama en bloques del datalogger de temperatura


En la imagen superior podemos ver el diagrama en bloques de lo que pretende ser
un datalogger a partir del hardware inicial que disponemos. En la misma placa en
la que se encuentra ubicado el DS1307, si recuerdan, habamos dejado un espacio
reservado a una memoria EEPROM. El DS1307 nos entregar los datos del horario
y la fecha en que se produzcan los eventos que deseamos controlar y monitorear,
mientras que las variables obtenidas se almacenarn en la memoria EEPROM que
el PCB comparte con el RTC. Estos dos dispositivos que se conectan de manera
muy sencilla al 18F2550 comparten, adems, el mismo bus de datos para conectar
el sensor de temperatura que utilizaremos. La memoria que utilizamos en este
ejemplo es una EEPROM 24C64 y en ella podemos almacenar hasta 8192 Bytes de
informacin. Obteniendo una muestra de temperatura cada 15 minutos, podremos
almacenar cuatro mediciones en una hora. Si grabamos la hora y los minutos del
evento, el da, el mes y los grados de temperatura (en nmeros enteros), debemos
considerar 6 bytes por medicin si adems decidimos tener en cuenta las mediciones
de temperatura bajo cero (signo negativo, otro byte).

Nuestra conocida placa con el DS1307 y una EEPROM 24C64


Entonces, si en una hora tenemos 4 mediciones, almacenaremos 24 Bytes. En un da
sern 576 Bytes, por lo tanto para llenar una memoria 24C64 harn falta 14 das
de mediciones. Esta cifra es muy buena si deseamos evaluar o estudiar las
temperaturas de mbitos muy especficos como pueden ser incubadoras de aves,
viveros cubiertos (invernaderos), habitaciones donde deben conservarse materias
primas muy especficas o donde se realicen procesos puntuales, por ejemplo, la sala
donde se pone a leudar la masa con que se har el pan del da. Por supuesto,
podramos agregar otras mediciones de diversas variables como puede ser la
humedad, la luz ambiente o la tensin de lnea, pero necesitaremos ms espacio
de memoria por cada medicin almacenada y eso reducir la cantidad de das que
podremos acumular muestras para nuestros estudios. De todos modos, existen
memorias EEPROM de hasta 1MBit en las cuales dispondremos de hasta 131.072
bytes de capacidad y nos ayudarn a optimizar la relacin cantidad de datos /
das de almacenamiento. Por ejemplo, si utilizramos esa memoria en nuestro
ejemplo, podramos almacenar datos durante 227,55 das, algo as como 7 meses,
realmente una cantidad de das innecesaria para un equipo de entrenamiento y
aprendizaje.

El sensor de temperatura STCN75 instalado y conectado al bus I2C


La rutina de funcionamiento del instrumento que hoy nos convoca se sustenta en la
combinacin de varios de los programas y montajes que ya hemos realizado aqu
en NeoTeo. Utilizaremos un display LCD de dos renglones por 16 caracteres donde
mostraremos la hora de manera constante, junto a la fecha (da de la semana y fecha
del calendario) y, como funcin adicional, el equipo tendr un pulsador para
visualizar en forma inmediata la temperatura. De todos modos, este es un valor que,
de acuerdo al firmware grabado en el 18F2550, aparece en el LCD cada 30
segundos, pero si deseamos verlo en forma inmediata bastar con pulsar el botn de
referencia. Vale aclarar que es el mismo pulsador utilizado para ingresar en modo
bootloader al insertar el conector USB en el ordenador. Por lo tanto, este botn
cumple una doble funcin. Si en cambio no deseas utilizar el sistema de carga de
archivos conocido como bootloader, puedes introducir el firmware en el PIC
mediante el conector ICSP de la controladora que quieras utilizar para el montaje.

Si no deseas utilizar el sistema de carga "bootloader", puedes programar el PIC


mediante el conector ICSP
El protocolo de funcionamiento del firmware es muy sencillo y sigue una
continuidad de acciones muy elementales y fciles de comprender. Luego de
inicializar el PIC con las variables y declaraciones habituales (tal como se hace en
cualquier lenguaje de programacin), leemos el RTC (DS1307) y mostramos la
hora. Luego, leemos los datos que nos enva el sensor de temperatura y armamos el
cdigo para que pueda verse cada 30 segundos de manera automtica o mediante el
pulsador utilizado para la carga del firmware (bootloader). Vale aclarar que antes
de leer el dato horario, hemos dejado en el cdigo (comentados) los fragmentos
necesarios para grabar, corregir o ajustar el DS1307 en aquellos casos que fuese
necesario. Ms adelante, luego de leer y mostrar la hora, la fecha y la temperatura,
procedemos a grabar los datos necesarios en la memoria EEPROM. Para esto,
transformamos toda la informacin en bytes tiles para ser grabados y almacenados
dentro de la EEPROM. Este tipo de memorias (las que superan los 16Kbits
24C16) poseen un sistema de escritura que en BASIC se puede realizar de manera
muy sencilla.

El conector USB se utiliza para programar el PIC y para suministrar alimentacin


al sistema
Se abre el bus de datos, se graba en la memoria la direccin a la que se quiere
acceder y luego se graban los datos. Suponiendo que seleccionamos la posicin 158
de memoria y cargamos 6 datos, grabaremos en los lugares 158, 159, 160, 161, 162
y 163 los bytes que aparezcan, producto de la lectura y toma de datos. Lo mismo
suceder con la posicin 6336 (por mencionar una posicin al azar). Grabaremos en
las posiciones 6336, 6337, 6338, 6339, 6340 y 6341. Debes observar que al escribir
la direccin de memoria donde escribirs / leers el byte que desees, no debes
preocuparte por la paginacin. Debes imaginar a la memoria como un registro
lineal al que debes indicarle la posicin y nada ms. En realidad, est dividida en
256 pginas de 32 bytes, pero a los efectos prcticos escribes la direccin en forma
directa dentro de los dos bytes que le siguen al byte de control (address high byte y
address low byte) y accedes a cualquier punto dentro de la estructura de la memoria.

Direccionamiento de la memoria EEPROM 24C64


Para leer este tipo de memoria, no se enva una instruccin de lectura apenas abierto
el bus como hacamos en memorias pequeas como la 24C02. En este caso, se abre
el bus (BSTART), se graba en la memoria la direccin que se quiere leer
(BUSOUT), luego se reabre el bus (BRESTART) y all entonces se enva el
comando de lectura habitual (BUSIN). Finalmente se cierra el bus (BSTOP) y los
datos se muestran en el LCD. Realizar una lectura luego de la grabacin de los
datos en la EEPROM es muy importante. No todos realizamos el hardware con los
mismos conceptos tcnicos. No todos tenemos el mismo criterio al momento de
distribuir los componentes sobre un PCB y hasta hay oportunidades en las que el
mismo hardware nos define las posiciones de los componentes secundarios dentro
de una placa. Esto quiere decir que realizando el proceso de lectura luego de la
grabacin, estaremos verificando que los datos se hayan grabado de manera
correcta. Los tiempos entre instrucciones, los retardos luego de los comandos de
grabacin y las capacidades parsitas dentro del bus I2C nunca se repetirn entre un
diseo y otro. Por este motivo, controlar y verificar (imprimiendo en el LCD) el
resultado de la grabacin nos permitir ajustar los tiempos y optimizar el cdigo
hasta lograr un firmware libre de errores sorpresivos, imprevistos e inexplicables.

Fragmento del firmware donde se verifica que los datos grabados en memoria sean
correctos
El hardware utilizado es el mismo que usamos en el desarrollo del RTC DS1307,
con el agregado del sensor de temperatura al bus I2C. Las conexiones al PIC
18F2550 son las mismas que traemos desde la entrenadora NeoTeo. El LCD en
RB2-RB7; el bus I2C en RB0 y RB1; el pulsador para el sistema bootloader en
RC0 y el LED en RC1 (estas dos ltimas conexiones varan segn la entrenadora

utilizada); la conexin al bus USB es siempre igual y no admite errores en el


18F2550; y por ltimo la alimentacin de 5 Volts con los capacitores electrolticos y
de desacople correspondientes. Es decir, el mismo circuito de siempre. Si no lo
recuerdas de memoria, busca hacia atrs en los artculos donde utilizamos este PIC
y vers que la estructura es siempre la misma.

Por otro lado, vale aclarar que por ahora al bus USB lo utilizaremos para cargar el
firmware mediante el bootloader y para alimentar el equipo. En la prxima entrega
desarrollaremos una aplicacin para el ordenador con la que podremos extraer la
informacin que se graba en la memoria EEPROM y que adems permitir
graficar las curvas estadsticas del comportamiento de los valores almacenados. En
esta primera entrega, te dejamos el hardware y el firmware como para que puedas
ver funcionar tu datalogger de temperatura. No desesperes, tienes esta semana
para armar el hardware, ensayar y poner a punto el firmware, comprender todo el
montaje y hasta ampliar el sistema con ms sensores. No lo olvides, el prximo
sbado descargamos los datos almacenados en la EEPROM y veremos en un
grfico cmo estuvo la temperatura durante estos das. El datalogger ya est en
marcha, no te bajes ahora.
Datalogger (Bootloader) Download Firmware Datalogger Download Firmware

Potrebbero piacerti anche