DHT22 verstehen – Temperatur & Luftfeuchte zuverlässig messen

DHT22 verstehen – Temperatur & Luftfeuchte zuverlässig messen

DHT22 verstehen: Temperatur & Feuchte mit einem einzigen Sensor

Der DHT22 (auch AM2302) misst Temperatur und relative Luftfeuchte und überträgt die Daten seriell über eine proprietäre, 1-Draht-ähnliche Leitung. Er eignet sich für Wetterstationen, Raumklima oder IoT-Datenlogger – bei korrekter Verdrahtung und geeigneter Abtastung.


Kurzüberblick

  • Versorgung: 3,3–5,5 V, typ. <2,5 mA. Ein 100 nF KerKo nahe VCC-GND hilft gegen Störungen.
  • Signal: 1 Datenpin + 10 kΩ Pull-Up nach VCC (manche Breakouts haben ihn bereits).
  • Auflösung: 0,1 °C / 0,1 % rF. Genauigkeit: typ. ±0,5 °C / ±2–5 % rF.
  • Messrate: mindestens 2 s zwischen zwei Messungen (≈0,5 Hz), sonst Timeouts/Fehlerwerte.
  • Leitungslänge: Möglichst kurz, verdrillt/geschirmt bei >1 m; Pull-Up ggf. verkleinern (4,7–5,6 kΩ).

Pinout & Verdrahtung

  • VCC → 3,3–5 V
  • DATA → MCU-GPIO (mit 10 kΩ Pull-Up nach VCC)
  • GND → GND (gemeinsame Masse)

Wichtig: Masse von Sensor, Mikrocontroller und ggf. Netzteil gemeinsam verbinden. Für stabile Werte Sensor nicht direkt über stark erwärmten Bauteilen platzieren.

Arduino-Beispiel (Adafruit DHT Library)

Installiere die Bibliothek Adafruit Unified Sensor und Adafruit DHT Sensor Library. Messintervall ≥2 s!


#include <DHT.h>
#include <DHT_U.h>

#define PIN_DHT 5
#define DHTTYPE DHT22

DHT dht(PIN_DHT, DHTTYPE);
unsigned long lastRead = 0;

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  if (millis() - lastRead >= 2000) {  // ≥ 2 s
    lastRead = millis();
    float h = dht.readHumidity();
    float t = dht.readTemperature(); // °C

    if (isnan(h) || isnan(t)) {
      Serial.println("Fehler beim Lesen vom DHT22");
      return;
    }

    Serial.print("T="); Serial.print(t);
    Serial.print(" °C, H="); Serial.print(h);
    Serial.println(" % rF");
  }
}
    

Python-Beispiel (Raspberry Pi, Adafruit_DHT)

Enable GPIO, installiere das Paket Adafruit_DHT. Beachte ebenfalls das Intervall ≥2 s.


import Adafruit_DHT, time

SENSOR = Adafruit_DHT.DHT22
PIN = 4   # BCM-Nummer (GPIO4)

while True:
    h, t = Adafruit_DHT.read_retry(SENSOR, PIN)
    if h is not None and t is not None:
        print("T={:.1f} °C  H={:.1f} %".format(t, h))
    else:
        print("Lesefehler – Verkabelung/Pull-Up prüfen")
    time.sleep(2.0)
    

Genauigkeit, Stabilität & Taupunkt

  • Der Sensor benötigt einige Sekunden „Aufwärmzeit“ nach Spannungsversorgung.
  • Für Vergleichsmessungen Sensor luftdurchströmt, aber vor Zugluft geschützt montieren.
  • Taupunkt lässt sich aus T und rF berechnen – nützlich für Schimmel-/Kondensationswarnungen.

import math
def dew_point(t_c, rh):  # t in °C, rh in %
    a, b = 17.62, 243.12
    gamma = (a*t_c)/(b+t_c) + math.log(rh/100.0)
    return (b*gamma)/(a-gamma)
    

DHT22 vs. Alternativen

Sensor Vorteile Hinweise
DHT22 Günstig, einfache Anbindung Langsam (≥2 s), Timing-sensitiv, anfällig bei langen Leitungen
DHT11 Sehr günstig Deutlich ungenauer/geringer Bereich
SHT3x/SHT4x Schnell, I²C, stabil Etwas teurer, Bibliotheken nötig
BME280 Zusätzlich Druck/Höhe Andere Schnittstelle (I²C/SPI), höhere Komplexität

Fehler, die man nur einmal macht

  1. Kein/zu hoher Pull-Up → wackelige Pegel, CRC-Fehler.
  2. Messintervall <2 s → Timeouts, nan-Werte.
  3. Kein gemeinsamer GND → instabile Messungen.
  4. Lange Leitungen ohne Schirm → Störungen; kürzere Kabel, kleinerer Pull-Up, ggf. Treiber einsetzen.
  5. Sensor erwärmt sich durch Gehäuse/MCU → Temperaturfehler; Abstand/Belüftung schaffen.

Checkliste

  • Pull-Up 10 kΩ (bei langen Leitungen 4,7–5,6 kΩ)
  • Messintervall ≥2 s, Start-Delay nach Power-On
  • Gemeinsame Masse, 100 nF nahe am Sensor
  • Kabellänge minimieren/abschirmen
  • Sensorplatzierung ohne Eigenwärme & Zugluft

Fazit

Der DHT22 ist ein einfacher Einstieg in Klima-Messungen. Mit sauberer Verdrahtung, passendem Pull-Up und moderater Abtastrate erhältst du stabile Werte für viele Maker-Projekte. Für schnellere/robustere Anwendungen können I²C-Sensoren wie SHT3x oder BME280 die bessere Wahl sein.

Tipp: Wenn du bereits I²C im Projekt nutzt, plane mittelfristig einen I²C-Sensor als Drop-in-Upgrade ein – das spart Timing-Ärger und erhöht die Messrate.

0 Kommentare

Kommentieren

Bitte beachten Sie, dass Kommentare vor ihrer Veröffentlichung genehmigt werden müssen.