Temperatur- und Feuchtigkeitssensor DHT11: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:ST_WS2020]]
[[Kategorie:ST_WS2020]]
→ zurück zum Hauptartikel: [[ST WS2020|ST WS2020]]
[[Kategorie:Arduino]]
[[Datei:DHT11Sensor.jpg|400px|thumb||right|Abbildung 1: Temperatur- & Feuchtigkeitssensor DHT11<ref> Eigene Abbildung</ref>]]
[[Kategorie:Sensoren]]
[[Datei:DHT11Sensor.jpg|300px|thumb||right|Abbildung 1: Temperatur- & Feuchtigkeitssensor DHT11<ref> Eigene Abbildung</ref>]]
 
'''Autoren:''' [[Benutzer:Noah Greis|Noah Greis]], [[Benutzer:Ulrich_Schneider| Prof. Schneider]] <br/>


'''Autor:''' [[Benutzer:Noah Greis|Noah Greis]] <br/>
'''Betreuer:''' [[Benutzer:Ulrich_Schneider| Prof. Schneider]]<br/>




Zeile 14: Zeile 15:


== Technische Daten ==
== Technische Daten ==
[[Datei:DHT11 Sketch.png|400px|thumb||right|DHT11 Pinout<ref>[https://www.engineersgarage.com/microcontroller-projects/articles-arduino-dht11-humidity-temperature-sensor-interfacing/ :''Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library;'' Nikhil Agnihotri, August 9, 2020]</ref>]]
[[Datei:DHT11 Sketch.png|400px|thumb||right|Abbildung 2: DHT11 Pinout<ref>[https://www.engineersgarage.com/microcontroller-projects/articles-arduino-dht11-humidity-temperature-sensor-interfacing/ :''Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library;'' Nikhil Agnihotri, August 9, 2020]</ref>]]
{| class="mw-datatable"
{| class="wikitable"
! style="font-weight: bold;" | Parameter
! style="font-weight: bold;" | Parameter
! style="font-weight: bold;" | Werte
! style="font-weight: bold;" | Werte
Zeile 33: Zeile 34:
<br/>
<br/>
<br><br>
<br><br>
{| class="mw-datatable"
{| class="wikitable"
!colspan="2"|Pinout
!colspan="2"|Pinout
|-
|-
Zeile 49: Zeile 50:


===Der Temperatursensor===
===Der Temperatursensor===
[[Datei:NTC-Kennlinie.png|400px|thumb||right|Abbildung 3: Kennlinie eines NTC<ref>[https://www.elektronik-kompendium.de/sites/bau/0208031.htm :''NTC - Heißleiter'' Patrick Schnabel, 2021]</ref>]]
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.
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 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. 3 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.
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.
Zeile 71: Zeile 73:


===Der Feuchtigkeitssensor===
===Der Feuchtigkeitssensor===
[[Datei:Kondensator bild.jpg|400px|thumb||right|Abbildung 3: DHT 11 Kondensator<ref> Eigene Abbildung</ref>]]
[[Datei:Kondensator bild.jpg|400px|thumb||right|Abbildung 4: DHT 11 Kondensator<ref> Eigene Abbildung</ref>]]
[[Datei:Kondensator Sketch.jpeg|400px|thumb||right|Abbildung 4: Schematischer Kondensatoraufbau<ref>[https://www.engineersgarage.com/microcontroller-projects/articles-arduino-dht11-humidity-temperature-sensor-interfacing/ :''Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library;'' Nikhil Agnihotri, August 9, 2020]</ref>]]
[[Datei:Kondensator Sketch.jpeg|400px|thumb||right|Abbildung 5: Schematischer Kondensatoraufbau<ref>[https://www.engineersgarage.com/microcontroller-projects/articles-arduino-dht11-humidity-temperature-sensor-interfacing/ :''Arduino compatible coding 15: Reading sensor data from DHT-11 without using a library;'' Nikhil Agnihotri, August 9, 2020]</ref>]]
Der DHT11 verfügt über eine eingebauten Kondensator, welcher auf Abb. 3 zu sehen ist.
Der DHT11 verfügt über eine eingebauten Kondensator, welcher auf Abb. 4 zu sehen ist.
Der Aufbau des Kondensators ist vereinfacht in Abb. 4 dargestellt.
Der Aufbau des Kondensators ist vereinfacht in Abb. 5 dargestellt.
 
Der Kondensator besteht wie in der Abb. 5 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.


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.
Die Kapazität kann wie folgt berechnet werden:
Die Kapazität kann wie folgt berechnet werden:


Zeile 101: Zeile 104:


===Digitale Signalverarbeitung===
===Digitale Signalverarbeitung===
[[Datei:Phasen Datenübetragung.jpg|500px|thumb||right|Abbildung 5: Phasen der Datenübertragung <ref>DHT11 Datenblatt[https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf]</ref>]]
[[Datei:Phasen Datenübetragung.jpg|500px|thumb||right|Abbildung 6: Phasen der Datenübertragung <ref>DHT11 Datenblatt[https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf]</ref>]]
Die Datenübertragung vom DHT11 zum Arduino, läuft lediglich über den DATA - Pin ab und kann in vier verschiedene Phasen eingeteilt werden.
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.
Im angeschlossenen Modus, liegt an dem DATA - Pin ein HIGH Signal an, durch den integrierten Pull-Up Wiederstand.
Zeile 119: Zeile 122:
Die Bits werden per HIGH und LOW Signal dargestellt und übertragen. Jede Übertragung eines Bits fängt mit einem 50<math>\mu s</math> langen LOW Signal an. Die Dauer des darauf folgende HIGH Signales, gibt an ob es sich um eine <math>0</math> (26-28<math>\mu s</math>) oder <math>1</math> (70<math>\mu s</math>) handelt.
Die Bits werden per HIGH und LOW Signal dargestellt und übertragen. Jede Übertragung eines Bits fängt mit einem 50<math>\mu s</math> langen LOW Signal an. Die Dauer des darauf folgende HIGH Signales, gibt an ob es sich um eine <math>0</math> (26-28<math>\mu s</math>) oder <math>1</math> (70<math>\mu s</math>) handelt.


Die letzte Phase (4), beendet die Datenübertragung, durch das senden eines 50<math>\mu s</math> langen LOW Signales. Danach wird das Signal durch den integrierten Pull-Up Wiederstand wieder auf HIGH gesetzt.
Die letzte Phase (4), beendet die Datenübertragung, durch das senden eines 50<math>\mu s</math> langen LOW Signales. Danach wird das Signal durch den integrierten Pull-Up Wiederstand wieder auf HIGH gesetzt. <ref>  Datenblatt des DHT11, https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf  </ref>


Der ganze Ablauf ist in der Abb. 5 dargestellt.
Ein Ablauf dieser 4 Phasen ist als ist in der Abb. 6 durch einen Ausschnitt dargstellt.


==Equipment==  
==Equipment==  
Zeile 138: Zeile 141:


<gallery class="center" caption="DHT11 Sensor" widths="400" heights="400">
<gallery class="center" caption="DHT11 Sensor" widths="400" heights="400">
Datei:DHT11 Fritzing.jpg|'''Abbildung 6: Verkabelung des DHT11 Sensors <ref> Eigene Zeichnung</ref> '''
Datei:DHT11 Fritzing.jpg|'''Abbildung 7: Verkabelung des DHT11 Sensors <ref> Eigene Zeichnung</ref> '''


Datei:DHT11 Schaltplan.jpg|'''Abbildung 7: Schalplan des DHT11 Sensors <ref> Eigene Zeichnung</ref> '''
Datei:DHT11 Schaltplan.jpg|'''Abbildung 8: Schalplan des DHT11 Sensors <ref> Eigene Zeichnung</ref> '''
</gallery>
</gallery>


==Softwarearchitektur==
==Softwarearchitektur==
[[Datei:DHT11 ArduinoIDE.JPG|600px|thumb||left|Abbildung 8: Arduino IDE Code für DHT11-Daten auslesen<ref> Eigene Abbildung</ref>]]
Bei der Programmierung wird sich die DHT sensor library von Adafruit zu nutze gemacht. Diese sorgt dafür das die Daten einfach durch vorprogrammierte Befehle ausgelesen werden können. Wie das ganze funktioniert ist in dem Bespiel in Abb. 9 zu sehen.
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
[[Datei:DHT11 ArduinoIDE.JPG|600px|thumb||left|Abbildung 9: Arduino IDE Code für DHT11-Daten auslesen<ref> Eigene Abbildung</ref>]]
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>


== Bewertung des Sensors ==
== Bewertung des Sensors ==
Zeile 183: Zeile 187:
   
   
== YouTube Video ==
== YouTube Video ==
https://youtu.be/bfMac-xaz0M


== Quellenverzeichnis ==
== Quellenverzeichnis ==

Aktuelle Version vom 3. Juli 2023, 14:56 Uhr

Abbildung 1: Temperatur- & Feuchtigkeitssensor DHT11[1]

Autoren: Noah Greis, 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

Abbildung 2: DHT11 Pinout[2]
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

Abbildung 3: Kennlinie eines NTC[3]

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. 3 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

Abbildung 4: DHT 11 Kondensator[4]
Abbildung 5: Schematischer Kondensatoraufbau[5]

Der DHT11 verfügt über eine eingebauten Kondensator, welcher auf Abb. 4 zu sehen ist. Der Aufbau des Kondensators ist vereinfacht in Abb. 5 dargestellt.

Der Kondensator besteht wie in der Abb. 5 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

Abbildung 6: Phasen der Datenübertragung [6]

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. [7]

Ein Ablauf dieser 4 Phasen ist als ist in der Abb. 6 durch einen Ausschnitt dargstellt.

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

Bei der Programmierung wird sich die DHT sensor library von Adafruit zu nutze gemacht. Diese sorgt dafür das die Daten einfach durch vorprogrammierte Befehle ausgelesen werden können. Wie das ganze funktioniert ist in dem Bespiel in Abb. 9 zu sehen.

Abbildung 9: Arduino IDE Code für DHT11-Daten auslesen[10]





















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

https://youtu.be/bfMac-xaz0M

Quellenverzeichnis


→ zurück zum Hauptartikel: ST WS2020