-
Notifications
You must be signed in to change notification settings - Fork 7
Tank Füllstände auslesen
In einem Caravan gibt es in der Regel zwei Tanks, den Frischwassertank und den Fäkalientank der Toilette. In meinem Caravan sind für beide Tanks bereits entsprechende Füllstandsanzeigen vorhanden. Diese möchte ich jedoch ebenfalls über den CaravanPi zugreifbar haben.
Der Füllstand im Frischwassertank ändert sich, wenn ein Wasserhahn oder die Toilette betätigt wird (Die Toilette erhält ihr Spülwasser in meinem Caravan über den Frischwassertank). Dann nämlich läuft die Pumpe an und pumpt Wasser aus dem Tank. Die Füllhöhe reduziert sich. Dieses "Signal" möchte ich im CaravanPi verwenden, um eine Messung zu veranlassen. Das gleiche Signal, also das Betätigen der Spülung, kann dann auch verwendet werden, um den Füllstand im Fäkalientank zu messen. Da nicht alle Fäkalientanks über den Frischwassertank versorgt werden, habe ich für die Messung des Füllstands im Fäkalientank zwei Python Skripte "im Angebot", ein dauernd laufendes, durch Spülung zur Messung aktiviertes und eines, das einfach regelmäßig über die crontab aktiviert wird.
Und natürlich soll zum Start des CaravanPi eine Messung erfolgen.
Im Frischwassertank ist der übliche Füllstandssensor mit den unterschiedlich langen Metallstäben verbaut. Diese Füllstandssonde von Schaudt liegt an einer Füllstandsanzeige ebenfalls von Schaudt an. An der Anzeige ist ein Taster, der die Messung veranlasst und den Füllstand über LEDs anzeigt. Diese vorhandene Installation wollte ich nicht verändern. Ich habe lediglich gemessen, welche Spannung am Speisestab anliegt, wenn die Messung über das Schaudt Display angestoßen wird. Bei mir sind das ca. 4,3 V. Die Füllstandssonde habe ich über einen ULN2003 Chip "angezapft" und ausgelesen. Zu beachten ist, dass die Installation des Caravan die Schaltung des CaravanPi nicht beeinflussen oder gar zerstören kann. Zudem sollte auch die Messung über den CaravanPi so funktionieren, dass nur bei der Messung am Speisestab eine Spannung anliegt.
Im Fäkalientank gibt es einen Schwimmer mit Magneten, der über REED-Kontakte ausgelesen wird. Bei mir sind dies zwei Messwerte: fast voll und VOLL! ich möchte insgesamt vier Messwerte am Toilettentank verbauen. Dazu muss der Weg des Schwimmermagnete ermittelt werden und die neuen Reed-Kontakte müssen entsprechend angebracht werden. Dies sollte sich als etwas schwieriger als angenommen herausstellen.
Das Skript soll nach folgendem Algorithmus arbeiten:
- Pumpe läuft an
- Nach dem letzten Anlaufen der Pumpe abwarten, bis sich alles beruhigt hat (ca. 5 Minuten)
- Messung starten
- Werte anzeigen
- Warten bis zum nächsten Start der Pumpe
Um den Speisestab nur dann unter Spannung zu setzen, wenn eine Messung gemacht werden soll, verwende ich ein Relais, das von einem GPIO Port angesteuert wird. Die Signale von den Füllstandssensoren (Stäbe) sowie den Relais-Kontakt lege ich dabei auf die noch freien GPIO Kontakte der beiden MCP23017 GPIO Expander. Um die Signale der Füllstandssensoren zu verstärken, nutze ich einen ULN2003.
Die Pumpe wird über 12 V angesteuert. Die Zuleitung der Pumpe lege ich ebenfalls über den ULN2003 auf einen GPIO Port am Raspberry, um dort einen Interrupt aktivieren zu können.
Das Auslesen der Input Pins sowie das Anteuern des Relais Ports am MCP23017 erledige ich über die Adafruit Bibliothek für den MCP23017.
Adafruit bietet einen Bibliothek zum Auslesen des MCP23017 an. Um diese zu installieren führen wir nachfolgendes Kommando aus:
sudo pip3 install adafruit-circuitpython-mcp230xx
siehe hierzu auch
- https://learn.adafruit.com/using-mcp23008-mcp23017-with-circuitpython/python-circuitpython
- https://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi/using-the-library
Am Frischwassertank setzen wir eine kleine Platine ein, die die Ansteuerung des Speisestabs sowie das Auslesen der Messstäbe übernimmt.
Das Sondenkabel ist dabei so anzuschließen, dass es an den 5-poligen Klemmen wie folgt anliegt:
- Klemme 1: niedrigstes Fülllevel (längster Prüfstab)
- Klemme 2: nächstes Fülllevel
- Klemme 3: nächstes Fülllevel
- Klemme 4: höchstes Fülllevel (kürzester Prüfstab)
- Klemme 5: 5 V Spannung (zweiter langer Stab)
Die Platine sieht bei mir so aus:
Die Anzahl der pro Fülllevel im Tank enthaltenen Liter wird in der Datei ~/CaravanPi/defaults/tankDefaults1 gespeichert. Die Datei enthält vier Zeilen. Jede Zeile enthält die Anzahl der Liter für das erreichte Fülllevel. Die erste Zeile enthält die geringste Literzahl, die vierte Zeile die höchste Literzahl.
Über git pull im Verzeichnis CaravanPi werden auch die Skripte für die Füllatandsermittliung in das Verzeichnis ~/CaravanPi/levels geladen. Über die Konfigurationswebsite werden die Literangaben zu den unterschiedlichen Füllsstandsleveln konfiguriert.
Für einen Funktionstest muss die Zusatzplatine an die CaravanPi Platine oder das Breadboard entsprechend angeschlossen werden. An die Sondenkabel Klemmen ist dann ein Prüfkabel anzuschließen. Ich habe dieses so angefertigt:
Schließlich wird noch eine 12 V Quelle benötigt (zum Testen sind auch 5V ausreichend), die über einen Taster an die Klemmen zur Pumpe angeschlossen wird.
Läuft nun das entsprechende Skript, so wird nach einem initialen Auslesen ein nächster Lesevorgang durch betätigen des Tasters am "Pumpenanschluss" gestartet. Nach Betätigen des Tasters wird jedoch noch 30 Sekunden gewartet, bis das Sondenkabel ausgelesen wird. Dis dient zur Beruhigung des Wasserstands im Tank.
Je nach Wasserstand sollten nun die entsprechenden Füllwerte angezeigt bzw. in der Datendatei im Verzeichnis Level abgelegt werden.
Der Dometic Fäkalientank enthält einen Schwimmer mit einem Magneten. Dieser spricht zwei Reed-Kontakte an, die im Toilettengehäuse verbaut sind. Die original Dometic Reed Kontakte sind so angeordnet, dass sich ihre Reichweite gerade nicht überlappt. Daher geht die originale Füllstandaanzeige der Toilette von einem zum anderen Füllstand nahtlos über.
Auf den beiden Fotos sieht man die verbauten Reed-Kontakte und deren Anordnung im Gehäuse und zum Fäkalientank.
Die Einbau Positionen der Reed-Kontakte sind leider so, dass der Mittelpunkt der Drehbewegung des Schwimmers nicht zweifelsfrei ermittelt werden kann (ist wohl Absicht :-). Daher habe ich die Drehbewegung und damit den Mittelpunkt über den Tank ermittelt und mithilfe einer Klarsichtfolie auf das Gehäuse bzw. die Aufnahme des Tanks übertragen. Bei meinem Dometic Tank ergibt sich die Bemaßung so:
Die original verbauten Reed Kontakte melden erst bei einem sehr hohen Füllgrad und dann, wenn der Tank voll ist. Ich möchte mindestens einen weiteren Wert haben. Ich sehe vier Kontakte vor.
Der Testaufbau sieht so aus:
Mit einem Magneten, der an den Reed Kontakten vorbeigeführt wird, kann das entsprechende Skript nun getestet werden.
Den Einbau der Kontakte habe ich folgendermaßen erledigt: <ggf. 3D-Druck Teile notwendig> <wird erst erledigt, wenn Caravan aus Winterquartier zurück>
CaravanPi - smart Caravan based on Raspberry Pi
(c) Josef Spitzlberger, Schloss Lustheim, Munich, Germany, 2019ff
CaravanPi Wiki
- Testaufbau
- Raspberry Pi OS installieren und initial konfigurieren
- MagicMirror installieren
- CaravanPi Skripte installieren
- MagicMirror vorbereiten & updaten
- OBSOLET V2 - Bottle Framework installieren
- Ein-/Aus-Schalter installieren
- Bewegungsmelder installieren
- Hupe/Buzzer installieren
- weitere Taster installieren
- OBSOLET V2 - Konfigurations-Website einrichten
- Temperatur Sensoren installieren
- Temperatur Sensoren anzeigen
- Gasflaschenwaage HX711 installieren
- Gasflaschenfüllstand anzeigen
- mehrere Gasflaschen Waagen anschließen
- I2C-Bus einrichten
- Klimasensor installieren
- Klimasensor BME280 anzeigen
- Klimasensor BME680 anzeigen
- GPIO Ports mit MCP23017 erweitern
- Lage-Sensor installieren
- Lage-Sensor anzeigen
- I2C Extender - langes Kabel
- Tank-Füllstände auslesen
- LEDs zur Lageanzeige
- RGB-LEDs am MCP23017 betreiben
- LED Einbau im Testaufbau
- Caravan ausrichten im Testaufbau
ab hier altes WIKI, muss noch umgezogen werden
XX = in Bearbeitung NEU = neue Funktion in letzter Version
- Stromversorgung Grundsätzliches
- Testgerät bauen
- Verkabeln am Caravan
- Gasflaschen-Waage bauen
- LEDs am Caravan anbringen
- Temperaturfühler im Kühlschrank anbringen
- Klimasensoren innen & außen anbringen
- Stromversorgung Raspberry Pi
- Stromversorgung Monitor
- WLAN im Caravan
- CaravanPi in Betrieb nehmen
- Gasflaschenwaage in Betrieb nehmen
- Defaultwerte für Lage, etc eintragen
- NEU XX Vorüberlegungen
- NEU XX MariaDB installieren
- NEU XX CaravanPi Datenbank anlegen
- NEU XX phpmyadmin installieren
- NEU XX Grafana installieren
- NEU XX Grafana auf MagicMirror anzeigen
- NEU XX Pythonzugriff auf MariaDB
- NEU XX Problembehandlung MariaDB, Grafana
- NEU XX Vorüberlegungen
- NEU XX Flask installieren
- NEU XX Status-Website einrichten
- NEU XX vorhandene Websites migrieren
- NEU XX 230V Eingang prüfen
- NEU XX 12V Batterie prüfen
- NEU XX Gassensor