Ventilsteuerung
Zurück Home Nach oben

disclaimer

 Home
Nach oben

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Gießanlage - Ventilsteuerung


Wann und wozu braucht man sowas
Wenn man, um vor Ort gießen zu können, eine Tagesreise braucht. Mechanische Zeitschaltuhren haben
den Nachteil, dass nach  Stromausfall die Zeiten verschoben werden, und die Uhr dann gießt wann sie will.
Elektronische Zeitschaltuhren brauchen Batterien, die leer werden. Nach Stromausfall geht nichts mehr.
Jedes Jahr neue Pflanzen kaufen und einsetzen ist auch nicht das Wahre.

Also - selber was bauen - Eine vollautomatische Gießanlage oder Ventilsteuerung

Ventilgruppe

Hier schon mal ein erster Eindruck der mechanischen Anlage. Die Ventile hinter den Kugelhähnen lassen darauf schließen, dass mehr dahinter steckt.

Was soll das neue Teil nun genau machen
Vollautomatisch gießen - und zwar so, wie ich das will und nicht Kollege Zufall.

Grundlegende Anforderungen an die Steuerung
Die Zeit soll vom Satellit geholt und umgesetzt werden.
Vor Ort einstellbar.
Ein LC Display zur Anzeige.
Über Funknetz (GSM Handy) konfigurierbar und Abfrage der gerade laufenden Parameter.
Wasserventile ansteuern.

Die Anforderung mal genauer betrachtet
Die Anlage soll täglich, wenn erforderlich automatisch gießen. Es sind fünf Wasserstränge vorgesehen,
die einzeln, nacheinander abgearbeitet werden. Bisher hat eine Zeitschaltuhr alles zusammen gegossen.
Je mehr Pflanzen dazu kommen, um so weniger Wasser bringt die Pumpe an diese. Man lässt die
Pumpe länger laufen - hab ich gedacht - aber bei langen Leitungen und dem großen Verbrauch kommt
hinten nicht mehr viel an; dafür ist vorne alles überschwemmt. Das war der Hauptgrund für die Gießanlage.
Wenn man das Jahr klimatisch betrachtet, dann kommt man zur Erkenntnis, dass im Winter in Griechenland
nicht gegossen werden muss - da macht der liebe Gott das mit Regen. Im Frühjahr ist alles noch schön
feucht, und man kann langsam anfangen zu gießen. In den Sommermonaten ist viel Wasser angesagt;
und im Herbst kann man wieder langsam herunter regeln.
Der naheliegende Gedanke war die Gießerei monatlich zu organisieren.
Die Anlage ist für fünf Stränge ausgelegt. Ich habe nach den Örtlichkeiten zuerst mal drei davon laufen.
Im Bild oben sieht man rech schön, dass zwei Anschlüsse nicht angeschlossen sind. Diese können bei
Bedarf mit Ventilen nachgerüstet werden.
Nach langer Überlegung, wie man das angehen soll, habe ich programmtechnisch folgendes festgelegt:
Kernstück soll ein Atmel ATmega32 sein, der als Eingänge einen Rotary-Switch (Drehschalter), eine
Programmierschnittstelle, einen seriellen Zugang (GSM-Modem Siemens M20), einen
analogen Eingang (vom M20) und einen Feuchtesensor bedienen soll. Als Ausgänge soll der Atmel Chip
Ein LC-Display, die serielle Schnittstelle des GSM-Modems und fünf Relais für die Ventile bedienen.
Der Atmel war lange genug im Regal - nun soll er was tun.

Umsetzung der Gedanken in das Programm
Nachdem die Schnittstellen geklärt sind, kann man sich Gedanken über das Programm oder den
Programmablauf machen. Wie oben erwähnt soll der Hauptteil des Programmes das Gießen sein.
Dazu legt man für jeden Monat ein konfigurierbares Programm fest. Als Grundparameter soll je ein
Bitfeld von 32 Bit für jedes Monatsprogramm und fünf Sonderprogramme dienen. Also eine Zeile
von Einsen und Nullen, die alle eine Bedeutung haben. Die Bitfelder sind fest programmiert und können
nur durch Umschreiben des Programms geändert werden. Das sind grundlegende Eigenschaften,
die einmalig festgelegt sind. Sie regeln "nur" ob ein Ventil arbeiten soll, ob es einmal oder zweimal pro
Tag arbeitet und ob es kurz oder lang einschaltet.

Hier eine Aufzeichnung, wie die Bitfelder organisiert sind.

