Pumpensteuerung mit Konduktivsensor
Gegenstand des Projekts ist eine Pumpensteuerung für eine Zisterne oder einen Regenwassersammler.
Ich besitze eine 1m tiefe Betonzisterne mit einem Fassungsvermögen von 1m³, die mit Regenwasser vom Dach gespeist wird. Hier muss sicherstellt sein, dass diese nicht überläuft. Andererseits muss es möglich sein, gezielt Wasser abzupumpen, um dieses im Garten zu verrieseln oder Fässer zur allgemeinen Wasserentnahme zu füllen. Daraus ist dieses Projekt entstanden.
Kernstück der Anlage ist ein Steuergerät für eine Brunnenpumpe. Die Steuerung erfolgt mit einem ARDUINO Nano, dessen Firmware unter Visual Studio Code/PlatformIO auf der Arduino-Platform entwickelt wurde. Die Anzeigefunktion erfolgt über ein HD44780/1602 LCD-Display. Angeschlossen sind ein Konduktivsensor (Leitfähigkeitssensor), der über fünf Sonden in verschiedenen Wassertiefen, den Wasserstand im Behälter erfasst. Die Pegelstände werden angezeigt. Ein jahreszeitlich abhängiger Maximalpegel kann ausgewählt werden, der automatisch durch die Pumpensteuerung konstant gehalten wird.
Über zwei Taster EIN/AUS, kann die Pumpe manuell gesteuert werden, um Wassers gezielt zu entnehmen. Hier muss ein Trockenlaufen der Pumpe sicher unterbunden werden.
Ein weiterer Sensor überwacht die Temperatur und unterbindet bei Frostgefahr das Einschalten der Pumpe.
Eine Anpassung der Anlage, insbesondere des Konduktivsensors, an eigene Belange, ist mit wenig Aufwand möglich.
Die Gesamtanlage besteht aus vier Komponenten, die unten noch mal im Detail abgebildet sind. Die ersten drei Komponenten wurden von mir entwickelt und werden im Folgenden näher beschrieben. Komponente 4 ist eine Tauchpumpe und muss nach individuellen Gegebenheit ausgewählt werden.
Konduktivsensor
Der Konduktivsensor (Leitfähigkeitssensor) erfasst die Höhe des Wasserstandes im Behälter. Er nutzt dazu die elektrische Leitfähigkeit des Wassers aus, die bei Regenwasser im Bereich 30…70µS/cm beträgt. Das entspricht einem spezifischen Widerstand von ca. 15…33kOhmcm. Regenwasser ist also relativ „hochohmig“ im Vergleich zu Trink- oder gar Salzwasser. Dieser Umstand muss bei der Konstruktion des Sensors und insbesondere Messsystem berücksichtigt werden.
Bei meinen speziellen Gegebenheiten ist ein maximaler Wasserstand von 1m Höhe einzuhalten. Der Sensor wurde so konstruiert, dass gleichmäßig im Abstand von 200mm, der Wasserstand ermittelt werden kann. Das erfolgt mit 6 Edelstahlstäben (Levelsonden LV0 bis LV4) in entsprechend abgestufter Länge und einer Gegenelektrode, die GND-Potential führt. Diese ist genau so lang auszuführen wie LV0.
Alle Elektroden sind voneinander isoliert angeordnet, sodass jede zur GND-Elektrode einen annähernd unendlichen Widerstand aufweist. Sobald eine Sonde mit Wasser in Berührung kommt, reduziert sich der Widerstand zwischen dem Stab und der GND-Sonde schlagartig auf einen zweistelligen Kiloohmbetrag. Dieser Umstand wird ausgenutzt, um den Wasserstand zu erfassen.
Um in jedem Fall die Pumpe einzuschalten, wenn der obere Pegel erreicht ist, wird aus Redundanzgründen auch noch ein Schwimmerschalter eingebaut. Ein Pol wird mit auf die GND-Sonde gelötet, der andere Pol als sechste Signalleitung im Kabel herausgeführt. Der Schwimmerschalter ist etwas oberhalb der obersten Levelsonde LV4 zu platzieren.
Die Montage und Verklebung aller Teile, erfolgt in einer oberen Montageplatte. Zwei Spacer richten das Stabbündel korrekt aus und verhindern Kurzschlüsse. Das sind alles 3D-Druckteile aus ABS (PLA ist nicht für Einsatz im Wasser geeignet!) gefertigt und so konstruiert, dass das Wasser zwischen den Sonden zuverlässig und schnell ablaufen kann. Dieses Stabbündel wir in einem Schutzrohr montiert, dass aus mehreren kurzen HT-Rohren DN50 besteht. Montageplatte und Spacer werden dabei im Muffenbereich eingefügt. Nachdem die Rohre Stück für Stück zusammengesteckt wurden, wird das Rohr oben mit einem Muffenstopfen mit zentrischer Kabeldurchführung verschlossen. Hier wird das 7polige Kabel herausgeführt, dessen Drähte vor der Montage, an die jeweiligen Sondenstäbe angelötet wurden. Kurz unterhalb der Montageplatte sollten drei bis vier umlaufend verteilte Bohrungen in das HT-Rohr eingebracht werden, damit bei Wasserstandsänderung die Luft aus dem kompakten Sensorrohr entweichen bzw. zulaufen kann.
Am anderen Kabelende ist die Flanschbuchse anzulöten, mit der der Sensor mit dem Steuergerät verbunden wird. Die Verkabelung ist dem Stromlaufplan (Blatt 2) zu entnehmen.
Der Konvektivsensor ist im Abbpumpbehälter so zu positionieren, dass die unteren Stäbe nur wenige Zentimeter über dem Grund stehen. Die Kreiselpumpe ist entweder auf dem Boden aufzusetzen oder so einzuhängen, dass sie zwischen LV0 und LV1 noch sicher pumpt, ohne Luft zu ziehen.
Temperatursensor
Der Aufbau dieses Sensors ist relativ einfach. Verwendet wird ein digitaler Sensor vom Typ DALLES DS18B20 mit OneWire-Interface. Diese sind als wasserdicht gekapselte Version, mit Kabeln in verschiedenen Längen, erhältlich. Diesen habe ich fast bis zum anderen Ende eines 1m langes Alu-Rohr, mit 12mm Außendurchmesser, eingeschoben und die Öffnungen mit MS-Polymer-Kleber wasserdicht verschlossen. Dieser Kleber ist 100% wasserdicht, dauerelastisch und unempfindlich gegen Umwelteinflüsse.
Es ist zweckmäßig, den T-Sensor mittels 12mm-Rohrclips, am Rohr des K-Sensors zu befestigen.
Auch hier wurde am Kabelende eine Flanschbuchse entsprechend Schaltplan (Blatt 2), angelötet.
Pumpensteuerung
Die Schaltung ist auf einer Leiterplatte aufgebaut und wird in ein Kunststoffgehäuse montiert. Zunächst werden alle SMD-Bauelemente bestückt, dann die Durchsteckbauelemente. Das LCD-Display wir über 4 Abstandhülsen und M2,5-Schrauben auf dem PCB befestigt und die 4pol. Stiftleiste direkt eingelötet. Der Jumper für die Hintergrundbeleuchtung muss gesetzt werden. Der Regler für die Kontrasteinstellung ist von der Rückseite her über eine Bohrung zugänglich. Der ARDUINO Nano wird über einen Buchsenleistensockel eingesteckt. Das ermöglicht auch ein separates flashen.
Die Verbindung zu den Flanschsteckern und den Tastern erfolgt über Micromatch-IDC-Buchsen.
Eingangsseitig werden die Sonden- und Schwimmerschaltersignale an invertierende CMOS-Schmitt-Trigger-Gatter geführt. An deren Ausgängen stehen dann saubere Digitalpegel zur Verfügung. Unter Umgehung des ARDUINO, wird das Schaltersignal vom Schwimmerschalter zusätzlich direkt an die Relaisschaltstufe geführt. Damit wird sichergestellt, dass bei eventuellem Ausfall der Mikrocontrollersteuerung, in jedem Fall bei oberer Pegelüberschreitung die Pumpe eingeschaltet wird. In diesem Fall leuchtet die rote LED.
Die beiden Taster EIN/AUS (On/Off) schalten die Pumpe manuell in die entsprechende Betriebsart. Werden beide Taster gleichzeitig gedrückt, wird zwischen Sommer- und Winterbetrieb umgeschaltet. Das Schaltsignal für das Pumpenrelais wird über eine Transistorschaltung zugeführt. An der zweipoligen Klemme steht der Relais-Schaltkontakt für die Pumpe zur Verfügung.
Die Anbindung von Konduktiv- und Thermosensor erfolgt über zwei Flanschstecker, die im Gehäuse eingebaut sind. Sie sind ebenso, wie die Taster, am anderen Ende mit IDC-Wannensteckern verbunden. Damit erfolgt die Kontaktierung auf dem PCB. Die Betriebsspannung von 5VDC/0,5A muss extern bereitgestellt werden.
Das Kunststoffgehäuse hat die Schutzart IP67. Es sind entsprechende Durchbrüche für Flanschbuchsen (1), Kabeldurchführungen für Pumpenschalter (2) und Betriebsspannungszuführung (3), Taster (4) sowie Sichtfenster (5) vorzunehmen. Das Fenster aus Acrylglas, wird vollumfänglich mit dem Deckel verklebt.
Firmware und Funktionsbeschreibung
Die Firmware wurde mit Visual Studio Code/PlatformIO im ARDUINO-Framework für den ARDUINO NANO erstellt.
Nach dem Betriebsspannungszuschaltung erfolgt zunächst die Anzeige eines Einschaltscreens mit der Versionsnummer der Firmware. Nach drei Sekunden wird der Informationsbereich angezeigt. In der oberen Zeile links erscheinen jetzt symbolhaft die fünf Zisternenabschnitte, die von den Sonden erfasst werden. Der jeweilige Füllstatus wird durch leere bzw. gefüllte Rechtecke symbolisiert. Daneben befindet sich das Zeichen für den Pumpenstatus. Ein senkrechter starrer Balken „|“ zeigt an, dass das Pumpenrelais inaktiv ist (Pumpe aus). Bei eingeschaltetem Relais wird hier ein animiertes Symbol angezeigt.
Unmittelbar neben diesem Zeichen wird das Symbol für die aktuelle Wassertemperatur im Behälter ausgegeben. „*“ bedeutet OK. Zwei Ausrufezeichen „!!“ hingegen, weisen auf Frostgefahr hin und die Pumpen- und Tastenfunktionen sind deaktiviert. Die Grenzemperatur ist 2°C. Ganz rechts wird die Wassertemperatur in der Zisterne angezeigt.
In der unteren Zeile erscheint ein Bedienmenü für die manuelle Tastersteuerung. Links befinden sich der EIN-Taster „On“, rechts der AUS-Taster „Off“. Werden beide Taster gleichzeitig gedrückt, so erfolgt die Umschaltung zwischen Sommerbetrieb „S“ und in den Winterbetrieb „W“.
Im Sommerbetrieb wird der Wasserstand an der obersten Levelsonde LV4 geregelt. Im Winter soll der Stand auf einem tieferen Niveau gehalten werden. Hier wird auf der Höhe von Sonde LV2 geregelt. Das verhindert maßgeblich das Einfrieren des verbliebenen Wassers.
Wurden keine Tasten gedrückt, erfolgt dies Regelung des Wasserstandes am jeweils eingestellten oberen Niveau. Sobald dieses erreicht ist, schaltet die Pumpe ein. Um Schaltschwingungen um den Schaltpunkt zu vermeiden, wird die Pumpe erst nach einer Nachlaufzeit von 60s wieder abgeschaltet (zeitliche Hysterese).
Um ein Überlaufen bei eventuellem Versagen der Regelung in jedem Fall zu vermeiden, schaltet der Schwimmerschalter das Pumpenrelais, unter Umgehung des Mikrocontrollers, auch direkt. In diesem Fall wird die rote LED aktiv.
Um der Zisterne gezielt Wasser zu entnehmen, werden die beiden Taster On/Off verwendet. „On“ schaltet das Pumpenrelais an. Ist die gewünschte Wassermenge entnommen, wird über „Off“ die Pumpe wieder abgeschaltet. Unterschreitet der Wasserpegel das Niveau von Levelsonde LV1, tritt wieder die Automatikfunktion in Kraft und schaltet nach 60s die Pumpe ab. Ein erneutes Drücken von „On“ schaltet die Pumpe jetzt für 60s erneut ein. Das kann solange wiederholt werden, bis die Pumpe Luft zieht.
Neben dem Download der Projektunterlagen, über unten stehenden Link, ist auch das Repository, in der aktuellen Version, über meinen GitHub-Account abrufbar.
