題目條件
- 模擬信號最大幅值
Vmax = 4.8 V
- 要求分辨率(最小可檢測變化)
ΔV = 8 mV = 0.008 V
計算邏輯
- 量化等級數
N = Vmax / ΔV = 4.8 / 0.008 = 600 級。
- ADC 位數
n 滿足 2^n ≥ N。
2^9 = 512 < 600(不夠)
2^10 = 1024 ≥ 600(滿足)
- 結論:至少需要 10 位 ADC。
工程擴展考量
| 因素 | 影響 | 建議 |
| 信號噪聲 | 有效位數 (ENOB) 低於標稱位數 | 預留 1-2 位裕量,選 12 位更穩妥 |
| 參考電壓誤差 | Vref 不準導致系統增益誤差 | 使用外部高精度基準源 |
| 採樣速率 | 高速 ADC 往往位數較低 | 確認帶寬需求,平衡速率與精度 |
| 輸入範圍匹配 | 信號幅值未滿量程會浪費碼字 | 前置放大/衰減電路調整至滿量程 |
常見 MCU ADC 位數分布
- 8 位:古老/低成本 MCU(如 STC89 系列內部 ADC)
- 10 位:主流 51/AVR/STM32F0/F1 等
- 12 位:Cortex-M3/M4/M7 多數內部 ADC、專用 ADC 芯片
- 16/24 位:Sigma-Delta ADC(儀表級、音頻、稱重)
驗證代碼片段(C 語言)
#include <stdio.h>
#include <math.h>
int main() {
double Vmax = 4.8, dV = 0.008;
int levels = (int)ceil(Vmax / dV);
int bits = (int)ceil(log2(levels));
printf("所需量化等級: %d\n最小ADC位數: %d\n", levels, bits);
return 0;
}
// 輸出:所需量化等級: 600 最小ADC位數: 10