Der Gies-O-shield für den Arduino

4 Giesomat Sensoren und zwei Magnetventile an einem Arduino?

Immer wieder steht man im Sommer vor der Aufgabe, eine automatische Gartenbewässerung zu erstellen.
Doch was ist für eine selbstgebaute automatische Bewässerung am besten geeignet?
Dafür kann man auf den originalen Giesomat und dessen damit verbundenen Giesomat Sensoren zurückgreifen.
Der Vorteil der kapazitiv funktionierenden Giesomat Sensoren gegenüber den resistiv funktionierenden ist schnell erklärt:
Es findet keine Korrosion durch Elektrolyse statt. Dadurch werden keine Metallionen an das umgebende Erdreich abgegeben.
Das Signal kann immer wieder verstärkt werden und per Pegelwandler und Frequenzteiler an diversen Systemen betrieben werden.

Überlegungen zu diesem Vorhaben:
Physik: Wie funktioniert der Giesomat Sensor?
Hardware: Wie erzeugt der Giesomat Sensor „die Frequenz“ ?
Hardware: Welche elektrische Eigenschaften hat der Giesomat Sensor?
Hardware: Warum nicht den originalen Giesomat verwenden?
Hardware: Welche Voraussetzungen sollen erfüllt werden?
Hardware: Welchen Mikrocontroller benutzen?
Software: Welche Sprache, Librarys vorhanden?
Software: Weitere Optimierungen / Änderungen

Physik: Wie funktioniert der Giesomat Sensor?

Der Giesomat Sensor funktioniert als RC Schwinger, welcher über einen invertierten Schmitt Trigger zurückgeführt wird.
Da der Sensor in der Mitte der Gatter hängt, gibt es keine Abhängigkeit des GND Potentials.
Die Fläche des Sensors bildet dabei einen Kondensator.
Die Sensorfläche muss für die Verwendung im Erdreich unbedingt geeignet versiegelt werden.
Unsere Bausätze zu den Sensoren im Shop können bereits fertig vergossen erworben werden.
Die Sensorfläche in Verbindung mit der Versiegelung und dem umgebenden Erdreich bildet einen Kondensator.
Die Kapazität variiert mit der Permittivität (ε) des umgebenden Erdreiches.
Wasser hat ein εr von ewa 88, wogegen feuchte Erde 29 und Luft etwa 1 hat.
Man sieht dass dadurch die Kapazität und die daraus resultierende umgekehrt proportional Frequenz der ausgegebenen Rechteckspannung des Sensors sehr variabel gegenüber des sich umgebenen Erdreiches ist.
Ist die Umgebungsfeuchte hoch, ist die Frequenz der ausgegebenen Rechteckspannung klein.
Ist die Umgebungsfeuchte klein, ist die Frequenz der ausgegebenen Rechteckspannung gross.

Die Frequenz der Sensoren wird dabei wie folgt berechnet:
Bei HC Typen:
f=1/T
f=1/(0.8*R*C)

Bei HCT Typen:
f=1/T
f=1/(0.67*R*C)

„Hardware: Wie erzeugt der Giesomat Sensor „die Frequenz“ ?
Ganz einfach:
Anfang:;
Nehmen wir dazu die Schaltung rund um das 74HC14D Gater.
OSC1 und OSC2 stellen hierbei die Sensorflächen (Kondensator !!!) dar.
Nehmen wir an, der Pegel an IC1D ist 0V.
Durch die Negierung des IC1D ist am Ausgang des IC1D 5V, welche über den Widerstand R3, den Kondensator (Sensorflächen !!!) auflädt,
welcher sich zwischen dem Eingang von IC1D und dem Ausgang von IC1C befindet.
Ist die erforderliche Spannung am Eingang IC1D erreicht, schaltet dieser den Ausgang auf 0 V.
Über den Widerstand R3 wird der Kondensator nun solange entladen, bis die Spannung so klein ist, das der Eingang am IC1D auf logisch 0 ist.
Der Ausgang wird wieder auf 5V geschalten.
Was danach passiert? Goto Anfang;

Giesomat Oszillator Ramser Elektrotechnik Webshop

Hardware: Welche elektrische Eigenschaften hat der Giesomat Sensor?

