Tiefbrunnenpumpen Steuerung – Teil 1

Zuletzt aktualisiert am:

Hallo und willkommen,

der heutige Blog Beitrag ist der Start zu einer mehrteiligen Serie, welche sich mit der Steuerung einer Tiefbrunnenpumpe mittels ESP32 und entsprechender Sensoren beschäftigt. Im Verlauf der Serie werden wir die vorhandene analoge/mechanische Steuerung der Tiefbrunnenpumpe aus Schwimmschalter und Schützschaltung mit Selbsthaltung durch entsprechende elektronische/digitale Komponenten ersetzen.

Im ersten Teil der Serie ersetzen wir die Schützschaltung durch einen ESP32 und ein Relais (KY-019), behalten jedoch erst einmal die Schwimmschalter zur Füllstandserkennung bei.

Im zweiten Teil der Serie ersetzen wir dann die Schwimmschalter durch einen Ultraschallsensor zur Füllstandsmessung.

Im dritten Teil der Serie erweitern wir den aktuellen Programmcode des ESP32 um einen Webserver. Mit diesem können wir dann den aktuellen Füllstand und den Status der Tiefbrunnenpumpe (läuft / läuft nicht) anzeigen. Zusätzlich werden wir eine Funktion implementieren, die es uns ermöglicht, die Tiefbrunnenpumpe über die Webseite des ESP32 ein- und auszuschalten.

Im vierten Teil der Serie erweitern wir dann die Schaltung noch um einen digitalen Durchflussmesser. Mit diesem können wir dann die aktuelle Fördermenge der Tiefbrunnenpumpe pro Minute und/oder Stunde anzeigen lassen. Hintergrund dieser Maßnahme soll sein, Grenzwerte für die dauerhafte Entnahme aus dem Brunnenschacht zu definieren, zu denen die Tiefbrunnenpumpe dann vorsichtshalber für eine Zeit x abgeschaltet wird. Damit wollen wir verhindern, dass bei allzu exzessiver Nutzung der Brunnen trocken läuft und die Tiefbrunnenpumpe einen Schaden davon trägt.

ACHTUNG – ACHTUNG – ACHTUNG

Im Verlauf dieser Serie werden wir mit Netzspannung 230V AC arbeiten. Hierzu ist es zwingend erforderlich, dass entsprechendes elektrotechnisches Fachwissen vorhanden ist. Die VDE 0100 (insbesondere Teil 410) und VDE 0470 müssen bekannt sein und beachtet werden. Die Regeln zum Arbeiten mit und unter Spannung müssen bekannt sein und zwingend eingehalten werden. Begriffe wie „Kleinspannung“, „Schutzklassen“ und „galvanische Trennung“ müssen bekannt sein. Andernfalls drohen ernsthafte Verletzungen und persönliche/körperliche Schäden bis hin zum Tod.

Wer mit solchen Arbeiten nicht vertraut ist, sollte an den entsprechenden Stellen eine Fachkraft hinzu ziehen. Ich weise ausdrücklich darauf hin, dass ich bei nicht Einhalten keine Haftung für entstandene Schäden, weder sachlicher noch körperlicher Natur, übernehmen werde!

Alternativ, anstelle der Netzspannung von 230V und der Tiefbrunnenpumpe, kann auch exemplarisch erst einmal mit 5V, einem 330 Ohm Vorwiderstand und einer Leuchtdiode gearbeitet werden. Ganz am Ende, wenn alles klappt, kann man dann mit Hilfe einer Elektro-Fachkraft die letzten Schritte zusammen abarbeiten.

Die bestehende Schaltung aus Schütz und Schwimmschalter

Die bisherige Schützschaltung
Fassinneres mit Schwimmschalter

Schaltplan der bisherigen Schützschaltung in vereinfachter Darstellung und vereinfachter Beschriftung



Die aktuelle analoge/manuelle Schaltung ist recht einfach gehalten. Wie man am Schaltplan erkennen kann, besteht diese nur aus zwei Schaltern (S1 als Öffner (oben rechts im Bild zu sehen) und S2 als Schließer) und dem Schütz. Sinkt der Wasserpegel im Fass weit genug ab, so schließt der Schalter S2. Das Schütz K1 zieht an, wodurch auch der Schließer K1.1 des Schützes schließt. Da dieser parallel zum Schalter S2 geschaltet ist, bleibt der Stromkreis geschlossen, selbst wenn S2 sich wieder öffnen sollte (steigender Wasserpegel) – dies nennt sich Selbsthaltung. Der Schließer K1.2 wird dadurch ebenfalls geschlossen und der Motor M1 der Tiefbrunnenpumpe fängt an zu laufen und das Fass mit Wasser zu füllen. Steigt der Wasserpegel weiter an, erreicht dieser irgendwann denn Schwimmschalter S1, welcher als Öffner verbaut ist. Der Wasserpegel drückt den Schwimmer von S1 nach oben, bis der Kontakt öffnet und damit den Stromkreis unterbricht.

Der neue Schaltungsaufbau auf dem Breadboard

Aufbau in Fritzing

Die Grafik oben zeigt den Aufbau der Schaltung in Fritzing. Zu beachten ist, dass beim realen Nachbau der ESP32 nicht über zwei Breadboards gesteckt werden kann – er ist etwas zu schmal. Damit man den ESP32 also entsprechend aufstecken kann, muss von einem der Breadboards die Spannungsleiste abgezogen werden. Anschließend kann man die Breadboards wieder voreinander stecken und der ESP32 lässt sich aufstecken.

