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 varian 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
Vamos a hacer un ejemplo para entender mejor como resolver esta ecuación:
Temperatura | Resistencia |
0 | 160.56 ohm |
25 | 50 ohm |
50 | 18.138 ohm |
Resolviendo obtenemos que A = 0.002375311945203. B = 0.000246322089759 y C = 0.000000280194860
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í:
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. Unicamente tenemos que conectar el sensor y darle este código a Arduino (Al final del tutorial puedes ver como conectarlo):
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:
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:
Si además queremos mostrar graficamente los resultados podemos seguir esta guia, que incluye el código para hacerlo desde Matlab.