Bewässerungscomputer

-Irrigation Control-

Controller

Warum einen Bewässerungscomputer?

Jeder Gartenbesitzer kennt das: Kaum steigen die Temperaturen fängt das gleiche Spiel an - Abends wollen die Pflanzen mit Wasser versorgt werden - also Gießkannen schleppen, Schlauch rausholen, Rasensprenger anschließen.

Das mag bei einem kleineren Grundstück mit anspruchslosen Pflanzen noch gehen.
Wenn das Grundstück jedoch etwas größer ist und/oder wie in meinem Fall Sandboden vorherrschend ist, artet das in Arbeit aus. In heißen Sommern sind 1-2h jeden Abend keine Seltenheit. Zudem stören die überall und den ganzen Sommer über herumliegenden Schläuche empfindlich das Ästhetikempfinden mancher Ehefrau.

Eine Verbessserung brachte da schon das vor Jahren angeschaffte Sprinklersystem, das zumindest die Beete mit einer angemessenen Wassermenge versorgt, jedoch immer noch per Hand an den Schlauch angeschlossen werden musste. Da die Pumpe bzw. der angeschlossene Brunnen jedoch nicht alle Beete parallel bespritzen kann, muss nach jedem Beet immer noch umgesteckt werden - wieder Zeit weg.

Letztlich musste eine Lösung her, dies zu automatisieren.

Das hier vorgestellte System basiert auf einem Steuerrechner, der abhängig von verschiedenen Parametern Magnetventile und eine Pumpe ansteuert und damit einen manuellen Eingriff in die Gartenbewässerung weitestgehend unnötig macht. Der Zeitgewinn ist enorm.
Zu diesem Zweck sind über PE-Rohre strategisch sinnvolle Ecken des Garten mit einem Hydranten ausgestattet, die über Magnetventile, die sich verdeckt in Schächten befinden, aktivieren lassen. An diese Hydranten werden dann die Sprinklersysteme für die einzelnen Beetgruppen angeschlossen.
Die Steuerung der Ventile übernimmt der hier dargestellte Controller.

Derartige Steuerungen sind natürlich nicht neu und auch käuflich zu erwerben. Allerdings haben die Geräte, die halbwegs bezahlbar sind, meine Bedürfnisse nicht befriedigen können - also stand eine Eigenentwicklung an.
Rohre, zugehörige Hardware und Ventile sind Standard-Ware. In meinem System habe ich 3/4"-Rohre (25mm) und 1" Ventile verwendet - der Durchfluss ist absolut ausreichend und ein signifikanter Druckabfall ist nicht erkennbar.

Das System

Das System basiert im Kern auf einem Steuerrechner rund um einen Microcontroller vom Typ PIC 16F690. Dieser übernimmt die Ansteuerung eines 4-zeiligen Standard-Displays, die Auswertung von 6 Tasten zur Bedienung sowie die Aktivierung der Magnetventile über konventionelle Relais. Das System ist mit einer batteriegepufferten Echtzeituhr ausgestattet.
Optional lassen sich ein Feuchtesensor und ein Schaltkreis zum Ein- und Ausschalten einer Pumpe anschließen.
Es sind 4 unabhängige Bewässerungskreise plus ein eigener Kreis für ein Nachfüllsystem vorgesehen.

Dieses Nachfüllsystem überwacht den Wasserpegel in einem angeschlossenen Reservoir und füllt dieses bei sinkendem Wasserpegel automatisiert wieder bis zum Nennfüllstand auf. - In meinem Fall ein Reservoir für einen Bachlauf, der naturgemäß im Sommer durch Verdunstung, spielende Kinder und sich "selbst versorgende" Pfanzen schneller entleert wird, als man händisch nachfüllen kann.
Der Microcontroller ist in Assembler programmiert - die Software kann weiter unten als Quelltext und assemblierter HEX-Code geladen werden.

