Thorlabs Laser-Source mit über FTDI232BM ansteuern

Gast #5990046
Lesenswert?

Liebes Forum,

für einen Versuchsaufbau muss ich die Vorgaben des 
Laserschutzbeauftragten erfüllen. Dazu habe ich mir gedacht, meine 
Laserquellen (1x Thorlabs KLS635 und 3x Thorlabs TLS001) per USB mit 
einem Raspi oder Ähnlichem zu verbinden und ihnen per "USB-Befehl" gemäß 
dem (angehängten) Communications Protocol eine definierte Leistung 
zuzuweisen. Darüber hinaus möchte ich ebenfalls mittels Befehl die 
Bedienung auf Software-only ändern, damit niemand Schabernack mit den 
Drehreglern spielen kann.

Nach einigem Rumprobieren, komme ich allerdings auf keinen grünen Zweig 
mit dem "Versenden" der Befehle.

Meines Erachtens nach sollte es doch reichen, die PID und VID jeder 
Laserquelle auszulesen und dann mithilfe der python-usblib die 
angegebenen Messages zu verschicken oder? Oder übersehe ich da etwas 
grundsätzliches mit dem FTDI?

Danke schon mal für Eure Hilfe!
Angehängte Dateien:
Gast #5990153
Lesenswert?

Hallo Sebastian,

Danke für Deine schnelle Antwort. ich habe mich gerade daran versucht 
scheitere ich scheinbar bei den Messages:
1
import serial
2
s = serial.Serial('/dev/ttyUSB0 ', 115200)
3
identify =b"x23/x02/x00/x00/x50/x01"
4
s.write(identify)

Damit habe ich versucht das Geräte zur Identifikation blinken zu lassen 
(siehe Comm.-Protocoll S.40).

Der write Befehl gibt 23 zurück, was ja die Anzahl der gesendeten Bytes 
sein müsste - das verwirrt mich wiederrum, da ich ja eigentlich nur 6 
Bytes mitschicke.

Wie würdest Du nun weiter vorgehen?
Beitrag #5990215 wurde von einem Moderator gelöscht.
Gast #5990854
Lesenswert?

Hallo Sönke,

vielen Dank! Das hat zumindest damit geklappt. Nun kann ich das Gerät 
immerhin schon mal blinken lassen.
Auch Laser enable/disable klappt, aber leider schaffe ich es nicht ihm 
eine Leistung einzustellen (siehe S.255ff MGMSG_SET_PARAMS 0x0800).

Mein Laser hat maximal 8mW, damit sollte ja nach Anleitung ein Wert von 
0x1000 = 1mW eingestellt werden ... nach littleEndian sind das am Ende 
der Message ja die Bytes \x00\x10, oder?

Ich habe es mit folgender Message probiert:
1
setPower = b"\x00\x08\x04\x00\xD0\x01\x01\x00\x00\x10"
2
s.write(setPower)

Danach macht der Controller aber leider nichts mehr und lässt sich auch 
nicht mehr weiter ansteuern (identify oder ähnliches)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren