Skip to main content

Command Palette

Search for a command to run...

打造你的自動化實驗室:儀器控制入門 (3)

Updated
•2 min read•View as Markdown
打造你的自動化實驗室:儀器控制入門 (3)

第三部分:實戰演練 —— 控制 Chroma 電源供應器

在前一個部分,我們學會了如何與儀器建立連線並讀取其身份。現在,讓我們來做一些更有趣、更實用的事情:實際控制一台儀器來完成一個自動化任務。

我們將以常見的 Chroma 可程式化直流電源供應器 為例。

1. 任務目標

我們的目標是編寫一個 Python 腳本,自動完成以下操作:

  1. 設定電源供應器的輸出電壓為 5.0V。

  2. 設定電流上限為 1.0A。

  3. 開啟電源輸出。

  4. 等待 2 秒鐘。

  5. 讀取實際的輸出電壓與電流。

  6. 關閉電源輸出。

2. 查詢儀器手冊:SCPI 指令的寶庫

要完成上述任務,我們需要知道對應的 SCPI 指令。這時,儀器的編程手冊 (Programming Manual) 就是你最好的朋友。通常你可以在儀器製造商的官方網站上找到它。

SCPI 指令的完整與簡寫

在查閱手冊時,你會發現 SCPI 指令有一個慣例:它們同時包含大寫和小寫字母,例如 SOURce:VOLTage。這其實是為了告訴你指令的兩種寫法:

  • 完整寫法 (Long Form):包含大寫與小寫字母的全部,例如 SOURCE:VOLTAGE。這種寫法可讀性高。

  • 簡寫 (Short Form):只取大寫的部分,例如 SOUR:VOLT。這種寫法更簡潔。

這兩種寫法儀器都會接受,並且效果完全相同。在我們的範例中,為了讓程式碼更精簡,通常會使用簡寫。

透過查閱 Chroma 電源供應器的手冊,我們可能會找到以下關鍵指令 (注意:不同型號的指令可能略有差異):

  • 設定電壓:

    • 完整寫法: SOURce:VOLTage <voltage>

    • 簡寫: SOUR:VOLT <voltage>

  • 設定電流:

    • 完整寫法: SOURce:CURRent <current>

    • 簡寫: SOUR:CURR <current>

  • 開啟/關閉輸出:

    • 完整寫法: CONFigure:OUTPut <ON|OFF>

    • 簡寫: CONF:OUTP <ON|OFF>

  • 查詢電壓:

    • 完整寫法: MEASure:VOLTage?

    • 簡寫: MEAS:VOLT?

  • 查詢電流:

    • 完整寫法: MEASure:CURRent?

    • 簡寫: MEAS:CURR?

3. 編寫控制腳本

現在我們有了指令,就可以將它們組合到 Python 腳本中了。這個腳本會比上一篇的連線測試更完整。

import pyvisa
import time

# --- 設定區 ---
VISA_ADDRESS = '請換成你的 Chroma 電源供應器位址'
TARGET_VOLTAGE = 5.0
CURRENT_LIMIT = 1.0

# 建立資源管理器
rm = pyvisa.ResourceManager()

try:
    # 開啟與儀器的連線
    psu = rm.open_resource(VISA_ADDRESS)
    psu.timeout = 5000
    psu.clear()

    print(f"成功連接到: {psu.query('*IDN?').strip()}")

    # --- 開始自動化流程 ---

    # 1. 設定電壓 (使用 .write(),因為我們不需要儀器回覆)
    print(f"設定電壓為: {TARGET_VOLTAGE}V")
    psu.write(f'SOUR:VOLT {TARGET_VOLTAGE}')

    # 2. 設定電流
    print(f"設定電流上限為: {CURRENT_LIMIT}A")
    psu.write(f'SOUR:CURR {CURRENT_LIMIT}')

    # 3. 開啟輸出
    print("開啟電源輸出...")
    psu.write('CONF:OUTP ON')

    # 4. 等待 2 秒,讓電壓穩定
    time.sleep(2)

    # 5. 讀取實際輸出值 (使用 .query(),因為我們需要儀器回覆)
    actual_voltage = float(psu.query('MEAS:VOLT?'))
    actual_current = float(psu.query('MEAS:CURR?'))
    print(f"量測結果 -> 電壓: {actual_voltage:.3f}V, 電流: {actual_current:.3f}A")

