PyMeasure を使って実験装置を自動制御する方法

現代の研究室では、精度・スピード・再現性 が求められます。I-Vスイープ、温度制御、光学測定など、実験を自動化できると大きな効率向上が見込めます。

PyMeasure は、Python で装置制御とデータ取得を簡単に行えるオープンソースライブラリです。この投稿では PyMeasure を使った自動測定の始め方をご紹介します。


🧪 PyMeasure とは?

PyMeasure は、GPIB、USB、シリアルなどのインターフェースを通じて実験装置を制御できる Python ライブラリです。

主な特徴:

  • 実験手順 (Procedure) の自動化
  • リアルタイムでのデータ記録と可視化
  • GUI(グラフィカルユーザーインターフェース)の構築
  • Keithley、Tektronix、Keysight などの装置に対応

⚙️ ステップ 1: インストール

以下のいずれかの方法で PyMeasure をインストールできます:

# 推奨:conda 経由でインストール
conda install -c conda-forge pymeasure

# または pip 経由
pip install pymeasure

GPIB/USB 接続のためには NI-VISA または pyvisa-py バックエンドが必要です。


🔌 ステップ 2: 装置に接続

例として Keithley 2400 ソースメーターに接続してみましょう:

from pymeasure.instruments.keithley import Keithley2400

smu = Keithley2400("GPIB::24")
smu.apply_current(0.001, compliance_voltage=10)
print(f"Measured voltage: {smu.voltage} V")

このように、通常の Python オブジェクトのように装置を操作できます。


📈 ステップ 3: 自動測定スクリプトの実行

簡単な I‑V スイープ(電流-電圧の関係)を実行します:

import numpy as np

currents = np.linspace(-1e-3, 1e-3, 50)
voltages = []

for i in currents:
    smu.source_current = i
    voltages.append(smu.voltage)
    print(f"I: {i:.6f} A, V: {voltages[-1]:.6f} V")

結果を CSV に保存して後で分析することもできます。


🧪 ステップ 4: Procedure クラスで手順を定義

from pymeasure.experiment import Procedure, IntegerParameter, FloatParameter

class IVSweepProcedure(Procedure):
    start = FloatParameter("開始電流", units="A", default=-1e-3)
    stop = FloatParameter("終了電流", units="A", default=1e-3)
    steps = IntegerParameter("ステップ数", default=50)

    def startup(self):
        self.instrument = Keithley2400("GPIB::24")

    def execute(self):
        for i in np.linspace(self.start, self.stop, self.steps):
            self.instrument.source_current = i
            voltage = self.instrument.voltage
            self.emit('results', {'current': i, 'voltage': voltage})

このクラスを使えば、再現性のある実験フローを自動実行できます。


🖥️ ステップ 5: GUI を追加する(オプション)

from pymeasure.display.windows import ManagedWindow

class IVApp(ManagedWindow):
    def __init__(self):
        super().__init__(
            procedure_class=IVSweepProcedure,
            inputs=["start", "stop", "steps"],
            displays=["current", "voltage"],
            x_axis="current", y_axis="voltage"
        )
        self.setWindowTitle("I-V 測定アプリ")

if __name__ == "__main__":
    app = IVApp()
    app.show()

GUI で操作すれば、技術者以外でも使いやすくなります。


🔌 対応装置の一部

  • Keithley ソースメーター
  • Tektronix オシロスコープ
  • Keysight 計測器
  • Thorlabs、NI 製品
  • 他、多くの機器に対応

🧰 使用例

  • 半導体デバイスの I‑V 特性測定
  • ソーラーパネルの特性評価
  • 温度センサーのリニアリティテスト
  • ファイバー測定や RF 測定の自動化

✅ まとめ

PyMeasure は、Python ベースで実験装置を自動化し、再現性のある測定手順を実現できます。研究開発や製品テストの現場に最適です。

📖 公式ドキュメントを見る


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products