ELL14をpythonで制御する
をテンプレートにして作成
AND検索
OR検索
開始行:
*ソーラボのELL14をPythonから制御する(2023/08/25)(更新202...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14.png,cen...
#contents
**経緯
ソーラボの「ELL14」はピエゾ駆動の回転マウントです(上の...
最近、ソーラボの新製品を見ていたら、ELLシリーズの新製品...
**まず使ってみる
ELL14にはELL*シリーズ用の簡単な制御ソフト(Windowsのみ)...
**Pythonで制御してみる
シリアル制御デバイスなので、pythonライブラリのpyserial...
以下のリストは簡単なプログラム(Mac用)で、角度を最初に...
とりあえずはPC/Macからpythonで制御できることが確認でき...
#!/opt/anaconda3/bin/python
##!/usr/local/bin/python3 #
import serial
import struct
import time
conv = 398.22222222 # counts for 1 degree
# use pyserial program to communicate to ELL14
# Thorlab ELL14 piezo-motor-driven rotating mount
angle = 45 # 45 degree absolute value rotation
if angle < 0: # negative angle is not allowed
angle = 360.0 + angle # so convert to positive angle ...
s = round(angle*conv) # convert angle to displacement
cmd = "0ma" # absolute rotation command, first zero mean...
cmd_angle = format(s,'x').upper()
cmd_0 = ''
for i in range(8-len(cmd_angle)): # adjust length by put...
cmd_0 = cmd_0 + '0'
cmd = cmd + cmd_0 + cmd_angle # add angle value, change ...
print('Tx: ' + cmd) # print command to be sent
ser = serial.Serial("/dev/cu.usbserial-DK0BJ28Z",9600) #...
#ser = serial.Serial("COM4",9600) # for Windows, number ...
ser.write(cmd.encode('utf-8'))
time.sleep(1)
t = ''
while True:
if ser.in_waiting > 0:
recv_data = ser.read(1) # read one data
ans = struct.unpack_from("B",recv_data ,0) # tuple, de...
t = t + chr(ans[0]) # add up returned message
if 13 in ans: # 13 means CR
recv_data = ser.read(1) # read last one which is LF
break
print('Rx: ' + t) # print returned message
ser.close()
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_tkinter...
その後、TKinterを使って、GUIでボタンをクリックして、回...
**コマンド
以下、よく使いそうなコマンドをまとめたものです(全てで...
-cleaning: 0cm (全周の回転を行い、埃などを除去する。数分...
-optimization: 0om (周波数をロードなどに応じて最適化する...
-停止:0st (cleaning, optimizationを止める)
-回転停止:0st (jogを止める時に使う)
-原点復帰 homing: 0ho0 or 0ho1(0だとCW, 1だとCCWで原点復...
-回転絶対値: 0ma000xxxxx (xxxxxのところに回転角に対応す...
-回転相対値: 0mr000xxxxx (同上)
-jog forward: 0fw (設定されているjogステップで、forward回...
-jog backward: 0bw (設定されているjogステップで、backward...
-jog stepsizeを設定:(0sj00004600。例は45º設定。0にすると...
-jog stepsize取得:0gj (0GJ0000xxxxが帰ってくる)
-速度取得:(0gv 速度は出力を変えることで変更する。返事はA...
-速度設定:(0sv32、0~100%出力値を16進2桁にする。この例は5...
-ステータス取得:0gs (e.g., 0GS00, 00は正常の意味)
-ユーザーデータ保存: 0us
-アドレス変更:0caA (例は0からAへ変更、当然変更後コマンド...
**注意
一見ソーラボの30 mmケージシステムに容易に取り付けられる...
ケージを途切れさせない方法としては、回転マウント基板に...
ケージではなくて、ポストとホルダーを使っている場合は、...
購入する時は1台目は電源やインターフェース基板も入った...
ELL14はピエゾモーター部分が2つあるので、モーターが2つ...
その後、インターフェース基板が剥き出しなのはちょっと怖...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_board_c...
**ケーブル自作
さらにその後、ELL14の2台目を購入しました。2台をデイジー...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_cable.p...
デイジーチェーンで繋ぐ場合、各ELL14に異なるアドレスをア...
**実際の使用
#image(https://mkanzaki.sakura.ne.jp/images/ELL14+object-...
最近、顕微ラマン装置で1/2波長板や1/4波長板を使うために...
1つの方法は上記のようにELL14の固定には30/60 mm変換プレ...
別の可能性は30/60 mm変換プレートは下側に1枚だけ使って、...
レンズをELL14に直接ネジ込むこともできるのですが、うちで...
上下の3つ写真はELL14と対物レンズからなるユニットの取り...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14+object-...
元々対物レンズはケージキューブにねじ込んでいたので、こ...
//#image(https://mkanzaki.sakura.ne.jp/images/ELL14+objec...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_built-i...
終了行:
*ソーラボのELL14をPythonから制御する(2023/08/25)(更新202...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14.png,cen...
#contents
**経緯
ソーラボの「ELL14」はピエゾ駆動の回転マウントです(上の...
最近、ソーラボの新製品を見ていたら、ELLシリーズの新製品...
**まず使ってみる
ELL14にはELL*シリーズ用の簡単な制御ソフト(Windowsのみ)...
**Pythonで制御してみる
シリアル制御デバイスなので、pythonライブラリのpyserial...
以下のリストは簡単なプログラム(Mac用)で、角度を最初に...
とりあえずはPC/Macからpythonで制御できることが確認でき...
#!/opt/anaconda3/bin/python
##!/usr/local/bin/python3 #
import serial
import struct
import time
conv = 398.22222222 # counts for 1 degree
# use pyserial program to communicate to ELL14
# Thorlab ELL14 piezo-motor-driven rotating mount
angle = 45 # 45 degree absolute value rotation
if angle < 0: # negative angle is not allowed
angle = 360.0 + angle # so convert to positive angle ...
s = round(angle*conv) # convert angle to displacement
cmd = "0ma" # absolute rotation command, first zero mean...
cmd_angle = format(s,'x').upper()
cmd_0 = ''
for i in range(8-len(cmd_angle)): # adjust length by put...
cmd_0 = cmd_0 + '0'
cmd = cmd + cmd_0 + cmd_angle # add angle value, change ...
print('Tx: ' + cmd) # print command to be sent
ser = serial.Serial("/dev/cu.usbserial-DK0BJ28Z",9600) #...
#ser = serial.Serial("COM4",9600) # for Windows, number ...
ser.write(cmd.encode('utf-8'))
time.sleep(1)
t = ''
while True:
if ser.in_waiting > 0:
recv_data = ser.read(1) # read one data
ans = struct.unpack_from("B",recv_data ,0) # tuple, de...
t = t + chr(ans[0]) # add up returned message
if 13 in ans: # 13 means CR
recv_data = ser.read(1) # read last one which is LF
break
print('Rx: ' + t) # print returned message
ser.close()
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_tkinter...
その後、TKinterを使って、GUIでボタンをクリックして、回...
**コマンド
以下、よく使いそうなコマンドをまとめたものです(全てで...
-cleaning: 0cm (全周の回転を行い、埃などを除去する。数分...
-optimization: 0om (周波数をロードなどに応じて最適化する...
-停止:0st (cleaning, optimizationを止める)
-回転停止:0st (jogを止める時に使う)
-原点復帰 homing: 0ho0 or 0ho1(0だとCW, 1だとCCWで原点復...
-回転絶対値: 0ma000xxxxx (xxxxxのところに回転角に対応す...
-回転相対値: 0mr000xxxxx (同上)
-jog forward: 0fw (設定されているjogステップで、forward回...
-jog backward: 0bw (設定されているjogステップで、backward...
-jog stepsizeを設定:(0sj00004600。例は45º設定。0にすると...
-jog stepsize取得:0gj (0GJ0000xxxxが帰ってくる)
-速度取得:(0gv 速度は出力を変えることで変更する。返事はA...
-速度設定:(0sv32、0~100%出力値を16進2桁にする。この例は5...
-ステータス取得:0gs (e.g., 0GS00, 00は正常の意味)
-ユーザーデータ保存: 0us
-アドレス変更:0caA (例は0からAへ変更、当然変更後コマンド...
**注意
一見ソーラボの30 mmケージシステムに容易に取り付けられる...
ケージを途切れさせない方法としては、回転マウント基板に...
ケージではなくて、ポストとホルダーを使っている場合は、...
購入する時は1台目は電源やインターフェース基板も入った...
ELL14はピエゾモーター部分が2つあるので、モーターが2つ...
その後、インターフェース基板が剥き出しなのはちょっと怖...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_board_c...
**ケーブル自作
さらにその後、ELL14の2台目を購入しました。2台をデイジー...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_cable.p...
デイジーチェーンで繋ぐ場合、各ELL14に異なるアドレスをア...
**実際の使用
#image(https://mkanzaki.sakura.ne.jp/images/ELL14+object-...
最近、顕微ラマン装置で1/2波長板や1/4波長板を使うために...
1つの方法は上記のようにELL14の固定には30/60 mm変換プレ...
別の可能性は30/60 mm変換プレートは下側に1枚だけ使って、...
レンズをELL14に直接ネジ込むこともできるのですが、うちで...
上下の3つ写真はELL14と対物レンズからなるユニットの取り...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14+object-...
元々対物レンズはケージキューブにねじ込んでいたので、こ...
//#image(https://mkanzaki.sakura.ne.jp/images/ELL14+objec...
#image(https://mkanzaki.sakura.ne.jp/images/ELL14_built-i...
ページ名: