Hallo Zusammen
Ich bin gerade dabei für meine Warmwassersolaranlage eine Steuerung zu programieren.
Bis jetzt klappt alles soweit nur möchte ich ,dass bei Übertemperatur diese Meldung im Display erscheint .
Da der platz sehr eng ist sollte dieser Text einen anderen überschreiben und wenn die Übertemperatur wieder weg ist soll der alte Text auf dem Display wieder erscheinen.
Ich sollte vieleicht noc erwähnen dass ich in Sachen Arduino sowie bei der Benutzung eines Forums ein relativer Anfänger bin, desshalb bitte ich um etwas Nachsicht für etwaiger Fehler .Bin aber Dankbar für jedenHinweis der zur Verbesserung beiträgt.
Hier mal der Sketch
/*
Differenztemperatursteuerung Sonnenkolektor mit 2XPT100
*/
// Laden der Libary:
#include <LiquidCrystal.h>
// initialisieren der LCD Pins ( Für das Orginal Arduino-Pad )
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//die Variablen deklarieren
float tempK;
float tempS;
int tempPin1 = 1;
int tempPin2 = 2;
int Pumpe = 13;
int Differenztemperatur = 0; //Hier nichts eingeben
int Schalttemperatur = 8; //Hier die Schalttemperatur der Differenz Kolektor -> Speicher, bei der die Pumpe gestartet wird, eingeben
int Hysterese = 2; //Hier die Hysterese der Differenz, bei der die Pumpe abgeschalet wird, eingeben
int SpeicherTempMax = 85; //Hier die Maxtemperatur des Speichers, bei der die Pumpe ausgeschaltet wird, eingeben
int SpeicherTempMaxHysterese = 2; //Hier die Hysterese der Ausschaltemperatur des Speichers, bei der die Pumpe wieder eingeschaltet wird, eingeben
int KolektorTempMax = 180; //Hier die Maxtemperatur des Kolektors, bei der die Pumpe ausgeschaltet wird, eingeben
int KolektorTempMaxHysterese = 2; //Hier die Hysterese der Ausschaltemperatur des Kolektors, bei der die Pumpe wieder eingeschaltet wird, eingeben
int GND = 11; //Ersatzweise Masse ( nachher Löschen )
void setup(){
// Die Festen Texte übermitteln
lcd.begin(16, 2);
lcd.print("Kol=");
lcd.setCursor(0, 1);
lcd.print("Sp=");
lcd.setCursor(10, 0);
lcd.print("Dif") ;
lcd.setCursor(8, 1);
lcd.print("Pumpe") ;
pinMode (Pumpe, OUTPUT);
pinMode (GND, OUTPUT); //Ersatzweise Masse ( nachher Löschen )
}
void loop(){
tempK = analogRead(tempPin1); //lesen des Eingangswertes Pin 1 ( Kolektor )
tempK = (5.0 * tempK * 50.0)/1024.0-31 ; //Konvertieren in ein Temperatursignal -20°C bis +220°C
// das Ergebnis ans Display senden
lcd.setCursor(4, 0);
lcd.print(tempK,1); // Die Temperaur des Kolektors wird geschrieben
lcd.write(0xD0 + 15); // das ° Zeichen wird geschrieben
tempS = analogRead(tempPin2); //lesen des Eingangswertes Pin 2 ( Speicher )
tempS = (5.0 * tempS * 30.0)/1024.0; //Konvertieren in ein Temperatursignal 0°C bis +100°C
// das Ergebnis ans Display senden
lcd.setCursor(3, 1);
Hier sollte dann der Text "Übertemp" erscheinen und den Text der nächsten Zeilen überschreiben:
lcd.print(tempS,1); // Die Temperaur des Speichers wird geschrieben
lcd.write(0xD0 + 15); // das ° Zeichen wird geschrieben
Differenztemperatur = tempK - tempS;
lcd.setCursor(13, 0);
lcd.print(Differenztemperatur,1); // Die Differenztemperatur wird geschrieben
lcd.print("K ");
if(Differenztemperatur > Schalttemperatur && tempS < SpeicherTempMax - SpeicherTempMaxHysterese && tempK < KolektorTempMax - KolektorTempMaxHysterese) // Wenn Diff.temp über Schalttemp. oder Speichertemp nicht über 84°C und Kol.temp nicht über 179°C
digitalWrite(Pumpe, HIGH); // Pumpe wird eingeschaltet Pin 13
if(Differenztemperatur < Schalttemperatur - Hysterese || tempS > SpeicherTempMax || tempK > KolektorTempMax) // Abschaltpunkt eingestellte Schalttemperatur - Hysterese oder Speichertemp über 85°C oder Kol.temp. über 180°C
digitalWrite(Pumpe, LOW); // Pumpe wird ausgeschaltet Pin 13
lcd.setCursor(13, 1);
lcd.print(digitalRead(Pumpe) == HIGH? "Ein":"Aus"); // Anzeige des Schaltzustandes der Pumpe
digitalWrite(GND, LOW);//Ersatzweise Masse ( nachher Löschen )
// sleep...
delay(100);
}