beheiztes Mini-Gewächshaus Optimal-Temperatur

@HotPaul :

da wirst du jede Menge Entwicklungsaufwand vor dir haben... :eek: selbst meine relativ einfache Schaltung brauchte drei Wochen, bis sie und der dazugehörige Programmcode derart einsatzbereit waren, dass sie keine merklichen Bugs mehr enthält. Und selbst jetzt schaue ich noch mit einem externen Temperaturfühler jeden Tag ein wenig nach dem rechten, um irgendwelche "undokumentierten Zustände" aufzuspüren, falls es sie gibt... :D

Du wirst auf jeden Fall sehr viel ausprobieren müssen, um zum Beispiel solche Sachen richtig einstellen zu können wie die real benötigte Wassermenge, die Wässerungsintervalle, oder auch nur die momentane Pumpleistung als solche. Bei sowas wirst du nicht auf Erfahrungswerte zurückgreifen können, sondern es wird mit jeder Menge Tüfteln und trial and error verbunden sein.

Könnte sein, dass der Sommer wieder vorbei ist bis wirklich alles so läuft wie du es haben möchtest. :D

Nichtsdestotrotz ist auch deins ein hoch spannendes Projekt, und es wird bestimmt interessant sein, das hier übers Forum mitzuverfolgen.


Eine Sache noch, Feuchtigkeitssensor... habe ich mir bewusst gespart bei meiner Heiz-Schaltung, und stattdessen wird die Heizleistung automatisch über den Programmcode überwacht und geregelt in Abhängigkeit davon, wie schnell sich das Substrat erwärmt. Will heißen:

schnelle Erwärmung ---> heißt wenig Wasser im Substrat ---> Heizleistung wird verringert, wenn sich das Substrat innerhalb von drei Minuten um mehr als 2 °C erwärmt.
langsame Erwärmung ---> heißt viel Wasser im Substrat ---> Heizleistung wird erhöht, wenn sich das Substrat in drei Minuten weniger als 1°C erwärmt.

Damit versuche ich zu verhindern dass meine Heizung zum Elektro-Kocher wird... :D
 
Ja, die Microkontroller lassen sich einfach programmieren - etwas Programmierhintergrund schadet jedenfalls ncht - muss aber nicht sein - jeder Weg beginnt mit dem ersten Schritt.
Aber wie Mr.Chili zeigt: es ist eine unendliche Tüftlerei - man spinnt sich Ideen zusammen - und versuchts umzusetzen (Feuchtigkeit über Temperaturanstieg :thumbsup:) - und man braucht viiiiel Zeit - das ist nur im Winter möglich, im Sommer muss ich den Pflanzen beim Wachsen zusehn:D.
 
Na klar, Übung macht den Meister. Der eigentliche Code für meinen Mikrocontroller war auch an zwei Abenden fertig (wenn man von ein bisschen Feintuning hier und da absieht). Aber da kann dann alles mögliche passieren bis alles wirklich fehlerfrei läuft, es können Probleme bei den ersten Praxistests auftreten, die man in der Entwicklung nicht auf dem Schirm hatte, dann muss man zurück an den Computer und sich fragen warum der Code, obwohl er sich kompilieren lässt, nicht das tut was er soll, etc etc... und besonders wenn man das ganze dann auf ner Platine aufgelötet hat so wie ich, dann kanns sein dass man nen Lötpunkt falsch gesetzt oder vergessen hat oder dass ne Lötstelle kalt ist etc. etc., und man sich dann nen halben Tag tot sucht, bis man den Fehler gefunden hat.

Ohne zu sehr ins Detail zu gehen, meine Heizung wird gesteuert über einen N-Kanal-MOSFET, und der will natürlich auch schön geerdet sein. War meiner aber nicht, der Lötpunkt am zu erdenden Source-Pin war nahezu völlig kalt weil ich beim erstenmal drüber gehen gerade soeben zuwenig Lötzinn drauf hatte, und es hat so gut wie garnicht geheizt. Die kalte Lötstelle sah man aber nicht, auch nicht unter meiner Lötlupe, erst Nachmessen mit dem Multimeter, unter gleichzeitigem Hin- und Herbiegen des verlöteten Drahts an der Stelle, brachte die Erleuchtung :banghead:

