Crea, comparte, aprende y disfruta
Sensor de temperatura y humedad HMZ-433A1
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
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:
- 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 - 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 - 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:
Si además queremos mostrar gráficamente los resultados podemos seguir esta guía, que incluye el código para hacerlo desde Matlab.
Deja una respuesta