lunes, 28 de enero de 2013

Sensor de humedad y temperatura HMZ433A1

En nuestros días ha sido de gran importancia tener una referencia precisas de las variables climáticas, con esto se pude conocer el estado real del clima, con la información adquirida se han hecho modelos de predicción climática que generan conocimiento; ademas se ha podido confrontar desastres naturales, mejorar la agroindustria, darle fiabilidad a los procesos de producción por ende aumentar la calidad de los producto acelerar el consumo de los mismo y hay menos hambre(aha :S).

En el desarrollo de sistemas electrónicos la instrumentación industrial y virtual son las áreas del conocimiento que se encargan de que los sensores sean acondicionados, a partir de esto,es posible implementar sistemas de monitoreo para recolectar los datos e información y convertirla en conocimiento par luego complementar sistemas o procesos de control automático, todo esto con la ayuda de sistemas electrónicos (PLC, Microcontroladores, etc).

Para este proyecto utilizaremos el sensor HMZ433A1 un pequeño pero potente sensor de humedad relativa y temperatura; entre algunas características importantes se encuentran las siguientes;


  • Entrega una salida lineal de voltaje para la lectura de humedad que va de 0 a 3.3 volts
  • Tiene un termistor integrado del tipo NTC para medir la temperatura
  • Tamaño reducido
  • Se alimenta con 5 voltios
  • Bajo consumo de corriente
En cuanto al comportamiento del sensor de humedad el comportamiento es lineal en relación a la variación de humedad relativa es meramente linea y esto se soluciona con un ajuste sencillo.
En lo correspondiete al sensor de temperatura ya que es un termistor NTC el comportamiento de estos sensores no es lineal y aquí el procedimiento se torna ligeramente complejo sera necesario tomar varios pares de datos que la tabla de comportamiento que la hoja de datos nos muestra.

Para tener una medida fiable de teperatura adquirada por el termistor es necesasrio hacer los ajustes correspondientes, para tal ajuste es necesario identificar el modelo que rige el comportamieto del sensor; ese modelo es: la curva característica de un termistor individual, que puede ser aproximada a través del uso de la ecuación de Steinhart-Hart:



Donde:
T = Temperatura en °Kelvin
R = Resistencia del Termistor en Kohm
A, B, C = Constante de la curva de aproximación

Las constantes A, B, y C se calculan seleccionando tres puntos de la tabla o curva que acompaña el termistor y resolviendo un sistema de ecuaciones simultáneas de tres incógnitas.


Para el cálculo de las constantes, se propone el sistema de ecuaciones simultáneas de tres incógnitas para las temperaturas 0°C, 25°C y 50°C. Observe que °Kelvin = °C + 273.15.

Para resolver este sistema de ecuaciones podemos utilizar diversas técnicas (Cramer, Gauss, Gauss-Jordan)pero en este casa y sabiendo el tiempo que implica hacerlo a mano, utilizaremos el software Matlab aplicando el siguiente código:


>>A=[1 (log(160.56)) (log(160.56))^3 (1/(0+273)); 1 (log(50)) (log(50))^3 (1/(25+273)); 1 (log(18.138)) (log(18.138))^3 (1/(50+273))]

>>rref(A)
ans =
         1         0         0    0.002375311945203
         0         1         0    0.000246322089759
         0         0         1    0.000000280194860


 


listo ahora podemos decir que A=0.002375311945203 B=0.000246322089759C=0.000000280194860.Ahora sustituimos y despejamos en la ecuación Steinhart-Hart (modelo que describe el termistor) para proximamente implementarla en la interfaz electrónica correspondiente (donde T es en °C).


Ahora es necesario preparar las herramientas necesarias para conectar el sensor, programar el microcontrolador para hacer el muestreo de datos correspondiente.

Consulta el artículo original en http://es.scribd.com/doc/76848311/Tutorial-Sensor-de-Humedad-y-Temperatura-en-Lcd-Con-Atmega32.

Comenzaremos a implementar el monitoreo de este sensor para ello utilizaremos una placa Arduino UNO, donde tendremos que programar el acondicionamiento de señal para adquirir la información de nuestro sensor.

Como primer paso acondicionaremos el sensor de humedad cuya respuesta a las variaciones de la magnitud física son lineales, el sensor de humedad se basa el la medición de la humedad relativa cuya unidades están dadas en porcentaje.

El siguiente código es el que se compila en el IDE de arduino:

/*
Acondicionamieto de señal para sensor de humedad HMZ433A1
se hace le ajuste para que la mayor variacion en voltage (3.3v)
sea equivalete a 5v de la entrada analógica despues se multiplica
por la resolución del puerto dividida entre 100 para que las unidades
sean en %
*/

int pinHumedad = 3; //Damos nombre la pn 3
int humValor; //La variable donde guardamos la humedad

void setup()
{
  Serial.begin(9600); // De esta manera iniciamos el puerto serie para poder monitorizar
}

void loop()// Esta función repetira su contenido indefinidamente
{
  humValor =  ((analogRead(pinHumedad)*(5.0/3.3))/10.24);//checar calculos para valores corectos RH
  Serial.print("Humedad relativa (%)=");
  Serial.println(humValor);
  delay (1000);// Finalmente esperamos 1 segundo antes de volver a leer la temperatura
}

Has this service helped you? 1ASszhNysvKjhvvTtDRuAsqgcRoXybGKxh

3 comentarios:

  1. Respuestas
    1. unsigned int var2;
      float Ln_Resist;
      float Resist;
      float Temp;
      float Ln_Resist3;

      var2 = 1024 - analogRead(pinTemperatura);
      Resist=(54*var2)/(1024-var2);
      Ln_Resist =log(Resist);
      Ln_Resist3=Ln_Resist*Ln_Resist*Ln_Resist;
      Temp = (1/(0.00237531+0.00024632*Ln_Resist+0.00000028*Ln_Resist3)-273);
      Serial.print("Temperatura (º)=");
      Serial.println(Temp);
      delay (1000);

      Eliminar