Was aber stimmt, das ist, dass man sich bei solchen Projekten immer ein bisschen selber im Zaum halten muss, dass die Ideen nicht zu sehr ausufern... :D machbar ist mit der modernen Technik heutzutage nahezu alles, und man muss sich aufs wesentliche beschränken wenn so eine Schaltung und der Code dazu nicht eine "ewig Unvollendete" werden sollen.
 
Wie heißts so schön: Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie:laugh::banghead:
 
Das schöne am physical computing, wie man das ganze mit Arduino und Co. ja auch nennt, ist einfach, dass man damit Geräte und Schaltungen bauen kann, die etwas "Greifbares" tun und bewirken. Ich hab früher viel Webdesign gemacht, aber das ist alles ja nur virtuell auf nem Bildschirm. Aber hier eine Schaltung zusammen zu löten, auch wenn sie am Ende nur ein Relais auf und zu macht, das macht irgendwie noch viel mehr Spaß... :)

Ein gewisses Grundverständnis von höheren Programmiersprachen wie C sollte man schon haben, aber der Erfolg von Arduino basiert eben auch darauf, dass man selbst ohne ein absoluter Programmier-Crack zu sein (oder ohne ne eigene Schaltung zusammenlöten zu können) schnell und einfach Ergebnisse erzielen kann. Alles was man lernen und wissen muss ist online überall dokumentiert. Und mit dem ganzen Ökosystem was sich um Arduino und vergleichbare Plattformen herum entwickelt hat, gibt es im Grunde nichts, was man nicht bauen kann, und das meistens für ziemlich wenig Geld.

Kann nur jeden ermuntern, der sowas interessant findet, da auch mal einzusteigen, sich ein Arduino-Board zu holen und einfach loszulegen ;)
 
Hab meinen Code nocheinmal ein wenig angepasst, besonders die Steuerung der Heizleistung in Abhängigkeit vom Wassergehalt des Substrats hab ich nochmal verfeinert, jetzt wird einmal pro Minute gecheckt, wie schnell sich das Substrat erwärmt. Optimierungsmöglichkeiten gibt es halt immer ;)

Hab mal meinen Arduino-Sketch mit dem Code für den Mikrocontroller an dieses Posting drangehängt, vielleicht interessiert das jemanden.

Ich muss dazu sagen, ich bin kein Informatiker, sondern BWLer... wenn der Code an manchen Stellen Eleganz vermissen lässt, dann bitte ich das zu entschuldigen... effizienter Code heißt für mich in meinem Fall auch, dass ich keine zu großen gedanklichen Verrenkungen machen muss, damit ein Code das tut was ich möchte :D
 

Anhänge

Zuletzt bearbeitet:
Hab mich ein wenig in den Code eingelesen - um es im Detail zu verstehn, müsste ich wohl einiges an Zeit investieren..... Aber: Kurzer und relativ gut dokumentierter Code :thumbsup:
Ich bin ja auch nicht hauptberuflich Arduino-Programmierer;) Seit -DOS-Zeiten hab ich aber schon einige Programmiersprachen kennengelernt - ich glaub QBasic nannte sich meine erste? Ja, und eben dann will man irgendwann mehr bewegen als nur die Pixel am Bildschirm.
Ist ein tolles hobby.
 
Danke für den Code! Da waren ein paar nette Anregungen dabei, die ich für andere Projekte verwenden kann.


Habe mir den Code einmal kurz angesehen.

Was ist eigentlich, wenn der Kontakt zum Temperatursensor verloren geht. Kabel wird abgerissen oder Wackelkontakt?
Wenn der Temperaturfühler nicht richtig misst, dann meldet er -127 °C. Was ist, wenn der Temperaturfühler gar nicht erreicht werden kann? Dann liegt nur der Startwert vor. Bei "initialTemp = 0.00" werden dann deine Chilis gebraten. Bei z. B. "initialTemp = 40.00" wird die Heizung deaktiviert und es passiert nichts.


if (initialTemp == -127.00) initialTemp = 0.00;
tempAverage = initialTemp;
temperatureCheck1m = initialTemp;
temperatureCheck3m = initialTemp;



Habe jetzt aber auch schon über 6 Monate nicht mehr einen Arduino programmiert. Ich hoffe mein Hinweis ist korrekt.
Habe aus schlechter Erfahrung lernen müssen, dass die Programme immer fehlersicher sein müssen. Gerade wenn man steuert.
 
