整合類比前端、ADC、MCU、顯示。屬於「進階」專案。
一、學習目標
- 高速 ADC 介面
- 類比前端設計(衰減、保護、補償)
- 觸發系統
- 即時顯示
- 完整訊號鏈
二、規格
| 項目 | 簡易版 | 進階版 |
|---|---|---|
| 通道數 | 1 | 2 |
| 頻寬 | 1 MHz | 50 MHz |
| 取樣率 | 5 MSa/s | 200 MSa/s |
| 解析度 | 8-bit | 12-bit |
| 記憶體深度 | 4k 點 | 1M 點 |
| 觸發 | 邊緣 | 邊緣、脈衝寬度 |
| 顯示 | OLED 128x64 | TFT 320x240 |
| 介面 | – | USB |
三、簡易版架構(適合學習)
主控
STM32H7(高速 ADC、DMA、480 MHz Cortex-M7)。
訊號路徑
BNC ── 衰減器(1×/10×) ── 保護(TVS+ 串聯R) ── OPAMP buffer ──
直流偏壓加法 ── ADC(STM32 內建 12-bit, 3.6 MSa/s)
衰減器
- 1×:直接
- 10×:1MΩ 分壓 + 補償電容
- 切換用繼電器或類比開關
偏壓加法
ADC 只能 0–3.3V,但訊號可能正負:
V_adc = V_signal/N + V_offset
V_offset 通常 1.65V(中點),用 OPAMP 加法器。
保護
- TVS:限制過壓
- 串聯電阻:限制電流
- ESD 二極體(Schottky):限至 0~3.3V
四、ADC 與 DMA
STM32H7 ADC 範例(HAL):
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, BUFFER_SIZE);
DMA 將取樣資料直接傳到 RAM,CPU 只在 buffer 滿時處理。
取樣率設定
fs = ADC_clock / (cycles_per_sample)
H7 ADC 最高約 3.6 MSa/s(12-bit)。
五、觸發系統
邊緣觸發
每個取樣與閾值比較,找上升 / 下降緣:
for (i = 1; i < BUFFER_SIZE; i++) {
if (adc_buf[i-1] < threshold && adc_buf[i] >= threshold) {
trigger_index = i;
break;
}
}
預觸發
要顯示觸發前後的資料,環形緩衝區記錄:
Pre-trigger Post-trigger
──────────► T ──────────►
六、顯示
簡易版(OLED 128×64)
for (x = 0; x < 128; x++) {
uint16_t adc_val = waveform[x * (BUFFER_SIZE/128)];
uint8_t y = 63 - (adc_val * 64 / 4096);
display.drawPixel(x, y, WHITE);
}
display.display();
進階版(TFT 320×240)
加格線、刻度、自動量測(Vpp、頻率、平均、RMS)。
自動量測:
頻率
// 找兩個連續上升緣
freq = 1.0 / (period_samples * sample_period);
Vpp / RMS
vmax = max(buffer);
vmin = min(buffer);
vpp = vmax - vmin;
vrms = sqrt(sum(buf[i]^2) / N);
七、類比前端:補償電容(10× 探棒原理)
1MΩ
┌──/\/\──┐
─┤ ├── 9MΩ ──── 輸入
└──||──┘
C1
─── 1MΩ ── GND(示波器輸入)
─── 20pF(示波器輸入電容)
當 R₁C₁ = R₂C₂ 時,所有頻率衰減比相同(10×)。
可變電容用於微調補償。
八、進階版:50 MHz 頻寬
需要: - 高頻寬 OPAMP(OPA847、AD8045 等 GBW > 500 MHz) - 外部高速 ADC(如 AD9226 65 MSa/s 12-bit) - FPGA 接 ADC + 觸發 + Buffer - USB 介面 PC 顯示 - 4 層 / 6 層 PCB,妥善阻抗控制
成本:$200–500,但效能接近商用入門示波器。
九、開源專案參考
- Scoppy:用 Pi Pico 做示波器(簡易)
- DSO138 / DSO150:低成本套件
- OpenScope MZ:開源儀器
- Sigrok / PulseView:跨平台儀器軟體
- ThunderScope:高頻寬開源示波器專案
十、量測自己的示波器
校驗: - 1 kHz 方波(探棒補償用) - 函數產生器標準訊號 - 與商用示波器比對
十一、本專案重點
✅ 您學到:
- [x] 類比前端設計
- [x] 高速 ADC 操作
- [x] DMA 高吞吐量
- [x] 觸發演算法
- [x] 即時繪圖
- [x] 自動量測