Giess-o-mat

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Giess-o-mat in Aktion

Giess-o-mat - die vollautomatische Blumengiessanlage - Version 2

Blumen gießen? Keinen Bock! Das erledigt für mich schon seit ein paar Jahren ein kleines Gerät. Ab und zu muss ich nur mal den Eimer wieder auffüllen und ab und zu die Gießintervalle einstellen.

Mit der Box kann die Bewässerung von 6 Pflanzen unabhängig voneinander gesteuert werden. Für jede Pflanze wird eine kleine Pumpe angesteuert, die die durstigen Pflanzen aus einem Eimer in der Zimmerecke mit Wasser versorgt. Der Giess-o-mat beinhaltet erstens eine Uhr und kann die Pumpen in programmierbaren Zeitintervallen schalten.

Zweitens kann nun auch die Feuchtigkeit der Blumenerde gemessen werden, ohne dass Elektroden in die Erde gesteckt werden müssen. Dazu verwende ich kapazitive Feuchtigkeitssensoren. Schaltplan und Platinenlayout dazu hat mir Dietmar Weisser freundlicherweise zur Verfügung gestellt.

Bedienung

Bedienung über Terminal

Der Giess-o-mat kann zur Parametrierung über eine serielle Schnittstelle mit dem PC verbunden werden. Wenn man ein Terminal Programm startet (minicom unter Linux oder TeraTerm unter Windows), kann man Gießintervalle oder Schaltschwellen für die Feuchtigkeitsmessung einstellen.

Im Hauptmenü kann man

  • eine Übersicht über sämtliche Einstellungen anzeigen
  • die Feuchtigkeitssensorwerte in einer Endlosschleife anzeigen
  • die Uhr stellen
  • In ein Untermenü zur Konfiguration von einer Pflanze wechseln


Im Untermenü kann man für jede Pflanze

  • eine Namen vergeben
  • die Pumpe manuell ein und ausschalten
  • Einen Automatikmodus wählen:
  • Zeitsteuerung: Es wird ein Giessintervall in Stunden eingestellt, sowie eine Giesszeit in Sekunden, die bestimmt wie lange die Pumpe in jedem Intervall eingeschaltet bleiben soll.
  • Feuchtigkeitsmessung: Es wird erstens ein Sensor-Schwellwert eingestellt. Die Feuchtigkeitswerte werden ständig im Hintergrund gemessen. Je trockener die Blumenerde, desto höher der Sensorwert. Überschreitet der Sensorwert den eingestellten Schwellwert, wird die Pumpe eingeschaltet. Außerdem muss eine Zeit eingestellt werden, wieviele Sekunden die Pumpe laufen soll und eine Zeit, wie viele Stunden die Pumpe nach dem Gießen nicht laufen soll. So kann man vermeiden, dass eine Blume absäuft, falls der Sensor nicht so funktioniert wie man sich das vorgestellt hat.

Die Einstellungen werden im Flash des Mikrocontrollers gespeichert und sind auch nach Unterbrechung der Stromversorgung noch vorhanden.


Technik

Die Feuchtigkeitssensoren

Die Feuchtigkeitssensoren hat Dietmar Weisser erfunden und hier gut beschrieben.

Platinen für den Sensor können im Forum bezogen werden. siehe auch: Beitrag "Bausatz für Giess-o-mat Sensor"

Die Sensorplatinen werden aber auch in diversen Onlineshops in verschiedenen Ausführungen angeboten. Entweder als Leerplatine oder auch als als Bausatz mit allen benötigten Bauteilen.

ACHTUNG: Es sollte eine möglichst hydrophobe Vergussmasse für den Fühler verwendet werden. Es hat sich herausgestellt, dass sich URETHAN 71 von CRC Chemie dafür am besten eignet.

Es gibt ausserdem diverse Blogs, wo die Sensoren getestet wurden:

http://www.n8chteule.de/zentris-blog/erdfeuchtemessung/sensoren-in-der-erdfeuchtebestimmung/

https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/Internet_der_Dinge_WS2015/SmartPlant#Messmethode_2:_Kapazitiv

