DHT11: todo sobre el sensor para medir temperatura y humedad

DHT11

Medir temperatura y humedad es algo muy común en muchos proyectos electrónicos de makers. En el DIY es frecuente tener que medir estos parámetros para controlar ciertos sistemas. Por ejemplo, para poder crear un sistema de refrigeración, cuidado de plantas, o climatización que se ponga en marcha si la temperatura o la humedad llega a un cierto valor. Pero para que eso sea posible se necesita de un sensor como el DHT11.

En el mercado existen multitud de sensores de temperatura muy diferentes, con rangos de temperatura soportados o precisiones distintas. Un ejemplo de ello es el LM35, uno de los más populares y utilizados en la electrónica. También existen otros sensores de humedad que actúan por variación de conductividad como el AD22103KTZ de Analog Devices. Pero si quieres medir ambos parámetros, quizás ten interese mucho más el dispositivo que hoy tratamos en este artículo…

¿Qué es el DHT11?

El DHT11 es un sensor simple que mide temperatura y humedad, todo en uno. Así no tendrás que comprar dos sensores por separado. Su precio es de unos 2€, por lo que es bastante barato, aunque también puedes encontrarlo montado en un módulo (montado en una PCB para facilitar su uso) como suele ser habitual en este tipo de componentes electrónicos para Arduino. En el caso de la placa, incluye una resistencia pull-up de 5 kilo óhmios y un LED que nos avisa del funcionamiento.

DHT11 tiene alta fiabilidad y estabilidad debido a su señal digital calibrada. Además, si te fijas en su datasheet, verás que tiene características interesantes como verás en próximos apartados.

Productos similares

DHT22

Existe un producto similar al DHT11 que quizás te interese. Es el DHT22. También es un sensor de temperatura y humedad integrado, pero en este caso su precio es un poco más elevado, de unos 4€. La precisión para medir la temperatura es del 5% de variación también como el DHT11, pero a diferencia de él, mide más allá del rango de humedad entre el 20 y el 80%. Por eso, quizás te interese el DHT22 para proyectos donde necesites medir humedades de 0 a 100%.

La frecuencia de toma de datos también es del doble que el DHT11, en el DHT22 se toman 2 muestras por cada segundo en vez de 1 muestra por segundo del DHT11. En cuanto a la temperatura, puede medir desde los -40ºC hasta los +125ºC con más precisión, ya que sí que puede medir fracciones de grados, concretamente puede apreciar variaciones de más/menos 0,5ºC.

Pinout, características y datasheet

DHT11 pinout

Puedes encontrar bastante información técnica sobre el DHT11 en sus datasheets. Cada fabricante de este dispositivo puede aportar algunos valores que podrían variar, por eso siempre recomiendo leer el PDF del fabricante concreto del dispositivo que hayas adquirido. Aunque la mayor parte de valores pueda parecerte igual, podría haber alguna pequeña variación de uno a otro. Sus características técnicas más importantes son:

  • Alimentación de 3,5v a 5v
  • Consumo de corriente de 2,5mA
  • Señal de salida digital
  • Rango de temperatura de 0ºC a 50ºC
  • Precisión para medir temperatura a 25ºC de unos 2ºC de variaciçon
  • La resolución para medir temperatura es de 8-bit, 1ºC
  • La humedad puede medir desde 20% RH hasta los 90% RH
  • Con precisión para la humedad del 5% RH para temperaturas que se encuentren entre 0-50ºC
  • La resolución es de 1% RH, no puede captar variaciones por debajo de esa
  • Datasheet de Mouser

En cuanto a los datos, se transmiten en digital. Por tanto, no hay que pasar de analógico a digital como en otros sensores. Eso complicaba el código que hay que escribir en Arduino IDE, pero en este caso no se necesita y es mucho más fácil. Aunque el sensor en sí es analógico, pero incluye un sistema para realizar la conversión y se puede conectar directamente a una entrada digital de Arduino.