'                                 Vormittag --^------- Giesszeit1 0=aus 1=an
'                               Giessdauer --^-------- Dauer1 0-kurz 1=lang
'                              Nachmittag --^--------- Giesszeit2 0=aus 1=an
'                             Giessdauer --^---------- Dauer2 0-kurz 1=lang
Prog_jan_e = &B0000000_0001_0001_0001_0001_0001_00000
Prog_feb_e = &B0000000_0001_0001_0001_0001_0001_00000
Prog_mar_e = &B0000000_0001_0001_0001_0001_0001_00000
Prog_apr_e = &B0000000_0001_0001_0001_0001_0001_00011
Prog_mai_e = &B0000000_0101_0101_0101_0101_0101_00011
Prog_jun_e = &B0000000_1101_1101_1101_1101_1101_00111
Prog_jul_e = &B0000000_1111_1111_1111_1111_1111_00111
Prog_aug_e = &B0000000_1111_1111_1111_1111_1111_00111
Prog_sep_e = &B0000000_1101_1101_1101_1101_1101_00111
Prog_okt_e = &B0000000_0001_0001_0001_0001_0001_00011
Prog_nov_e = &B0000000_0001_0001_0001_0001_0001_00000
Prog_dez_e = &B0000000_0001_0001_0001_0001_0001_00000
Sonder_1_e = &B0000000_0001_0001_0001_0001_0001_00111 'alle Zeit1,kurz
Sonder_2_e = &B0000000_0100_0100_0100_0100_0100_00111 'alle Zeit2,kurz
Sonder_3_e = &B0000000_0011_0011_0011_0011_0011_00111 'alle Zeit1,lang
Sonder_4_e = &B0000000_1100_1100_1100_1100_1100_00111 'alle Zzeit2,lang
Sonder_5_e = &B0000000_1111_1111_1111_1111_1111_00111 'alle voll
'              ^^^^^^^-------------------------------- Frei für Erweiterungen
'                      ^^^^---------------------^----- Ventil 4
'                           ^^^^-----------------^---- Ventil 3
'                                ^^^^-------------^--- Ventil 2
'                                     ^^^^---------^-- Ventil 1
'                                          ^^^^-----^- Ventil 0


Beispiel für das Monatsprogramm Mai:
Prog_mai_e = &B0000000_0101_0101_0101_0101_0101_00011

Im Klartext: Ventil 0 und 1 an, Vormittag gießen kurz, Nachmittag gießen kurz. In den Bitfeldern wird
binär gezählt. Man fängt mit Null an. Deshalb hat das erste Ventil die Nummer 0.

Damit ist jetzt das Grundgerüst für den Ablauf festgelegt.
So wie es jetzt ist, bringt es noch keinen rechten Sinn. Es fehlen noch die zugehörigen Werte wie
Einschaltzeit oder Einschaltdauer.
Zum Ändern dieser Werte soll nun über Klartext am LCD eine Information dargestellt werden; und
über den Rotary-Switch soll eine Eingabe entsprechend des Textes möglich sein. Man wählt zum  Beispiel
mit dem Rotary-Switch die Einschaltzeit. Am Display wird demzufolge ein Text wie "Einschaltzeit eins"
und der gerade gültige Wert dazu ausgegeben. Nun können mit dem Rotary-Switch die Werte im Klartext
eingegeben werden, die dann programmtechnisch als Variablen in Bezug auf die Bitfelder übernommen
werden. Läuft das Programm, dann wird zuerst Zeit und  Datum vom Satellit geholt, angezeigt und
ausgewertet. Dazu stellt das Programm fest, welches Monats-Programm in Bezug auf das Datum aktiv
werden soll. Die aktuelle Zeit wird mit den Werten, die als Variablen abgelegt sind, verknüpft und
entsprechend der Bitfelder werden die Ventile angesteuert.

Welche Einstellungen sind vor Ort möglich
Mit dem Rotary-Switch kann man folgende Einstellungen ansehen oder ändern:
Giessdauer kurz in Min, Giessdauer lang in Min, Sonderprogramm 1-5 0=aus, Giessen ein/aus 0=aus,
Ventil manuell 0=aus (einzeln oder alle), Startzeit Giessen eins (Stunden), Startzeit Gießen eins (Minuten),
Startzeit Gießen zwei (Stunden) und Startzeit Gießen zwei (Minuten).

Und so wird' s gemacht
Wird der Rotary-Switch gedrückt, dann schaltet das Programm auf das Eingabemenue, und zeigt
am LC Display (2x24) in der ersten Zeile die Erklärung an - in der zweiten den zugehörigen Wert.

Display Menue

Drückt man den Switch erneut, dann zeigt das Display den nächsten Menuepunkt an usw. Sind alle
Punkte durch, dann wird wieder Zeit und Datum angezeigt und das Programm "konzentriert sich
wieder auf' s Gießen". Will man einen Wert innerhalb des Menues ändern, so dreht man den Rotary-
Switch links zum Dekrementieren des Wertes und rechts zum Inkrementieren. Jede Änderung wird
im Arbeitsspeicher geändert und auch in den nichtflüchtenden Speicher übertragen. Somit werden
alle geänderten Parameter sofort wirksam und auch permanent gespeichert.

