Hey Ho! Bin ziemlicher Noob bezüglich Arduino und sketch. Habe ein Mega2560 welches zwei DS18B20 ausliesst. Bei einer bestimmten Temperatur (die von 3W LEDs)schaltet das Relais den Strom für die LEDS ab. Funktioniert prima, nur schalten die Relais bei der selben Temp wieder ein. Das ist zu kurz zum abkühlen der LEDs / Kühlkörper. Also Beispiel: Bei >50 Grad Celsius schaltet das Relais die LEDs aus. Sobald die Temp unter 50 Grad ist schalten die Relais gleich wieder ein, nun dauert es nicht lange bis die LEDs wieder zu warm werden und das Relais schaltet. Ich möchte dass sie wenigstens auf Bsp: 40 Grad absinken.... Bitte um Hilfe! Habe nix vergleichbares über SUFU gefunden. Danke
Hier noch fix mein sketch: Die LEDs bitte nicht verwechseln: Die 3Watt LEDs sind blau und grün. deren Temp wird über je eine blaue und rote LED angezeigt...
Fibs2000 schrieb: > Habe ein Mega2560 welches zwei DS18B20 ausliesst. Bei einer bestimmten > Temperatur (die von 3W LEDs)schaltet das Relais den Strom für die LEDS > ab. Funktioniert prima, nur schalten die Relais bei der selben Temp > wieder ein. Bei ener analogen Lösung würde ein Widerstand reichen, um eine Hysterese einzuführen. :-) In deinem Programm müsste das aber auch gehen, indem Du unmittelbar nach dem Abschalten des Relais den Temperaturwert passend veränderst. Gruss Harald
Ich kenne mich mit der Arduino-Sprache nicht aus, aber Du brauchst eine Hysterese, damit die Temperatur weiter absinken kann. Ich denke, daß diese Zeile: >int blueBLED = 27; // Temperatur fŸr blaue LEDs ok nur nach unten hin verändert werden muß. Das Gleiche noch einmal hier: >int greenBLED = 29; // Temperatur fŸr grŸne LEDs ok MfG Paul
Das sind nur die Ausgänge (27 bis 39) für die "kleinen" LEDs welche mir nur anzeigen ob die Temperatur über oder unter bestimmten Punkt ist... Das Thema Hysterese hatte ich mir schon einmal angesehen... komme da aber irgendwie net klar...
Fibs2000 schrieb: > Das sind nur die Ausgänge (27 bis 39) für die "kleinen" LEDs > welche mir > nur anzeigen ob die Temperatur über oder unter bestimmten Punkt ist... > > Das Thema Hysterese hatte ich mir schon einmal angesehen... komme da > aber irgendwie net klar... UPS.... meinte Ausgänge 27 bis 30... nicht 39
Harald Wilhelms schrieb: > > Bei ener analogen Lösung würde ein Widerstand reichen, um eine > Hysterese einzuführen. :-) In deinem Programm müsste das aber > auch gehen, indem Du unmittelbar nach dem Abschalten des Relais > den Temperaturwert passend veränderst. > Gruss > Harald Oh, da bin ich nun wirklich zu "dumm" ;-) ---Temperaturwert passend verändern?---
Schuche mal nach Zweipunktregler. Ich würde das ungefähr so Lösen: if(temeratur>50) LED=0; if(temperatur<40) LED=1;
Fibs schrabte:
>Das sind nur die Ausgänge (27 bis 39) für die "kleinen" LEDs...
Ach so. Ich habe mich noch nicht mit der Arduino-Sache befasst.
Aber dann muß es daran liegen:
if (greentemp >= 31)
Tralala....
if (greentemp >= 10 && greentemp <= 30.9)
Schneuf schnurz...
Wenn ich das richtig erkenne, hast Du eine Hysterese von 0,1 Grad.
(nämlich zwischen 30.9 und 31)
Den Abstand mußt Du größer machen.
MfG Paul
Ja, habe die Hysterese quasi gar nicht programmiert.... ich versuche es mal und poste...
Relais soll nun bei über 50 Grad schalten und erst bei 35 Grad zurückfallen.
1 | // Schalten der Relais bei Übertemperatur |
2 | |
3 | if (bluetemp <=35) |
4 | { |
5 | digitalWrite(blue, HIGH); //Relais an, blaue LED haben Strom |
6 | digitalWrite(blueRLED, LOW); //Anzeige Hochtemperatur aus |
7 | digitalWrite(blueBLED, HIGH); // Anzeige Normaltemperatur an |
8 | lcd.setCursor(11,2); |
9 | lcd.print("on "); |
10 | |
11 | if (bluetemp >= 35,1 && bluetemp <= 50) |
12 | |
13 | { |
14 | // Relais hier rausgenommen |
15 | digitalWrite(blueRLED, LOW); // Anzeige Hochtemp aus |
16 | digitalWrite(blueBLED, HIGH); //Anzeige Normaltemp an |
17 | |
18 | } |
19 | |
20 | if (bluetemp >= 50,1) |
21 | { |
22 | digitalWrite(blue, LOW); //Relais aus, blaue LED ohne Strom |
23 | digitalWrite(blueRLED, HIGH); // Anzeige Hochtemperatur an |
24 | digitalWrite(blueBLED, LOW); // Anzeige Normaltemperatur aus |
25 | lcd.setCursor(11,2); |
26 | lcd.print("off"); |
27 | } |
>bluetemp >= 35,1
int sollten auch in der Arduino Welt ganze Zahlen sein.
viel Erfolg
Hauspapa
Okay... Aber was macht die Schaltung zwischen den Ganzen Zahlen? da Temperatur in 0,25 Grad übertragen wird.. oder folgendermassen?:
1 | // Schalten der Relais bei Übertemperatur |
2 | |
3 | if (bluetemp <35) |
4 | { |
5 | digitalWrite(blue, HIGH); //Relais an, blaue LED haben Strom |
6 | digitalWrite(blueRLED, LOW); //Anzeige Hochtemperatur aus |
7 | digitalWrite(blueBLED, HIGH); // Anzeige Normaltemperatur an |
8 | lcd.setCursor(11,2); |
9 | lcd.print("on "); |
10 | |
11 | if (bluetemp >= 35 && bluetemp <= 50) |
12 | |
13 | { |
14 | // Relais hier rausgenommen |
15 | digitalWrite(blueRLED, LOW); // Anzeige Hochtemp aus |
16 | digitalWrite(blueBLED, HIGH); //Anzeige Normaltemp an |
17 | |
18 | } |
19 | |
20 | if (bluetemp > 50) |
21 | { |
22 | digitalWrite(blue, LOW); //Relais aus, blaue LED ohne Strom |
23 | digitalWrite(blueRLED, HIGH); // Anzeige Hochtemperatur an |
24 | digitalWrite(blueBLED, LOW); // Anzeige Normaltemperatur aus |
25 | lcd.setCursor(11,2); |
26 | lcd.print("off"); |
27 | } |
Entschuldige, da war ich zu schnell mit Quelltextlesen fertig. Deine Temperaturwerte sind float, also Fliesskomma. Deine Kommazahlen haben also Ihre Berechtigung. Nur die LED geschichten sind int. fröhliches basteln Hauspapa
S. K. schrieb: > Entschuldige, da war ich zu schnell mit Quelltextlesen fertig. > > Deine Temperaturwerte sind float, also Fliesskomma. Deine Kommazahlen > haben also Ihre Berechtigung. > Nur die LED geschichten sind int. > > fröhliches basteln > Hauspapa Hallo! Auch in der Generation "arduino" sollten float-Werte durch Dezimalpunkt und nicht durch Komma gekennzeichnet sein.
Route 66 schrieb: >Auch in der Generation "arduino" sollten float-Werte durch Dezimalpunkt >und nicht durch Komma gekennzeichnet sein. Es soll auch Sprachen geben, in denen ein Komma ein Komma ist...
Und füre eine Temperatur sollte man kein float, sonder Festkomma verwenden...
>Bin ziemlicher Noob bezüglich Arduino und sketch. >Und füre eine Temperatur sollte man kein float, sonder Festkomma >verwenden... Beim Wissensstand des TO würde das evtl. bedeuten Temperaturen nur in 1°C Schritten darstellen zu können. Solange Speicher und Rechenzeit kein Problem darstellen ist float für Ihn vermutlich der schnelle, effiziente Weg zum Ziel. fröhliches basteln Hauspapa
Funktioniert jetzt ohne Probleme durch die Hysterese und ein setzen einer HighTemp. Float macht auch keine Probleme. Und ja, natürlich Punkte statt Komma. War zu schnell beim Tippen....
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.