Die Elektronik wurde auf zwei Platinen aufgeteilt - der eigentliche Steuerrechner bildet mit dem Display ein Sandwich, welches problemlos an der Frontplatte montiert werden kann. Über Flachbandkabel wird der "Leistungsteil" angeschlossen, der im Wesentlichen Netzteil und Relais beherrbergt. An diesem Teil werden auch sämtliche Anschlüssse zur Außenwelt (Magnetventile, Feuchte- und Wasserstandssensor, Pumpenrelais) über Schraubklemmen angeschlossen.
Die eingesetzten Magnetventile stammen von der Fa. Hunter und arbeiten mit 24V Wechselstrom. Der benötigte 24V Trafo ist nicht Bestandteil des Platinenlayouts und wird separat montiert. (in den Bildern rechts oben)
Im Prototypen kam ein Stahlblechgehäuse mit aufklappbarer Frontplatte zum Einsatz.

ElektronikElektronikBedienteilGehäuse

Die Hardware selber ist ohne große Geheimnisse. Der Controller steuert über ein 4-Bit Interface das Display an, fragt über 3 Bit und eine Dioden-Matrix die Tasten ab und wertet die über Komparatoren aufbereiteten Sensor-Signale aus. Im Falle des Wasserstands-Sensors (Refill-System) geht es dabei nur um ein on/off Signal, im Falle des Feuchtesensors wird die Frequenz über den internen Timer 1 gemessen.
Die Realtime-Clock (DS 1307) wird über ein I2C Interface angesprochen, welches per Software emuliert wird.
Ebenso an dieses I2C Interface angeschlossen ist ein Port Expander vom Typ PCF8574, der die mehr oder weniger statischen Signale für die Relais, die Pumpensteuerung und die Versorgungsspannung der beiden Sensoren liefert. Das Netzteil ist absolut konventionell mit Linearregelung ála 7805 aufgebaut.

Von außen zugänglich ist ein Trimmpoti zur Kontrasteinstellung des Displays. Eine rote LED signalisiert einen Fehlerzustand.

Feuchtesensor

Um eine halbwegs bedarfsgerechte Bewässerung zu ermöglichen und auszuschließen, dass die Sprinkleranlage mittem im schönsten Sommerregen anspringt, ist das System optional mit einem Feuchtesensor ausgestattet. Dieser wird an repräsentativer Stelle in den Gartenboden gesteckt und ermittelt, ob eine Bewässerung sinnvoll ist oder nicht.
Der von mir vorgesehene Sensor arbeitet kapazitiv, macht sich also die Tatsache zunutze, dass feuchte Gartenerde eine andere Dielektrizitätskonstante besitzt als trockene. Der Sensor liefert ein Wechselspannungssignal, dessen Frequenz abhängig vom Wassergehalt der Erde ist -das ermöglicht längere Kabelverbindungen zwischen Sensor und Steuerrechner. Der Sensor wird nur während der Messungen mit Strom versorgt und ist in der übrigen Zeit ausgeschaltet.
Nach einigen Fehlversuchen mit CMOS-Gattern hat sich ein Schaltkreis basierend auf dem altbekannten NE555 (Update siehe unten, nun TLC555) entwickelt. Hauptgrund hierfür ist die sehr geringe Temperaturunempfindlichkeit und weitgehende Immunität gegenüber Versorgungsspanungs-Varianzen.
Die Sensorbaugruppe liefert ein Rechtecksignal zwischen ca. 20KHz (feucht) und 40KHz (trocken). Der angeschlossene Steuerrechner kann Frequenzen bis 65KHz und ein Delta zwischen feucht und trocken von 25kHz verarbeiten. Die absolute Frequenz ist dabei nachrangig, da der Steuerrechner auf den jeweiligen Sensor und die Umgebungssituation (Erde) kalibriert wird.
Feuchtesensor
Nach der Bestückung der Platine wird auf den kapazitiven Aufnehmer (die beiden breiten Leiterbahnen) ein unkaschiertes Platinenmaterial mit Epoxidharz aufgeklebt. Anschließend wird der obere Sensor-Teil in Epoxidharz eingegossen - das sichert eine sehr gute Wasserdichtigkeit. Das Kabel ist in meinem Fall mit einer Steckverbindung ausgestattet, die sich innerhalb einer gedrehten Aluminiumhülse mit Überwurfmutter befindet - dadurch lässt sich der Sensor problemlos entfernen bzw. austauschen. Unbedingt erforderlich ist das nicht, wer das hier nachbauen will und mag, kann den Sensor direkt an das Kabel zum Steuerrechner anlöten und die Lötstelle mit Schrumpfschlauch abdichten.