Der Giesomat Sensor ist rund um einen Invertierten Schmitt Trigger Gatter aufgebaut, welches von einem linearen Spannungsregler gespeisst wird.
Dadurch kann der Sensor in einem breiten Betriebsspannugsbereich betrieben werden.
Seit Rev.2 der Sensorplatine kann der lineare Spannungsregler mittels Lötbrücke JP1 überbrückt werden und dadurch auch direkt mit der Versorgungsspannung der Auswertlogik (z.Bsp. 3.3V oder 5V) betrieben werden.
Ist der Spannungsregler nicht gebrückt und der Sensor wird entgegen den Empfehlungen mit einer Logikspannung betrieben, dann….. findets raus aber beschwert euch nicht.

Giesomat Linearregler Ramser Elektrotechnik Webshop

Bei Betrieb mit der direkten Logikspannung ist auf den Spannungsabfall der Leitung zu achten !!!
Sollte der Sensorausgang auf ein höheres Spannungspotential angehoben werden, so kann dies mittels Pegelwandler erfolgen.
Die Ausgangsfrequenz variiert von Sensor zu Sensor und muss immer vor der Benutzung abgeglichen werden.
Dies ist dem manuellen Auftragen von Polyurethan bzw. einer anderen Versieglungsart geschuldet.
Normalerweise sollte der Sensor mit einer Spannung zwischen 7 und 12V versorgt werden.
Die ausgegebene Rechteckspannung hat dabei eine Scheitelspannung von 5.6V.
Genauere Daten zum 74HC Gatter findet ihr in dem jeweiligen Familysheet der Hersteller.

Hardware: Warum nicht den originalen Giesomat verwenden?

Diese Frage ist einfach beantwortet:
Viel Leute wollen keine Platine ätzen oder darauf warten,
sondern ein kleines shield, welches mittels eines Arduino schnell per Plug and Play verwendet werden kann.
Es soll auch gleich ein fertiges Sketch beiliegen, um direkt loslegen zu können.
Arduino kompatible Klone können überall in diversen Starter Sets preiswert bezogen werden.

Hardware: Welche Voraussetzungen sollen erfüllt werden?

Arduino (und Klon) kompatible Shield Platine
Leicht lötbare Platine mit THT-Bestückung
Eingänge und Versorgung für 4 Giesomat Sensoren
Versorgung der Sensoren und Ausgänge wählbar zwischen Vin, 5V und externe Versorgung
Eingänge am Hardwarecounter des Arduino mittels Multiplexer
Ausgänge für 2 DC Pumpen / Ventile / … whatever
Ausgänge lowside switched über Standard LogicLevel N-Channel Mosfet
Ausgänge mittels Freilaufdioden geschützt
Ausgänge für reinen Schaltbetrieb. Kein PWM Betrieb.
Standalone Betrieb des Arduino
Terminalbetrieb und Konsolenbetrieb umschaltbar
Wie immer Open Source

Hardware: Welchen Mikrocontroller benutzen?

Soll einfach Arduino Uno kompatible sein.
Jedes preiswerte Starter Kit verwendbar.

Software: Welche Sprache, Librarys vorhanden?

Ich hasse es nicht mit der IDE mitgelieferte Extra Libraries von Anderen zu verwenden, deren Hintergrundfunktionen und Eigenheiten ich nicht kenne!
Da es sich um keine Ariane Rakete handelt (Achtung Insider 😉 ), werden kleinere Hilfsfunktionen schnell selbst erstellt damit das Sketch out of the box funktioniert.
Es kommt daher die freie Arduino IDE zum Einsatz.

Software: Weitere Optimierungen / Änderungen?
Die Software ist in vier Stunden entstanden und es wurde nicht auf säuberstes C sondern auf schnelle Fertigstellung geachtet.
Wer es lupenrein schreiben möchte, bitte sehr: Meine Quellen sind OpenSource.
Würde mich aber freuen, wenn Ihr auf mich verweisen würdet.
Die einzigige Änderung was mir spontan einfällt: Betriebart Terminal/Console mittels Linkerdirektive gleich beim kompilieren festlegen, ebenso eine eventuelle Übersetzung ins Deutsche.

Dann legen mir mal los.

