README vervollständigt: Temperaturüberwachung
This commit is contained in:
parent
85e3143b50
commit
3f85ea320a
16
README.md
16
README.md
@ -5,22 +5,22 @@ Dieser Arduino Sketch dient zur Sicherheitsüberwachung der PFG Spule. Es werden
|
|||||||
dabei folgende Parameter überwacht:
|
dabei folgende Parameter überwacht:
|
||||||
|
|
||||||
1. Kühlmitteldurchflussmenge
|
1. Kühlmitteldurchflussmenge
|
||||||
2. Temperatur (TODO)
|
2. Temperatur
|
||||||
|
|
||||||
|
|
||||||
i Durchflussmenge
|
1 Durchflussmenge
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Zur Durchflussüberwachung dient ein Durchflussmesser der im Rücklauf des Wasser-
|
Zur Durchflussüberwachung dient ein Durchflussmesser der im Rücklauf des Wasser-
|
||||||
kreislaufs angebracht ist. Er liefert mit Hilfe eines Hallsensors Pulse mit einem
|
kreislaufs angebracht ist. Er liefert mit Hilfe eines Hallsensors Pulse mit einem
|
||||||
Duty-Cycle von 50% deren Frequenz proportional zum Durchfluss ist.
|
Duty-Cycle von 50% deren Frequenz proportional zum Durchfluss ist.
|
||||||
|
|
||||||
In diesem Sketch wird der Abstand zweier Pulse gemessen, d.h. die Periodendauer..
|
In diesem Sketch wird der Abstand zweier Pulse gemessen, d.h. die Periodendauer.
|
||||||
Zur Messung wird der timer1 (der 16bit Timer) des Arduino verwendet.
|
Zur Messung wird der timer1 (der 16bit Timer) des Arduino verwendet.
|
||||||
Der Signalausgang des Durchflussmessers ist mit dem Interrupt 0 des Arduino
|
Der Signalausgang des Durchflussmessers ist mit dem Interrupt 0 des Arduino
|
||||||
verbunden. Dieser ist so konfiguriert dass er bei einer steigenden Impulseflanke
|
verbunden. Dieser ist so konfiguriert dass er bei einer steigenden Impulseflanke
|
||||||
auslöst und die Zeit seit dem letzen Puls in ein Array abspeichert (Periodendauer).
|
auslöst und die Zeit seit dem letzen Puls in ein Array abspeichert (Periodendauer).
|
||||||
Der Counter des timer1 wird bei jedem Puls wieder auf 0 gesetzt.
|
Der Counter des timer1 wird nach jedem Puls wieder auf 0 gesetzt.
|
||||||
|
|
||||||
Falls innerhalb eines konfigurierbaren Zeitintervals *kein* Puls gemessen wird
|
Falls innerhalb eines konfigurierbaren Zeitintervals *kein* Puls gemessen wird
|
||||||
löst der timer1 einen Interrupt Service Request aus und setzt die Periodendauer
|
löst der timer1 einen Interrupt Service Request aus und setzt die Periodendauer
|
||||||
@ -38,12 +38,14 @@ flow = N/(float)total/conversion
|
|||||||
|
|
||||||
* N ist die Anzahl der Werte im Array
|
* N ist die Anzahl der Werte im Array
|
||||||
* total ist die Summe der Periodendauern
|
* total ist die Summe der Periodendauern
|
||||||
* conversion ist der Konversionfaktor (Pulse/Sekunde pro l/min)
|
* conversion ist der Konversionsfaktor (Pulse/Sekunde pro l/min)
|
||||||
|
|
||||||
|
|
||||||
2 Temperatur Überwachung
|
2 Temperatur Überwachung
|
||||||
========================
|
========================
|
||||||
|
Die Temperatur in der PFG Spule wird mit einem Temperaturcontroller von Jumo überwacht.
|
||||||
|
Bei zu hohen Temperaturen (45 °C) wird das Alarm Relais
|
||||||
|
geöffnet. Dieses Relais wird überwacht mit dem Analog Pin A0.
|
||||||
|
|
||||||
|
|
||||||
3 Copley Verstärker Interlock
|
3 Copley Verstärker Interlock
|
||||||
@ -51,6 +53,6 @@ flow = N/(float)total/conversion
|
|||||||
Die Copley Stromquelle erwartet ein HIGH Signal am Eingang des Interlocks. Wird ein Fehler
|
Die Copley Stromquelle erwartet ein HIGH Signal am Eingang des Interlocks. Wird ein Fehler
|
||||||
ausgelöst wird der Interlock-PIN des Arduino (Pin konfigurierbar) auf LOW gesetzt. Sobald die
|
ausgelöst wird der Interlock-PIN des Arduino (Pin konfigurierbar) auf LOW gesetzt. Sobald die
|
||||||
Störung behoben ist geht der PIN wieder automatisch auf HIGH.
|
Störung behoben ist geht der PIN wieder automatisch auf HIGH.
|
||||||
|
Die Alarm LED ist zum Interlock logisch invertiert.
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,9 +180,12 @@ void setup()
|
|||||||
setup_ok = false;
|
setup_ok = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//int prescaler = PRESCALER;
|
||||||
|
//snprintf(new_flow_string, sizeof(new_flow_string), "PRESCALER %i", prescaler);
|
||||||
|
//TFTscreen.text("PRESCALER",0,30);
|
||||||
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
|
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
|
||||||
interrupts(); // enable all interrupts
|
interrupts(); // enable all interrupts
|
||||||
delay(100);
|
delay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if after OCR1A seconds no pulse from flow meter occured an interrupt will force a very high delta value
|
// if after OCR1A seconds no pulse from flow meter occured an interrupt will force a very high delta value
|
||||||
|
Loading…
Reference in New Issue
Block a user