En el siguiente aporte se presenta los requisitos para utilizar el sensor DHT22 además de una comparación gráfica del comportamiento de este sensor contra el DHT11.
En este blog antes se ha escrito acerca del sensor DHT11, uno de los más conocidos gadgets para Arduino, debido a que un solo dispositivo es capaz de medir dos parámetros: temperatura y humedad.
La información sobre el DHT11 la podemos encontrar en el siguiente post:
El DHT11 y el DHT22, en implementación, son completamente iguales, salvo un parámetro que se debe modificar en el código. Físicamente, poseen algunas diferencias, entre las cuales se destaca la diferencia de color y el tamaño del encapsulado.
En su funcionamiento también hay algunas diferencias importantes.
Las características eléctricas del sensor DHT11 (Datasheet) y del DHT22 (Datasheet), así como la información mostrada arriba y algunos otros detalles se encuentran disponibles en sus respectivas hojas de datos.
En la imagen se puede observa que el DHT22 es mucho más preciso que el DHT11. Algo que no se muestra en la figura, pero que es un hecho, es la incapacidad del DHT11 para hacer mediciones de temperaturas en fracciones decimales, lo cual es posible con el DHT22.
La programación es idéntica a la del DHT11, aunque se debe establecer en la declaración de variables cuál de los dos sensores se va a usar. Se debe recordar que hay que implementar la librería DHT, la cual se puede encontrar en este enlace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include "DHT.h" //cargamos la librería DHT #define DHTPIN 2 //Seleccionamos el pin en el que se conectará el sensor #define DHTTYPE DHT22 //Se selecciona el DHT22(hay otros DHT) DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor void setup() { Serial.begin(9600); //Se inicia la comunicación serial dht.begin(); //Se inicia el sensor } void loop() { float h = dht.readHumidity(); //Se lee la humedad float t = dht.readTemperature(); //Se lee la temperatura //Se imprimen las variables Serial.println("Humedad: "); Serial.println(h); Serial.println("Temperatura: "); Serial.println(t); delay(2000); //Se espera 2 segundos para seguir leyendo //datos } |
El código de la parte superior imprimirá la humedad y la temperatura cada 2 segundos el el monitor serial.
Las conexiones son muy sencillas.
Hay algunos diagramas donde se agrega una resistencia pull-up, sin embargo a mi me ha funcionado bien conectándolo directo a Arduino.
¿Cómo luce las mediciones obtenidas con DHT11 comparadas con las del DHT22?
Hagamos una prueba donde pongo los 2 sensores a funcionar al mismo tiempo.
Usaré el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include "DHT.h" DHT dht1(2, DHT22); DHT dht2(3, DHT11); int mensaje=0; boolean start=false; void setup() { Serial.begin(9600); dht1.begin(); dht2.begin(); } void loop() { if (Serial.available()>0){ mensaje=Serial.read(); if (mensaje=='1'){ start=true; } else { start=false; } } if (start==true){ float h1 = dht1.readHumidity(); float t1 = dht1.readTemperature(); float h2 = dht2.readHumidity(); float t2 = dht2.readTemperature(); Serial.println(h1); Serial.println(t1); Serial.println(h2); Serial.println(t2); delay(2000); } } |
Con este código es posible utilizar el software de recolección de datos para Excel que hemos preparado en Panama Hitek.
Los datos obtenidos se han graficado. Aquí les presento los resultados.
En ambos gráficos, especialmente el de humedad, se puede observar que el DHT22 es mucho más sensible a estímulos que el DHT11.
De igual forma, una vez alcanzado cierto nivel de humedad, la decadencia hasta los niveles normales en condiciones ambiente se producen más manera más pronunciada en el DHT22 que en el DHT11.
Estas pruebas son evidencia de que el DHT22 es un sensor mucho más estable y confiable que el DHT11. Obviamente esto significa que uno es más caro que el otro. No es necesario decir cual de los dos cuesta más.
Espero que la información suministrada sea de utilidad para ustedes.
Saludos.
Hola majo, me gusta este proyecto para ir aprendiendo sobre los arduinos, te doy mi enhorabuena por tu pagina.
Estoy intentando hacerlo y me da error en las lecturas, me da fallo en la lectura de humedad y de temperatura me da -3276.70
Podrias ayudarme para solucionarlo?
Parece un error en la conexión del dispositivo
ami tmb me da valores grandes,sera que noes compatible con arduino uno R3
mira
Tienes que cambiar #define DHTTYPE DHT22 por #define DHTTYPE DHT11
Hola amigos de PanamaHitek, soy novato en esto, ando trabajando en un proyecto y requiero un sensor de temperatura y humedad algo robusto, pues lo debo dejar a la intemperie. Estoy entre dos opciones, uno es el sensor AM2305
y el otro es un DHT10 de tipo industrial. Me preocupa un poco la comunicación ya que veo que uno funciona con protocolo I2C y el otro al parecer maneja un bus único sin protocolo establecido. Ya tengo un dispositivo trabajando con protocolo SPI (SD SHIELD) y otro con I2C(RTC GROOVE) y he tenido dificultades al tratar de configurar multiples dispositivos con un mismo protocolo de comunicación. En fin, mi pregunta va orientada a si ¿Es verdad que el sensor AM2305 puede ser leido con la librería del sensor DHT22? y si es así ¿Trae alguna consecuencia negativa sobre la medición?, es decir, ¿Pierdo precisión o alguna otra cosa?
AM2305 (https://drive.google.com/file/d/0BzaKjvCRihgbZjdhMm1VbVVJZTA/view)
DHT10 (http://www.didacticaselectronicas.com/index.php/sensores/temperatura/sensor-de-temperatura-y-humedad-digital-detail)
Gracias Antony, por compartir imformacion, saludos desde Mar del Plata, Argentina.
Usé el codigo para comparar dos sensores, en mi caso son dos DHT22, pero no me arroja nada en el monitor serie..Me puede ayudar por favor?
déjame mira el código.
me podrían colaborar con esto ?cual es el gasto energético del sensor DHT22 grcias
Esa información la puedes encontrar en el datasheet del sensor
Hola, me podrian proporcionar la libreria correcta para un sensor Dht22. Por favor.