3
0
pfg_security/README.md

59 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2017-03-08 17:23:39 +00:00
PFG Arduino basierte Sicherheitsschaltung
=========================================
2017-03-09 15:43:07 +00:00
Dieser Arduino Sketch dient zur Sicherheitsüberwachung der PFG Spule. Es werden
2017-03-08 17:23:39 +00:00
dabei folgende Parameter überwacht:
2017-03-09 15:43:07 +00:00
1. Kühlmitteldurchflussmenge
2. Temperatur
2017-03-08 17:23:39 +00:00
2017-03-09 15:43:07 +00:00
1 Durchflussmenge
2017-03-09 15:43:07 +00:00
=================
2017-03-08 17:23:39 +00:00
Zur Durchflussüberwachung dient ein Durchflussmesser der im Rücklauf des Wasser-
2017-03-09 15:43:07 +00:00
kreislaufs angebracht ist. Er liefert mit Hilfe eines Hallsensors Pulse mit einem
Duty-Cycle von 50% deren Frequenz proportional zum Durchfluss ist.
2017-03-08 17:23:39 +00:00
In diesem Sketch wird der Abstand zweier Pulse gemessen, d.h. die Periodendauer.
2017-03-09 15:43:07 +00:00
Zur Messung wird der timer1 (der 16bit Timer) des Arduino verwendet.
2017-03-08 17:23:39 +00:00
Der Signalausgang des Durchflussmessers ist mit dem Interrupt 0 des Arduino
verbunden. Dieser ist so konfiguriert dass er bei einer steigenden Impulseflanke
2017-03-09 15:43:07 +00:00
auslöst und die Zeit seit dem letzen Puls in ein Array abspeichert (Periodendauer).
Der Counter des timer1 wird nach jedem Puls wieder auf 0 gesetzt.
2017-03-08 17:23:39 +00:00
Falls innerhalb eines konfigurierbaren Zeitintervals *kein* Puls gemessen wird
löst der timer1 einen Interrupt Service Request aus und setzt die Periodendauer
auf den höchsten Wert (UINT_MAX, höchster Wert für unsigned int).
Zum Ausgleich von Messfehlern werden die Periodendauern über mehrere Werte (N=16) gemittelt.
2017-03-09 15:43:07 +00:00
Falls ein Wert im Array UINT_MAX beträgt (z.B. wegen des timeouts) wird die Mittelung
abgebrochen und der gemittelte Wert auf ULONG_MAX gesetzt (höchster Wert für unsigned long)
und zurückgegeben. Damit wird der Durchfluss im Rahmen der Rechengenauigkeit 0 l/min und
ein Fehler wird ausgelöst.
Die Durchflussmenge berechnet sich nach der Formel:
flow = N/(float)total/conversion
* N ist die Anzahl der Werte im Array
* total ist die Summe der Periodendauern
* conversion ist der Konversionsfaktor (Pulse/Sekunde pro l/min)
2017-03-09 15:43:07 +00:00
2017-03-08 17:23:39 +00:00
2017-03-09 15:43:07 +00:00
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.
2017-03-08 17:23:39 +00:00
2017-03-09 15:43:07 +00:00
3 Copley Verstärker Interlock
=============================
2017-03-08 17:23:39 +00:00
Die Copley Stromquelle erwartet ein HIGH Signal am Eingang des Interlocks. Wird ein Fehler
2017-03-09 15:43:07 +00:00
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.
Die Alarm LED ist zum Interlock logisch invertiert.
2017-03-08 17:23:39 +00:00