Gießanlage - Ventilsteuerung
Wann und wozu braucht man so was
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
Hier
schon
mal
ein
erster
Eindruck
der
mechanischen
Anlage.
Die
Ventile
hinter
den
Kugelhähnen
lassen
darauf
schließen, dasss mehr dahinter steckt.
Vollautomatisch gießen - und zwar so, wie ich das will und nicht Kollege Zufall.
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
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
muß
-
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
nahe
liegende
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
recht
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.
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
Programms
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 = &B
0000000_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.
Mit dem Rotary-Switch kann man folgende Einstellungen ansehen oder ändern:
Gießdauer kurz in Min,
Gießdauer lang in Min,
Sonderprogramm 1-5 0=aus,
Gießen ein/aus 0=aus,
Ventil manuell 0=aus (einzeln oder alle),
Startzeit Gießen eins (Stunden),
Startzeit Gießen eins (Minuten),
Startzeit Gießen zwei (Stunden)
Startzeit Gießen zwei (Minuten).
Welche Einstellungen sind vor Ort möglich
Und so wird' s gemacht
Wird
der
Rotary-Switch
gedrückt,
dann
schaltet
das
Programm
auf
das
Eingabemenü
und
zeigt
am
LC Display (2x24) in der ersten Zeile die Erklärung an - in der zweiten den zugehörigen Wert.
Drückt
man
den
Switch
erneut,
dann
zeigt
das
Display
den
nächsten
Menüpunkt
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
Menüs
ä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
Wassermenge
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.
Unten sieht man die fertig aufgebaute und mit Peripherie ausgestattete Lösung.
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.
Umsetzung der Gedanken in das Programm
Die Anforderung mal genauer betrachtet
Grundlegende Anforderungen an die Steuerung
Was soll das neue Teil nun genau machen