www.mikrocontroller.net

Forum: Codesammlung Giess-o-mat mit AVR


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

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:

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:

Was für Pumpen benutzt du denn?
Autor: Christian Bergmann (0xcb)
Datum:

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:

> 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:

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:

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:

bei einen ähnlichem Projekt.

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

die korrodieren zumindestens nicht.
Autor: Christian Bergmann (0xcb)
Datum:

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:

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:

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:

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:

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:

Hallo Christian,

warum hast Du dem Max232 keine Spannungsversorgung gegönnt?
Geht das auch ohne?
Autor: Christian Bergmann (0xcb)
Datum:

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:

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:

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:

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:

...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:

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:

"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:

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:

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:

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:

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:

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:

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:

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net