• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Sensor de Temperatura y Humedad DHT

Para medir temperaturas existen un gran número de sensores en el mercado, la mayoría de ellos son sensores resistivos (termistores), los cuales varían su resistencia en función de la temperatura, estos sensores pueden ser de dos tipos, PTC (Positive Temperature Coefficient) que aumentan su resistencia al aumentar su temperatura ó NTC (Negative Temperature Coefficient) que disminuyen su resistencia al aumentar la temperatura. Otro tipo de sensores son los llamados "termopares", que son sensores formados por dos metales distintos que producen una diferencia de potencial al someterse dichos metales a temperaturas diferentes.

Descripción del sensor DHT

Dentro de la amplia gama de sensores que existen, uno de los más utilizados en conjunto con Arduino, son los de la serie DHT. Estos son sensores digitales que se usan para la medida de temperatura y humedad en el ambiente y están formados por un sensor de humedad resistivo y una resistencia NTC para la medida de la temperatura, todo ello conectado a un microcontrolador de 8bit y encapsulado en un mismo dispositivo.

Dentro de la serie de sensores DHT, podemos encontrar 2 tipos, el DHT-11 y el DHT-22, estos sensores funcionan de igual forma, la única diferencia es la resolución que podemos obtener y los rangos de temperatura máximo y mínimo de cada uno.

sensores

tabla

Como podéis ver en la tabla superior, la diferencia entre ambos sensores es notable, haciendo que el uso del sensor DHT-11 este relegado a aplicaciones educacionales o a usos en los que no se necesiten resoluciones elevadas. La diferencia de precio entre ambos también es importante, siendo el sensor DHT-22 3 o 4 veces más caro que el DHT-11.

Información

Tened en cuenta las características de ambos sensores antes de adquirir uno u otro, dependiendo de donde queráis aplicarlo puede que necesitéis una resolución u otra.

Uso del Sensor

Tanto el sensor DHT-11 como el DHT22 funcionan de la misma manera, ambos cuentan con 4 pines de los que tan solo 3 son utilizados. El pin 1 se conectará a alimentación (3-5v) el pin 2 se utilizará para la transmisión de datos entre el sensor y Arduino y el pin 4 irá conectado a masa.

patillaje

Para el uso del sensor es necesario utilizar la librería correspondiente, podeis descargarla aqui

Ejemplo para medir temperatura y humedad.

En este pequeño ejemplo vamos a leer tanto la temperatura como la humedad del sensor DHT-11 y la vamos a mostrar en el monitor serie.

Para este montaje vais a necesitar:

Lista de Materiales
  • 1 Placa Arduino.
  • 1 Protoboard (placa de prototipado).
  • >El sensor de Temperatura y humedad DHT-11 ó DHT-22
  • Cables de conexión

El montaje que vamos a realizar es muy sencillo, tan solo hay que conectar el sensor en la placa de prototipado alimentándolo por el pin 1 (5 voltios) y conectando a masa el pin 4. Para la transmisión de datos usaré la E/S digital 2 de Arduino que conectaré al pin 2 del sensor.

Aquí tenéis el esquema del montaje:

sensor temperatura bb

Una vez tengáis el montaje completo, tan solo debéis de cargar el código de programa.

Código de programa

El programa que vamos a utilizar es muy básico, tan solo vamos a leer información del sensor y la vamos a mostrar por pantalla usando para ello el monitor del puerto serie.

Lo primero que vais a ver en el código de programa es un #include que hace referencia a la librería que usa Arduino para trabajar tanto con el sensor DHT-11 como con el DHT-22, antes de cargar el código, debeis de aseguraros de tener la librería incluida dentro de la carpeta "libraries" que encontraréis dentro de la carpeta de Arduino.

#include "DHT.h"

#define DHTPIN 2     // Pin al que conectamos el sensor DHT

// Descomenta el modelo de DTH que estes usando

//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)


DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("Comienzo de las lecturas");
  dht.begin();
}

void loop() {
  // Tiempo entre lecturas.
  delay(2000);
  // El tiempo para las lecturas necesita sobre 250ms (sensores nuevos)
 
  // Lee la humedad y la almacena en la variable "h"
  float h = dht.readHumidity();
  // Lee la temperatura (grados celsius) y la almacena en la variable "t"
  float t = dht.readTemperature();
  // Lee la temperatura (Fahrenheit) y la almacena en la variable "f" 
  float f = dht.readTemperature(true);

  // Comprueba si alguna de las lecturas a fallado (repite las lecturas).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Fallo al leer el sensor");
    return;
  }
  
  // Muestra en el monitor serie las lecturas
  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");
}

Como podéis ver, el código es muy sencillo, tan solo hay que habilitar el puerto serie para mostrar los datos y en el bloque de programa principal hacer una lectura de los datos del sensor con la instrucción dht.readTemperature; almacenando el valor leido en una variable.

Para mostrar los datos simplemente abrir el puerto serie con vuestra placa conectada y empezareis a ver los datos del sensor.

monitor serie


Comentarios potenciados por CComment