Learning Objectives
- 把「設定、量測、記錄」寫成迴圈,完成一次掃描量測
- 用電源供應器與數位電錶量出 LED 的 I-V 曲線,看出導通電壓
- 產生掃描點時避開浮點數累加的誤差
- 在掃描中設定限流,碰到定電流(CC)就停止並關閉輸出
一次量測不夠,要量一整條曲線
上一課以前,我們每次只量一個點:設定 5 V,量一次電流。可是要了解一個元件,常常要知道它在每一個電壓下的電流, 這條電流對電壓的曲線叫 I-V 曲線(I-V curve),是元件的「身分證」:
| 元件 | I-V 曲線的樣子 |
|---|---|
| 電阻 | 一條通過原點的直線,斜率是 1 ÷ 電阻(歐姆定律) |
| LED、二極體 | 低於某個電壓時幾乎沒有電流,超過之後電流快速增加(像一個轉彎) |
手動量一條曲線要轉旋鈕、抄數字幾十次;用程式就是一個迴圈:
對每一個掃描點:設定電壓 → 量電壓與電流 → 記下來
這種「一個參數一步一步改、每一步都量」的方法叫掃描量測(sweep)。本課的電路和上一課一樣: 電源供應器經過 150 Ω 的限流電阻接到一顆紅色 LED,數位電錶量 LED 兩端的電壓。
模擬的 LED 用簡化模型:超過約 1.9 V 才有電流,之後電壓每增加一點,電流就大幅增加。真實二極體的電流隨電壓近似指數增加,曲線更平滑,但轉彎的樣子相同。
逐步看:最簡單的掃描迴圈
注意迴圈每一圈在通訊紀錄裡留下的三筆指令:VOLT(設定)、MEAS:VOLT:DC?(電錶量 LED 電壓)、MEAS:CURR?(電源供應器回報電流)。
也注意電路畫面上的 LED:設定 2 V 時只有微弱的光,之後越來越亮。
讀懂這張表
把剛才的輸出整理一下(數字是模擬的讀值,最後一位會有一點雜訊):
| 設定 V | LED 電壓 V | 電流 mA |
|---|---|---|
| 0 | 0.0 | 約 0 |
| 1 | 1.0 | 約 0 |
| 2 | 1.906 | 0.62 |
| 3 | 1.969 | 6.86 |
| 4 | 2.031 | 13.14 |
| 5 | 2.094 | 19.39 |
- 1 V 以下:LED 還沒導通,沒有電流,電阻上沒有壓降,所以電源的電壓全部落在 LED 兩端(LED 電壓=設定電壓)。
- 2 V 以上:LED 導通,它兩端的電壓幾乎固定在 1.9~2.1 V,多出來的電壓都落在 150 Ω 的電阻上。 例如設定 4 V 時,電阻上約 4 − 2.031 = 1.969 V,電流=1.969 ÷ 150 ≈ 13.1 mA,和電源供應器讀到的一致。
- 只有 6 個點,曲線的「轉彎」落在 1 V 和 3 V 之間,看不清楚。掃描點要放在變化大的地方,下一個範例就在轉彎附近加密。
在電腦上,通常把兩個串列交給繪圖套件畫圖,例如 matplotlib.pyplot.plot(v_led, i_ma);
本頁的逐步動畫改用長條圖顯示電流串列,你可以看著它一格一格長出來。
逐步看:把結果存進串列、找出導通電壓
這次不邊量邊印,而是把結果存進兩個串列,量完再分析。看上方的長條圖:前兩個點幾乎是 0,之後每 0.5 V 電流增加約 3 mA。
掃描點用串列生成式產生,並且用 round() 去掉浮點數的尾數。
怎麼產生掃描點
掃描點最常見的寫法有三種:
steps = [0, 1, 2, 3, 4, 5] # 直接列出:點數少時最清楚
steps = [round(1.8 + 0.05 * k, 3) for k in range(13)] # 起點+間隔 × k:1.8~2.4 V,13 點
n = int(round((stop - start) / step)) + 1 # 由起點、終點、間隔算出點數
不要用 v += 0.1 一直累加。 0.1 在二進位裡無法精確表示,加了幾次之後會變成 0.30000000000000004,
while v <= 0.3 這種條件就會少量一個點。用「起點+間隔 × 第幾點」算,每一點的誤差都不會累積,再用 round() 去掉尾數。
點的密度也要想:
- 均勻間隔:簡單,適合不知道曲線長什麼樣子的第一次掃描。
- 在變化大的地方加密:LED 在 1.8~2.4 V 之間變化最大,在這裡每 0.05 V 量一點,其他地方每 0.5 V 一點就夠。
- 每一點都要花時間(電錶積分、儀器回應),點數越多越慢。先粗掃找到轉彎,再在轉彎附近細掃,是常見的做法。
另外,真實的電源供應器改了電壓之後,輸出要一點時間才會穩定(安定時間)。實務上會在設定後用 *OPC? 等儀器完成,
或依手冊等待一小段時間再量;模擬的電源供應器改電壓是立刻生效的。
逐步看:碰到限流就停止
這次限流設得比較低(12 mA)。看電源供應器的面板:電流到達 12 mA 時,模式從定電壓(CV)變成定電流(CC),
程式用 OUTP:MODE? 問到 CC 就停止掃描,最後由 finally 關閉輸出。
小測驗:掃描點與讀表
下面的程式會印出什麼?
steps = []
v = 0.0
while v <= 0.3:
steps.append(v)
v += 0.1
print(len(steps))
下面的程式會印出什麼?
steps = [round(1.5 + 0.5 * k, 1) for k in range(4)]
print(steps)
設定 4 V 時,LED 兩端量到 2.031 V,限流電阻是 150 Ω。電流大約多少?
小測驗:限流與安全
掃描 LED 的 I-V 曲線時,限流應該什麼時候設定?
電源供應器已經進入定電流(CC),程式繼續把電壓往上設,量到的電流會怎樣?
重點整理
- 掃描量測=迴圈:設定 → 量測 → 記錄,量完再分析;輸出在掃描前打開、掃描後關閉。
- 掃描點用
起點 + 間隔 × k算再round(),不要用+=累加浮點數;在變化大的地方加密。 - LED 的 I-V 曲線:低於導通電壓幾乎沒有電流,之後電流快速增加,LED 兩端電壓幾乎固定,多出來的電壓落在限流電阻上。
- 量元件特性一定先設限流;用
OUTP:MODE?發現進入 CC 就停止,最後用try/finally關閉輸出。 - 專門量 I-V 曲線的儀器叫電源量測單元(SMU),把電源與電錶做在一起;寫法一樣是設定、量測、記錄的迴圈。
下一課換一種掃描:固定振幅、改變頻率,用函數產生器與示波器量濾波器的頻率響應。