Header image Ingenieur, Vater, Heimwerker, Problemlöser

18 Mai, 2016

Pumpencheck

TL;DR:

In meinem Keller gibt es einen Pumpensumpf, in dem sich Regenwasser und Grundwasser sammelt und durch eine Pumpe mit Schwimmschalter abgepumpt wird. An regnerischen Tagen steigt dort der Wasserpegel, der Schwimmschalter löst aus und das überschüssige Wasser wird abgepumpt. In der Theorie optimal, doch was wenn die Pumpe umkippt, kaputt geht oder verstopft? Dann staut sich das Wasser an und dringt in den Keller ein. Um das zu vermeiden habe ich mir ein Monitoring-System gebaut, welches die Pumpe im Fehlerfall auch abschalten kann.

Die Idee ist recht simpel: Zwischen Steckdose und Pumpe wird der Stromverbrauch kontinuierlich gemessen. Steigt dieser an, ist die Pumpe aktiv, sinkt er, ist die Pumpe aus. Somit muss die Pumpe selbst nicht modifiziert werden und kann in ihrem wasserdichten Gehäuse bleiben. Über ein Relais kann dann die Stromzufuhr zur Pumpe unterbrochen werden.

pumpencheck

Zur Steuerung habe ich das Wemos D1 Mini Development Board verwendet, damit ich Messpunkte direkt in meine InfluxDB pumpen kann, um es so in Grafana zu visualisieren.

Der Sensor ist ein ACS712, den es für ein paar EUR bei eBay gibt. Ich habe die 20A Variante gewählt, was sich als etwas unklug erwiesen hat. Meine Pumpe verbraucht 220W, also ca. 1A. Am Ausgang vom Sensor liegen 2.5V ohne Last an und jeweils 0.1V pro 1A Last. Ist die Pumpe in Betrieb, liegen also ca. 2.6V an. Bei der 5A-Variante des Sensors wäre die Auflösung viel größer. Zudem ist der Sensor nicht sehr akkurat und der USB-Charger, sowie die Grundlast der Pumpe beeinflusst den Sensor ebenfalls. Dies musste ich Codeseitig kompensieren.

Ursprünglich wollte ich für die Stromversorgung einen kleinen LiPo-Akku verwenden, doch hatte ich noch einen alten, kleinen USB-Charger übrig, der perfekt in das Gehäuse passte. Somit ist das Gerät auch für den Dauerbetrieb geeignet und erfordert keinerlei manuellen Eingriff mehr.

Problematisch war noch das Relais, das ich verwenden wollte. Es schaltete erst ab 5V, der ESP8266 liefert aber 3.3V als HIGH Pegel. Mit etwas Hilfe von meinem Elektronik-Mentor war das Problem aber schnell behoben :)

Alles verklebt, verlötet und verschraubt sieht das Innenleben nun wiefolgt aus: pumpencheck

Der Code ist recht übersichtlich. Beim Start werden 30 Messwerte im Abstand von 0.5 Sekunden vom Sensor entnommen und davon dann den Mittelwert gebildet. Dieser Wert ist fortan der Richtwert für Pumpe aus. Weicht der Messwert 10 Einheiten von diesem Wert ab, läuft die Pumpe.

Länger als 10 Minuten sollte die Pumpe nicht laufen. Läuft sie länger, liegt irgend ein Problem vor (Pumpe umgefallen/verstopft, Schwimmschalter kaputt, ...). Ist das der Fall, schaltet das Relais die Stromzufuhr für 30 Minuten ab und versucht es dann erneut.

Alle Aktionen (Pumpenaktivität, Notabschaltungen) werden als Messwerte in einer InfluxDB gespeichert. Als zusätzlicher Aktivitätsindikator habe ich noch eine LED eingebaut.

pumpencheck

Feineinstellungen am Code kann ich nun übrigens bequem vom PC aus per Over The Air Update durchführen und muss nicht mit einem Kabel in den Keller :)