Auf diesen Seiten gibt es einige Programme um Messgeräte,
die über die serielle Schnittstelle mit einem PC verbunden sind, auszulesen.
Lock-In Verstärker
|
Tektronix Oszi (THS720A)
|
Digitalmultimeter von Conrad Electronics
|
Angefangen hat das ganze mit einem Lock-In Verstärker von Stanford
Research Systems SR830.
Ursprünglich habe ich die Daten mit einer AD-Karte in ein computerlesbares
Format gebracht - nicht gerade schön, da die digitalen Daten des Verstärkers
erst DA-gewandelt werden, dann von der Karte wieder AD.
Deshalb wollte ich die Daten direkt abholen, wobei hierzu unter anderem
eine RS232-Schnittstelle zur Verfügung steht. Da ich damals noch mit
DOS gearbeitet habe, waren die ersten Gehversuche eben mit Turbo Pascal
(glaub die 5.0 Version). Dieses Programm hat mir gute Dienste geleistet,
allerdings ist es jetzt doch ein paar Jährchen her, deshalb gibts
hier nur den Quelltext (kleines README ist auch
dabei) zum runterladen. Bitte keine Fragen dazu!
Weiter gings dann unter Linux, wobei das doch etwas Zeit gebraucht
hat, da es gar nicht so einfach war rauszukriegen, wie man die Schnittstelle
initialisiert.
Für Einsteiger sei hier Minicom erwähnt, mit dem man zuerst
mal testen kann, ob ein Gerät überhaupt funktioniert. Mit diesem
Programm lassen sich die Schnittstellenparameter einstellen und 'per Hand'
Befehle zum Jeweiligen Gerät schicken.
Der erste Erfolg wurde damals mit einem Perl-Skript
erzielt, wobei hierfür die Parameter der Schnittstelle bereits stimmen
müssen (also am einfachsten mit minicom einrichten). Mit dem Skript
hab ich nie richtig gearbeitet, das war nur so ein Test, hat aber funktioniert,
Perl ist klasse, sehr einfach zu programmieren und vor allem sind die manpages
ausnahmsweise extrem leicht verständlich. Aber bitte auch hierzu keine
Fragen, hab nie mehr damit gearbeitet.
Als nächstes kam dann irgentwoher die Erkenntnis wie man die Schnittstelle
unte C initialisiert, hauptsächlich glaube ich von Andreas
Blücher, die serial Howtos und Ähnliches waren recht undurchsichtig
soweit ich mich erinnern kann.
So entstand dann folgendes Progrämmlein,
das recht universell einsetzbar ist und recht problemlos läuft. Müsste
mit so ziemlich jedem GNU C++ Compiler funktionieren, einfach g++ -o lockin
lockin.cpp und los mit ./lockin
Funktioniert sowohl mit dem SR810, als auch mit dem SR830, das Programm
findet den Typ selbst raus. Die Parameter der Schnittstelle sind:
8Bit, no Parity, 19200 Baud
Standartport ist /dev/ttyS1, also com2 die Schnittstelle kann aber
optional übergeben werden Bsp. ./lockin /dev/ttyS0 Kleiner Hinweis:
das device muß natürlich les- und schreibbar sein sonst klappts
nicht. Bei neueren Linuxversionen gibts die Gruppe serial oder modem, der
der User angehören muß.
Nach dem Start wird nach der Samplingrate für die Messung gefragt
(also wie viele Messwerte pro Sekunde geholt werden sollen), in der eckigen
Klammer steht der bisher eingestellte Wert. Danach wird gefragt ob manuell
oder getriggert gemessen werden soll. Bei manuell muss man die Messung
jeweils durch drücken von (Return) starten und stoppen. Bei getriggert
wird auf ein TTL-Signal, das auf AUX 1 liegen muss, getriggert - jeweils
beim Sprung von 0 auf 5 Volt wird die Messung gestartet/gestoppt. Gemessen
wird immer Kanal I, also das, was auch im linken Display angezeigt wird.
Bei der Messung wird jeweils der interne Speicher gefüllt und anschließend
ausgelesen. Danach wird nach einem Filenamen gefragt unter dem die Messung
abgespeichert wird. Die Daten werden immer als Wertepaare: Zeit-Wert abgespeichert.
Ausserdem wird immer noch eine ini-Datei erzeugt, in der die wichtigsten
Einstellungen des Lock-Ins während der Messung stehen. Das Programm
ist nicht gerade schön programmiert (das kann ich auch nicht), aber
es erfüllt den Zweck. So wird zum Beispiel nicht überprüft,
ob mehr Daten gelesen werden, als in den Puffer passen - ich glaube aber,
das regelt der LockIn recht elegant, es müssten immer die aktuellsten
Daten vorhanden sein. Das Programm müsste eigentlich vom Programmcode
her recht verständlich sein. Es für andere Geräte mit RS232
Schnittstelle anzupassen ist nicht sehr schwierig, einfach die Parameter
anpassen und die Befehle an das Gerät ändern. Falls jemand was
mit dem Programm anfangen kann würde ich mich über eine mail
freuen, auch Verbesserungsvorschläge und Quellcode für andere
Anwendungen wären schön.
Hier nochmal die ganzen Programme zum Download:
Turbo Pascal Version (gezippt)
Perl Version
C++-Version (tar.gz)
Danach konnten noch einige weiter Geräte über die serielle
Schnittstelle ausgelesen werden:
Ein tragbares Tektronix-Osci (THS720A) und zwei Multimeter
von Conrad
Das Grundgerüst dieser Programme ist immer das Gleiche, aber falls
jemand diese Geräte benützt und auslesen will kann er sich ja
mal direkt die
Programme anschauen.
Also dann viel Spass
Ralph
last update 22.12.2000