Update 2015:
Nach einiger Betriebszeit hat sich herausgestellt, dass die bisherige Sensorelektronik einen recht hohen Temperaturdrift aufweist. Das lag allerdings weniger am eingesetzten NE555 sondern vielmehr am Sensor selber, also der Kapazität und führte zu teilweise erheblichen Abweichungen des dargestellten Messwertes, je nachdem bei welchen Temperaturen gemessen wurde.
Der Sensor wurde also überarbeitet und mit einer Temperaturkompensation ausgestattet. Das Prinzip ist gleich geblieben, nur wurde ein passender NTC ergänzt, dessen Wert nach zig Messreihen passend zum Rest der Schaltung ermittelt wurde. Im Bereich von 15... 30 Grad Celsius beträgt die Abweichung nun weniger als 1% - zumindest bei den hier vorliegenden Bodenverhältnissen.
Bei der Gelegenheit wurde auf den TLC555 (CMOS-Version) gewechselt und das Layout der Sensorfläche überarbeitet. Schaltplan und Layout siehe Anhang entsprechen der aktuellen Version, das Bild ober stellt noch die alte Version dar.

Pumpenmodul

Vorgesehen ist auf Seiten des Steuerrechners ein Ausgang, mit dem sich ein Masterventil oder - wie in meinem Fall - eine Pumpe schalten lässt. Die Pumpe wird dann nur eingeschaltet, wenn tatsächlich Wasser befördert werden muss. Das kann selbst dann sinnvoll sein, wenn die Pumpe selber eine Steuerelektronik besitzt, da somit bei längerer Abwesenheit ausgeschlossen ist, dass die Pumpe bei Schlauchbruch ungeniert Wasser befördert...
Das Modul selber ist trivial aufgebaut. Das 5V Signal vom Steuerrechner triggert zwecks Potentialtrennung ein Solid State Relais, welches im Umkehrschluss ein konventionelles 230V Leistungsrelais ansteuert. Die ganze Elektronik ist in ein Stecker-Zwischengehäuse eingebaut und mit einer Kontroll-LED ausgestattet.
PumpensteuerungPumpen-Elektronik

Wasserstandssensor

Für das Nachfüllsystem kommt ein sehr einfacher Wasserstandssensor zum Einsatz.
Es handelt sich um zwei Edelstahldrähte, die im Abstand von ca. 1cm auf dem gewünschten Wasserpegel in das Reservoir tauchen.
Im Bereich des Kabelanschlusses ist der Sensor in Epoxidharz vergossen.
Das Prinzip beruht auf der Leitfähigkeit von Wasser - tauchen die Sensorenden in das Wasser ein, ist der Widerstand geringer als in freier Luft. Über einen Spannungsteiler und nachgeschalteten Komparator wird dem Steuerrechner so mitgeteilt, wann der Pegel erreicht ist.
Dadurch, dass dieser Sensor nur sehr kurz während der Messung mit Gleichstrom beaufschlagt wird und sonst stromlos ist, sind Auswirkungen von Korrosionseffekten vernachlässigbar. Alternativ lässt sich hier auch ein industriell gefertigter Pegelschalter einsetzen, der einen Kontakt schließt, wenn der gewünschte Pegel erreicht ist.
Wasserstandssensor

Ventil-Installation

Wie schon geschrieben verschwindet die gesamte Installation der Ventile und Rohre im Garten unter der Erde. Die Ventile selber befinden sich in Revisionsschächten, die in meinem Fall aus zusammengeschraubten Betonelementen bestehen und mit Betonplatten (begehbar) abgedeckt sind.
Hier ein Foto von einem solchen Schacht, die Ventile sind hier noch nicht elektrisch angeschlossen. Links die Wasserleitung von der Pumpe (Eingang), rechts die Ausgänge in die Bewässerungskreise. Man erkennt auch die Leerrohre, über die später die Steuerleitungen eingezogen wurden.
Ventile


