Temperatur- und Feuchtigkeitssensor DHT11
→ zurück zum Hauptartikel: ST WS2020
Autor: Noah Greis
Betreuer: Prof. Schneider
Aufgabe
Im Modul des Schwerpunktes Systems Design Engineering (SDE), in Zusammenhang mit der Vorlesung Sensortechnik, war es die Aufgabe einen beliebigen Sensor durch Recherche und Inbetriebnahme, die Funktionsweise zu verstehen und in einem Wiki-Artikel zu erläutern.
Einleitung
Dieser Artikel beschäftigt sich mit dem Temperatur- & Feuchtigkeitssensors DHT11. Der DHT11 Sensor ist eine kostengünstige Variante eines Temperatur- & Feuchtigkeitssensors, welcher jedoch recht genaue Werte liefert und dazu fertig kalibriert verkauft wird. Aus diesem Grund wird er in vielen Hobby-Projekten in Verbindung mit Mikrocontrollern genutzt. Auch in diesem Artikel wird der DHT11 über einen Mikrocontroller (Arduino) in Betrieb genommen. Die Funktionsweise des Sensor und die Vorgehensweise beim anschließen, wird in diesem Artikel genauer erläutert.
Technische Daten
Parameter | Werte |
---|---|
Spannungsbereich |
3 - 5 V DC |
Feuchtigkeitsmessbereich |
20% - 90% |
Temperaturmessbereich |
0°C - 50°C |
Messgenauigkeit Feuchtigkeit | ± 5,0% |
Messgenauigkeit Temperatur | ± 2,0°C |
Abtastrate | 1 Hz |
Pinout | |
---|---|
Pin 1 / VCC | VCC (5 V DC) |
Pin 2 / DATA | Digitaler Pin und über 10 kΩ an VCC |
Pin 3 / NC | Not used |
Pin 4 / GND | GND |
Prinziperklärung
Der Temperatursensor
Zum Messen der Temperatur, hat der DHT11 einen Heißleiter, einen sogenannten Negative Temperature Coefficient Thermistor (NTC) verbaut. Dabei handelt es sich um einen Widerstand, welcher seinen Wert in Abhängigkeit der Temperatur ändert. Die Leitfähigkeit wird bei zunehmender Temperatur größer und somit wird der Widerstandswert kleiner. Daher auch die Bezeichnung "NTC", denn der Widerstandswert hat einen negativen Verlauf bei zunehmender Temperatur, wie auch in Abb.?? erkennbar.
Die Temperatur lässt dich dann durch Umstellen der Formel für den Widerstand ausrechnen. Dies wird direkt vom im DHT 11 verbauten IC (Integrierte Schaltung) vorgenommen und über die Datenleitung an den Arduino übergeben. Wie genau diese Übertragung abläuft wird im Punkt "Messkette" genauer erläutert.
: ermittelter Widerstand
: Widerstand bei Nenntemperatur ()
: Thermistorkonstante
: Nenntemperatur (meist 25°C)
: ermittelte Temperatur
Der Feuchtigkeitssensor
Der DHT11 verfügt über eine eingebauten Kondensator, welcher auf Abb. 3 zu sehen ist. Der Aufbau des Kondensators ist vereinfacht in Abb. 4 dargestellt.
Der Kondensator besteht wie in der Abb. 4 zu erkennen ist aus zwei Elektroden, zwischen denen sich ein feuchtigkeitsempfindliches Substrat befindet. Wird der Sensor nun angeschlossen, entsteht durch die anliegende Spannung ein elektrisches Feld, welches eine Kapazität erzeugt. Diese Kapazität ist unter anderem von der Dielektrizitätszahl abhängig, welche wiederum von der Luftfeuchte abhängt. Steigt die Luftfeuchtigkeit, so steigt auch die Anzahl an Wassermolekülen, welche vom Substrat aufgenommen werden und sich im elektrischen Feld anordnen. Dies bewirkt eine steigende Dielektrizitätszahl und somit eine steigende Kapazität. Dadurch kann der DHT11 die Luftfeuchtigkeit, durch die vom Hersteller durchgeführte Kalibrierung, bestimmen und über den Daten Pin an den Arduino übertragen. Dies geschieht durch einen Abgleich der Werte anhand eingestellter Wertepaare.
Die Kapazität kann wie folgt berechnet werden:
: Kapazität
: Relative Permittivität
: Elektrische Feldkonstante
: Elektrodenfläche
: Elektrodenabstand
Messkette
Bussystem
Der DHT11 Sensor, sendet seine Daten lediglich über einen einzelnen Daten Pin, welcher mit einem digitalen Pin des Arduinos verbunden wird.
Es wird somit kein Bussystem benötigt.
Digitale Signalverarbeitung
Die Datenübertragung vom DHT11 zum Arduino, läuft lediglich über den DATA - Pin ab und kann in vier verschiedene Phasen eingeteilt werden. Im angeschlossenen Modus, liegt an dem DATA - Pin ein HIGH Signal an, durch den integrierten Pull-Up Wiederstand.
In der 1. Phase, wird ein Startsignal vom Arduino gesendet. Dies geschieht, indem das anliegende HIGH-Signal für 18 auf LOW gesetzt wird.
In der 2. Phase, gibt der DHT11 Sensor ein Signal zurück um die Bereitschaft zur Datenübertragung anzuzeigen. Dabei wird das Signal für 54 auf LOW und anschließend für 80 auf HIGH gesetzt.
In der 3. Phase, werden die gemessenen Daten übergeben. Die Übertragung geschieht durch eine Abfolge von HIGH und LOW Signalen.
Die gesamte Datenmenge, besteht aus 40 Bits. Unterteilt werden diese in 5 verschiedene 8 Bit (1 Byte) Segmente.
Die ersten zwei Bytes übergeben die gemessene Luftfeuchtigkeit. Die darauf folgenden zwei Bytes besitzen den Wert der Temperatur.
Das letzte Byte beinhaltet die Summe aller gesendeten Bits, um das ganze nochmal zu überprüfen.
Die Bits werden per HIGH und LOW Signal dargestellt und übertragen. Jede Übertragung eines Bits fängt mit einem 50 langen LOW Signal an. Die Dauer des darauf folgende HIGH Signales, gibt an ob es sich um eine (26-28) oder (70) handelt.
Die letzte Phase (4), beendet die Datenübertragung, durch das senden eines 50 langen LOW Signales. Danach wird das Signal durch den integrierten Pull-Up Wiederstand wieder auf HIGH gesetzt.
Der ganze Ablauf ist in der Abb. 5 dargestellt.
Equipment
Verwendete Software
- Arduino IDE
Verwendete Komponente
- Temperatur- & Luftfeuchtigkeitssensor DHT11
- 10 kΩ Widerstand
- Arduino UNO
Hardwareaufbau
Datenblatt
- Datenblatt des DHT11 [2]
Schaltplan und Steckplatine
Softwarearchitektur
Bewertung des Sensors
Vorteile
- vorab kalibrierter Sensor
- Kostengünstig
- Temperatur kann bis ±2°C genau bestimmt werden
- einfache Inbetriebnahme durch Arduino DHT-Library
Nachteile
- Feuchtigkeit kann nur bis ±5% genau bestimmt werden
- eingeschränkte Messbereiche sowohl Temperatur als auch Luftfeuchte
Alternativen
Als eine gleichsetzbare Alternative ist der DHT22 zu betrachten, dabei handelt sich ebenfalls um einen Temperatur- & Feuchtigkeitssensor. Dieser ist etwas teurer und hat gewissen Vorteile in der Messgenauigkeit und Messspanne. Auch dieser Sensor wird vor kalibriert und kann so schnell und einfach genutzt werden.
Parameter | Werte |
---|---|
Spannungsbereich |
3,3 - 6 V DC |
Feuchtigkeitsmessbereich |
0% - 100% |
Temperaturmessbereich |
-40°C - 80°C |
Messgenauigkeit Feuchtigkeit | <± 0,5% |
Messgenauigkeit Temperatur | ± 2,0°C |
Abtastrate | 0,5 Hz |
Zusammenfassung
Dieser Artikel befasst sich wie in der Einleitung angesprochen mit dem DHT11 Sensor. Dieser wird hier in Verbindung mit dem Modul Sensortechnik, genauer betrachtet und erläutert. Der Temperatur- & Feuchtigkeitssensor DHT11 besteht aus einem NTC-Widerstand und einem feuchtigkeitsabhängigen Kondensator welche über eine Platine mit einem IC verbunden sind. Dieses Sensormodul misst Werte und berechnet damit die Temperatur und Luftfeuchte. Diese Werte werden dann über einen DATA-Pin and den Mikrocontroller übertragen. Dies geschieht durch eine sequenzielle Übertragung einzelner Bits durch HIGH und LOW Signale. Das ganze wird über die Arduino IDE programmiert und ausgelesen. Der Schaltplan und eine vereinfachte Software wurden dokumentiert, um einen schnellen Start mit dem DHT11 Sensor zu ermöglichen.
YouTube Video
Quellenverzeichnis
- ↑ Eigene Abbildung
- ↑ :Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library; Nikhil Agnihotri, August 9, 2020
- ↑ Eigene Abbildung
- ↑ :Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library; Nikhil Agnihotri, August 9, 2020
- ↑ DHT11 Datenblatt[1]
- ↑ Eigene Zeichnung
- ↑ Eigene Zeichnung
- ↑ Eigene Abbildung
→ zurück zum Hauptartikel: ST WS2020