In manchen Blogs gibt es Ausdauertests verschiedener Feuchtefühlersysteme: http://bss135.selfhost.eu:58888/dashboard/db/erdfeuchte-topfdaten?from=1487977200000&to=1501666530441

Sollen die Sensoren an einem Raspberry PI betrieben werden, so ist dieser Beitrag sehr empfehlenswert:
https://tutorials-raspberrypi.de/raspberry-pi-giessomat-kapazitiver-erdfeuchtigkeitssensor/

Hier gibt es ein Projekt mit einem WeMos D1 Mini 1 / ESP-8266 :
https://github.com/LukasK13/ESP-8266-Plant-Watering-V3

Für die Anbindung an einen Arduino gibt es ein fertiges Sketch:
http://fam-haugk.de/giessautomat-fuer-pflanzen

Oder gleich ein fertiges Arduino shield:
https://www.ramser-elektro.at/der-gies-o-shield-fuer-den-arduino/


Oszilloskopbilder des originalen Sensorsgnals und dem Signal nach einem Frequenzteilers mit Pegelwandler:

Oszibild Ramser Giesomat.jpg

Die Hardware

Schaltplan Giess-o-mat

Das Herzstück ist ein Atmel mega8 Mikrocontroller. Mit Hilfe des avr-gcc habe ich diesen in C programmiert. Vielen Dank für die Tipps und Programmbeispiele aus www.mikrocontroller.net

Links oben im Schaltplan ist die Stromversorgung zu erkennen, die über einen Trafo und einen Gleichrichter erst 12V, dann mit einem Festspannungsregler 5V Versorgungsspannung erzeugt.

Rechts befinden sich die Anschlüsse für die Feuchtigkeitssensoren. Die Sensoren liefern eine Frequenz, die sich in Abhängigkeit der Kapazität (=Bodenfeuchte) ändert. Die Frequenz kann am Eingang T1 des µC gemessen werden. Da es aber nur einen Pin T1 gibt und ich 6 Sensoren anschliessen möchte, wird noch ein Multiplexer-Baustein benötigt.

Im unteren Teil des Schaltplans werden 6 Digitalausgänge verwendet, um über Transistoren und Relais 230V zu schalten. An jedem Relais ist eine Steckdose angeschlossen.

Außerdem findet man einen MAX232 Treiberbaustein, der die Pegelwandlung für den seriellen Port des PCs macht und einen Steckverbinder zum Anschluss eines Programmers für den Firmware-Download.

Hier wurde ein Automatisches Gewächshaus mit Raspberry PI und den Gies-O-mat Sensoren realisiert:
http://thomas-geers.de/gewaechshaus.html

Ein weiteres schönes Projekt, dass einen ESP32 UND Arduino nano verwendet:
https://www.xythobuz.de/giessomat.html

Die Software

Ich denke, die Funktionalität ist größtenteils selbsterklärend, wenn man sich den Sourcecode anschaut. Im Wesentlichen besteht sie aus einer Endlosschleife für Benutzermenü und Giessautomatik sowie einer Interruptroutine, die in regelmäßigen Zeitabständen die Uhr aktualisiert und die Sensorwerte misst.

Der Timer0 ist so programmiert, dass bei angeschlossenem 8MHz Quarz 250 Interrupts pro Sekunde generiert werden. Der Zähler, der die Flankenwechsel am Sensor-Eingang T1 zählt, wird zunächst auf 0 gesetzt, dann eine Zehntelsekunde später ausgelesen. Danach wird der Multiplexer auf den nächsten Sensor umgeschaltet und das Spiel beginnt von vorne.

Einmal pro Sekunde wird eine Funktion autogiess() aufgerufen, die mit Hilfe der Uhrzeit, der Sensorwerte und der Konfiguration die Pumpen automatisch ein oder ausschaltet.

Download

C Code und Eagle Schaltpläne findet man hier:
sourcecode.zip
Giess-o-mat auf GitHub

Diskussion

Thread im Forum Codesammlung