Software

Es soll hier nicht auf die Details der Software-Umsetzung an sich gehen, sondern ein kurzer Überblick über die Bedienung und die Anzeige gegeben werden.
Die Bedienung ist recht simpel. Über die 6 Tasten lassen sich alle manuellen Bedienfunktionen und die Programmierung durchführen.
Das Bedienfeld (siehe Bild) ist in zwei Ebenen aufgeteilt.
Bedienfeld

Die untere Ebene betrifft die Funktionen für den täglichen Betrieb. Über die Tasten 1-4 sowie "Pump" lassen sich die Bewässerungskreise 1-4 sowie die Pumpe manuell ein- oder ausschalten. Im Falle der Tasten 1-4 führt ein längerer Druck (Drücken und Halten der Taste länger als ca. 3 Sekunden) zum Status "manuell off", dargestellt als "m-off". In diesem Status ist und bleibt der Kreis gesperrt, d.h. auch eine eigentlich vorgesehene Aktivierung durch einen Programmablauf findet nicht statt, der Kreis wird in diesem Fall bei der Programmausführung einfach übersprungen. Das ist sinnvoll, wenn nicht alle Kreise verwendet werden, Wartungsarbeiten an einem Kreis notwendig werden oder vielleicht der Rasensprenger ausnahmsweise nicht aktiviert werden soll, weil ein Fest stattfindet.
Nochmaliges Drücken länger als ca. 3 sec schaltet den Kreis wieder auf Automatik-Betrieb. Beide Stati werden gesichert, so dass auch nach einem Stromausfall nicht ungewollt wieder ein Kreis in Betrieb geht, der eigentlich aus bleiben sollte.

Die obere Ebene wird durch Druck auf die ganz rechte Taste aktiviert und springt ins Menü. Von hieraus lassen sich sämtliche erforderlichen Einstellungen vornehmen; diese werden unten weiter erläutert. Die Navigation ist dabei äußerst einfach gehalten. Innerhalb einer Menüebene lässt sich mit den Tasten "<" und ">" von Menüpunkt zu Menüpunkt wechseln. "Ok" wählt den ausgewählten Menüeintrag aus oder bestätigt einen Wert, "exit"verlässt die aktuelle Ebene und springt eine Menühierachie höher bzw. verlässt das Menü im Falle, dass man zuvor im Hauptmenü war.

StartbildschirmDie Standard-Anzeige während des Betriebes ist in 4 Zeilen aufgeteilt. Zeile 1 zeigt die aktuelle Uhrzeit links, den aktuellen Messwert der Bodenfeuchte rechts und im Bedarfsfall Statusmeldungen wie "RUN" oder einen mit "E" beginnenden Errorcode in der Mitte.
In den Zeilen 2 und 3 wird der aktuelle Status der 4 Bewässerungskreise dargestellt. Mögliche Werte sind a-on, a-off, m-on und m-off. "a" steht dabei für den automatischen Betrieb, d.h. der Computer bestimmt den Status, "m" steht für manuellen Betrieb, d.h. der Benutzer hat diesen Status über das Bedienfeld herbeigeführt.
In der vierten und letzten Zeile schließlich wird links der Status des Refill-Systems (on oder off) und rechts der Status der Pumpe, sofern der Pumpen-Schaltausgang verwendet wird, dargestellt. Hier gibt es nur a-on, a-off oder m-on.

Jeder Tastendruck aktiviert übrigens die Hintergrundbeleuchtung des Display für ca. 3 Minuten - anschließend wird sie wieder ausgeschaltet - mein kleiner Beitrag zum Energiesparen.

Menüstruktur

StartStop"Start" und "Stop Program" sind eigentlich selbsterklärend. Hiermit wird das Programm manuell gestartet oder abgebrochen. Sinnvoll, wenn kein Feuchtesensor angeschlossen ist, dieser defekt ist oder zwischendurch eine "Extragabe" Wasser gewünscht wird.

Program edit"Program Edit" verzweigt in ein Untermenu zur Einstellung der Parameter für den automatischen Bewässerungsablauf ("Programm"):

