Hey,
ich sitze jetzt schon einige Stunden vor meinem PC und habe Probleme mit meiner Schaltung/Code. :
Als kurze Einführung, hier ein paar Infos:
Mein Ziel ist es ein Autonomes Gewächshaus zu bauen. Dies soll sich von selber Belüften und wenn es zu kalt ist von selber beheizen. Ich hab im Internet eine ganze Weile nach Codes geschaut und dann einen passenden gefunden. Ich verwende einen NTC mit 10k und einem 10k Widerstand.
In dem kleinen Versuchsaufbau habe ich eine LED zum veranschaulichen genommen. Später wird diese durch ein Relais ersetzt und daran der Lüfter, sowie die Heizfolie angeschlossen.
Den Code aus dem Internet habe ich ein bisschen umgeschrieben, weil dort noch keine If-Abfrage vorhanden war. Hinter jede Zeile, die ich neu hinzu gefügt habe, habe ich ein Kommentar gemacht, in dem "NEU" steht.
Mein Lüfter soll angehen, wenn die Temperatur im Gewächshaus über 25 Grad Celsius hat. Die Heizfolie soll angehen, wenn die Temperatur auf 3 Grad gesunken ist.
Mein großes Problem ist, dass die LED macht, was sie will. Wenn ich die größer und die kleiner Zeichen ändere, ist sie ein mal die ganze Zeit an, auch wenn ich die Temperatur ändere, und beim anderen mal die ganze Zeit aus.
(Ich hoffe, ihr versteht, was ich euch sagen will. Es ist etwas schwierig zu erklären... : )
Liegt mein Fehler darin, dass ich vielleicht die falsche Variable verwende, oder was mach ich falsch?
Ich bin gerade ein kleines bisschen verzweifelt...
Hier der Code:
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
int LED = 12; //NEU
float TempC = Tc; //Variable für den Wert Tc //NEU
void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT); //NEU
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
Tc = T - 273.15; //Umrechnung in Celsius von Kelvin
Tf = (Tc * 9.0)/ 5.0 + 32.0; //Umrechnung in Fahrenheit von Celsius
Serial.print("Temperature: ");
Serial.print(Tf);
Serial.print(" F; ");
Serial.print(Tc);
Serial.println(" C");
delay(500);
float Temperature = digitalRead(TempC); //NEU
if(Temperature > 25.00) //NEU
{ //Größer als 25 Grad Celsius
digitalWrite(LED,HIGH); //NEU
}
else //NEU
{
digitalWrite(LED,LOW); //NEU
}
}
Vielen, vielen Dank schon mal im voraus
Liebe Grüße
Leon Ranger