Die Hardware ist schnell zusammengestrickt, da die Grösse der Platine bereits vom Arduino vorgegeben ist.
Um mit älteren UNO Modellen kompatibel zu sein wird auf die extra Pins der Version 3 und grösser verzichtet.
Das Einzige das extra dazu kommt ist die Möglichkeit der Wahl zwischen der Versorgungspannung für die Sensoren und der Ausgänge.
Die Versorgungsspannung kann extern angelegt werden (Lötjumper offen),
von Arduino von Vin versorgt werden (Oder umgekehrt über die Klemmen),
oder die 5V des Arduino benützen.
Der Multiplexer wird benutzt, um die vier Giesomat Sensoren einzeln auf den Timer Counter 1 Pin des Mega328 zu legen.
Dieser befindet sich auf dem „Digitaleingang 5“.

Gies-O-shield-1-Ramser-Elektrotechnik-Webshop

Nach dem Erstellen der benötigten Gerber Files, wird wieder wie gewohnt bei regionalen, Generationsübergreifenden Familienunternehmen die Platine bestellt.
Denn wir legen auf die Zukunft unserer Umwelt grössten Wert.

Danach warten wir wie immer ein paar Tage.

Nach der Ankunft der Platinen kann mit dem Löten losgelegt werden.

GiesOshield DIY Bausatz 1 Ramser Elektrotechnik Shop

Zuerst löten wir die 4 Stück 562R Widerstände ein

GiesOshield DIY Bausatz 2 Ramser Elektrotechnik Shop

Danach die zwei 10k Widerstände

GiesOshield DIY Bausatz 3 Ramser Elektrotechnik Shop

Danach den 100nF Stützkondensator und die zwei Freilaufdioden

GiesOshield DIY Bausatz 4 Ramser Elektrotechnik Shop

Danach kann der 74HC151 Multiplexer eingelötet werden.

GiesOshield DIY Bausatz 5 Ramser Elektrotechnik Shop

Danach die Mosfets

GiesOshield DIY Bausatz 6 Ramser Elektrotechnik Shop

Danach kommen schon die Klemmen

GiesOshield DIY Bausatz 7 Ramser Elektrotechnik Shop

Noch die Pinheader

GiesOshield DIY Bausatz 8 Ramser Elektrotechnik Shop

Hardware fertig !!!

Jede Hardware ist nur so gut wie deren Software.

Funktion der Software:
Gemeinsamer Part
Der Terminalmodus
Der Konsolenmodus

Gemeinsamer Part:
Jede Sekunde (mittels Millis und nicht delay!!!) werden die 4 Sensoren in einer Schleife abgefragt.
Zum Abfragen wird der benötigte Sensor mittels des Multiplexers auf den Timer Counter 1 Eingang aufgelegt.
Danach werden für 50ms die Eingangsimpulse gezählt.
Danach wird ausgewertet, ob der korrespondierende Ausgang geschalten werden soll oder nicht.
Dabei gibt es noch einen Handbetrieb immer ein und immer aus und für jeden Ausgang eine Mindestpause und Mindestlaufzeit.
Die Betriebsarten der Ausgänge sind wie folgt zugeordnet:
Betriebsart 0 : Hand. Ausgang immer Low.
Betriebsart 1 : Hand. Ausgang immer High.
Betriebsart 2 : Automatikbetieb.
Betriebsart 3 : Ausgang 2 gleich wie Ausgang 1

Die Firmware der automatischen Bewässerung (selbstgebaut) besitzt überdies zwei Betriebsarten.

Eine Terminalmodus
Einen Konsolenmodus

Der Terminalmodus:

Hier werden mittels einfachen Befehlen die Funktionen und Werte festgelegt.
Praktisch eine CLI Schnittstelle.
Der Standbybetrieb bleibt in Kraft.
Die Befehle werden mittels serieller Schnittstelle von einem PC oder RPI bereitgestellt
und sind immer gleich aufgebaut:
Befehl-Delimitter-Wert-Delimmiter

Die Statuswerte der vier Sensoren und der zwei Ausgänge wird jede Sekunde automatisch übertragen.

Das schöne daran ist, dass die Einstellungen an jedem Terminalprogramm mit 9600 Baud erfolgen können.
Die Befehlsequenz wird mittels Carrier Return und NewLine bestätigt.

