Das Modul für die Wasserstanderkennung, das in dieser Schaltung mitwirkt, besteht aus mehreren Leiterbahnen und einer
auf einem Transistor basierenden Verstärkerschaltung. Beim Eintauchen ins Wasser verändert sich der Widerstand der Leiterbahnen. Die
Veränderung des Gesamtwiderstandes des Moduls hängt von dem aktuellen Wasserniveau ab. Am Ausgang des Moduls erhalten wir dann ein
analoges Signal, das den aktuellen Wasserpegel widerspiegelt.
Das Signal könnte man direkt an einen analogen Eingang des Arduino anschließen. In dem Programm würde dann die endgültige Auswertung
des Signals erfolgen. In diesem Fall kommt noch ein Modul ins Spiel. Der Ausgang des Wassermoduls wird an einen AD-Wandler angeschlossen.
Der Wandler
(ADS1115) liefert als Ergebnis eine Zahl zwischen 0 und 32767. Dieser Wert wird über I2C-Bus ausgelesen.
Wasserstandsensor
Der Analog-Digital-Wandler ADS1115 verfügt über vier analoge Eingänge. Somit wäre es möglich, über das Modul vier Sensoren,
die analoge Signale liefern, auszuwerten. Darüber hinaus kann man auf dem Modul vier unterschiedliche I2C-Bus-Adressen einstellen. Das
erhöht die Anzahl der Sensoren, die auf diesem Wege auswertbar wären, noch weiter.
Um die Ergebnisse der Messungen anzeigen zu können, wird die Schaltung mit einem LCD-Display ergänzt (16x2).
Das Display kommuniziert mit Arduino über zwei Leitungen. Das ist dank des Display-Treibers FC-113 möglich. Der Treiber kann an das
Display angelötet werden.
Außer den vier Hauptkomponenten, dem Wasserstandsensor, AD-Wandler, LCD mit dem Treiber und Arduino, enthält die Schaltung keine
weiteren Bestandteile. Sie kann schnell aufgebaut und getestet werden. Bei Verwendung anderer Komponenten ist darauf zu achten, dass
die Spannungen angepasst sind. Hier können alle Teile der Schaltung mit 5 V problemlos arbeiten.
Schaltplan
Schaltplan
Testschaltung
Testschaltung
Bevor man mit Programmierung beginnt, muss man sich den I2C-Bus etwa genauer anschauen. In der Schaltung treten zwei Komponenten,
die an den Bus angeschlossen sind, auf. Das sind das Display und der AD-Wandler. Damit der Mikrocontroller erkennen kann, mit welchem
Schaltungsteilnehmer er gerade kommuniziert, müssen diese eindeutig gekennzeichnet werden. Dies geschieht mithilfe der Adressierung.
Jeder Bus-Teilnehmer bekommt eigene Adresse. So können alle an Bus angeschlossenen Komponenten eindeutig identifiziert werden. Im
Auslieferungszustand sind die busfähigen Geräte bereits vordefiniert. Tauch bei zwei Komponenten die gleiche Bus-Adresse auf, muss
mindestens eine Adresse geändert werden. In diesem Fall haben wir zwei unterschiedliche Adressen. Die Displayadresse lautet 0x27, die
vom Wandler 0x48. Damit sind hier keine weiteren Aktionen erforderlich.
In dem Programm müssen die von dem Sensor gelieferten Signale in den Wasserstand (gemessen in mm) umgewandelt werden. Die
Schwierigkeit bei der Aufgabe besteht darin, dass die Abhängigkeiten nicht linear verlaufen. Zusätzlich muss an dieser Stelle erwähnt
werden, dass es sich bei dem hier angewandten Wasserstandsensor keinesfalls um einen hochqualitativen Präzisionssensor handelt. So muss
man eventuelle Erwartungen an exakte Ergebnisse runterschrauben. Praktische Messungen ergaben folgende Kurve, die das Verhältnis der
Messwerte zu dem Wasserspiegel veranschaulicht:
Wasserpegel Diagramm
Da hohe Genauigkeit in dem Versuch nicht gefragt ist, wird anhand dieses Diagramms eine Wertetabelle, die näherungsweise
jedem Wasserpegel (+/- 1 mm) einen Messwert zuordnet, erstellt. Diese Tabelle dient dann der Ermittlung des aktuellen Wasserpegels.
Ein anderer Weg wäre, für die oben erstellte Kurve eine feste Formel zu ermitteln.
Die Werte werden dann in Programm in einer Liste untergebracht.
Sensor im Wasserbehälter
Das Programm
In dem Programm werden zwei Bibliotheken benötigt. Sie müssen vorinstalliert werden, damit das Programm funktioniert. Die
Bibliothek „LiquidCrystal_I2C.h“ erledigt die Aufgaben, die im Zusammenhang mit dem Display anfallen. Mit „Adafruit_ADS1015.h“ wird
Kontakt mit dem ADS115-Wandler aufgenommen.
Die empirisch ermittelten Werte sind in der Variable „Diagramm_Wert“ gespeichert. Einmal pro Sekunde wird der Wert des Sensors
abgefragt und mit diesen Werten verglichen.
// *******************************************************************************
// Wasserstand-Messung
// mit Wassersensor und AD-Wandler ADS1115
// Arduino Nano, IDE 1.8.13
// *******************************************************************************