Der Schaltungsaufbau auf dem Breadboard gestaltet sich recht einfach. Wir benötigen hierzu folgende Teile:

  • ESP32 Microcontroller
  • Breadboard Spannungsversorgung
  • Relais Modul KY-019
  • Klappschwimmschalter
  • Dupont Steckverbinder (M/M und M/F)

Für den Aufbau mit der Tiefbrunnenpumpe (beachtet bitte, wie auf dem Fritzing Bild zu sehen, dass das KY-019 Modul nicht mit auf dem Fritzing Board gesteckt ist. Das Modul führt beim Anschluss an 230V an einigen Lötkontakten auf der Unterseite Netzspannung. Die „räumliche“ Trennung dient dazu zu verhindern, dass es zu einem Übersprechen der Netzspannung auf das Breadboard kommt und damit zu Schäden an den Bauteilen oder das Netzspannung an offenen Bauteilen anliegt und es damit zu Stromschlägen kommen kann – es gelten die Warnhinweise aus der Einführung!)

  • 230V AC Schuko Stecker
  • diverse Kleinteile (Aderendhülsen, …)
  • Abisolierzange / Crimp-Zange
  • Flachzange / Seitenschneider

Alternativ mit LED und Vorwiderstand

  • LED 5mm
  • Vorwiderstand 330 Ohm

Den Signal-Pin des Relais (gelbe Leitung) schließen wir an GPIO23 des ESP32 an. Den +Pin des Relais führen wir an +5V (rote Leitung) und den -Pin des Relais auf GND (blaue Leitung). Das Relais hat ausgangsseitig drei Anschlüsse:
– COM (auch Feed genant – Commonly Connected – hier liegt die Versorgungsspannung an, die geschaltet werden soll) – Pin mittig
– NO (normaly open) – dient als „Schließer“. Im Ruhezustand des Relais ist dieser Pin offen und führt keine Spannung
– NC (normaly closed) – dient als „Öffner“. Im Ruhezustand des Relais ist dieser Pin geschlossen und führt die Spannung von COM

Den Schwimmschalter für den oberen Wasserpegel schließen wir mit einem Pin an GPIO22 an, mit dem anderen Pin an +3,3V.
Den Schwimmschalter für den unteren Wasserpegel schließen wir mit einem Pin an GPIO21 an, mit dem anderen Pin an +3,3V.

Der Sketch

// 2020-03-02 Brunnenpumpe V1
// (c) Markus Pohle @Creative Commons BY-NC-SA
// https://en.wikipedia.org/wiki/File:Cc-by-nc-sa_icon.svg
// 
// Brunnenpumpen Steuerung mittels Schwimmschalter

const int relayPin = 23;
const int upperWaterLevelSwitch = 22; 
int upperWaterLevelSwitchState = 0;
const int lowerWaterLevelSwitch = 21;
int lowerWaterLevelSwitchState = 0;
int pumpActive = 0;


void setup() {
  // Wir definieren einige Aus- und Eingabe Pins
  // die Eingabe Pins definieren wir als PULLDOWN!
  pinMode(relayPin, OUTPUT);
  pinMode(upperWaterLevelSwitch, INPUT_PULLDOWN);
  pinMode(lowerWaterLevelSwitch, INPUT_PULLDOWN);
}

void loop() {
  // hier lesen wir die Zustände der Schwimmschalter ein
  upperWaterLevelSwitchState = digitalRead(upperWaterLevelSwitch);
  lowerWaterLevelSwitchState = digitalRead(lowerWaterLevelSwitch);

  // wir prüfen die Zustände der Schwimmschalter
  // sind beide Schalter "unten", dann muss die Pumpe starten
  // das "Pumpe aktiv" Flag geht auf 1
  if (lowerWaterLevelSwitchState && upperWaterLevelSwitchState) {
    pumpActive = 1;    
  }

  if (!upperWaterLevelSwitchState) {
    pumpActive = 0;
  }

  if (!lowerWaterLevelSwitchState && upperWaterLevelSwitchState && pumpActive) {
    pumpActive = 1;
  }
  
  
  if (pumpActive) {
    digitalWrite(relayPin, HIGH);
  } else {
    digitalWrite(relayPin, LOW);
  }

}

Der Sketch ist relativ leicht verständlich. Nach dem Definieren der Variablen setzen wir in der setup() Routine die PIN-Modes unserer drei benötigten GPIO Pins. Der Relais Pin wird natürlich ein OUTPUT Pin, darüber wollen wir ja das Relais mit einer Trigger-Spannung versehen. Die GPIO Pins für die Schwimmschalter werden INPUT Pins. Hier nutzen wir aber noch eine Besonderheit. Wir definieren die Pins als sogenannte INPUT_PULLDOWN Pins (Erklärung was ein PULL-DOWN Widerstand ist). Dadurch ist sicher gestellt, dass die GPIO Pins immer einen definierten Zustand haben und nicht „flappen“. In der loop() Schleife lesen wir dann die Schwimmschalter aus und verproben über drei IF-Anweisungen, ob das Relais geschaltet werden muss oder nicht.

Fazit

Das war es auch schon mit der Einführung in die Tiefbrunnenpumpen Steuerung – gar nicht so kompliziert und nur wenige Bauteile und wenig Programm-Code sind nötig, um die „alte“ mechanische Schaltung zu ersetzen und Platz zu machen, für die schöne neue Welt des IoT und ihrer vielen Möglichkeiten.

Ich wünsche viel Spaß beim Nachbauen und Experimentieren. Für Fragen stehe ich gerne zur Verfügung.

Im nächsten Teil geht es dann weiter mit dem Umbau auf den Ultraschall Sensor.

Gruß
Markus Pohle

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.