Trastejant

Crea, comparte, aprende y disfruta

Sensor de temperatura y humedad HMZ-433A1

Sensor HMZ433A1

El sensor hmz-433a1 es un sensor de temperatura y humedad integrado en un único encapsulado. Es pequeño y económico, pero no es sencillo de utilizar. Si lo que estas buscando es tomar lecturas de temperatura y humedad de forma fácil y rápida te recomendamos que mires nuestro tutorial sobre el sensor de humedad y temperatura DHT11. Pero si estas decidido/a a utilizar el HMZ-433A1, veamos como hacerlo.

El principal problema de utilizar este tipo de componentes reside en que la forma de tomar la temperatura es mediante un termisor. Estos componentes varían su resistencia en función de la temperatura. Por lo tanto estamos ante un sensor que nos va a dar una salida analógica esto no es un problema en absoluto, lo que sí es un problema es que esta salida varia en función del fabricante del termisor. Es decir, dos sensores fabricados por distintas empresas no nos darán la misma salida para la misma temperatura.

Por lo tanto, lo primero que tenemos que hacer es descubrir que valores entrega nuestro sensor dependiendo de la temperatura. Para ello tenemos que hacer uso de la ecuación de Steinhart–Hart

ecuación de Steinhart–Hart

T = Temperatura en K
R = Resistencia del termisor en Kohm
A,B,C = Constantes de la curva de aproximación. tomaremos tres lecturas para tener datos conocidos y utilizarlos para resolver el sistema

Vamos a hacer un ejemplo para entender mejor como resolver esta ecuación:

  1. Tomamos el valor de la resistencia a tres temperaturas distintas. Por ejemplo 0ºC, 25ºC y 50ºC, supongamos que estos son los resultados:
    Temperatura Resistencia
    0 160.56 ohm
    25 50 ohm
    50 18.138 ohm
  2. Sustituimos los valores en la ecuación:
    1A+ln160.56B+(ln160.56)3C = 1/0+273
    1A+ln50B+(ln50)3C = 1/25+273
    1A+ln18.138B+(ln18.138)3C = 1/50+273Resolviendo obtenemos que A = 0.002375311945203. B = 0.000246322089759 y C = 0.000000280194860
  3. Resolvemos el sistema para encontrar la constante que tenemos que aplicar:
    T = [1/A+Bln(varR)+(Cln(varR))3]-273

De esta forma ya tenemos la T en grados celsius. Ahora hay que implementar esta operación en un lenguaje de programación que podamos cargar a un microcontrolador. Por ejemplo, en arduino podríamos utilizar algo así:

 

1
2
3
4
5
6
7
8
9
10
11
int pinTemperatura = 2; 
int temperatura; 
 
void setup(){ 
 Serial.begin(9600); //Iniciamos la comunicación serial 
} 
 
void loop(){ 
 temperatura = (1/(0.002375311945203 + 0.000246322089759* log(T) + pow(0.000000280194860*log(T),3)))-273; 
 
}

Por otro lado, obtener la humedad es mucho más sencillo, ya que el sensor nos entrega una corriente proporcional al grado de humedad en un rango de 0 a 3.3V. Únicamente tenemos que conectar el sensor y darle este código a Arduino (Al final del tutorial puedes ver como conectarlo):

 

1
2
3
4
5
6
7
8
9
10
11
12
13
int pinHumedad = 3; //Conectamos el sensor de humedad al A3 
int humedad; //La variable donde guardamos la humedad 
 
void setup(){ 
 Serial.begin(9600); //Iniciamos la comunicación serial 
} 
 
void loop(){ 
 humedad = ((analogRead(pinHumedad)*(5.0/3.3))/10.24);//calculamos la humedad relativa 
 Serial.print("Humedad relativa="); 
 Serial.println(humedad); 
 delay (1000);// Esperamos antes de tomar una nueva lectura. 
}

Por supuesto, podemos unificar ambos códigos para obtener una lectura de la humedad y la temperatura de manera simultanea:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int pinTemperatura = 2;//Conectamos el sensor de temperatura al A2  
int pinHumedad = 3; //Conectamos el sensor de humedad al A3  
int humedad; //La variable donde guardamos la humedad  
int temperatura;//Variable para almacenar la temperatura  
 
void setup(){  
  Serial.begin(9600); //Iniciamos la comunicación serial  
}  
 
void loop(){  
 
temperatura = temperatura = (1/(0.002375311945203 +  0.000246322089759* log(T) +  pow(0.000000280194860*log(T),3)))-273;  
 
  humedad =  ((analogRead(pinHumedad)*(5.0/3.3))/10.24);//calculamos la humedad relativa  
 
  Serial.print("Humedad relativa=");  
  Serial.println(humedad);  
  Serial.print("Temperatura=");  
  Serial.println(temperatura);  
  delay (1000);// Esperamos antes de tomar una nueva lectura  
}

Este sería el montaje para Arduino:

Conexion HMZ433 con ArduinoSi además queremos mostrar gráficamente los resultados podemos seguir esta guía, que incluye el código para hacerlo desde Matlab.


También te puede interesar...

No hay temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.