pgm on/offstarttimedurationduration 2
"Program on/off" schaltet den automatischen Bewässerungsablauf ein oder aus. Bei "off" werden die Bewässerungskreise durch den Controller nicht mehr automatisch geschaltet, es sei denn man schaltet sie manuell ein (Tasten 1-4) oder startet das Programm manuell über "Start Program".
"Pgm. Starttime" definiert die Startzeit, zu der der automatische Bewässerungsablauf gestartet wird (sofern der Feuchtesensor aktiviert ist nur dann, wenn die Feuchte unterhalb des eingestellten Schwellwertes liegt). Sinnvoll ist eine Bewässerung in den frühen Morgenstunden, z.B. 6:00 Uhr.
Startzeit und Feuchte stellen also zusammen die Startkriterien für den Programmablauf dar. Sofern sich während des Programmablaufes die Feuchte ändert (das sollte sie ;-)), führt dies nicht zu einem Programmende. Ein Programmabbruch ist nur manuell über "Stop Program" im Hauptmenü möglich.
"Pgm Duration": hier lässt sich für jeden der vier Bewässerungskreise die Bewässerungszeit in 1-Minuten-Schritten einstellen.
Die Kreise 1 bis 4 werden nacheinander bewässert.


hum sensor"Hum Sensor" verzweigt in das Untermenü zur Einstellung des Feuchtesensors:

hum on/offtresholdsens inttervalsens calibrate
"Sensor on/off" schaltet die Verwendung des Feuchtesensors aus. Dies bedeutet lediglich, dass die Feuchte nicht mehr als Kriterium für den Programmstart verwendet wird. Ein eingeschaltetes Programm startet dann ohne Rücksicht auf die Feuchte jeweils zur eingestellten "Starttime". Sofern ein Feuchtesensor angeschlossen ist wird jedoch weiterhin die Feuchte gemessen und auf dem Display dargestellt.
"Sens. treshold" bestimmt den Schwellwert der gemessenen Bodenfeuchte, unterhalb dessen das Programm gestartet wird. Werte von 1..100 sind möglich, konkreter Wert muss abhängig von den lokalen Bodenverhältnisssen und Feuchtebedarfen der Pflanzen experimentiell ermittelt werden.
"Sens. interval" bestimmt, in welchen Intervallen ein neuer Feuchtewert gemessen werden soll. In Minutenschritten einstellbar. 10-60 Minuten sind ganz sinnvoll, zum Testen ggf. temporär 1 min.
"Calibrate" startet die Sensor-Kalibierung: Zunächst wird mit "Sensor wet<ok,x>" der 100%-Feuchtewert angefordert. An dieser Stelle ist der Sensor in eine komplett durchfeuchtete Stelle Gartenerde zu stecken (angießen!!) und "ok" zu drücken. Der Sensor ermittelt den Messwert des Sensors und stellt die zugehörige Frequenz in Hz auf dem Display dar.
Anschließend ist in gleicher Weise nach Aufforderung durch "Sensor dry<ok,x>" der 0%-Wert dran. Hierzu den Sensor in eine völlig trockene Stelle Gartenerde (notfalls in ein Gefäß, in dem vorher trockene Gartenerde eingefüllt wurde) stecken und mit "ok" bestätigen. Jede der beiden Kalibrierungswerte kann durch Drücken von "exit" ("x") übersprungen werden. Dadurch wird der im EEPROM gesicherte Werte für diesen Messwert weiter verwendet. Das ist sinnvoll, wenn man während des Sommers die Kalibrierung auf z.B. den unteren Grenzwert anpassen möchte.
Damit ist der Sensor kalibriert, die Messwerte werden dauerhaft gespeichert.
Sofern an dieser Stelle die rote LED im Bedienfeld aufleuchtet und ein Errorwert im Display angezeigt wird, ist irgendetwas faul und die Messwerte der gerade durchgeführten Kalibrierung sind unplausibel. Das passiert z.B., wenn der Messwert für "trocken" kleiner ist als der Messwert für "feucht". In diesem Fall ist die Kalibrierung zu wiederholen.

