Der DHT22 Sensor misst die relative Luftfeuchtigkeit und die Temperatur. In einem früheren Tutorial habe ich den Sensor DHT11 vorgestellt, welcher auch diese beiden Werte messen kann, jedoch mit einer viel geringeren Auflösung.
Technische Daten
Da der DHT11 fast baugleich ist, möchte ich nun die technischen Daten gegenüberstellen, damit ersichtlich worin sich diese beiden Sensoren unterscheiden.
DHT22 | DHT11 | |
---|---|---|
Messbereich relative Luftfeuchtigkeit | 0 % bis 100 % | 20 % bis 90 % |
Toleranz relative Luftfeuchtigkeit | ±2 % | ±5 % |
Messbereich der Temperatur | -40 °C bis 80 °C | 0 °C bis 60 °C |
Toleranz des Messbereiches für die Temperatur | ±0.5 °C | ±2 °C |
Betriebsspannung | 3,3V – 5V | 5V |
Es ist deutlich ersichtlich, dass der DHT22 Sensor dem DHT11 Sensor über liegen ist, dieses spiegelt sich auch im Preis nieder. Der DHT11 kann schon für knapp 2 € über ebay.de bezogen werden, wobei der DHT22 Sensor schon knapp doppelt soviel kostet.
Schaltung
Pinbelegung
Der DHT22 Sensor verfügt über vier Pins welche wie folgt belegt sind:
Betrieb am Arduino Leonardo
Da ich die beiden Sensoren in den technischen Daten schon verglichen haben möchte, ich jetzt auch beide im Live betrieb vergleichen. Dazu bestücke ich den Arduino Leonardo mit dem DHT11 & DHT22.
Wenn Sie nur den DHT22 betreiben möchten, so entfernen Sie aus dem Quellcode alles was zwischen
//DHT11 - Begin //DHT11 - Ende
steht.
Quellcode
#include "DHT.h" //DHT11 - Begin #define DHT11PIN 13 #define DHT11TYPE DHT11 DHT dht11(DHT11PIN, DHT11TYPE); //DHT11 - Ende #define DHT22PIN 9 #define DHT22TYPE DHT22 DHT dht22(DHT22PIN, DHT22TYPE); void setup(){ Serial.begin(9600); Serial.println("DHT11 & DHT22 - Vergleich"); //DHT11 - Begin dht11.begin(); //DHT11 - Ende dht22.begin(); } void loop(){ //DHT11 - Begin float humidyDHT11 = dht11.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT11 lesen float tempDHT11 = dht11.readTemperature(); //Temperatur vom Sensor DHT11 lesen //DHT11 - Ende float humidyDHT22 = dht22.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT22 lesen float tempDHT22 = dht22.readTemperature(); //Temperatur vom Sensor DHT22 lesen //DHT11 - Begin // Prüfen ob eine gültige gleitkomma Zahl empfangen wurde. // Wenn NaN (not a number) zurückgegeben wird, soll eine Fehlermeldung ausgeben werden. if (isnan(humidyDHT11) || isnan(tempDHT11)) { Serial.println("DHT11 konnte nicht ausgelesen werden"); } else { printValues("DHT11",humidyDHT11, tempDHT11); } //DHT11 - Ende // Prüfen ob eine gültige gleitkomma Zahl empfangen wurde. // Wenn NaN (not a number) zurückgegeben wird, soll eine Fehlermeldung ausgeben werden. if (isnan(humidyDHT22) || isnan(tempDHT22)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } else { printValues("DHT22", humidyDHT22, tempDHT22); } delay(2500); //2,5 sek. Warten, der DHT11 Sensor stellt alle 2 sek. neue Werte bereit. } void printValues(String sensor, float humidy, float temp){ Serial.print(sensor); Serial.print("\t"); Serial.print("Luftfeuchte: "); Serial.print(humidy); Serial.print(" %\t"); Serial.print("Temperatur: "); Serial.print(temp); Serial.println(" C"); }
Danke für das Klasse Beispiel , genau was ich gesucht habe.
Hab es auch gleich noch ins Wiki bei mir aufgenommen.
Grüße Joachim