In der folgenden Schaltung werden an Arduino zwei DHT11-Sensoren angeschlossen. Die Sensoren liefern über eine Leitung
zwei Werte: Temperatur und Luftfeuchtigkeit. Grundsätzlich ist es kein Problem festzustellen, ob ein Sensor ausgefallen ist oder nicht. Mit
einem Sensor ist es jedoch nicht möglich, nachzuvollziehen, ob die Messwerte richtig sind. Deswegen kommt in der Schaltung ein zweiter Sensor
ins Spiel. Beide Sensoren werden kalibriert und sich gegenseitig überwachen. Weichen beide Messwerte zu stark voneinander ab, wird eine
Störmeldung ausgegeben. Die einzelne Werte von beiden Sensoren werden auf einem 20x4 Display angezeigt. Zusätzlich wird aus den beiden
Messwerten gebildeter Mittelwert ausgegeben.
Das LCD-Display, das 4 Zeilen je 20 Zeichen für Ausgabe zur Verfügung stellt, wird über i2C-Bus angesprochen. Hierzu wird ein
Interface zwischen Display und Arduino angeschlossen. Das Modul FC-113 macht dann die I2C - Kommunikation zwischen beiden Geräten möglich. Der
Vorteil dieser Lösung ist, dass für die Display-Ausgabe nur zwei Leitungen benötigt werden.
Das Display verbraucht ca. 40 mA. Würde Arduino mit einem Netzteil arbeiten, könnte man das Display an den Anschluss 5V des
Arduino anschließen. In diesem Fall sorgt ein Spannungsregler für Stromversorgung. Es ist selbst gebauter Regler, der auf dem Spannungsregler
LM317 basiert. Er liefert bei Bedarf 1,5 A. An die 5 VDC, die der Regler liefert, werden neben dem Display auch die beiden Sensoren angeschlossen.
Externe Spannung, mit der der Regler und Arduino versorgt werden, beträgt 9 VDC.
Das Auslesen und Verarbeitung der Messwert sowie die Display-Ausgabe koordiniert Arduino. Es werden vier seiner Anschlüsse in
Anspruch genommen. Die Pins SCL und SDA werden für den I2C-Bus abkommandiert. Über die Pins D2 und D3 kommuniziert Arduino mit den beiden
Sensoren. Dabei erfolgt diese Kommunikation in beiden Richtungen. Zunächst werden von Arduino die Daten angefordert, danach schaltet er auf
Empfang und liest die ankommenden Signale aus.
Arduino Mega2560 (Nachbau)
Schaltplan
Schaltplan
Testschaltung
Testschaltung
Das Programm (Sketch)
Damit das Programm funktioniert, müssen zwei Bibliotheken installiert werden. Sie übernehmen die Kommunikation mit dem Display
und beiden Sensoren. Die Bibliothek "DHT.h" kümmert sich um die Kommunikation mit den beiden Sensoren, die Bibliothek „LiquidCrystal_I2C.h“
für die mit dem Display. Beide Bibliotheken können mit dem Bibliotheksverwalter installiert werden. Mit "DHT.h" kann auch der Sensor DHT22
angesprochen werden. Mit „LiquidCrystal_I2C.h“ kann z.B. auch das Display 16x2 gesteuert werden. Infos im Internet mit Beispiel-Programmen:
https://github.com/adafruit/DHT-sensor-library
und
https://www.arduino.cc/en/Reference/LiquidCrystal
Anzumerken ist, dass für viele gleiche Aufgaben im Internet mehrere Bibliotheken verfügbar sind.
Das Hauptprogramm ist auf drei Blöcke unterteilt. Die Abarbeitung jedes Blocks hängt von dem Wert der Variable „Fehler“ ab. Das
Durchlaufen des Hauptprogramms erfolgt alle 1.5 Sek. Sofern kein Fehler vorliegt (Fehler = 0), werden beide Sensoren nacheinander ausgelesen
und die Ergebnisse auf dem Display angezeigt. Anschließend wird von den Werten der Temperatur und Feuchtigkeit ein Mittelwert gebildet,
der ebenfalls auf das Display kommt.
Parallel dazu werden die ankommenden Daten überprüft. Tauchen z.B. Kommunikationsprobleme auf, ein der Sensoren ist defekt oder nicht
vorhanden, wird ein Fehler generiert (Fehler = 1).
Anschließend wird die Abweichung der Werte voneinander untersucht. In dem Beispiel betrifft diese Untersuchung nur die Temperatur. Ist
der Unterschied zwischen den beiden Temperaturwerten größer als 1°, wird ebenfalls ein Fehler generiert (Fehler=2). Bevor die ausgelesenen Werte
untersucht werden, werden sie kalibriert. Es zeigte sich, dass der Messunterschied (Temperatur) zwischen beiden Sensoren streckenweise den Wert
von 2.5°C überstieg. Auch die Reaktionszeiten der Sensoren weisen deutliche Unterschiede auf. Zum Experimentieren sind sie trotz dessen durchaus
geeignet.
Im Fall eines Fehlers erscheint auf dem Display entsprechende Meldung.
// ***************************************************************************************
// Temperatur und Feuchtigkeit mit zwei Sensoren
// Arduino und DHT11
// Arduino Mega 2560, IDE 1.8.13
// ***************************************************************************************