calibración de sensores de temperatura e iluminación
Post on 24-Jun-2015
526 Views
Preview:
DESCRIPTION
TRANSCRIPT
Monitoreo de potencial redox, temperatura e iluminación en un sistema de planta hidrofita.
1. Introducción.
2. Descripción del sistema.
Se colocaron tres sondas de temperatura. Una se dedicó a la medición de temperaturas al aire
libre (temperatura exterior). La segunda se colocó en el interior de la habitación donde se colocó
el sistema agua-planta (Scirpus spp.). La tercera se colocó dentro del agua del sistema.
También se colocó un sensor de iluminación en la misma ventana junto con el sistema planta-
agua. Además se utilizó un controlador de potencial redox para medir los valores (mV) dentro del
agua del sistema.
Durante el crecimiento de las plantas se hicieron mediciones en tres fechas con una diferencia de
una semana entre cada una. La primera lectura se hizo dos semanas después de la siembra, para
proporcionar un tiempo de aclimatación.
Cada semana se hizo un cambio del 75% de agua (4 L en total). En el agua se añadió 100 mg de
bicarbonato de sodio (NaH2CO3) y 100 mg de fosfato de calcio (Ca(PO4)2). Se dejó en reposo
durante cinco días antes de tomar las lecturas.
Circuito electrónico para monitoreo de temperaturas e iluminación.
Se utilizaron termistores de 10M_Ohm para la medición de las temperaturas. La iluminación se
midió con una fotorresistencia de 2M_Ohm. Estos sensores se conectaron a una tarjeta de
desarrollo de la marca Arduino modelo UNO. Esta tarjeta se conectó con el Shield Ethernet de la
misma marca, la cual contiene un slot para tarjeta de memoria microSD, en la que se insertó una
tarjeta de 4GB.
Se escribió un programa con el que el sistema registró un bloque de datos cada cinco minutos. El
bloque de datos contiene tres valores de temperatura (interior, exterior y sistema) y un valor de
iluminación.
Estos datos se guardaron automáticamente en un archivo de texto. Cada 24 horas se retiró la
tarjeta de memoria para leerla en una computadora importando el archivo en una hoja de cálculo
Microsoft Excel.
Con el programa Microsoft Excel se procesaron los datos calculando promedio, valor máximo,
valor mínimo, varianza, desviación estándar e intervalo de confianza al 95%.
Calibración de los sensores de temperatura.
Uno de los sensores se calibró leyendo valores de temperatura con un termómetro de mercurio
marca Taylor (-20 a 110 °C) al mismo tiempo que se obtuvieron valores analógicos mostrados en el
monitor serial del ambiente de programación Arduino. El rango de la calibración comprendió
valores de 1 a 40 °C. A continuación se realizó una regresión lineal por mínimos cuadrados para
obtener la ecuación que relaciona la temperatura en función del valor analógico medido con el
sensor electrónico.
Los otros sensores se calibraron contra los valores obtenidos por el sensor calibrado contra el
termómetro de mercurio. Para esto se utilizaron lecturas de 24 horas, cada cinco minutos, con los
dos sensores colocados en el mismo sitio. El sensor exterior se calibró colocando la sonda
calibrada junto a la sonda en el exterior, tomando lecturas al mismo tiempo. Así también, se
colocó el sensor calibrado junto al sensor interior, tomando lecturas al mismo tiempo. Con estos
datos se realizó una regresión lineal por mínimos cuadrados. Así se obtuvieron las ecuaciones de
temperatura en función del valor analógico para cada una de las sondas de temperatura.
Figura. Calibración del termómetro T_3 contra un termómetro de mercurio marca Taylor (-20 a
110 °C). Se tomaron lecturas analógicas (0 a 1023) con el sensor de temperatura y de manera
simultánea se registraron las temperaturas medidas con el termómetro de mercurio. Con estos
valores se obtuvo el gráfico y la ecuación por regresión lineal.
(MisDocumentos\Arduino_Documentos\MonitoreoTemperatura\Calibracion_T_3.doc).
Figura. Calibración del termómetro T_2 tomando como referencia los valores de temperatura
leídos con el sensor T_3, que fue previamente calibrado contra un termómetro de mercurio marca
Taylor (-20 a 110 °C).
(MisDocumentos\Arduino_Documentos\MonitoreoTemperatura\TMP_ILUM_18_19_Nov2013.doc).
Figura. Calibración del termómetro T_1 tomando como referencia los valores de temperatura
leídos con el sensor T_3, que fue previamente calibrado contra un termómetro de mercurio marca
Taylor (-20 a 110 °C).
(MisDocumentos\Arduino_Documentos\MonitoreoTemperatura\TMP_ILUM_19_20_Nov2013.doc).
Figura. Mediciones de temperatura e iluminación una vez que se calibraron los sensores de
temperatura. T_1 y T_3 se colocaron juntos en el interior de la habitación. T_2 se colocó en el
exterior de la habitación. El sensor de iluminación se colocó en una ventana dentro de la
habitación recibiendo la luz del exterior
(MisDocumentos\Arduino_Documentos\MonitoreoTemperatura\TMP_ILUM_20_21_Nov2013.doc).
Una vez que se calibraron los tres termómetros, se colocó la sonda para medición de la
iluminación. Así se hizo una medición de prueba con los cuatro sensores, registrando lecturas cada
cinco minutos.
Monitoreo de potencial redox.
Se utilizó un controlador de potencial redox marca Hanna, modelo MV600 con un electrodo
Ag/AgCl. Las lecturas desplegadas en la pantalla LCD (liquid crystal display) se dan en milivolts. Los
valores reportados se corrigieron restando 200 mV para expresarlos como valores estandarizados
con respecto al electrodo de hidrógeno.
Estas lecturas se recolectaron de manera manual por lo que no se tienen intervalos regulares.
3. Resultados.
4. Discusión.
5. Conclusiones.
Anexo 1.
Programa para Arduino UNO con Shield Ethernet.
/*
TemperaturaIluminación_Monitoreo
Programa para arduino UNO con Shield Ethernet. Para
registrar temperatura con una termoresistencia de 10M_ohm
y una fotorresistencia de 2M_ohm.
Se colocan tres sondas de temperatura, una para medir la
temperatura ambiente, otra para medir la temperatura del
agua en el sistema y otra para medir la temperatura exterior.
Los sensores de temperatura conectados a las entradas analógicas
A0, A1 y A2. El sensor de iluminación conectado en la entrada
analogica A3.
El registro de datos e cada 5 minutos (300,000 sec). Se va a
colocar un sensor de potencial redox que al mismo tiempo va
a registrar los valores redox del sistema.
Se trata de relacionar los valores redox con la temparatura
y la iluminacion.
*/
#include <SD.h>
double tiempoTotal=0.0;
double tiempoTranscurrido=0.0;
long double tiempoPrevio=0.0;
long double intervalo=300000; // 5 min (300000 ms)
float valTemperatura1;
float valTemperatura2;
float valTemperatura3;
float valIluminacion;
float sondaTemperatura1;
float sondaTemperatura2;
float sondaTemperatura3;
float sondaIluminacion;
const int chipSelect=4;
const int zumbador=8;
const int led=9;
float temperaturaPromedio1;
float temperaturaPromedio2;
float temperaturaPromedio3;
float iluminacionPromedio;
int i;
int intensidad=0;
char leyendoSensores[]="Leyendo_sensores";
char programa[]="Programa: TemperaturaIluminacion_Monitoreo";
char encabezado[]="Time(min) T_prom1(C) T_prom2(C) T_prom3(C) Iluminacion";
char leyenda[]="T_1=temp interior; T_2=temp exterior; T_3=temp sistema";
char termometro1[]="termometro1 y=0.1591*x-56.113";
char termometro2[]="termometro2 y=0.1116*x-35.358";
char termometro3[]="termometro3 y=0.13318*x-43.9853";
void setup () {
pinMode(10, OUTPUT);
pinMode(led, OUTPUT);
pinMode(zumbador, OUTPUT);
Serial.begin(9600);
delay(10);
if (!SD.begin(chipSelect)) {
Serial.println("Falla en la micro SD o no hay tarjeta");
return; }
Serial.println("Tarjeta SD inicializada");
escribeEncabezado(); }
void loop () {
tiempoTotal=millis();
valIluminacion=0.0;
valTemperatura1=0.0;
valTemperatura2=0.0;
valTemperatura3=0.0;
if (tiempoTotal-tiempoPrevio > intervalo) {
Serial.println(leyendoSensores);
digitalWrite(led, HIGH);
for (i=0; i<3; i++) {
sondaTemperatura1=analogRead(A0); // Temperatura interior
sondaTemperatura2=analogRead(A1); // Temperatura exterior
sondaTemperatura3=analogRead(A2); // Temperatura del sistema
sondaIluminacion=analogRead(A3); // Iluminacion
valTemperatura1=valTemperatura1+sondaTemperatura1;
valTemperatura2=valTemperatura2+sondaTemperatura2;
valIluminacion=valIluminacion+sondaIluminacion;
valTemperatura3=valTemperatura3+sondaTemperatura3;
delay(500); }
temperaturaPromedio1=valTemperatura1/3;
temperaturaPromedio1=temperaturaPromedio1*0.1591-56.113;
temperaturaPromedio2=valTemperatura2/3;
temperaturaPromedio2=temperaturaPromedio2*0.1116-35.358;
iluminacionPromedio=valIluminacion/3;
temperaturaPromedio3=valTemperatura3/3;
temperaturaPromedio3=temperaturaPromedio3*0.13318-43.9853;
escribeReporte();
delay(300);
digitalWrite(led, LOW);
delay(100);
digitalWrite(zumbador, HIGH);
delay(100);
digitalWrite(zumbador, LOW);
tiempoPrevio=millis();
intensidad = 0; }
if (tiempoTotal-tiempoPrevio < intervalo) {
analogWrite(led, intensidad);
delay(100);
analogWrite(led, 0);
delay(5000);
// Serial.println(intensidad);
intensidad=intensidad+4; } }
void escribeEncabezado() {
Serial.println(programa);
Serial.println(leyenda);
Serial.println(termometro1);
Serial.println(termometro2);
Serial.println(termometro3);
Serial.println(encabezado);
File dataFile = SD.open("TMP_ILUM.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(programa);
dataFile.println(leyenda);
dataFile.println(termometro1);
dataFile.println(termometro2);
dataFile.println(termometro3);
dataFile.println(encabezado);
dataFile.close(); }
return; }
void escribeReporte() {
tiempoTranscurrido=tiempoTotal/60000;
Serial.print(tiempoTranscurrido);
Serial.print("\t");
Serial.print(temperaturaPromedio1);
Serial.print("\t");
Serial.print(temperaturaPromedio2);
Serial.print("\t");
Serial.print(temperaturaPromedio3);
Serial.print("\t");
Serial.print(iluminacionPromedio);
Serial.println();
File dataFile = SD.open("TMP_ILUM.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(tiempoTranscurrido);
dataFile.print("\t");
dataFile.print(temperaturaPromedio1);
dataFile.print("\t");
dataFile.print(temperaturaPromedio2);
dataFile.print("\t");
dataFile.print(temperaturaPromedio3);
dataFile.print("\t");
dataFile.print(iluminacionPromedio);
dataFile.println(),
dataFile.close(); }
return; }
top related