bclose

Sensores de temperatura DHT11

Sensor de temperatura y humedad

Objetivos

 

 
    • Presentar los sensores DHT11.
    • Mostrar como leerlos utilizando la librería de control.
    • Escribir un programa básico de uso.
 

Material requerido.

Imagen de Arduino UNO  Arduino UNO o equivalente.
ProtoboardconexionesUna Protoboard más cables.
componente Una resistencia de 330Ω.
Sensor temperatura y humedad Un sensor de temperatura DHT11.
tienda online prometec

Sensores de temperatura y humedad

 

En la sesion Sensor de temperatura TMP36, vimos cómo medir la temperatura con un sensor TMP36. Es bastante sencillo y no presenta especiales problemas, mas allá de tener cuidado con las operación con números float.

Pero en muchas ocasiones, y especialmente en la industria alimentaria, no basta con medir la temperatura, sino que la humedad relativa es también un factor importante a tener en cuenta.

Por eso se desarrollaron los sensores de la familia DHT. Nos proporcionan de forma digital la temperatura y la humedad, con diferente precisión según el modelo.

Básicamente hay dos variantes DHT11 y DHT22

Las características del DHT11 son:

 
  • Muy barato, sobre 2€
  • Funciona con 3,3 y 5V de alimentación
  • Rango de temperatura: de 0º a 50º con 5% de precisión (pero solo mide por grados, no fracciones)
  • Rango de humedad: de 20% al 80% con 5% de precisión
  • 1 Muestra por segundo (No es el más rápido del oeste)
  • Bajo consumo
  • Devuelva la medida en ºC
 

En cuanto al DHT22:

 
  • Barato, entre 4 y 5 €
  • Funciona con 3,3 y %V de alimentación
  • Rango de temperatura: de -40º a 125º ±0.5°C
  • Rango de humedad: de 0% al 100% con 5% de precisión.
  • Lee 2 veces por segundo.
  • Bajo consumo.
  • Devuelva la medida en ºC
 

En cuanto a la forma de conectarlos y programarlos es la misma para ambos modelos y veremos que hay desarrolladas librerías para Arduino que soportan los dos de una forma sencilla.

Destacar que el chip incorpora electrónica para hacer internamente la conversión de temperatura y humedad y nos da un valor de medida de forma digital, es decir, que no necesitamos un pin analógico como en el caso del TMP36, sino que lo leeremos con un pin digital.

 

Diagramas del circuito

 

La conexión es trivial, pero cabe destacar que se vende en dos encapsulados, uno de tres pines que son GND, Data y Vcc, y otro 4 pines y uno de ellos, sencillamente sobra y no se conecta. Normalmente viene rotulado en el sensor el nombre de cada pin, y si no ya sabeis, a buscar el manual en Google

Version 4 pines

Version 3 pines
Vamos con el esquema por cortesía de Fritzing:

Esquema electrico

 

Y aquí tenemos el esquema de protoboard.

Protoboard

El Programa de lectura del DHT11

 

En primer lugar, tenemos que descargar una librería para manejarlos cómodamente, DX11.zip e importarla. Aquí teneís la librería  DHT11.zip

Hacemos el importar la librería DHT11 que nos pondrá:

#include <DHT11.h>

Y definimos una instancia del sensor donde declaramos el pin al que esta conectado.

int pin=2;
DHT11 dht11(pin);

Leerlo ahora es muy sencillo:

int error ;
float temp, humi;
error  =  dht11.read(humi, temp)

Basta con hacer dht11.read pasandole las variables donde queremos el resultado, y comprobamos que no haya errors (Siempre es buena idea comprobar que no hay error cuando hacemos una llamda). El programa completo seria más o menos algo así: Prog_24_1

#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)    // Si devuelve 0 es que ha leido bien
          {
             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);            //Recordad que solo lee una vez por segundo
   }

El resultado se envía a la consola y aquí podéis ver una muestra.

Medidas de consola

Para hacer variar os valores, de humedad y temperatura y comprobar que todo funciona correctamente, podeis, sencillamente, enviar vuestro aliento al sensor, y salvo que estéis en el trópico haréis subir tanto la temperatura como la humedad relativa.

Como vereris, son de lo mas sencillos de utilizar y un componente habitual de vuestro arsenal de sensores

 

 

Resumen de la sesión

 

 
  • Hemos visto los sensores DHT11, y montado un circuito de prueba con el
  • Los DHT22, usan el mismo circuito y pines, pero su resolución y velocidad es bastante mejor, aunque para muchas aplicaciones el DHT11 es mas que suficiente.
 

 

 

 

 

(154) Comments

  • Siento entrar por aqui pero no veo la opcion que tenia antes de hacer una pregunta, ahora solo me sale reply…
    El caso es que he montado el circuito y al principio me salian lecturas algo locas y sin aparecer las palabras Temperatura y Humedad, revise el programa, el circuito y baje actualizacion de la libreria. Ahora ya no manda ni datos al monitor. La cosa es como prodria comprobar si el sensor esta caput??.. tambien me llego a dar el Error num 4.
    Un saludo

    • ISMA

    Buenas,
    Hace tiempo un usuario puso esto:
    “hola. tengo un problema, yo monte tal cual se muestra pero solo me da una lectura y tengo que cerra y volver a abrir el puerto serie para que se se refresque los datos. ayuda por favor”.
    Tengo el mismo problema y he realizado todas las correcciones y comprobacioens que decís. En el kit que he comprado viene un DHT11 sobre placa con 3 pines.
    No consigo que se visualice la temperatura y humedad cada 1s, tal y como lo pone en el programa.

    • Hola ISMA, el problema se suele corregir cargando actualizaciones de la libreria dht11

    • Martin

    Hola, buenas…soy nuevo en esto, arme el circuito y funciona de maravilla…

    ahora alguien me podria explicar porque la pata de DATOS va conectado con una resistencia a 5V?

    gracias

    sds

    • La usamos como pull up, de la misma forma que con los pulsadores.

  • Buenas señor le explico, el codigo que ud puso anteriormente era de un arduino que daba los datos de la temperatura y humedad del sensor DHT11, entonces solo usabamos un arduino… AHORA tengo un proyecto que necesita hacer lo mismo pero para dos arduinos y se utilizara para la transmision de datos, un emisor y receptor es decir dos modulos nrf24l01 de los cuales cada modulo ocupara una funcion(emisor y el otro el receptor).
    Entonces le pedia de favor si me ayudaba con un codigo que permita esas conexiones(ya use la del sensor DHT11 y me funciono) y a la vez el diagrama para conectarlos perfectamente

    • VIKTOR

    Hola, muy buena la presentacion amigo, queria saber si me ayudaba con el mismo sensor DHT11 pero tanto emisor como receptor me imagino q es un diferente codigo y un diferente diagrama, si me ayuda estaria muy agradecido

    • Hola Viktor, no entiendo muy bien lo que quieres hacer.

Give a Reply

WordPress Anti-Spam by WP-SpamShield