Arduino Lektion 29: DHT22 Sensor

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.

DHT22 Sensor für relative Luftfeuchtigkeit und Temperatur
DHT22 Sensor für relative Luftfeuchtigkeit und Temperatur

Technische Daten

Da der DHT11 fast baugleich ist möchte ich nun die Technischen Daten gegeü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 das der DHT22 Sensor dem DHT11 Sensor überliegen ist, dieses spiegelt sich auch im Preis nieder. Der DHT11 kann schon für knapp 2 € über amazon.de bezogen werden wobei der DHT22 Sensor schon knapp doppelt soviel kostet.

Schaltung

Pinbelegung

Der DHT22 Sensor verfügt über vier PINS welche wiefolgt belegt sind:

DHT22 Pinbelegung
DHT22 Pinbelegung

Betrieb am Arduino Leonardo

Da ich die beiden Sensoren in den Technischen Daten schon verglichen habe möchte ich nun auch beide im Live betrieb vergleichen. Dazu bestücke ich den Arduino Leonardo mit dem DHT11 & DHT22.

DHT11 (blau) und DHT22 (weiß) am Arduino Leonardo
DHT11 (blau) und DHT22 (weiß) am Arduino Leonardo

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");
  }

Video

DHT11 & DHT22 Sensor am Arduino Leonardo

Download

 

 

4 Gedanken zu „Arduino Lektion 29: DHT22 Sensor

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.