Was ist eigentlich, wenn der Kontakt zum Temperatursensor verloren geht. Kabel wird abgerissen oder Wackelkontakt?
Wenn der Temperaturfühler nicht richtig misst, dann meldet er -127 °C. Was ist, wenn der Temperaturfühler gar nicht erreicht werden kann? Dann liegt nur der Startwert vor. Bei "initialTemp = 0.00" werden dann deine Chilis gebraten. Bei z. B. "initialTemp = 40.00" wird die Heizung deaktiviert und es passiert nichts.


-127.00 °C ist der Universal-Fehlercode beim DS18B20, der in der dazugehörigen Library codemäßig definiert steht. Wenn dieser Wert erscheint, stimmt was nicht mit dem Sensor, und das bedeutet alles von falsch oder nicht angeschlossen bis hin zu hardwaremäßig kaputt (ist auch eindeutig zuzuordnen, da der reguläre untere Messbereich des Sensors bei -55°C endet). Kannst du auch auf nem Breadboard ausprobieren. Hast du den Sensor an deinen Arduino angeschlossen so dass er korrekte Werte liefert und unterbrichst dann auf einmal die Datenleitung oder die Erdung oder das +5V Kabel, dann wird auf dem serial monitor IMMER -127.00 ausgegeben. Somit kann man diesen Wert universell einsetzen wenn man jetzt wie z.B. in meinem Code sagen will, wenn der Sensor irgendwie, aus irgendeinem Grund nicht geht, soll das Ding den Saft abstellen und in ner Endlosschleife blinken.

Da ich ja immer als Temperaturwert einen Mittelwert aus fünf Temperaturmessungen nehme, wo es immer mal sein kann dass eine einzelne Messung fehlerhaft ist, sage ich halt, wenn die Fehlmessungen so zunehmen, dass der Mittelwert aus den fünf Messungen unter -50 gedrückt wird, dann soll ein Fehler ausgegeben werden. So verhindert man, dass schon eine einzige sporadische Fehlmessung als "Ausreißer" zum Abort führt. Sagen wir, wir haben in einem Mess-Intervall fünf Messungen, von denen zwei die korrekte Temperatur von 25°C angeben und die anderen drei -127°C, dann ist die resultierende Durchschnittstemperatur - 66,2 °C ... somit sind drei von fünf Messungen fehlerhaft, und der Durchschnitt unter meinen -50°c.

Davon abgesehen, ich hab wie bereits beschrieben momentan noch einen zweiten Temperatursensor im Substrat stecken, der an ein Arduino-Board und meinen PC angeschlossen ist und mit dem ich immer mal wieder reinschaue, ob die Temperaturkurve in meinem Mini-Gewächshaus so verläuft wie sie soll. Bis jetzt scheint es keine Fehler zu geben, es wird immer ziemlich genau bei 28°C abgeschaltet, und knapp unter 26°C springt die Heizung wieder an.


Bei "initialTemp = 0.00" werden dann deine Chilis gebraten.

Ist doch praktisch... eingebaute Brat-Funktion... dann muss ich das nachher nicht in der Pfanne machen... :D


EDIT: Noch eine wichtige Anmerkung zum Code... damit sich die Heizung bei fehlerhaftem Temperatursensor auch wirklich abschaltet, müsste (anders als in meiner ursprünglich geposteten Textdatei weiter oben, habs auch dort inzwischen berichtigt) die betreffende Stelle im Code so aussehen:

Code:
if (tempAverage < -50.00) {

    digitalWrite(heater, LOW);
    while (1) ledBlink(150);
  }

Wenn man dem Mikrocontroller nicht ausdrücklich sagt dass er die Heizung ausmachen soll bei kaputtem Temperaturfühler, dann könnte es sonst nämlich sein, dass unkontrolliert weiter geheizt wird, ohne dass die Temperatur weiter überwacht wird. Das könnte dann im aller-ungünstigsten Fall auch mal dazu führen, dass euer Heizpad zum Bunsenbrenner wird... :eek: :D
 
Zuletzt bearbeitet:
Mein Ansatz war bei meinen Chilis halt, eine simple Eigenbau-Lösung für die Beheizung eines Mini-Gewächshauses zu schaffen. Besonders mit meinem Eigenbau-Heizpad bewegen sich die Kosten für alles jetzt bei um die 15 Euro wenn man's nachbauen wollte.

