mikrocontroller.net

Forum: Projekte & Code Giess-o-mat mit AVR


Autor: Christian Bergmann (0xcb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vor 3 Jahren habe ich mir eine automatische Blumengiessanlage mit 
ATmega8 Mikrocontroller gebaut. Das Ding ist immer noch in Betrieb und 
meinen Zimmerpflanzen geht es immer besser.
Hier ist er, der Giess-o-mat.
Sourcecode ist im Anhang.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorsicht bei dem Gleichstrom durch die Messelektroden!
(sind zwar nur 5V über 10K aber trotzdem)
Dadurch zersetzen sich die Elektroden und bilden giftige Stoffe für die 
Pflanzen...
Manchen macht das nichts, andere verrecken schnell ;)

Autor: No Name (nohelp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für Pumpen benutzt du denn?

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
No Name wrote:
> Was für Pumpen benutzt du denn?

Ich benutze billige Mini-Zimmer-Brunnen-Pumpen von Conrad. Die 
funktionieren gut, solange das Wasser nicht höher als ca. 50 cm gepumpt 
werden muss.

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hallo,
>
> habe eben deinen Beitrag "Gies-O-Mat" gesehen,
> da ich mich erst seit kurzem mit der Elektronik und Mikrocontrollern
> befasse fand ich deinen Schaltplan sehr interessant. Kann auch fast
> alles nachvollziehen. Hätte da aber noch ein paar Fragen zu Sachen die
> ich leider nicht auf dem Plan entziffern kann.
> - Was für Relais werden benutzt? liege ich richtig das die 12V
> Spulenspannung haben? und auf den Lastkontakten direkt die 230V
> schalten?
> - die Gleichrichtung habe ich auch gecheckt, aber welchen Wert hat der
> Kondensator?
> - welchen Spannungsregler wird verwendet?
> - wo wird die 12V für die Relais abgegriffen?

> Hoffe du findest die Zeit mir diese Fragen zu beantworten.

Die Relais haben 12 V Eingangsspannung und eine Schaltleistung, die 
größer ist als die Leistung meiner Pumpen.
Für den Elko im Gleichrichter gilt, je größer desto besser. Meiner hat 
2200µF.
Die 12 V werden direkt hinter dem Gleichrichter abgegriffen. Im 
Schaltplan habe ich der Übersichtlichkeit halber dafür das Symbol mit 
dem Doppelpfeil nach oben eingezeichnet.
Die 5V für den ATmega liefert ein IC7805.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

was mich interessiert: Du steuerst die Relais mit einem npn-Transistor 
als Emitterfolger an. Die Emitterspannung kann also nie höher werden als 
Ub-Ube.
Im konkreten Fall also 5V (maximal vom AVR-Port) - ca. 0,7V Ube = 4,3V.
Das ist die Spannung, die die maximal Relais bekommen. Damit ziehen die 
sicher an?

Gruß aus Berlin
Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Vorsicht bei dem Gleichstrom durch die Messelektroden!

Ich würde daher die Meßspannung nur jede Stunde kurz für das Messen 
einschalten.


Peter

Autor: Günti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei einen ähnlichem Projekt.

habe ich als Messelektroden.
die kohlestifte der AA Alkalibaterien verwendet.

die korrodieren zumindestens nicht.

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael U. wrote:
> Hallo,
>
> was mich interessiert: Du steuerst die Relais mit einem npn-Transistor
> als Emitterfolger an. Die Emitterspannung kann also nie höher werden als
> Ub-Ube.
> Im konkreten Fall also 5V (maximal vom AVR-Port) - ca. 0,7V Ube = 4,3V.
> Das ist die Spannung, die die maximal Relais bekommen. Damit ziehen die
> sicher an?
>
> Gruß aus Berlin
> Michael

Hallo,

im Schaltplan habe ich statt der +12V Spannungsversorgung nur 
Antennen-Symbole eingezeichnet. Da wird es vielleicht nicht deutlich, 
dass am Kollektor der Transistoren 12 V anliegen. Ube muss nur größer 
als 0,7 V sein, um die 12 V auf die Relais durchzuschalten.

Gruß
Christian

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nein, Du hast schon richtig die Kollektoren mit ß12V beschriftet.
Du hast auch recht, daß Ube (also die Spannung zwischen Basis und 
Emitter ca. 0,7V sein muß, um einen Transistor durchzusteuern.
Sie wird auch nie merklich größer, weil die B-E-Strecke für den 
Basisstrom eine Dioden in Flußrichtung darstellt.
Ub gegen GND ist maximal +5V (Uout des AVR-Pins), die Emitterspannung 
also maximal ca. 4,3V, egal, was am Kollektor anliegt.

Deshalb heißt ein Emitterfolger ja auch gern Spannungsfolger...

Gruß aus Berlin
Michael

Autor: Christian Bergmann (0xcb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

you are so right man ! Mit dem Relais als Emittefolger funktioniert die 
Schaltung aber auch gut.
Für alle, die das Gerät nachbauen wollen, habe ich den Schaltplan nach 
den Regeln aus dem Lehrbuch korrigiert.
Im Anhang der korrigierte Eagle-Schaltplan.

Viel Spass beim nachbauen
Christian

Autor: R. Freitag (rfr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könntest du mal Details zum Sensor und zu den Messwerten posten, 
insbesondere den Zusammenhang zwischen Feuchte und Widerstand?

Grüsse

Robert

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das wichtigste über die Feuchtigkeitsmessung steht jetzt im Artikel 
Giess-o-mat.
Die Software zur Feuchtigkeitsmessung ist allerdings bis jetzt noch 
etwas einfach gestrickt. Wenn die Anlage falsch parametriert wird oder 
wenn die Elektroden verrosten, kann es passieren, dass der Giess-o-mat 
das ganze Wasser aus einem großen Eimer in einen kleinen Blumenpott 
pumpt.

Autor: M. W. (hobbyloet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

warum hast Du dem Max232 keine Spannungsversorgung gegönnt?
Geht das auch ohne?

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Max232 Schaltplansymbol in Eagle hat keine 
Spannungsversorgungseingänge. Man muss natürlich +5V und Masse 
anschliessen. Der Chip erzeugt daraus dann 24V.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bemühe mal invoke bei Eagle, dann kannst Du auch die Spannungsanschlüsse 
des MAX sichtbar machen.

Gruß aus Berlin
Michael

Autor: Walter-kg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und guten Tag,

der Bauvorschlag Giess-o-mat ist prima, leider habe ich ein problem bei 
der erzeugung
einer für den ATmega8 verständlichen HEX-Codes, Wer kann mir helfen

Gruß
Walter-kg

Autor: Sven K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wo ist das Problem ?
Makefile liegt doch bei.

Kommandozeile:

make

und siehe da: ein HEX File mit 1Mhz.

Gruß Sven

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...imho müsste man das ganze aber noch etwas aufpumpen, denn 10L wasser 
und nen atmel in meiner wohnung, da muss die SW schon asil-c enstprechen 
:)

wollt ich auch schon ewig mal bauen, nur für den urlaub - aber bei >15 
pflanzen scheue ich den verschlauchungsaufwand doch noch etwas...

Klaus.

Autor: Walter-kg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven,

danke für die HEX Datei.
Aber ich komme immer noch nicht klar, wie ich die vorhandenen Dateien
xxx.c,  xxx.h , xxx.sla Makefile u.s.w umwandeln kann. Bräuchte mal ein 
kleines Sampel für to do
Nicht für ungut, aber ich komm einfach nicht zurecht.

Gruß
Walter-kg

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Wenn die Anlage falsch parametriert wird oder
wenn die Elektroden verrosten, kann es passieren, dass der Giess-o-mat
das ganze Wasser aus einem großen Eimer in einen kleinen Blumenpott
pumpt."

Wäre doch leicht zu umgehen. Programmier einene Höchstmenge an Wasser 
pro Pott und Gießvorgang (ein Drittel des Pottvolumens sollte bei jeder 
Pflanze massig ausreichen um die gesamte erde zu befeuchten). Will das 
Programm die Höchstmenge überschreiten, wird dieses unterbrochen und 
eine Fehlermeldung ausgegeben. Außerdem könnte er ja auch auf den 
zeitbedingten Gießmodus umstellen (mit vorsichtigen Parametern für das 
Gießen)...nur für den Fall, das man zu spät merkt, dass was mit den 
Elektroden nicht stimmt. Programmiertechnisch dürfte das ja kein Problem 
sein

wie läuft das eigentlich...wird die erde homogen befeuchtet oder läuft 
das wasser praktisch in der Vertikalen einfach runter?

Werde mir jedenfalls das Projekt hier als Vorlage nehmen für ein 
eigenes. Als Anfänger benötige ich jedoch noch einiges an Hilfe. Wenn 
hier irgend jemand zufälligerweise nochmal reinschauen sollte, 
vorzugsweise der Christian Bergmann oder andere die mir vorallem mit der 
Messung weiterhelfen können, wäre ich dankbar für jegliche Hilfestellung 
(aber achtung...ich brauche noch ein wenig mehr Hilfestellung ;) )

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei meinem Projekt habe ich schliesslich auf die Feuchtigkeitsmessung 
verzichtet und steuere die Pumpen nur noch per Timer. Ich habe eine 
Palme, für die schaltet der Giess-o-mat die Pumpe alle 24 Stunden für 45 
Sekunden an. Eine andere Blume bekommt nur alle 7 Tage 30 Sekunden lang 
Wasser.
Ab und zu muss ich jetzt halt überprüfen, ob die Wassermenge so passt 
und evtl. nachjustieren.

Wenn jemand Lust hat, die Feuchtigkeit in der Blumenerde zu messen und 
evtl. meinen Code dazu verbessert - finde ich gut und gebe auch gerne 
Hilfestellung.

Der Code für die Steuerung der Pumpen steckt in giessomat.c in der 
Funktion autogiess(). autogiess() wird jede Sekunde ein Mal aufgerufen.

Eins muss ich noch zur Verlegung der Schlauchleitungen sagen:
Das Ende der Schlauchleitung muss immer ein bisschen höher gesteckt 
werden als der Wasserspiegel im Eimer, sonst läuft das Wasser weiter, 
wenn die Pumpe schon ausgeschaltet ist.

Gruß
Christian

Autor: Freed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich habe mir überlegt eine automatische Bewässerung zu bauen, und bin 
dabei ziehmlich schnell auf diesen Thread gestossen. Leider bin ich noch 
ziehmlich unerfahren mit entwickeln von Schaltungen, und habe auch grad 
erst angefangen mit microcontrollern zu experimentieren.

Ich wollte die Steuerung eigentlich über einen Sensor laufen lassen, 
damit die Pflanzen auch immer die richtige Menge Wasser bekommen. Hier 
der Low-cost Sensor:
http://www.dietmar-weisser.de/analogtechnik/BodenF...

Das Signal (Frequenz um die 100khz) müsste man dann auswerten und bei 
Bedarf die Pumpe schalten.

Was haltet ihr davon, und ist das über den "einfachen" Counter im 
Controller möglich?

Grüße, Freed

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
der Sensor gefällt mir gut. Bei der kapazitiven Messung braucht man 
keine Elektroden in die Blumenerde stecken.

Die Messung der Frequenz kann man bei dem ATmega8 Mikrocontroller mit 
der Timer/Counter Funktion an den Pins T0 oder T1 machen.
An den Giess-o-Mat könnte man also maximal 2 der Sensoren direkt 
anschliessen.

Die Pins T0 und T1 werden zur Zeit als Digitalausgänge zur Steuerung der 
Pumpen benutzt. Sie müssten auf andere Pins umverdrahtet werden und die 
Software entsprechend angepasst werden.

Autor: Freed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Also der Sensor funktioniert soweit ganz gut. Mit dem Multimeter bekomme 
ich auch realistische Werte im Zeitverlauf. (Frequenz steigt langsam an 
bis ich wieder gieße). Leider funktioniert das ganze mit dem mega8 bei 
mir noch nicht so wunderbar... bekomme andere Werte als mi dem 
Multimeter, und im Zeitverlauf scheint sich kaum etwas zu ändern.

Werde als nächstes mal probieren alles auf einen Platine zu bauen. 
Bisher nur übers Steckbrett. Vielleicht waren die Entfernungen zu groß?!
Grüße

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sensor muss auch mit dem mega8 funktionieren.
Kannst du Frequenz und Spannung am Eingangspin des mega 8 messen ?
Hast du den Eingangspin so konfiguriert, dass er als Timer/Counter 
arbeitet ?
Läuft das Zählerregister bei deiner Messung vielleicht über ?

Wenn du willst, poste mal deinen Sourcecode.
Ich werde demnächst auch mal versuchen, so einen Sensor zum Laufen zu 
bringen.

Gruß Christian

Autor: Freed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Scheint mitlerweile zu funktionieren! Lag wohl an schlechten Kontakten.
Hier mal der Code. Bisher wird nur Frequenz gemessen, und dann per UART 
an den Rechner geschickt, der das ganze protokolliert.
Grüße

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

Dim Zaehler As Long
Dim Result As Long

Config Timer0 = Counter , Edge = Rising
On Timer0 Sprung_in_sup

Config Timer1 = Timer , Prescale = 256
On Timer1 Timer_irq

Enable Timer0
Enable Timer1
Enable Interrupts

Load Timer1 , 15625

Do
   Wait 10
   Print Result
Loop


Sprung_in_sup:

Incr Zaehler

Return

Timer_irq:



    Zaehler = Zaehler * 256
    Result = Timer0 + Zaehler

    Timer0 = 0
    Zaehler = 0
    Load Timer1 , 15625
   Return

End

Autor: Christian Bergmann (0xcb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Thread ist nicht mehr aktuell.
Eine neue Version befindet sich 
[Beitrag "Giess-o-mat mit AVR Version 2" hier]

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.