La señal analógica, que es una variación del voltaje, del sensor es pasada a formato digital para ser enviada al microcontrolador de Arduino. Se trasmite en una trama de 40-bits que corresponden a la información de humedad y temperatura captada por el DHT11. Los primeros dos grupos de 8-bit son para la humedad, es decir, los 16 bits más significativos de esta trama. Luego, los otros 2 grupos de 8-bits restantes para la temperatura. Es decir, tiene dos bytes para humedad y dos bytes para temperatura. Por ejemplo:

0011 0101 0000 0010 0001 1000 0000 0000 0011 1001

En este caso, 0011 0101 0000 0010 es el valor de la humedad, y 0001 1000 0000 0000 para la temperatura. Una primera parte es para la parte entera y la segunda parte es para decimales. En cuanto a 0011 1001, es decir, los últimos 8-bit son de paridad para evitar errores. De esa forma se puede comprobar que todo esté correcto durante las transmisiones. Corresponde a la suma de los bits anteriores, por tanto, si la suma es igual a la paridad estará correcto. En el ejemplo que yo he puesto no lo estaría, porque como puedes comprobar no se corresponde… Eso indicaría un fallo.

Una vez sabido esto, lo siguiente a nivel técnico del DHT11 que hay que destacar es los pines. Los contactos o pinout de este dispositivo es sencillo, ya que solo cuenta con 4 de ellos. Uno de los pines es de alimentación o Vcc, el otro de E/S para transmitir datos, un pin NC que no se conecta, y GND para la conexión a tierra.

Integración con Arduino

Conexión del DHT11 con Arduino

Una vez conoces el pinout del DHT11 y también la placa Arduino, la conexión es muy simple. Recuerda que si has elegido un módulo DHT11 integrado en un PCB, los pines serán tres, ya que el NC se elimina para facilitar las cosas. Lo único que tienes que hacer es conectar el pin de tierra a alguna de las conexiones GND de Arduino como aparece en el diagrama de la imagen anterior.

Por otro lado, el pin de alimentación debes conectarlo a la conexión de 5v de Arduino, así quedará el sensor totalmente alimentado con GND y Vcc, pero ahora falta el de datos. Para transmitir los datos desde el sensor DHT11 a la placa Arduino, puedes usar cualquiera de las entradas digitales, como es la 7 que aparece en la imagen… Ahora ya lo tienes todo listo para poder usarlo una vez hayas creado el código en Arduino IDE necesario…

Si el sensor se encuentra alejado en tu proyecto y vas a usar un cable de longitud superior a 20 metros, entonces usa una resistencia pull-up de 5k, para cables mayores deberá ser proporcionalmente mayor. Ten en cuenta que si usas 3,5v de alimentación en vez de 5v, entonces el cable no debe ser de más de 20cm debido a las caídas de tensión.

Recuerda que lo que recomiendan es tomar medidas cada 5 segundos, aunque la frecuencia de muestreo a la que puede operar el DHT11 es mayor, pero si se hace de forma más frecuente quizás no sea tan preciso.

Código en Arduino IDE

Pasando directamente al código, decir que en Arduino IDE podrás usar una serie de bibliotecas existentes con funciones que te facilitarán la vida con el DHT11. Por ejemplo, una de ellas es la que proporciona Adafruit. Recuerda que tenemos una guía para principiantes que comiencen con Arduino en PDF que puedes descargar gratis desde aquí y te puede ayudar.

Una vez tengas instalada la biblioteca correspondiente, puedes comentar a introducir el código para controlar el sensor de temperatura y humedad DHT11 para tu proyecto con Arduino. Por ejemplo:

#include "DHT.h"

const int DHTPin = 7;     
 
DHT dht(DHTPin, DHTTYPE);
 
void setup() {
   Serial.begin(9600);
   Serial.println("Midiendo...");
 
   dht.begin();
}
 
void loop() {
   delay(2000);
 
   float h = dht.readHumidity();
   float t = dht.readTemperature();
 
   if (isnan(h) || isnan(t)) {
      Serial.println("Fallo en la lectura del sensor DHT11");
      return;
   }
 
 
   Serial.print("Humedad relativa: ");
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperatura: ");
   Serial.print(t);
   Serial.print(" ºC ");
}

Sé el primero en comentar

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.