nimmst du 2 Alubleche 1,5 oder 2mm, bei mir sind die 35x25cm groß,
legst die aufeinander und bohrst 8x 3mm durch beide, das obere wird gesenkt.
dazwischen kommen drei Widerstände 10 kOhm 5W (die eckigen Keramik) parallel an 230V~
Die Seiten kann man abdichten, zB mit Klebedichtungsband. Schrauben M3 x 25 Senkkopf+ Muttern dazu.
Heizplatte zusammenbauen. Sie hat ziemlich genau 15W

heater.jpg


Sie steht auf den eigentlich zu langen Schrauben, hat so nur sehr wenig Wärmekontakt zum Boden. Die Schrauben klemmen die Widerstände zwischen den Blechen ein.
Da oben gesenkt wurde gibts da guten Wärmekontakt. Stell die Anzucktkiste drauf.

Ergebnis, gemessen nach 24 Std. Dauerbetrieb.

ch.jpeg


(wundert euch nicht über das Laborthermometer, ich sammel und restauriere alte Messtechnik. Es freut sich über den Job)
Da es von -100 bis +1200°C messen kann ist es für Chilikästen eindeutig zu teuer :)

Kosten für die Heizer.
Wenn wir für die Alubleche mal 2,- pro Stück ansetzen und für das Netzkabel nochmal 1,- dann kostet das zusammen 6,- (Widerstände sind centartikel)
Die Temperatur bleibt in diesem Bereich, eine Regelung halte ich daher für unnötig, die wird nur nötig wenn die Heizung mehr liefert als das was für die 27°C nötig ist, da sind wir mit 15W im Idealbereich, ich habs ausprobiert (4 Widerstände drin = 20W das war zu warm, mit 2 Stück = 10W wars mir zu niedrig)

lG Martin

lG Martin
 
Zuletzt bearbeitet:
Naja, "simpel" ist halt immer relativ :D

Ich hatte einfach Spaß daran, mal wieder eine Arduino-Schaltung zu entwerfen.

Dass deine Heizung nicht regelbar ist, würde ich allerdings als Nachteil empfinden. Sie heizt ja quasi konstant auf Volllast. Wenn die Sonne dann jetzt im Frühjahr doch mal etwas stärker wird und von außen auf das Gewächshaus scheint, dann könnte das die Temperatur deutlich erhöhen. Meine Mikrocontroller-gesteuerte Heizung ist da eher adaptiv, d.h. die Heizung legt ne Schippe drauf wenn's sehr kalt ist, und heizt schwächer wenn die Umgebung wärmer ist. Dadurch dass die Heizung auf 12V läuft, konnte ich sie außerdem in die Pflanzschale integrieren und ein möglicher Wassereintritt ins Heizpad ist nicht lebensgefährlich.

Aber naja, viele Wege führen nach Rom ;)
 
stimm ich dir voll zu.
Ich ging eben nur davon aus diese Heizmatten haben ja auch keine Regelung.
In dem Falle mußt du wenns zu warm ist den Abstand der Schale zur Heizfläche etwas vergrößern dann stimmts wieder.
In der freien Natur ist es ja auchnicht aufs Grad genau :) Das war dann eben sehr simpel.. ich denke das wird was.
Ich hab zwei kleine Schalen zusammen auf einer gekauften Heizmatte stehen, das scheint identisch zu sein. Die hat auch 15W, für 20,-€

Für Arduino bin ich vermutlich zu alt, bei mir wärs ein Schmitt-Trigger mit NTC geworden.
Oder was fertiges aus China (amazon, 5 Euro oder so)
lG Martin

Hier die gekaufte Matten - Lösung.

IMG_20200209_194930.jpg
 
Ist halt alles ne Frage, was man haben möchte. ;)

Für die Heizmatten kann man doch nen Thermostat dazukaufen, oder?

Für Arduino ist man im übrigen nie zu alt... man sollte halt über ein paar Programmierkenntnisse in C verfügen oder sie sich anlesen, aber dann ist es echt ziemlich einfach. Zumal es zahllose Awendungsbeispiele im Netz gibt und auch sonst alles sehr gut dokumentiert ist.


Der Arduino-Code den ich für meine Heizung entwickelt hab, wird im übrigen demnächt Eingang finden in mein nächstes Projekt, nämlich eine selbst gebaute Sitzheizung für mein Auto... :D
 
Zurück
Oben Unten