Learning Objectives
- 把需求寫成可以量測、可以判斷的規格與測試步驟
- 測試站開始前先自我檢查:確認每台儀器的型號、回到已知狀態
- 整合電錶、函數產生器與示波器,量出 RC 模組的電阻與截止頻率,推算電容
- 依規格做出總判定,並確保所有儀器的輸出在結束時都關閉
專題:RC 濾波器模組的特性測試站
這一軌學過的東西:SCPI 與 PyVISA、電源供應器與電錶、函數產生器與示波器、掃描、資料處理、程式架構、限值判斷。 最後一課把它們整合成一個元件特性測試站。
情境:你收到一批 RC 低通濾波器模組,標示是「1 kΩ ±1%、100 nF ±10%」。電容沒辦法直接用本課的電錶量, 但可以間接量:先量電阻 R,再量截止頻率 fc,由 fc = 1 ÷(2πRC)反推
C = 1 ÷(2π × R × fc)
| 規格項目 | 怎麼量 | 用哪台儀器 | 合格範圍 |
|---|---|---|---|
| 電阻 R | 斷電,量兩端電阻 | 數位電錶 | 990~1010 Ω |
| 截止頻率 fc | 找相位 −45° 的頻率 | 函數產生器+示波器 | (用來算 C) |
| 電容 C | 由 R 與 fc 計算 | 程式 | 90~110 nF |
做一個專題,先寫下三件事,再寫程式:要量什麼(規格)、用什麼方法量(步驟與儀器)、怎樣算合格(限值)。
逐步看:測試站的自我檢查
測試站開始量之前,先確認接上的儀器都對:每台問 *IDN?,型號和設定表不符就停下來;對的就 *RST;*CLS 回到已知狀態。
看通訊紀錄:四台儀器依序回答。
逐步看:量電阻一定要斷電
電錶量電阻的方法是自己送一個小電流、量電壓再相除。如果電路上還有電源,量到的就不是電阻。 這個範例先故意在有電時量一次,看電錶回傳什麼;再斷電、一次量 5 筆。
逐步看:完整的特性量測
三個步驟接起來:電錶量 R、二分搜尋找 fc、計算 C,最後和規格比較。 二分搜尋做 8 次,fc 的誤差約 1%;要更準可以多做幾次,代價是時間。
小測驗:測試站的設計
下面的程式會印出什麼?
idn = "Uedu Sim,DM-1060,DM000207,2.10\n"
parts = idn.strip().split(",")
print(parts[1], len(parts))
下面的程式會印出什麼?
import math
r, fc = 1000.0, 1591.55
c_nf = 1 / (2 * math.pi * r * fc) * 1e9
print(round(c_nf))
電錶量電阻時回傳 +9.90000000E+37,最可能是什麼原因?
把專題做得更完整
完成任務之後,可以依興趣往這些方向延伸(每一項都用得到前面某一課):
| 延伸 | 做法 | 相關的課 |
|---|---|---|
| 一次測一批 | 序號從 0001 開始遞增,每顆的結果寫進 CSV 報表、最後算良率 | 第 15、17 課 |
| 畫出波德圖 | 除了 fc,再掃描 100 Hz~10 kHz 每個十倍頻幾點,存成 CSV 用 matplotlib 畫 | 第 14 課 |
| 更有結構 | 每台儀器一個類別、with 保證關閉輸出、設定檔放資源字串與規格 |
第 16 課 |
| 沒有儀器也能開發 | 寫一個 FakeScope,回傳用公式算的相位 | 第 16 課 |
| 量測不確定度 | R 量 10 次算標準差;fc 的搜尋多做幾次,估計 C 的不確定度 | 第 15 課 |
| 保護帶 | C 的測試限值比規格內縮,例如 91~109 nF | 第 17 課 |
真實的元件測試站還會考慮:測試治具與探棒的接觸電阻(低電阻常用四線式量法)、儀器的校正狀態、 環境溫度(電阻與電容都會隨溫度變),以及操作人員的安全守則。
小測驗:整合與安全
測試站程式結束時,哪一種做法最能確保函數產生器與電源供應器的輸出都關閉?
下面的程式會印出什麼?
spec = {"R": (990, 1010), "C": (90, 110)}
meas = {"R": 1000.1, "C": 111.2}
ok = all(spec[k][0] <= meas[k] <= spec[k][1] for k in spec)
print("PASS" if ok else "FAIL", [k for k in spec if not spec[k][0] <= meas[k] <= spec[k][1]])
重點整理
- 專題先寫規格:要量什麼、用什麼方法、怎樣算合格;再把步驟寫成程式。
- 測試站開始前自我檢查:
*IDN?比對型號、*RST;*CLS回到已知狀態,儀器序號也記進報表。 - 量電阻一定要斷電;
+9.9E+37表示溢位或無效讀值。 - 間接量測:由 R 與 fc 算出 C,R 與 fc 的誤差都會傳到 C。
- 所有輸出用 finally 或
__exit__關閉;結果依規格做總判定。
恭喜完成儀器控制軌。同一套方法(找到儀器、設定、量測、判斷、記錄、收尾)可以用在任何支援 SCPI 的儀器上; 接觸真實儀器時,記得先讀該儀器的程式設計手冊,並遵守實驗室的安全規定。