Medir temperatura y humedad con Arduino

En este artículo repasaremos un proyecto para la medición de temperatura y humedad con Arduino.

Utilizaremos el sensor DTH11 que nos provee una medición muy estable y fiables de estos parámetros. Este sensor lo podemos encontrar en dos versiones: suelto o montado en una placa PCB. Cualquiera de los dos nos sirve para el proyecto y no hay una diferencia de precio considerable entre ambos.

Técnicamente la diferencia está en que el modelo que viene montado en una plaqueta PCB tiene la resistencia pull-up de 5 Kohm incorporada y un led que indica su funcionamiento. Esta versión tiene 3 pines, mientras que el modelo que viene suelto tiene 4 pines.

En ambos casos la alimentación se hará por los pines VCC y GND. Los datos serán transmitidos por el pin DATA.

Características del sensor DHT11

Característica
Valor – Rango
Alimentación
de 3,5 V a 5 V
Consumo
2,5 mA
Señal de salida
Digital
Medición de Temperatura
 
Rango
de 0ºC a 50ºC
Precisión
a 25ºC ± 2ºC
Resolución
1ºC (8-bit)
Medición de Humedad
 
Rango
de 20% RH a 90% RH
Precisión
entre 0ºC y 50ºC ± 5% RH
Resolución
1% RH

Conexionado

c (Suelto)
Conexionado del sensor DTH11 (Montado en una placa PCB)

Lo importante es que en el conexionado del sensor suelto (sin PCB), debemos colocar la resistencia pull-up, conectada al pin DATA y a VCC. Se recomienda utilizar una resistencia de 5 Kohm (5000 ohm).

El código

El siguiente código nos permite dar los primeros pasos con el sensor. Los datos se mostrarán en el monitor serie.

// Incluimos librería
 include <DTH.h>

 // Definimos el pin digital donde se conecta el sensor
 define DHTPIN 2

 // Dependiendo del tipo de sensor
 define DHTTYPE DHT11

 // Inicializamos el sensor DHT11
 DHT dht(DHTPIN, DHTTYPE);

 void setup() {
   // Inicializamos comunicación serie
   Serial.begin(9600);
 // Comenzamos el sensor DHT
   dht.begin();
 }

 void loop() {
     // Esperamos 5 segundos entre medidas
   delay(5000);
 // Leemos la humedad relativa
   float h = dht.readHumidity();
   // Leemos la temperatura en grados centígrados (por defecto)
   float t = dht.readTemperature();
   // Leemos la temperatura en grados Fahreheit
   float f = dht.readTemperature(true);
 // Comprobamos si ha habido algún error en la lectura
   if (isnan(h) || isnan(t) || isnan(f)) {
     Serial.println("Error obteniendo los datos del sensor DHT11");
     return;
   }
 // Calcular el índice de calor en Fahreheit
   float hif = dht.computeHeatIndex(f, h);
   // Calcular el índice de calor en grados centígrados
   float hic = dht.computeHeatIndex(t, h, false);
 Serial.print("Humedad: ");
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperatura: ");
   Serial.print(t);
   Serial.print(" *C ");
   Serial.print(f);
   Serial.println(" *F\t");
   Serial.print("Sensación térmica: ");
   Serial.print(hic);
   Serial.print(" *C ");
   Serial.print(hif);
   Serial.println(" *F");
   Serial.println ("");
 }
Síguenos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

A %d blogueros les gusta esto: