Der Temperaturwächter dient dazu, im Gewächshaus junge Pflanzensetzlinge im Frühjahr vor noch vereinzelt auftretendem Nachtfrost zuschützen.
Die Anlage schaltet eine elektrische Beheizung ein und aus und signalisiert ggf. durch eine Alarmglocke, daß eine Mindesttemperatur unterschritten ist.
Als Temperatursensor wird ein TSIC 306 verwendet. Er ist auf 0,3 °C genau. Die Steuerung der Ausgabegeräte erfolgt über eine 2-fach Relaiskarte. Ein TFT-Display zeigt den aktuellen Status an. Eine Folientastatur ermöglicht Eingaben zur Änderung der Einstellungen. Zur Anzeige der Uhrzeit wird ein Uhren-Modul vom Typ DS1307 verwendet. Es hat eine Pufferbatterie und läuft dadurch auch bei Stromausfall weiter. Ausserdem besitzt es auch nichtflüchtigen RAM-Speicher. In diesem Speicher werden die Einstellungen gesichert, sodass sie nach einer Unterbrechung der Stromversorgung unverändert zur Verfügung stehen.
Das Ganze wird durch einen Arduino Nano gesteuert und ist in einem Schaltkasten untergebracht..
Hier das Blockschaltbild :
Ein TFT-Display zeigt die aktuelle Temperatur, Uhrzeit und Status der Heizungssteuerung sowie der Alarmglocke an.
Über ein Menu können die Uhr und alle Parameter gestellt werden.
Ein sog. Loggbuch protokolliert die Temperatur der letzten 24 Stunden, als Augenblickswert zu jeder vollen Stunde.. Zusätzlich wird im Stundenintervall die Einschaltdauer der Heizung und ggf. der Zeitpunkt einer Alarmmeldung festgehalten
Da nur ein kleines Keyboard vorhanden ist, wird der Dialog über Auswahlmenues und Zifferncodes geführt.
Die Tomaten- und Gurkenpflanzlinge haben es uns gedankt und gedeihen prächtig.
Hubert
Hi!
Super Projekte habt ihr da. Könnt ihr zu den Projekten auch den Code veröffentlichen?
Ich weiß zB nicht, wie man so eine Tastatur ansteuert und ein Menü programmiert und anhand eines Beispielcodes wäre das sicherlich ganz gut zu verstehen.
VG,
matthias
Hallo Mattias,
mein Code ist nicht für die Veröffentlichung gedacht. Zu Deinen Fragen : Ein Menu ist Fleißarbeit. Am besten für jedes Bild eine Unterroutine schreiben, die das Bild erzeugt. Dann eine Steuerung mit einer Variablen, die den aktuellen Dialogschritt enthält und die Eingaben und Aktionen steuert
Zur Keyboardabfrage hier ein Auszug aus meinem Code :
// Pinbelegung
//D2 Keypoard Spalte 1 Output
//D3 Keypoard Spalte 2 Output
//D4 Keypoard Spalte 3 Output
//D5 Keypoard Zeile 1 Input Pullup
//D6 Keypoard Zeile 2 Input Pullup
//D7 Keypoard Zeile 3 Input Pullup
//D8 Keypoard Zeile 4 Input Pullup
// Key-Matrix Mapping
unsigned char keyboard_map[] = „#9630852*741“;
// im Setup
pinMode(5,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
// Keyboard Routine
unsigned char keyboard(){
static char lastkey = 0;
unsigned char key = 0;
byte n=-1;
for (int i=2;i<5;i++){
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
delay (2);
for (int k=5;k<9;k++){
n++;
if (digitalRead(k)==0) {
key = keyboard_map[n];
}
}
digitalWrite(i,HIGH);
pinMode (i,INPUT);
}
// entprellen
if (key == lastKey){
key = 0;
}
else {
lastKey = key;
delay(50);
}
return key;
}
Viel Erfolg damit
Hubert
ok, danke für den Hinweis und danke für den Programausschnitt!
VG,
matthias