Tutorial de temperatura y humedad de los sensores DHT11 y DHT22 con Arduino
En este tutorial de Arduino, aprenderemos a usar el sensor DHT11 o DHT22 para medir la temperatura y la humedad con la placa Arduino. Puede ver el siguiente video o leer el tutorial escrito a continuación para obtener más detalles.
Estos sensores son muy populares entre los aficionados a la electrónica porque son muy baratos pero aún así ofrecen un gran rendimiento. Estas son las principales especificaciones y diferencias entre estos dos sensores:
El DHT22 es la versión más cara que obviamente tiene mejores especificaciones. Su rango de medición de temperatura es de -40 a +125 grados Celsius con una precisión de +-0,5 grados, mientras que el rango de temperatura DHT11 es de 0 a 50 grados Celsius con una precisión de +-2 grados. Además, el sensor DHT22 tiene un mejor rango de medición de humedad, de 0 a 100 % con una precisión de 2 a 5 %, mientras que el rango de humedad DHT11 es de 20 a 80 % con una precisión de 5 %.
Hay dos especificaciones donde el DHT11 es mejor que el DHT22. Esa es la frecuencia de muestreo que para el DHT11 es de 1 Hz o una lectura cada segundo, mientras que la frecuencia de muestreo del DHT22 es de 0,5 Hz o una lectura cada dos segundos y también el DHT11 tiene un tamaño de cuerpo más pequeño. El voltaje de funcionamiento de ambos sensores es de 3 a 5 voltios, mientras que la corriente máxima utilizada al medir es de 2,5 mA.
Puede obtener estos componentes en cualquiera de los siguientes sitios:
Bien, ahora veamos cómo funcionan realmente estos sensores. Constan de un componente de detección de humedad, un sensor de temperatura NTC (o termistor) y un IC en la parte posterior del sensor.
Para medir la humedad, utilizan el componente sensor de humedad que tiene dos electrodos con un sustrato que retiene la humedad entre ellos. Entonces, a medida que cambia la humedad, cambia la conductividad del sustrato o cambia la resistencia entre estos electrodos. Este cambio en la resistencia es medido y procesado por el IC que lo prepara para ser leído por un microcontrolador.
Por otro lado, para medir la temperatura estos sensores utilizan un sensor de temperatura NTC o un termistor.
Un termistor es en realidad una resistencia variable que cambia su resistencia con el cambio de temperatura. Estos sensores se fabrican mediante la sinterización de materiales semiconductores, como cerámica o polímeros, para proporcionar cambios más grandes en la resistencia con solo pequeños cambios de temperatura.
El término "NTC" significa "Coeficiente de temperatura negativo", lo que significa que la resistencia disminuye con el aumento de la temperatura.
Los sensores DHTxx tienen cuatro pines, VCC, GND, pin de datos y un pin no conectado que no tiene uso. Se requiere una resistencia pull-up de 5K a 10K Ohms para mantener alta la línea de datos y permitir la comunicación entre el sensor y la placa Arduino. Hay algunas versiones de estos sensores que vienen con placas de conexión con resistencia pull-up incorporada y solo tienen 3 pines.
Los sensores DHTXX tienen su propio protocolo de un solo cable que se usa para transferir los datos. Este protocolo requiere una sincronización precisa y los diagramas de sincronización para obtener los datos de los sensores se pueden encontrar en las hojas de datos de los sensores. Sin embargo, no tenemos que preocuparnos mucho por estos diagramas de tiempo porque usaremos la biblioteca DHT que se encarga de todo.
Tutorial relacionado:Aprenda a construir una estación meteorológica inalámbrica basada en Arduino
Primero debemos incluir la biblioteca DHT que se puede encontrar en el sitio web oficial de Arduino, luego definir el número de pin al que está conectado nuestro sensor y crear un objeto DHT. En la sección de configuración, debemos iniciar la comunicación en serie porque usaremos el monitor en serie para imprimir los resultados. Usando la función read22() leeremos los datos del sensor y pondremos los valores de la temperatura y la humedad en las variables t y h. Si usa el sensor DHT11, necesitará la función read11(). Al final imprimiremos los valores de temperatura y humedad en el monitor serial.
Después de cargar este código en la placa Arduino, los resultados de temperatura y humedad del sensor se pueden ver en el monitor serie.
También hice un ejemplo donde muestro los resultados en una pantalla LCD. Aquí está el código fuente de ese ejemplo:
No dude en hacer cualquier pregunta en la sección de comentarios a continuación.Resumen
DHT11 / DHT22 Principio de funcionamiento
Esquemas del circuito
Código fuente
/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
* Program made by Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
/*
* You can find the DHT Library from Arduino official website
* https://playground.arduino.cc/Main/DHTLib
*/
#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object
void setup() {
Serial.begin(9600);
}
void loop() {
int readData = DHT.read22(dataPin); // Reads the data from the sensor
float t = DHT.temperature; // Gets the values of the temperature
float h = DHT.humidity; // Gets the values of the humidity
// Printing the results on the serial monitor
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" Humidity = ");
Serial.print(h);
Serial.println(" % ");
delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}
Code language: Arduino (arduino)/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
* Program made by Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
/*
* You can find the DHT Library from Arduino official website
* https://playground.arduino.cc/Main/DHTLib
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>
#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;
void setup() {
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}
void loop() {
int readData = DHT.read22(dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print("Temp.: "); // Prints string "Temp." on the LCD
lcd.print(t); // Prints the temperature value from the sensor
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humi.: ");
lcd.print(h);
lcd.print(" %");
delay(2000);
}
Code language: Arduino (arduino)
Proceso de manufactura
- Sensor de temperatura Python y Raspberry Pi
- Temperatura y humedad sencillas en Raspberry Pi
- Sensores analógicos en Raspberry Pi con un MCP3008
- Control remoto universal usando Arduino, 1Sheeld y Android
- Voltímetro de bricolaje con Arduino y un teléfono inteligente
- Registrador de datos de temperatura y humedad
- Medición de frecuencia y ciclo de trabajo con Arduino
- BME280 Temperatura, humedad y presión en la pantalla Nextion
- Control del brillo del LED usando Bolt y Arduino
- Cómo leer la temperatura y la humedad en Blynk con DHT11
- Brazo robótico simple e inteligente con Arduino