Ein bisschen Handarbeit muss aber doch sein
Die Anlage steuert Ventile, regelt sie aber nicht - Was heißt das nun wieder. Die Ventile machen nur
klick klack - also nur auf oder zu. In der Anlage ist kein Einfluss auf die Wassermeng pro Zeit und/oder
Ventil programmiert. Deshalb ist der Durchfluss, wie man im ersten Bild oben sieht, über Wasserhähne
einstellbar. Nicht, dass das nicht zu programmieren wäre. Mir ist es lieber das händisch zu machen.
Ich laufe lieber am Strang entlang und prüfe, wie viel Wasser an den Pflanzen ankommen soll. Dazu sind
von jedem Strang dünne Schläuche zu jeder Pflanze gelegt. An den Enden sind kleine Gießer montiert,
mit denen man  zusätzlich die Wassermenge einstellen kann. So bekommt jede Pflanze die Feuchtigkeit,
die sie braucht.


Und ran an die Elektronik
Auf meinem Mega32 Testboard wird das Programm Schritt für Schritt geschrieben. Auf einem Steckbrett
sind alle zusätzlich benötigten Teile wie Serielle, Analogswitch, Relaistreiber, Tondecoder (MT8870DE),
GPS-Maus und Rotary-Switch verdrahtet. Nach langer Testerei ist der Aufbau fertig und es kann eine
Platine gemacht werden. Die hier links unten habe ich entwickelt und dann fertigen lassen.
Rechts ist sie fertig bestückt.

Ventilsteuerung Platine  Ventilplatine bestueckt


Unten sieht man die fertig aufgebaute und mit Peripherie ausgestattete Lösung.


Ventilplatine verdrahtet  Ventilplatine montage

Das Bild rechts unten zeigt die Montage. Die Teile vom linken Bild sind in ein Gehäuse eingebaut.
Im Gehäusedeckel erkennt man oben eine Ausfräsung mit Plastikfenster für das Display und mittig
den Rotary-Switch. Links in dem Werkzeugkoffer aus Metall ist das Netzteil 5V, 12V und 24V
eingebaut. Wenn es noch angestrichen wird, dann sieht es nicht mehr so unprofessionell aus.

Was macht das M20 Terminal
Das Handy "ohne Tastatur und Display" oder GSM-Modem hängt über einen Analogschalter
(MC14016) an der seriellen Schnittstelle des Mega32. Analogschalter deshalb, weil darüber auch
noch die GPS-Maus an der selben Schnittstelle hängt. Vorrangig ist die Maus, weil die Zeiterfassung
der absolut wichtigste Bestandteil ist.  Wird das GSM Modem aktiv, dann wird über die Ring-Leitung
ein Interrupt ausgelöst, der dann das Modem über den Analogschalter auf die serielle Schnittstelle legt.
Und zwar solange bis die Verbindung getrennt wird, oder ein parallel laufender Timer die Verbindung
abbricht. Soweit der technische Teil zum Modem. Der Zugriff auf das Programm erfolgt so:
Wird das Modem von einem Handy oder vom Festnetz aus angerufen, so prüft die Software zuerst
die Berechtigung der anrufenden Telefon- oder Handynummer. Ist die Nummer bekannt, so hebt die
Software ab, und die analoge Verbindung steht. Als Quittung werden von der Software vier Töne
gesendet. So weiß der Anrufer, dass er agieren kann. Es können sechs Parameter oder Variablen
über das Funknetz eingegeben werden; oder eine Statusabfrage per SMS angefordert werden.
Dazu ist jeweils ein Anruf nötig.
Die Programmierung erfolgt über Eingabe einer fünfstelligen Nummer über die Telefon Tastatur.
Zur Auswertung der Tastentöne ist ein DTMF-Chip (Dual Tone Multi Frequenz) eingesetzt, der die
hörbaren Töne der Tastatur in Zahlen umwandelt. Diese Zahlen werden dann im Programm verarbeitet.
Nach erfolgter Programmierung werden wieder vier Töne gesendet, und man kann auflegen.

Beschreibung der Programmierung über Handy
Stelle 1 ist die Funktion
Stelle 2-5 ist der Wert

Funktionen:
1 = Gießdauer kurz in Minuten (10003 ist drei Minuten)
2 = Gießdauer lang in Minuten (20005 ist fünf Minuten)
3 = Sonderprogramm 0 bis 5, 0 ist aus (30000 ist aus)
4 = Gießen ein/aus, 0 ist aus (40000 ist aus)
5 = Startzeit eins StdStdMinMin (51625 ist 16Uhr25)
6 = Startzeit zwei StdStdMinMin (61625 ist 16Uhr25)
0 = SMS über Status der Anlage abrufen (00000 ist Status-Abfrage)

Der Schluss
Der Programmcode und eine ausführliche Beschreibung mit Ablaufdiagramm und Schaltplan
kann hier in der Beispielseite  angesehen und heruntergeladen werden.
Das Programm, das in BASCOM geschrieben ist, hat rund 1200 Zeilen Code.








.