Ir al contenido principal

Sensor de temperatura y humedad DHT11 y DHT22

DHT11 y DHT22 

El DHT11 o su hermano el DHT22 nos permiten realizar mediciones simultáneas de temperatura y humedad.


La información que captan estos sensores es analógica y gracias a su procesador interno realiza mediciones y las convierte en digitales, ya que este es un elemento analógico. Esto nos permite utilizarlo en un pin digital de un microcontrolador como el de un Arduino.

El DHT11 y el DHT22 son útiles para recabar información y poder utilizarla en conjunto con otros componentes, en proyectos más complejos.

Por ejemplo, sería de gran utilidad en combinación con el HC-SR04 del post anterior para poder calcular esa variable de temperatura y humedad que afecta a la velocidad.

Otro uso es en estaciones meteorológicas básicas, fáciles y divertidas que podemos crear con Arduino.

Aunque los DHT11 o DHT22 sean sensores bastante limitados y  con escasas especificaciones, vale la pena conocerlos para poder jugar un poco con ellos son de gran utilidad utilizar un sensor como este, ya que son proyectos para aprendizaje y comprensión de estos.
No obstante, siempre que necesitemos de un sensor de cualquier tipo para un proyecto done debamos vigilar variables como por ejemplo la humedad y  la temperatura en este caso, es necesario consultar las especificaciones o datasheet y hay que tener en cuenta de que estos sensores no pueden utilizarse para depender de la seguridad de un se humanó en el caso de que necesitemos un sensor que dependa tenga funciones como esta última, deberemos utilizar sensores homologados para dicha función.


Características técnicas del DHT11


Las características técnicas del DHT11 son:

  •  Alimentación 3,3V a 5V, su consumo es de 2,5mA.
  •   Lectura de humedad con precisión de +/- 5% con capacidad de medir de 20% hasta 80% RH.

  •  Lectura de temperatura con precisión de +/- 2° con capacidad de medir de 0 a 50°C.

  • No puede realizar mediciones con una velocidad inferior a 1Hz o un segundo.

  •  Tiene unas dimensiones muy reducida: 15.5mm x 12mm x 5.5mm, con carcasa característica color azul.

Cómo se puede ver sus características son escasas e insuficientes en algunos trabajos.

Si necesitamos un rango de medición de temperatura o un rango de humedad con más precisión podemos utilizar el sensor DHT22. Este sensor permite medir desde -40°C a +125°C con una precisión de +/-0,5 °C y con un rango de humedad de 0% al 100% con una precisión del +/-2%. Hay que destacar que su velocidad de muestreo es más alta que la del DHT 11 y que puede realizar una medición cada 0,5Hz o dos por segundo. Su alimentación es de 3,3V a 5V. Su color característico es el blanco.

La diferencia entre estos dos, a parte de lo ya comentado, es el aumento de precio no muy significativo del DHT22 respecto al DHT11.
Estos dos sensores pueden adquirirse en una versión con una pequeña placa PCB y otra sin ella. La  diferencia es que el tercer pin lleva incorporado una resistencia debido a que no se conecta y contiene un LED para verificar su conexión.

Precio


El precio del DHT11es inferior al del DHT22 obviamente por sus prestaciones. Se suele encontrar entre 0,70€ a 3€ según la tienda distribuidora o los lotes que adquiramos. También hay lotes.
DHT22 destaca por sus prestaciones superiores a su hermano el DHT11, pero con un precio similar.
Su precio se encuentra desde 1,5€ a 6€.



Ensamblaje de sensor DHT11

Las conexiones de DHT11 son iguales a las del DHT22, pero con diferentes prestaciones. Si adquirimos la versión con PCB solo encontraremos 3 pines indicando GND DATA y VCC.
Pero en el caso adquiramos la versión sin PCB deberemos tener en cuenta que el pin 3 no se utiliza.

 DHT11:

 


  • VCC: 5V
 
  • DATA: D2

  • GND:  GND



 DHT22:



Cálculos de funcionamiento de DHT11 y DHT22

Una transmisión de datos completa es de 40 bits. Donde obtenemos la temperatura y la humedad.
 Recibo datos:
     0011 0101             0000 0000              0001 1000              0000 0000         0100  1101
High humedad 8 + Low humedad 8 + High temperatura. 8 + temperatura. = 8 Parity bit
Calculo:
  •      0011 0101+0000 0000+0001 1000+0000 0000= 0100 1101
Datos correctos recibidos = Binarios - Hexadecimal - Número
  • Humedad        =          0011 0101 = 35H = 53%RH 
  • Temperatura    =          0001 1000 = 18H = 24℃
Los dos microcontroladores, el del sensor y el externo, se hablan entre ellos y empiezan iniciando la comunicación, en ese momento, el sensor responde poniendo 80µs de nivel bajo y otro de 80µs de nivel alto. Siguiéndole a esto, envía 5 bytes de información con temperatura y humedad.



Ejemplo de código:

Podemos encontrar la librería aquí.

#include <DHT.h> // esta es la libreria
#define DHTPIN 2 // Pin digital 
#define DHTTYPE DHT11 //tipo de sensor
DHT dht(DHTPIN, DHTTYPE); //inicio de sensor 
 
void setup() {
  Serial.begin(9600); //inicio de comunicaciones
  dht.begin(); //inicio de sensor dht
 
}
 
void loop() {
  delay(1000); // Puedes editar delay para ajustar el tiempo de ciclo, 
               // Ten en cuenta que el DHT11 no puede menos de 1Hz=1000s
  float h = dht.readHumidity(); //Leemos humedad
  float t = dht.readTemperature(); //Leemos  centígrados
  float f = dht.readTemperature(true); //Leemos  Fahreheit 
 //Comprobamos errores de lectura
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Error obteniendo los datos del sensor DHT11");
    return;
  }

  float hif = dht.computeHeatIndex(f, h);  // Calculamos índice calor Fahreheit
  // Calcular el índice de calor en grados 
  float hic = dht.computeHeatIndex(t, h, false); //Y calculamos índice calor en centígrados
 
  Serial.print("Humedad: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatura: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Índice de calor: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
 
} 
 

Comentarios