except Exception as e:
    print(f"發生錯誤: {e}")

finally:
    # 6. 關閉輸出 (這一步至關重要,無論成功或失敗都應執行)
    if 'psu' in locals():
        print("關閉電源輸出。")
        psu.write('CONF:OUTP OFF')
        psu.close()
        print("儀器連線已關閉。")

這個腳本展示了一個完整的「設定-執行-量測-關閉」的自動化循環。你可以基於這個範本,根據你的測試需求進行擴充,例如執行電壓的步進掃描、長時間的穩定性測試等。

參考資料

More from this blog

打造你的自動化實驗室:儀器控制入門 (7)

第七部分:終極整合 —— 自動化效率量測與繪圖 在前面的章節中,我們學會了如何獨立控制各種儀器。現在,是時候將它們組合起來,完成一個在電力電子領域中至關重要的量測任務:自動化效率測試。 效率是衡量電源轉換器性能的核心指標。手動測試效率不僅耗時、繁瑣,而且容易出錯。透過 Python,我們可以將整個流程自動化,在幾分鐘內完成數十個測試點的量測與繪圖。 1. 硬體與接線設置 這個任務需要三台儀器與一個待測物 (Device Under Test, DUT) 協同工作。 儀器清單: 電源供應器 (...

Oct 21, 20254 min read
打造你的自動化實驗室:儀器控制入門 (7)

打造你的自動化實驗室:儀器控制入門 (6)

第六部分:讓程式更健壯 —— 最佳實踐 到目前為止,我們的腳本都能順利運作,但它們更像是「一次性」的腳本。在真實的專案中,我們需要考慮程式的穩定性、可讀性和可重複使用性。 1. 簡化資源管理:with 陳述式 在之前的範例中,我們都使用 try...finally 來確保 instrument.close() 一定會被執行。這雖然可行,但 Python 提供了一個語法來處理這種「需要獲取和釋放資源」的情境,那就是 with 陳述式。 PyVISA 的資源物件支援 with 陳述式。當程式碼區塊結...

Oct 21, 20252 min read
打造你的自動化實驗室:儀器控制入門 (6)

打造你的自動化實驗室:儀器控制入門 (5)

第五部分:實戰演練 —— 使用 Keysight DAQ 進行多通道量測 現在,我們來看看如何控制一個功能強大的資料擷取系統 (Data Acquisition System, DAQ),例如 Keysight DQA970A。 DAQ 的強項在於它擁有多個通道,可以同時或依序量測多個不同的物理量,如電壓、溫度、電阻等。 1. 任務目標 我們的任務是設定一個多通道的掃描清單,並一次性讀取所有通道的數值: 設定通道 101 用於量測直流電壓 (DC Voltage)。 設定通道 102 用於量...

Oct 21, 20251 min read
打造你的自動化實驗室:儀器控制入門 (5)

打造你的自動化實驗室:儀器控制入門 (4)

第四部分:實戰演練 —— 操作 Chroma 電子負載 學會了控制電源供應器後,我們來挑戰另一種在電力電子測試中不可或缺的儀器:電子負載 (Electronic Load)。電子負載可以用來模擬待測物 (如電源供應器、電池) 的負載情況。 我們將以 Chroma 可程式化直流電子負載 為例。 1. 任務目標 這次的任務是模擬一個設備正在消耗 0.5A 的恆定電流: 設定電子負載為「定電流 (Constant Current, CC)」模式。 設定拉載電流值為 0.5A。 開啟負載輸入 (開...

Oct 8, 20251 min read
打造你的自動化實驗室:儀器控制入門 (4)

工程師的成長方程式

8 posts

深度探討一位硬體測試工程師如何跨越專業界線,系統性地優化職涯與人生。內容涵蓋:實用Python代碼應用、測試工作哲學、建立FIRE路徑的投資理財方法、個人成長心得與優質書評。讓你的時間與金錢都獲得最佳配置,使成長與自由有跡可循。