DHT11: Sensor digital de temperatura y humedad

Posted on by

Sensor de temperatura y humedad relativa DHT11.

Si estas buscando un sensor de bajo coste para medir temperatura y humedad una de las opciones más comunes es el sensor DHT11. Tiene una excelente calidad, rápida respuesta, protección a interferencias, comunicación digital y calibración precisa. Todo esto hace que sea uno de los sensores más utilizados para pequeños proyectos caseros como invernaderos, controles de temperatura domóticos, termómetros para interiores o reguladores de humedad relativa.

Funciona desde 3.3V a 5V, es capaz de medir en un rango de temperaturas entre 0ºC hasta 50ºC con un 5% de precisión y del 20% al 80% de humedad relativa con un 5% de precisión. Si quieres algo que ofrezca más resolución o sea más preciso tendrás que gastarte más dinero, en la variedad de sensores hay que tener en cuenta que obtienes lo que pagas. Pero hay muchos proyectos en los que tendremos suficiente con estas especificaciones.

Arduino conectado a DHT11

Arduino conectado a DHT11.

Dispone de tres pines VCC,GND y DATA. Por lo tanto las comunicaciones se hacen de manera bidireccional sobre el mismo pin (DATA). Cada vez que hagamos una petición de medida nos devolverá 40 bits o 5 octetos. Los dos primeros octetos son la humedad relativa, el tercer y el cuarto octeto es la temperatura y el último octeto es un checksum para validar la correcta transmisión de todos los bits, pero para arduino nos podemos abstraer ya que existe una librería que nos ahorrará bastante trabajo.

Para utilizarlo en arduino tendremos que decidir que pin digital queremos utilizar, incluir la librería DHT11.h y a programar. A continuación tienes un ejemplo de código básico para que puedas probarlo:

#include <DHT11.h>

int pin=2;
DHT11 dht11(pin);

void setup()
   {
       Serial.begin(9600);
   }

void loop()
   {
       int err;
       float temp, hum;
       if((err = dht11.read(hum, temp)) == 0)
          {
             Serial.print("Temperatura: ");
             Serial.print(temp);
             Serial.print(" Humedad: ");
             Serial.print(hum);
             Serial.println();
          }
       else
          {
             Serial.println();
             Serial.print("Error Num :");
             Serial.print(err);
             Serial.println();
          }
       delay(1000);
   }
}
Comments are disabled