Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Temperatur- und Luftfeuchtemessung mit dem Sensor DHT22 - Teil 1

In diesem ersten Teil schauen wir uns die Rohdaten an, die der Sensor abliefert. Dazu wird das Datenblatt des Herstellers zu Rate gezogen. Um an die Rohdaten zu kommen, wird eine Bibliotheksdatei von github.com benutzt. Wer weiter einsteigen möchte in die Programmierung dieses Sensors, kann dort auch die Bibliotheksdateien mit ihren Funktionen einsehen und erfahren, wie auf die einzelnen Bits des DHT22/DHT11 zugegriffen wird.

Der Sensor DHT22

SDA    Datenleitung (1-Wire-Verbindung mit eigenem Protokoll)

NA      nicht verfügbar, nicht belegt

Leistungsdaten nach Herstellerangaben

Schaltungsaufbau

 

 

 

 

 

 

 

 

Abbildung 1

Zwischen Vdd und SDA ist ein Pull-up Widerstand von 47kOhm geschaltet. SDA liegt an P9 des Arduino UNO. Vdd = 5V.

Rohdatenverarbeitung
Material
  • 1x  Steckbrett
  • 1x  Widerstand 470kOhm
  • 1x  DHT22 Temperatur- und Feuchtesensor
  • 1x  Arduino UNO
  • 1x  USB-Verbindungskabel
  • 4x  Steckdraht
  • 1x  Datenblatt AM2303 (DHT22) der Fa. AOSONG (aus dem Internet herunterladen)
Aufgaben
  • Informiere dich über die Begriffe relative und absolute Luftfeuchtigkeit.
  • Baue die Schaltung auf dem Steckbrett auf.
  • Trenne das Arduino UNO Board vom USB-Verbindungskabel und stelle die Drahtverbindungen zum Board her.
  • Verbinde den Arduino UNO wieder mit dem USB-Verbindungskabel.
  • Übertrage das Programm dht22_2.ino in den Arduino Editor und speichere es ab.
  • Starte das Programm.
  • Versuche aus den im Terminal dargestellten Rohdaten die relative Feuchtigkeit und die Temperatur in Grad Celsius zu ermitteln. Benutze dazu die Hilfe des Datenblattes des Herstellers AOSONG.

Terminalausgabe der Rohdaten des Sensors

Abbildung 2 - Ausgabe der Rohdaten des Sensors DHT22 im Terminalfenster

Das Programm dht22_2.ino

Wie arbeitet das Programm dht22_2.ino?

Durch die Einbindung der Bibliotheksdatei SimpleDHT.h wird das Auslesen von Messdaten zur relativen Feuchte und der Raumtemperatur in ein Array data möglich. Dem Datenblatt des Sensors ist zu entnehmen, dass der DHT22, sobald er aktiviert wurde, nach jeder Messung 5 Bytes oder 40 Bits an den Arduino UNO überträgt (Abb. 2). Die fünf Bytes schlüsseln sich wie folgt auf:

Abbildung 3 - Aufzeichnung der Rohdaten im Terminalfenster. Die rot umrandeten Bytes sind die sogenannten High-Bytes, die grünen die Low-Bytes. Blau umrandet ist das Prüfsummenbyte.

Nach Angabe des Herstellers (Datenblatt) werden die Daten des Sensors in jeweils 5 Byte Blöcken ausgegeben. Die ersten beiden Blöcke geben die relative Luftfeuchtigkeit an, der dritte und vierte Block die Temperatur. Das fünfte Byte ist ein sogenanntes Prüfsummenbyte (Abb. 3).

2 - Die Dekodierung der Rohdaten

Die Dekodierung der Rohdaten erfolgt über die Umrechnung der Binärdaten ins Dezimalsystem. Aus Vereinfachungsgründen habe ich hier neben der binären auch die hexadezimale Darstellungsform gewählt. Ihre Umrechnung ins 10-er System erscheint einfacher und weniger fehleranfällig zu sein.

Die Prüfsumme ergibt sich aus der Addition der Messdatenbytes.

Stimmt die Prüfsumme mit der Messdatensumme überein, dann ist wahrscheinlich kein Fehler bei der Datenermittlung aufgetreten.

3 - Temperatur- und Luftfeuchtemessung mit dem Sensor DHT22 - Teil 2

In dieser Übung werden Funktionen und beigefügte Beispielprogramme einer DHT-Sensor-Bibliothek genutzt, die aus dem Internet bei github.com geladen werden kann.

Benenne die nicht entpackte Datei nach dem Herunterladen in DHT um und kopiere sie in den Libraries Ordner von Arduino. Starte anschließend den Arduino Editor.

Über das Hauptmenü Sketch – Bibliothek einbinden - .ZIP Bibliothek hinzufügen wird die DHT Bibliothek in das System eingebunden und kann jetzt im Programm benutzt werden.

Temperatur- und Luftfeuchtemessung
Material
  • Gleicher Aufbau wie im Teil 1 dieses Abschnitts.
  • Der Aufbau aus Teil 1 kann weiter benutzt werden.
Aufgaben
  • Übertrage das Programm dht22_1.ino in den Arduino Editor und speichere es ab.
  • Starte das Programm.
  • Vergleiche die im Terminal ausgegebenen Temperatur- und Feuchtewerte mit den zuvor in Teil 1 errechneten Werten. Es sollten bei zeitlicher Nähe der Ausführung beider Versuche nahezu identische Werte herauskommen.

Das Programm dht22_1.ino

Terminalausgabe der Messwerte

Abbildung 4 - Die relative Luftfeuchtigkeit ändert sich, sobald zum Beispiel der Sensor angehaucht wird. Die Feuchtigkeitswerte erhöhen sich stark (roter Kreis).
Druckversion | Sitemap
© Reinhard Rahner - Gettorf