Als Trennzeichen habe ich mich für das Semikolon „;“ entschieden.
Warum? Weiss nicht. Irgendwie Gewohnheit.

Die Befehle sind wie folgt fest belegt:
„ge1“: Get GeneralRunmode from arduino
„se1“: Set GeneralRunmode to arduino
„ge2“: Get RunmodeOutput1 from arduino
„se2“: Set RunmodeOutput1 to arduino
„ge3“: Get UsedSensorForOutput1 from arduino
„se3“: Set UsedSensorForOutput1 to arduino
„ge4“: Get SetpointOutput1On from arduino
„se4“: Set SetpointOutput1On to arduino
„ge5“: Get SetpointOutput1Off from arduino
„se5“: Set SetpointOutput1Off to arduino
„ge6“: Get MinOnTimeOutput1 from arduino
„se6“: Set MinOnTimeOutput1 to arduino
„ge7“: Get MinOffTimeOutput1 from arduino
„se7“: Set MinOffTimeOutput1 to arduino
„ge8“: Get RunmodeOutput2 from arduino
„se8“: Set RunmodeOutput2 to arduino
„ge9“: Get UsedSensorForOutput2 from arduino
„se9“: Set UsedSensorForOutput2 to arduino
„ge10“: Get SetpointOutput2On from arduino
„se10“: Set SetpointOutput2On to arduino
„ge11“: Get SetpointOutput2Off from arduino
„se11“: Set SetpointOutput2Off to arduino
„ge12“: Get MinOnTimeOutput2 from arduino
„se12“: Set MinOnTimeOutput2 to arduino
„ge13“: Get MinOffTimeOutput2 from arduino
„se13“: Set MinOffTimeOutput2 to arduino

Will man also die Betriebsart von Ausgang 2 „wie Ausgang 1“ setzen, reicht es die Line
se8;3; abzusetzen.

Will man erreichen, dass für die Freuquenzauswertung des Ausgang 1 der Sensor 3 verwendet werden soll,
so kann man dies per se3;3; festlegen.
Will man den zugewiesenen Sensor abfragen, reicht es ein ge3; abzusetzen.

se4;3200; würde den Einschaltpunkt von Ausgang 1 auf 3200 Digits setzen.

Eine seX; Operation wird seitens des Arduino immer mit einem OK bestätigt.
Eine geX; Operation gibt immer den Wert der Variable zurück

Der riesige Vorteil des Terminalmodus ist, dass sämtliche Werte praktisch im Batchbetrieb geschrieben werden können.
Ausserdem kann jedes System, dass über einen USB Hostcontroller die serielle Schnittstelle des Arduino enummerieren kann,
mit einfachsten Befehlen Einstellungen vornehmen.

Eine Terminalausgabe sieht wie folgt aus:

Sensor 3 Teminal Ramser Elektrotechnik Webshop

Der Konsolenmodus:

In diesem wird ein einfaches Menü im Terminal angezeigt, in dem mittels den Nummerntasten navigiert werden kann.
Zahlen werden nach Aufforderung eingegeben.

Vorteil:
Intuitiv, durch strukturiertes Menü, auch von Laien zu bedienen.
Einfach connecten und die Entertaste rausschicken schon kommt ein Feedback.

Die Ausgabe sieht so aus:

Sensor 3 Console Ramser Elektrotechnik Webshop Main Console Ramser Elektrotechnik Webshop

Die Software inklusive Sourcecode könnt Ihr natürlich im Downloadbereich herunterladen.
Wenn Ihr die Software weiterverbreitet, bitte einen Link auf meine Seite setzen 😉

Ein Bausatz des Gies-O-shield kann in unserem Shop bezogen werden.

Bei Wünschen und Anregungen könnt Ihr eueren Kommentar absetzen

Schreibe einen Kommentar

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

Wir haben vom 12.7.2018 bis zum 27.7.2018 Betriebsurlaub. Der letzte Versand findet am 12.7.2018 14:00 statt. Der erste Versand nach dem Betriebsurlaub erfolgt am 27.7.2018. Wir sind in dieser Zeit auch nicht erreichbar ! Ausblenden