#author("2025-04-14T20:50:04+09:00;2025-04-11T08:37:53+09:00","default:masami","masami") #author("2025-04-19T16:29:54+09:00;2025-04-11T08:37:53+09:00","default:masami","masami") *SpectraProをMac(PC)で制御する(2025/04/11)(更新2025/04/14) #image(https://mkanzaki.sakura.ne.jp/images/SpectraPro300i.png,center,33%) CENTER:Player One CMOSカメラを取り付けたSpectraPro 300i分光器。スリット前もソーラボのケージが使えるように改造しています。 **経緯 SpectraProはActon社の分光器で、研究室には古い500i, 300i, 150があります(現在はSpectraPro HRというのがこれらの後継機のようです)。500iは488 nm顕微ラマン分光器で使っていて、Princeton Instruments(現在Teledyne)のLightFieldソフトを使い、それでSpectraPro 500iと冷却CCDを制御しています。そちらはそれで問題ないのですが、LightFieldはライセンスがあって1台のPCでしか使えません。他の分光器300iと150を使う時には困ります。300iは今785 nmラマンで使っているのですが、使う時はLightFieldを使っているPCを300iに繋ぎかえて使う必要がありました。しかしそれも面倒なのでpythonで制御してみることにしました。 SpectraProはActon社の分光器で、研究室には古い500i, 300i, 150があります(現在はSpectraPro HRというのがこれらの後継機のようです)。500iは488 nm顕微ラマン分光器で使っていて、Princeton Instruments(現在Teledyne)のLightFieldソフトを使い、それでSpectraPro 500iと冷却CCDを制御しています。そちらはそれで問題ないのですが、LightFieldはライセンスがあって1台のPCでしか使えません(USBドングルあり)。他の分光器300iと150を使う時には困ります。300iは今785 nmラマンで使っているのですが、使う時はLightFieldを使っているPCを300iに繋ぎかえて使う必要がありました。しかしそれも面倒なのでpythonで制御してみることにしました。 **Pythonで制御してみる SpectraProはRS232Cで制御できるので、pythonライブラリのpyserialが使えます。これはpipやcondaでインストールする必要があります。マニュアルによると通信設定は9600 baud, 8bit data, 1 stop bit, no parityとのこと。Macで使う場合はUSBシリアル変換ケーブルを使います。ドライバーのインストールが必要な場合があります。 SpectraProのコマンドは色々あるのですが、私の目的ではspectrographとして使うので(スキャンしながらの測定はしません)、そちらで主に使うものだけを紹介します。 -GOTO:これは指定された波長へ移動するコマンド。指定する波長は小数点3桁まで。e.g., 500.00 GOTO -GRATING:これは使う回折格子を指定するコマンドです。数字で指定します。e.g., 1 GRATING -?GRATINGS:設置されている回折格子を返します。複数行になるので全部読み込まないといけません(OKが最後にくるのでそれが最後と判断できる)。現在選択されているものは最初に印がつきます(マニュアルでは>となっているが、実際は横棒?)。e.g., ?GRATING -?NM:現在の波長位置を返します。nm単位。e.g., ?NM なおコマンドを送る時は最後にCR(キャリッジリターン)を付けます。送ったコマンドの返事には送ったコマンドのエコーとOKが送られてきて、さらにCR+LFが付いてます。返すデータがある時はそのデータが最初に来ます。 簡単な制御プログラムを作りました。次のリンクでダウンロードできます。 [[download:https://mkanzaki.sakura.ne.jp/codes/SpectraPro.py]] テキストファイルですが、改行がMac/Linux形式なのでWindowsの方は直す必要があるかもしれません。 このプログラムはterminalで動かします。動かすとキーボードからキー入力でコマンドを実行します。終了する時はqキーを押して下さい。コマンドによってはさらに値の入力を要求します。最初に場合は最初のlで回折格子のリストを出させて、gで使う回折格子を選択(回折格子を変えているモーターの音がしばらくします)。それでmで指定の波長(nm単位)へ移動します(これもモーターの音が短くします)。rだと相対波数で指定できます。そのために使うレーザー波長をlaser_wlで指定しておきます。timeもインポートしてますが、今は使ってないので外してもいいです。 Macの場合、先頭行のpythonの場所を正しい場所へ変更します。そしてserial.Serialで指定するデバイス名"/dev/cu.*"は、ターミナルからls /dev/cu.*と入力して、出てくるリストから見つけます。USBシリアル変換ケーブルを繋ぐ前と繋いだ後で1つデバイスが増えているはずです。それがこの変換ケーブルに対応するデバイス名になりますので、それで書き換えてください。Windowsの場合はその次の行を有効にしてCOM?の?部分を直して下さい(最初の行もいらない)。 一応このプログラムでSpectraPro 150と300iが動くことを確認しました。 その後、TKinterでGUI化してみました。 #image(https://mkanzaki.sakura.ne.jp/images/SpectraProGUI.png,center,33%)