refill"Refill System" springt ins Untermenü zur Einstellung des Nachfüllsystems (Refill)


refill on/offrefill intervaalrefill duration
"Refill on/off" schaltet das Refill System ein oder aus.
"Ref. interval" bestimmt die Zeit zwischen zwei Messungen, ob nachgefüllt werden muss oder nicht. Steht bei mir auf 60 Minuten.
"Max. duration" bestimmt die maximale Zeitdauer, die ein Nachfüllvorgang dauern darf. Nach dieser Zeit wird das Magnetventil geschlosssen, auch wenn der maximale Füllstand noch nicht erreicht wurde. Sinnvoll ist hier ein kurzer Zeitraum. Grund für diese Funktion: Es ist denkbar, dass aufgrund eines Lecks des zu füllenden Wasserspeichers oder eines Defekts des Wasserstandsfühlers (Mäuse mögen Kabel...) eine Erkennung des Füllstandes nicht mehr möglich ist und Wasser gepumpt wird ohne Ende. Das kann im Falle einer Abwesenheit jedoch eine mittlere Katastrophe bedeuten, wenn die leistungssstarke XXL Pumpe mal eben 5 Kubikmeter in der Stunde in den Hof pumpt und der Nachbar nur einmal am Tag nach dem Rechten sieht...
Die maximale Zeitdauer hilft an dieser Stelle den möglichen Schaden zu minimieren.

set clock"Set Clock" stellt die Uhrzeit der Real time Clock.






Fehlermeldungen

Von der Software erkannte Fehlerzustände werden über einen binär codierten Status in der Mitte der ersten Displayzeile angezeigt. Zusätzlich wird die rote LED auf dem Bedienpanel eingeschaltet.
Folgende Fehlercodes sind aktuell implementiert:

Bit 0: Feuchtesensor-Error. Wert "out of range" - in diesem Fall wird als Feuchtewert 0% automatisch gesetzt. Damit wird zumindest bewässert, auch auf die Gefahr hin, dass dies wg. z.B. Regen gar nicht nötig wäre.

Bit 1: Kalibrierungs-Fehler Feuchtesensor. Frequenz des 100%-Wertes größer als des 0% Wertes

Bit 2: EEPROM Fehler. Nach Reboot aus dem EEPROM geladene Werte sind nicht plausibel.

Sonstiges - was noch zu erwähnen ist

Das eingesetzte Display hat mich fast zum Wahnsinn getrieben. In unregelmäßigen Abständen - nicht reproduzierbar - stürzte es einfach ab, was sich darin äußerte, dass keine Darstellung mehr möglich war. Dann half nur noch der Hauptschalter.
Alle Versuche, dieses Problem zu beseitigen - tolerante Software, Verlängerung der Schaltzeiten, Abschottung der Versorgungsspannung mit Kondensatoren, Abschirmung, Umrouten der Masseleitungen... usw. brachten keinen Erfolg.
Auch wenn der eigentliche Controller korrekt weiterlief als sein nichts gewesen, habe ich letztlich kapituliert und initialisiere das Display nun vor größeren Schreibvorgängen zum Display neu. Das ist zwar nicht im Sinne des Erfinders, funktioniert bisher aber. Nur falls sich jemand über diesen Blödsinn im Quelltext wundert ;-)

Die Software ist ein excellentes Beispiel für "Ooooch, kleine Sache, das machen wir mal schnell ohne Struktugramm..."
Mittlerweile ist der Code fast 4K Instructions groß.
Bitte keine Kommentare zum Aufbau des Programms - es funktioniert, immerhin.

Downloads

Schaltplan
Platinenlayouts
Bestückungsplan
Software (ASM und HEX, Version 0.3)
Frontplattenentwurf


Für die Funktion der Schaltung kann ich trotz sorgfältiger Prüfung keine Gewährleistung übernehmen. Da hier mit Netzspannung umgegangen werden muss sollte nur derjenige den Nachbau angehen, der weiß, was er tut! Nachbau und Nutzung also auf eigenes Risiko! - Sollten die Pflanzen wegen Verwendung dieser Schaltung eingehen, ist der Nachbauer selber schuld, bitte keine Beschwerden.