DADOS RCU
Einführung
Für die Kalibrierung der DADOS-Spektren verwenden wir das Alpy-Kalibrationsmodul von Shelyak, welches mit einer Argon-Neon-Lampe für die Wellenlängenkalibration und einer Wolfram-Glühbirne für die Flatfieldkalibration ausgestattet ist.
Um diese Klaibrationseinheit remote zu steuern, wurde ein einfacher Remote-Control-Upgrade/Modul (RCU) erstellt. Es ermöglicht dem Benutzer, sowohl eine Flat-Field-Lampe als auch eine Wellenlängenkalibrierungslampe remote über eine serielle Kommunikation durch einen COM-Port auf einem Computer zu steuern. Das Herzstück des RCU ist ein einfacher Mikrocontroller, der ein zwei-Relais-Modul steuert, das als Schalter fungiert, um die beiden Kalibrierungslampen des Spektrographen zu schalten.
Hardware und Setup
Die DADOS RCU hat genau fünf Kabelverbindungen, die angeschlossen werden müssen, um den RCU zu betreiben. Dazu gehören:
- 12V Power input: Für die Stromversorgung des Kalibrierungseinheiten und die Bereitstellung von 12V für das Schalten der Kalibrierungslampen ein- und aus.
- 12V DADOS Power output: Geht direkt in die Kalibrierungseinheit und stellt die erforderliche Stromversorgung für den Betrieb der Kalibrierungslampen bereit.
- 12V Flat-Lamp-Controller-Stecker: Je nachdem, welche Spannung auf diesem Kabel angelegt wird, wird die Flat-Field-Lampe ein- oder ausgeschaltet.
- 12V Wellenlängenkalibrierungslampe-Controller-Stecker: Je nachdem, welche Spannung auf diesem Kabel angelegt wird, wird die Wellenlängenkalibrierungslampe ein- oder ausgeschaltet.
- Mini-USB-Typ-B-Schnittstelle: Für die Kommunikation mit dem Computer.
Alle Verbindungen sind deutlich auf den Kabelenden oder dem Kunststoffgehäuse selbst gekennzeichnet. Es ist wichtig zu beachten, dass beim Anschließen des RCU an den Spektrographen insbesondere die 12V-Stecker ein wenig schwierig zu verbinden sein können. Drücken Sie die Stecker vorsichtig in die Buchse, ohne zu viel Kraft auszuüben, um Beschädigungen zu vermeiden.
Das Schaltbild des RCU zeigt die Verbindung zwischen dem Mikrocontroller und den Relais-Modulen.
Kommunikationsprotokoll
Die Kommunikation mit dem RCU, d.h. dem Mikrocontroller, folgt einem bestimmten Protokoll, das wir im Folgenden beschreiben. Jeder Befehl, der übertragen wird, muss mit einem Semikolon (;) enden. Einige Befehle werden den Zustand einer der beiden Kalibrierungslampen ändern. Die folgende Auflistung sollte einen Überblick über die möglichen Befehle zur Steuerung der Kalibrierungslampen geben.
Ein-Lampen-Befehle
Die Befehle beginnen normalerweise mit einem Großbuchstaben (F für die Flat-Field-Lampe oder W für die Wellenlängenkalibrierungslampe). Wir verwenden #
als Platzhalter, der in einem praktischen Beispiel durch den jeweiligen Buchstaben F oder W ersetzt werden sollte.
#
on: Schaltet die jeweilige Lampe ein. Wenn die Lampe bereits eingeschaltet war, passiert nichts nach dem Übertragen dieses Befehls.#
off: Schaltet die jeweilige Lampe aus. Wenn die Lampe bereits ausgeschaltet war, passiert nichts nach dem Übertragen dieses Befehls.#
get: Evaluiert den aktuellen Zustand der jeweiligen Kalibrierungslampe. Die Ausgabe wird entweder true oder false sein.
Sicherheitsmodus
Die Wellenlängenkalibrierungslampe für viele Spektrographen-Kalibrierungseinheiten ist normalerweise eine Bogenlampe (z.B. Th-Ar oder Ne-Ar). Diese Lampen haben typischerweise eine vergleichsweise kurze Lebensdauer, weshalb der RCU einen Sicherheitsmechanismus standardmäßig aktiviert hat. Dieser Modus kann mit der Variablen force#
gesteuert werden und ist standardmäßig auf false gesetzt. Die Idee ist, die Lampen nach einer bestimmten Zeit auszuschalten, nach der sie als „versehentlich“ eingeschaltet angesehen werden kann. Je nach Variablen maxtime#
kann diese Zeit individuell festgelegt werden. Standardmäßig ist sie jedoch auf 600 Sekunden gesetzt. Der numerische Wert wird in Sekunden interpretiert.
#
forceon: Überschreibt den Sicherheitsmodus und ignoriert die maximale zulässige Einschaltzeit. Dieser Befehl sollte vorsichtig verwendet werden, da man so den Sicherheitsmodus verlässt. Es ist ratsam, stattdessen die Variable maxtime#
zu erhöhen. Wenn die Variable force#
vorher bereits auf true gesetzt war, passiert nichts nach der Ausführung dieses Befehls.#
forceoff: Aktiviert den Sicherheitsmodus (wie bereits im vorherigen Abschnitt beschrieben) für die jeweilige Lampe. Wenn die Variable force#
vorher bereits auf false gesetzt war, passiert nichts nach der Ausführung dieses Befehls.#
forceget: Gibt einen true- oder false-Wert zurück, je nachdem, ob der Sicherheitsmodus aktiviert ist.#
setmax: Passt die maximale Einschaltzeit der ausgewählten Lampe an. Die Zeit kann durch direktes Eingeben der entsprechenden ganzen Zahl nach dem Befehl festgelegt werden. Ein Beispiel könnte lauten:Fsetmax600
;, um die Variable maxtimeF auf 600 Sekunden zu setzen.#
getmaxtime: Gibt die maximale Einschaltzeit für die ausgewählte Lampe zurück. Der zurückgegebene numerische Wert entspricht der Zeit in Sekunden.
Beispiele für Befehle
Die folgenden Beispiele zeigen, wie die Befehle in einem praktischen Kontext aussehen. Zeilen, die mit „»> “ beginnen, stellen eine Antwort des RCU dar, die durch den vorherigen Befehl ausgelöst wurde. Alles nach dem Doppelpunkt wird in diesem Kontext als Kommentar betrachtet und erscheint nicht im realen Kommunikationsprotokoll.
Flat-Field-Lampe ein- und ausschalten:
Fget; // ask for the current state of the flat field lamp >>> 0 // flat field lap is OFF (i.e. the result is 0), OFF is the default state for any calibration lamp with which it is initialized in the beginning Fon; // switch the flat field lamp on Fget; // ask for the current state of the flat field lamp >>> 1 // now, the flat field lamp is switched ON (i.e. the response is a 1) Foff; // switch the flat field lamp off again
maxtimeW-Variable anpassen:
Wforceget; // queries the current state of the forced operation mode >>> 0 // is initialized with False (i.e. the response is 0) by default Wgetmaxtime; // asks for the current maximum allowed on-time for the wavelength calibration lamp >>> 600.00 // default is 600 seconds Wsetmax60; // sets the maxtimeW to 60. We can check whether the command was successful with ... Wgetmaxtime; >>> 60.00 // now the maxtimeW variable is indeed fixed at 60 seconds after which the wavelength calibration lamp will automatically switch off if forced operation mode is disabled (recommended)