第 6 章 示波器入門
本章目標
- 學完你會說出示波器到底在畫什麼:橫軸是時間、縱軸是電壓。
- 學完你會正確使用探棒:1×/10× 開關要和示波器設定一致、先做探棒補償、接地夾只能夾 GND。
- 學完你會看格子換算電壓與時間:V/div、s/div,並用 Auto Set 快速找到波形。
- 學完你會設定觸發(來源、邊緣、準位),分辨 Auto、Normal 與 Single 三種模式,讓波形乖乖停在畫面上。
- 學完你會用 Measure 自動量測 Vpp、頻率、週期,用 Cursor 游標手動量,並用 Run/Stop 把波形凍結。
- 學完你會把兩個通道一起看,比較 Arduino 兩支腳位輸出的方波。
開場:三用電表看得到「現在」,看不到「變化」
小宇寫了一個 Arduino 程式讓 D9 腳位每秒閃一次 LED。他用三用電表去量 D9,電表上的數字一下 5V、一下 0V,跳來跳去。接著他把程式改成每毫秒閃一次,LED 看起來變成「一直亮著、但比較暗」,電表卻顯示 2.5V——既不是 5V 也不是 0V。
電表沒有壞。它每秒只量兩三次,再把量到的值平均一下,所以面對一秒鐘變化上千次的訊號,它只能給你一個「平均值」。真正發生的事是:D9 每毫秒在 0V 和 5V 之間跳,一半時間高、一半時間低,平均起來剛好 2.5V。
要看到「跳」的過程,你需要一台能把電壓隨時間的變化畫成圖的儀器——示波器(Oscilloscope)。它像一台超高速的心電圖機:心電圖畫的是心臟電訊號對時間的圖,示波器畫的是任何電壓對時間的圖,而且一秒鐘能畫幾百萬個點。這一章我們把示波器的每個按鈕都搞懂。
核心概念
示波器在畫什麼
示波器螢幕上是一張格線圖:橫軸是時間,從左到右;縱軸是電壓,往上是正。螢幕通常橫向 10 格、縱向 8 格,每一格叫做一個 div(division,刻度)。
CH1 1.00V M 200µs 觸發 CH1 ⎍ 2.50V
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
1►━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┥ ← 0V 基準線(CH1)
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
◄──────────────── 10 格(橫向:時間)────────────►
每格 = s/div 的設定值;縱向 8 格,每格 = V/div 的設定值
螢幕左邊有個小標記「1►」,標示 CH1 的 0V 在哪一條線。畫面上方(或下方)會顯示目前每格代表多少電壓(例如 CH1 1.00V)和多少時間(例如 M 200µs)。學會看這兩個數字,你就看得懂示波器的任何畫面。
探棒:1× 與 10× 一定要一致
探棒(Probe)是示波器的「手」。前端是一個可以鉤住元件腳的鉤子,旁邊有一條短線接著黑色的鱷魚夾,那是接地夾(Ground Clip)。探棒上有個小開關,寫著 1× 和 10×。
- 1×:訊號原封不動送進示波器。
- 10×:訊號先被探棒縮小 10 倍再送進去。
為什麼要縮小?縮小 10 倍後探棒的輸入電阻變成 10MΩ,幾乎不會從電路「偷」電流(和三用電表一樣的道理),而且能量更高的電壓。本書建議:探棒一律撥到 10×,而且示波器的通道選單裡「Probe」也設成 10×。這樣示波器會自動把讀值乘回 10 倍,你看到的就是真正的電壓。
如果兩邊不一致會怎樣?探棒 10× 但示波器設 1×,5V 的訊號會顯示成 0.5V;探棒 1× 但示波器設 10×,5V 會顯示成 50V。只要讀值看起來剛好差 10 倍,第一件事就是檢查這兩個設定。
接地夾只能夾 GND
這是本書的安全紅線,原因要講清楚。示波器所有通道的接地夾,在機器裡面是連在一起的,而且連到示波器的金屬外殼和插座的地線。所以:
- 如果 CH1 的接地夾夾在 GND,CH2 的接地夾夾在 D9,那 D9 就會透過示波器內部直接接到 GND,等於把 D9 短路,Arduino 可能重開機甚至燒腳位。
- 如果接地夾夾在電池的正極,再把另一支探棒的接地夾夾在負極,電池就被短路。
規則只有一條:每一支探棒的接地夾,都夾在同一個 GND 上。想量哪裡,用前端的鉤子去鉤,接地夾永遠不動。
探棒補償:讓方波變成漂亮的方形
示波器面板上有一個小金屬片或兩個小端子,標示 Probe Comp(探棒補償),它會持續輸出一個 1kHz 的方波(通常 3V 或 5V)。第一次用一支探棒、或探棒換到另一台示波器時,要先把探棒鉤在這裡看看方波長什麼樣:
剛好(正確) 過補償 欠補償
┌────┐ ┌────┐ ┐ ┐ ╭───╮ ╭───╮
│ │ │ │ │╲ │╲ │ │ │ │
│ │ │ │ │ └──┘ └── ╯ ╰────╯ ╰──
─┘ └────┘ └── ─┘ └
角落方方正正 角落翹起來(尖角) 角落圓圓的(塌陷)
如果方波的角落翹起來或塌下去,拿探棒附的小螺絲起子,轉探棒接頭上的小螺絲(有的在探棒前端、有的在接示波器那端),一邊轉一邊看,直到角落變成方方正正。這叫探棒補償(Probe Compensation)。沒做補償,之後量方波會一直看到奇怪的角,你會以為是電路有問題。
V/div 與 s/div:看格子算數字
V/div(Volts per division):縱向每一格代表幾伏特,由垂直刻度旋鈕(Scale)控制。 s/div(seconds per division):橫向每一格代表幾秒,由水平刻度旋鈕控制。
換算就是「數格子 × 每格多少」:
電壓 = 格數 × V/div
時間 = 格數 × s/div
例子一:V/div 設 1V,方波從 0V 基準線往上跳了 5 格。電壓 = 5 × 1V = 5V。
例子二:s/div 設 200µs,一個完整週期(從這次上升邊緣到下一次上升邊緣)占了 5 格。週期 T = 5 × 200µs = 1000µs = 1ms。頻率 f = 1 ÷ T = 1 ÷ 0.001 = 1000Hz。
例子三:s/div 設 500µs,一個週期占 4 格。T = 4 × 500µs = 2ms,f = 1 ÷ 0.002 = 500Hz。
每個通道還有一個位置旋鈕(Position),可以把波形上下移;水平位置旋鈕可以把波形左右移。移動只是「換個地方放」,不會改變格數的意義。
想讓波形看起來大一點,把 V/div 調小(例如 2V → 1V);想看更多個週期,把 s/div 調大。
觸發:讓波形停下來
示波器不停地「拍照」,一張接一張地把波形畫出來。如果每一張照片都從隨便的時間點開始畫,重疊起來就是一團亂、左右亂跑。**觸發(Trigger)**就是告訴示波器:「每次都從訊號經過某個電壓、往某個方向的那一瞬間開始畫」。這樣每一張都對齊,波形就穩穩地停在畫面上。
觸發有三個設定:
- 來源(Source):看哪個通道來決定何時開始畫。通常選有訊號、比較乾淨的那個,例如 CH1。
- 邊緣(Edge / Slope):上升邊緣(訊號從低變高的瞬間)或下降邊緣(從高變低)。
- 準位(Level):觸發的電壓門檻。準位一定要放在訊號的最高和最低之間。量 0~5V 的方波,準位放 2.5V 最保險;如果你把準位轉到 7V,訊號永遠碰不到,就永遠不會觸發。
畫面上會有一個小箭頭或「T」標示目前的準位,轉觸發準位旋鈕可以看到它上下移動。
Auto、Normal 與 Single
觸發模式決定「沒有觸發的時候要怎麼辦」:
- Auto(自動):有觸發就對齊畫;等太久沒觸發,就隨便畫一張給你看。適合初學,也適合看直流(直流沒有邊緣,永遠不會觸發,用 Auto 才看得到那條直線)。
- Normal(一般):沒有觸發就不畫,畫面停在上一張。適合等待一個偶爾才發生的訊號,例如按一下按鈕。
- Single(單次):按下去之後,示波器只等一次觸發,抓到就停住不再更新。要抓「只發生一次」的事情(例如開關瞬間的尖波,第 7 章會用到)就靠它。
另外面板上有 Run/Stop 按鈕:Run 的時候不停更新,按一下變 Stop,畫面凍結,你可以慢慢看、慢慢量,再按一下恢復。
Auto Set:先按它,再動手調
大部分示波器都有一個 Auto Set(或 Autoscale)按鈕。按下去,示波器會自己猜一組 V/div、s/div 和觸發設定,把它看到的訊號放進畫面。對於持續不斷的週期訊號(方波、正弦波),它幾乎都能一按就看到波形,非常好用。
但它有兩個弱點:看直流時它可能把 V/div 調得太細讓直線跑出畫面;抓單次事件時它完全沒用(因為按的時候沒有訊號)。所以習慣是:先按 Auto Set 看到波形,再手動微調 V/div、s/div 和觸發準位到你想要的樣子。
自動量測與游標
Measure(量測):按下後選擇通道和項目,示波器會直接在畫面上顯示數字。常用的有:
- Vpp(峰對峰電壓,Peak-to-Peak):最高點減最低點。0~5V 方波的 Vpp = 5V。
- Vmax / Vmin / Mean:最高、最低、平均。0~5V 對稱方波的 Mean ≈ 2.5V,和開場小宇用電表量到的一樣。
- Frequency(頻率) 與 Period(週期):互為倒數。
Cursor(游標):兩條可以用旋鈕移動的虛線。選「時間游標」會出現兩條直立的線,示波器顯示兩條線之間的時間差 Δt(和 1 ÷ Δt);選「電壓游標」會出現兩條橫線,顯示 ΔV。Measure 是示波器自己算,游標是你自己決定要量哪兩個點,兩個都要會。
耦合:DC 與 AC
通道選單裡的**耦合(Coupling)**有 DC 和 AC 兩種。DC 是原汁原味,電壓是多少就畫多少。AC 是在輸入端串一顆電容(第 5 章學過:電容擋住直流、讓變化通過),把訊號的「平均值」去掉,只留下變化的部分。量電池用 AC 會看到 0V,量方波用 AC 會看到方波上下對稱地跨在 0V 兩邊。初學一律用 DC,知道 AC 是什麼就好。
動手做
安全提醒:接地夾只夾 GND。本章訊號最高 9V。接線前先把 Arduino 的 USB 拔掉,接好再插。
實驗 6-1:探棒補償,然後量一條直線
材料
- 示波器(雙通道)與 10× 探棒 1 支
- 探棒附的小螺絲起子
- 9V 電池與電池扣
接線
第一階段:
探棒鉤子 → 示波器面板的 Probe Comp 訊號端
接地夾 → Probe Comp 旁邊的接地端(⏚ 符號)
第二階段:
探棒鉤子 → 9V 電池扣紅線(+)
接地夾 → 9V 電池扣黑線(−)
步驟
- 開機,等它進入正常畫面。把探棒接到 CH1,探棒開關撥到 10×。
- 進入 CH1 選單,找到「Probe」或「探棒」,設成 10×。
- 把探棒鉤在 Probe Comp,接地夾夾旁邊的接地端。
- 按 Auto Set。畫面應該出現一個方波。看上方的標示,應該是 1kHz 左右,高度約 3V 或 5V(看機型)。
- 仔細看方波的角落:方方正正、翹起來、還是塌下去?用小螺絲起子輕輕轉探棒上的補償螺絲,直到角落方正。
- 如果你有第二支探棒,接到 CH2,重複步驟 1~5。
- 第二階段:把探棒改鉤 9V 電池的紅線,接地夾夾黑線。CH1 設 DC 耦合、2V/div,觸發模式 Auto,s/div 設 1ms。
- 用 CH1 的位置旋鈕把 0V 基準線移到畫面最下面那一格。你應該看到一條平的線,在基準線上方約 4.5 格。
- 把耦合改成 AC,看那條線跑去哪裡。改回 DC。
- 把觸發模式改成 Normal,看看畫面怎麼了(提示:直流沒有邊緣)。改回 Auto。
你應該看到
CH1 2.00V (DC) M 1.00ms Auto
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ← 9V:基準線上方 4.5 格
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
1►━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┥ ← 0V 基準線
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
電池是直流,所以是一條完全平的線:4.5 格 × 2V/div = 9V。改成 AC 耦合後,線會掉到 0V 基準線上(直流被擋掉了)。改成 Normal 觸發後,畫面會停住不更新,因為沒有任何邊緣可以觸發,這就是為什麼看直流要用 Auto。
觀察與記錄
| 項目 | 記錄 |
|---|---|
| Probe Comp 方波頻率(畫面標示) | |
| 補償前角落的樣子(方正/翹起/塌陷) | |
| 電池那條線在基準線上方幾格 | |
| 格數 × V/div = 電壓 | |
| 三用電表量到的電池電壓(比對) | |
| 改成 AC 耦合後線在哪裡 |
實驗 6-2:量 Arduino 的方波——Vpp、頻率、週期
材料
- Arduino UNO 與 USB 線、電腦
- 示波器與 10× 探棒 1 支
- 杜邦線(公公)2 條
接線
Arduino D9 ────── CH1 探棒鉤子
Arduino GND ───── CH1 接地夾
- 一條杜邦線插在 D9,探棒鉤子鉤住杜邦線的金屬端。
- 一條杜邦線插在 GND,接地夾夾住。
程式
// 第 6 章 實驗 6-2 / 6-3:Arduino 同時產生兩種方波
// D9 用 tone() 產生 1kHz 方波(由計時器在背景自動輸出)
// D10 用 digitalWrite + delay 產生約 500Hz 方波
const int tonePin = 9; // tone() 輸出腳位
const int togglePin = 10; // digitalWrite 輸出腳位
const int toneFreq = 1000; // tone 的頻率(Hz),實驗中會改成 500、2000、5000
void setup() {
pinMode(togglePin, OUTPUT); // D10 設成輸出
tone(tonePin, toneFreq); // D9 開始輸出 toneFreq Hz 的方波
}
void loop() {
digitalWrite(togglePin, HIGH); // D10 變 5V
delay(1); // 停 1 毫秒
digitalWrite(togglePin, LOW); // D10 變 0V
delay(1); // 再停 1 毫秒 → 週期約 2ms,約 500Hz
}
步驟
- 上傳程式,接好線(探棒 10×、示波器 CH1 Probe 10×)。
- 按 Auto Set。應該看到方波。
- 手動設定:CH1 1V/div、DC 耦合;水平 200µs/div;觸發來源 CH1、上升邊緣、準位 2.5V;模式 Auto。把 0V 基準線移到下面數來第 2 格。
- 數格子:方波高幾格?一個週期占幾格?算出電壓、週期、頻率,填表。
- 按 Measure,選 CH1,加入 Vpp、Frequency、Period、Mean。把示波器算的數字和你數格子算的比一比。
- 按 Cursor,選時間游標,把第一條放在某個上升邊緣,第二條放在下一個上升邊緣,讀 Δt。再換電壓游標,一條放在方波頂、一條放在底,讀 ΔV。
- 轉觸發準位旋鈕,把準位轉到 6V 以上,看波形怎麼了。轉回 2.5V。把邊緣改成下降,看波形左右移動的樣子(觸發點永遠在畫面中央那條線上)。
- 按 Run/Stop,畫面凍結;再按一次恢復。
- 把程式裡的
toneFreq改成 500、2000、5000,各上傳一次。每次先按 Auto Set,再把 s/div 調到剛好看到 2~3 個週期,記錄 Measure 的頻率。 - 試試 Single:先把 D9 的杜邦線拔掉(畫面變成 0V 直線),按 Single,示波器會顯示「等待中」;再把線插回去,它會抓到第一個邊緣就停住。按 Run/Stop 回到連續模式。
你應該看到
CH1 1.00V (DC) M 200µs 觸發 CH1 ⎍ 2.50V Vpp=5.04V Freq=1.000kHz Period=1.000ms
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┏━━━━━━━━━┓ ┆ ┏━━━━━━━━━┓ ┆ ┏━━━━━━━━━┓ │ ← 5V(基準線上方 5 格)
├┄┄┃┄┼┄┄┄┄┼┄┄┃┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┤
│ ┃ ┆ ┆ ┃ ┆ ┃ ┆ ┆┃ ┆ ┃ ┆ ┆┃ │
├┄┄┃┄┼┄┄┄┄┼┄┄┃┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┤
│ ┃ ┆ ┆ ┃ ┆ T ┃ ┆ ┆┃ ┆ ┃ ┆ ┆┃ │ ← T:觸發準位 2.5V
├┄┄┃┄┼┄┄┄┄┼┄┄┃┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┤
│ ┃ ┆ ┆ ┃ ┆ ┃ ┆ ┆┃ ┆ ┃ ┆ ┆┃ │
├┄┄┃┄┼┄┄┄┄┼┄┄┃┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┼┄┄┄┄┃┄┄┄┼┄┄┄┄┼┃┄┄┤
1►━━┛ ┆ ┆ ┗━━━━━━┛ ┆ ┆┗━━━━━━━┛ ┆ ┆┗━━┥ ← 0V 基準線
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
◄──────────────────►
一個週期 = 5 格 × 200µs = 1ms → f = 1 ÷ 0.001 = 1000Hz
方波高 5 格 × 1V = 5V,和 Measure 的 Vpp 約 5V 一致(可能顯示 4.9~5.1V,USB 的 5V 本來就不是剛好 5.00V)。一個週期 5 格 × 200µs = 1ms,頻率 1000Hz,Measure 的 Frequency 會顯示 1.000kHz。Mean 約 2.5V,就是開場故事三用電表看到的數字。
把準位轉到 6V 以上,波形會開始左右亂跑(Auto 模式下示波器找不到觸發就隨便畫),這就是沒有觸發的樣子。改成下降邊緣,畫面中央的觸發點會從「往上跳」變成「往下掉」。
改頻率的對照:
| toneFreq | 週期 T = 1 ÷ f | 建議 s/div | 一個週期占幾格 |
|---|---|---|---|
| 500Hz | 2ms | 500µs | 4 格 |
| 1000Hz | 1ms | 200µs | 5 格 |
| 2000Hz | 0.5ms | 100µs | 5 格 |
| 5000Hz | 0.2ms | 50µs | 4 格 |
觀察與記錄
| 項目 | 數格子算的 | Measure 顯示的 | 游標量到的 |
|---|---|---|---|
| 方波高度(Vpp) | 格 × V/div = V | ΔV = | |
| 週期 T | 格 × s/div = ms | Δt = | |
| 頻率 f = 1 ÷ T | 1 ÷ Δt = | ||
| Mean(平均電壓) | — | — | |
| toneFreq = 500 時的頻率 | |||
| toneFreq = 2000 時的頻率 | |||
| toneFreq = 5000 時的頻率 |
實驗 6-3:兩個通道一起看
材料
- 同實驗 6-2,再加一支 10× 探棒接 CH2
- 杜邦線(公公)3 條
接線
Arduino D9 ────── CH1 探棒鉤子(tone 1kHz)
Arduino D10 ────── CH2 探棒鉤子(digitalWrite 約 500Hz)
Arduino GND ──┬─── CH1 接地夾
└─── CH2 接地夾
- 兩支探棒的接地夾都夾在 GND 那條杜邦線上(可以一夾夾住另一夾)。
- 絕對不要把任何接地夾夾在 D9 或 D10。
步驟
- 程式用實驗 6-2 的,
toneFreq改回 1000。 - CH1、CH2 都打開,都設 1V/div、DC、Probe 10×。用位置旋鈕把 CH1 的基準線放在上半部、CH2 的基準線放在下半部,兩條波形就不會疊在一起。
- 水平 500µs/div,觸發來源 CH1、上升邊緣、準位 2.5V。
- 觀察:CH1 穩穩的,CH2 呢?它會慢慢左右漂移。這是因為 D10 的方波是用
delay()一步一步做出來的,和 D9 的 tone 計時器各走各的,兩個訊號並不同步。 - 把觸發來源改成 CH2。現在換 CH2 穩住、CH1 漂移。觸發來源選誰,誰就穩。
- 用 Measure 分別量 CH1 和 CH2 的頻率。CH2 不會剛好 500Hz,大概 495~499Hz,因為
digitalWrite()和loop()本身也要花幾微秒。 - 數數看:CH2 的一個週期裡,CH1 有幾個週期?
- 如果你有 ESP32,把 D9 換成 ESP32 的 GPIO 18(程式一樣,
tonePin改 18、togglePin改 19),看看方波高度變成幾格。
你應該看到
CH1 1.00V CH2 1.00V M 500µs 觸發 CH1 ⎍ 2.50V
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ ┏━┓ │ CH1:1kHz,每 2 格一個週期
│ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
1►━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━┛ ┗━━┥ ← CH1 的 0V
├┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┼┄┄┄┄┤
│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
│ ┏━━━━━━━┓ ┆ ┏━━━━━━━┓ ┆ ┏━━━━━━━┓ ┆ │ CH2:約 500Hz,每 4 格一個週期
│ ┃ ┆ ┃ ┆ ┃ ┆ ┃ ┆ ┃ ┆ ┃ ┆ │ (會慢慢左右漂)
2►━━┛ ┆ ┗━━━━━━┛ ┆ ┗━━━━━━┛ ┆ ┗━━━━━━━┥ ← CH2 的 0V
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
CH1 一個週期 2 格 × 500µs = 1ms(1kHz);CH2 一個週期 4 格 × 500µs = 2ms(500Hz)。CH2 的一個週期裡剛好有 2 個 CH1 的週期。換 ESP32 後方波只有 3.3 格高,因為 ESP32 是 3.3V 的板子。
觀察與記錄
| 項目 | CH1(D9) | CH2(D10) |
|---|---|---|
| 一個週期占幾格 | ||
| 週期 = 格數 × 500µs | ||
| 頻率 = 1 ÷ 週期 | ||
| Measure 顯示的頻率 | ||
| 觸發來源設 CH1 時,哪個通道在漂? | ||
| 觸發來源設 CH2 時,哪個通道在漂? | ||
| ESP32 方波高幾格(V) |
用儀器看看
本章整章都是「用儀器看看」:實驗 6-1 到 6-3 已經把探棒、V/div、s/div、觸發、量測、游標全部練過一遍。之後每一章的這個段落,都會直接寫「CH1 鉤在哪裡、V/div 多少、s/div 多少、觸發怎麼設」,請把這一章當成之後隨時可以翻回來的說明書。附錄 D 另有一頁示波器速查表。
常見錯誤與除錯
- 畫面上什麼都沒有 → 通道沒開、V/div 太大(波形被壓成一條線貼在基準線上)、或探棒沒接好 → 先按 Auto Set;確認通道選單裡 CH1 是 ON;把鉤子鉤緊。
- 讀值剛好差 10 倍(5V 變 0.5V 或 50V) → 探棒開關和示波器的 Probe 設定不一致 → 兩邊都改成 10×。
- 波形左右亂跑、停不下來 → 觸發來源不是有訊號的那個通道,或準位不在波形範圍內 → 觸發來源選 CH1,準位轉到波形中間(例如 2.5V)。
- 方波的角落翹起來或圓圓的 → 探棒沒有補償 → 鉤 Probe Comp 調螺絲。
- 看直流時畫面停住不動或一片空白 → 觸發模式在 Normal → 改成 Auto。
- 波形跑出畫面上方 → V/div 太小或位置旋鈕轉太高 → 調大 V/div,用位置旋鈕把基準線往下移。
- 看到一大片密密麻麻、像一塊顏色 → s/div 太大,幾千個週期擠在畫面上 → 調小 s/div 到一個畫面剩 2~5 個週期。
- 接上接地夾的瞬間 Arduino 重開或電腦 USB 跳出警告 → 接地夾夾到了不是 GND 的地方,造成短路 → 立刻拔掉探棒,檢查接地夾只夾 GND。
- 量 Arduino 方波只有 3.3V 高 → 你用的是 ESP32,不是 UNO → 正常,ESP32 是 3.3V。
- Measure 顯示頻率一直跳動或是「?」 → 畫面上的週期數太少(不到一個)或太多 → 調 s/div 到 2~5 個週期。
想一想
- V/div 設 1V,波形從基準線往上跳 4 格。電壓多少?
參考答案
4 × 1V = 4V。
- s/div 設 500µs,一個週期占 4 格。週期和頻率各是多少?
參考答案
T = 4 × 500µs = 2000µs = 2ms。f = 1 ÷ 0.002 = 500Hz。
- 探棒撥在 10×,示波器的 Probe 設定卻是 1×,畫面上讀到 0.5V。真正的電壓是多少?
參考答案
探棒把訊號縮小了 10 倍,示波器卻沒有乘回來,所以真正的電壓是 0.5 × 10 = 5V。
- 你把 CH1 的接地夾夾在 GND,CH2 的接地夾不小心夾在 D9。D9 會發生什麼事?為什麼?
參考答案
兩支探棒的接地夾在示波器內部是連在一起的,所以 D9 會透過示波器直接接到 GND,等於把 D9 短路到 0V。Arduino 的腳位會輸出過大電流,可能重開機或燒壞腳位。
- 你想抓住「按一下按鈕」那一瞬間的波形,按鈕只會按一次。觸發模式應該用 Auto、Normal 還是 Single?準位要放哪裡?
參考答案
用 Single(或 Normal)。Auto 會在沒觸發時亂畫,蓋掉你要的畫面。準位放在按鈕按下前後電壓的中間,例如 0V 和 5V 之間的 2.5V,邊緣看你要抓按下(上升或下降,看接法)還是放開。
- (開放挑戰)實驗 6-3 用
delay(1)做出來的 500Hz,用 Measure 量到的是 497Hz。想一想為什麼不是剛好 500Hz?如果想要更接近 500Hz,程式可以怎麼改?(提示:delayMicroseconds()可以等比 1ms 更短的時間。)
參考答案
每次 loop() 除了兩個 delay(1) 之外,digitalWrite() 和 loop() 本身的跳轉也要花幾微秒,所以一個週期比 2000µs 長一點,頻率就比 500Hz 低一點。可以把 delay(1) 改成 delayMicroseconds(995) 之類的值,一邊看示波器一邊微調,直到 Measure 顯示 500Hz。更準的做法是用 tone(10, 500),但 tone 一次只能用在一支腳位。
本章小結
- 示波器畫的是「電壓對時間」的圖:橫軸時間、縱軸電壓,螢幕橫 10 格、縱 8 格。
- 探棒 1×/10× 開關和示波器的 Probe 設定必須一致;本書一律 10×。讀值差 10 倍,先查這個。
- 第一次用探棒先鉤 Probe Comp 做補償,把方波角落調方正。
- 接地夾只能夾 GND,所有通道的接地夾內部是相通的。
- 電壓 = 格數 × V/div,時間 = 格數 × s/div,頻率 = 1 ÷ 週期。
- 觸發三要素:來源、邊緣、準位;準位要放在波形的高低之間。
- Auto 看直流與一般訊號、Normal 等事件、Single 抓一次;Run/Stop 可以凍結畫面。
- 先按 Auto Set 找到波形,再手動微調;用 Measure 讀 Vpp、頻率、週期,用 Cursor 自己量兩點。
- 兩個通道一起看時,觸發來源選誰,誰就穩住;不同步的訊號會互相漂移。
名詞表
| 中文 | 英文 | 一句話解釋 |
|---|---|---|
| 示波器 | Oscilloscope | 把電壓隨時間的變化畫成圖的儀器 |
| 探棒 | Probe | 示波器的量測線,前端有鉤子與接地夾 |
| 接地夾 | Ground Clip | 探棒上的黑色鱷魚夾,只能夾 GND |
| 探棒補償 | Probe Compensation | 調整探棒上的小螺絲讓方波角落方正 |
| 刻度 | Division(div) | 螢幕上的一格 |
| 伏特/格 | V/div | 縱向每一格代表的電壓 |
| 秒/格 | s/div | 橫向每一格代表的時間 |
| 位置 | Position | 把波形上下或左右移動的旋鈕 |
| 觸發 | Trigger | 決定每次從訊號的哪一瞬間開始畫,讓波形穩定 |
| 觸發準位 | Trigger Level | 觸發的電壓門檻 |
| 邊緣 | Edge / Slope | 訊號上升或下降的瞬間 |
| 自動模式 | Auto Mode | 沒觸發也照畫,適合看直流 |
| 一般模式 | Normal Mode | 沒觸發就不更新畫面 |
| 單次 | Single | 只抓一次觸發就停住 |
| 自動設定 | Auto Set | 讓示波器自動猜設定並顯示波形的按鈕 |
| 峰對峰電壓 | Vpp(Peak-to-Peak) | 波形最高點減最低點 |
| 週期 | Period(T) | 波形重複一次所需的時間 |
| 頻率 | Frequency(f) | 每秒重複幾次,f = 1 ÷ T |
| 自動量測 | Measure | 示波器自己算出 Vpp、頻率等數字的功能 |
| 游標 | Cursor | 兩條可移動的線,用來量兩點之間的時間差或電壓差 |
| 耦合 | Coupling | DC 保留直流成分,AC 只留變化的部分 |
| 滾動模式 | Roll Mode | 看慢速訊號時波形從右往左流動 |