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
- Kein/zu hoher Pull-Up → wackelige Pegel, CRC-Fehler.
- Messintervall <2 s → Timeouts, nan-Werte.
- Kein gemeinsamer GND → instabile Messungen.
- Lange Leitungen ohne Schirm → Störungen; kürzere Kabel, kleinerer Pull-Up, ggf. Treiber einsetzen.
- 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.
- Tags: 1-Wire 1-Wire Adafruit DHT Adafruit DHT AM2302 AM2302 Arduino Arduino Datenlogger Datenlogger DHT22 DHT22 Elektronik Grundlagen Elektronik Grundlagen ESP32 ESP32 IoT IoT Kalibrierung Kalibrierung Luftfeuchte Luftfeuchte Pull-Up Pull-Up Python Python Raspberry Pi Raspberry Pi Sensor Sensor Taupunkt Taupunkt Temperatur Temperatur Wetterstation Wetterstation
0 Kommentare