Skip to content

Tank Füllstände auslesen

Josef Spitzlberger edited this page May 13, 2021 · 22 revisions

Tanks im Caravan

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.

Logik der Messung über den CaravanPi

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.

Frischwassertank

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.

Fäkalientank

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.

Ablauf der Messung

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

Elektrische Umsetzung

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.

Installation

Adafruit Bibliothek für MCP23017 installieren

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

Frischwassertank Sensor anzapfen

Am Frischwassertank setzen wir eine kleine Platine ein, die die Ansteuerung des Speisestabs sowie das Auslesen der Messstäbe übernimmt.

CaravanPi - ULN2003

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:

CaravanPi - Platine

CaravanPi - Platine

Konfiguration

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.

Skripe

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

Funktionstest

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:

CaravanPi - Frischwasser Testkabel CaravanPi - Frischwasser Testaufbau

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.

Fäkalientank anzapfen

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.

CaravanPi - Platine

CaravanPi - Platine

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:

CaravanPi - Platine
CaravanPi - Platine
CaravanPi - Platine

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: CaravanPi - Fäkalientank Testaufbau CaravanPi - Fäkalientank Testaufbau Rückseite

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 Wiki

1 Installationsanleitung

2 Bauanleitung

Grundaufbau

Sensoren, etc. installieren

Anzeigen installieren

Raspberry stabilisieren

Platine entwerfen

3 ursprüngliche Entwicklung

4 Dokumentation

5 Updates

ab hier altes WIKI, muss noch umgezogen werden

XX = in Bearbeitung NEU = neue Funktion in letzter Version

Einbau im Caravan

Inbetriebnehmen und Kalibrieren

CaravanPi Updates

Erweiterungen

Grafische Auswertungen

Statuswebsite

weitere Sensoren

Clone this wiki locally