Der digitale Sensor ist in der Lage sowohl die Temperatur in Grad Celsius sowie die relative Luftfeuchtigkeit in Prozent zu messen. Im Unterschied zu den zuvor behandelten Sensoren, benötigt jeder Sensor dieses Typs eine eigene Datenleitung. Eine Kommunikation mehrer Sensoren über den One Wire Bus ist also nicht möglich. Die Gemeinsamkeit ist allerdings, dass der DHT11 auch nur drei Pins benötigt. Zwei Pins für die Spannungsversorgung und einen zum Anschluss der Datenleitung. Die Pinbelegung des Sensors ist in der folgenden Abbildung dargestellt:


Abb.: Pinbelegung des DHT11; Quelle: BBS2 Wolfsburg


Das Messprinzip des Sensors ist wie folgt: Der Sensor misst den elektrischen Widerstand zwischen zwei Elektroden. Diese liegen an der Oberfläche eines Substrats, das für die Absorption von Luftfeuchte zuständig ist. Nimmt das Substrat Wasserdampf aus der Luft auf, so werden im Substrat Ionen abgegeben, die die Leitfähigkeit im Substrat erhöhen. Die Änderung des Widerstandes zwischen den Elektroden ist proportional zur relativen Luftfeuchtigkeit.

Der Anschluss dieses Sensors erfolgt wie bei dem DS18B20 über einen Pull Up Widerstand. Für diesen wird ein Widerstandswert von mind. 5 kΩ empfohlen. Den Sensor gibt es auch als Breakoutboard, auf dem ein interner Pull Up Widerstand von 10 kΩ bereits vorhanden ist. Auch kann der Sensor (ohne Breakoutboard) mit 4 Pins vorkommen. Dann ist einer der 4 Pins "not used". Deshalb sollte unbedingt in das zugehörige Datenblatt geschaut werden


Abb.: Anschluss des Sensors an das Arduino Board; Quelle: BBS2 Wolfsburg


In der folgenden Tabelle sind noch einmal die wichtigsten Daten zum Sensor zusammengefasst:


Technische Daten des DHT11


Messbereich Temperatur 
0 - 50°C
Messbereich Luftfeuchtigkeit
20 - 90%
Versorgungsspannung (Vcc)
3 - 5V
Abtastrate
 2 s
 Auflösung
 8 bit
 Genauigkeit Temperatur
 +/- 5 %
Genauigkeit Luftfeuchtigkeit
 +/- 2 %



Zu Dem Sensor existiert eine Bibliothek, die in der Arduino IDE eingebunden werden muss, um den Sensor verwenden zu können. Diese kann hier heruntergeladen werden:

DHT11-Bibliothek

Die Bibliothek liefert einfache Befehle mit denen die Sensorwerte ausgelesen werden können. Diese werden in einem einfachen Programm getestet:

#include <dht11.h>

dht11 DHT11;
#define DHT11PIN 8

void setup()
{
  Serial.begin(9600);
  Serial.println("Luftfeuchtigkeit und Temperatur Sensor DHT11 \n\n");
}

void loop()
{
  int chk = DHT11.read(DHT11Pin);
  Serial.print("Temperatur: ");
  Serial.print(DHT11.temperature);
  Serial.print("°C");
  Serial.print("\t");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(DHT11.humidity);
  Serial.print("%");
}

Zuerst muss die Bibliothek mit dem include-Befehl eingebunden werden. In der zweiten Zeile wird ein neues Objekt der dht11 Klasse erzeugt. Der define Befehl kann genutzt werden um einen Pin festzulegen an den die Daten des Sensors geschickt werden. In der ersten Zeile der Loop wird der Sensor angesprochen. Der zuvor festgelegte One Wire Pin wird gelesen. Anschließend können über die Befehle .temperature und .humidity ganz einfach die Sensorwerte ausgelesen und geprintet werden.



Abb.: Serieller Monitor; Quelle: BBS2 Wolfsburg


Zuletzt geändert: Montag, 28. Februar 2022, 11:43