首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

單片機 ADC 位數選型計算:從分辨率需求推導最小位數

     編輯:程式設計疑難解答

題目條件

  • 模擬信號最大幅值 Vmax = 4.8 V
  • 要求分辨率(最小可檢測變化)ΔV = 8 mV = 0.008 V

計算邏輯

  1. 量化等級數 N = Vmax / ΔV = 4.8 / 0.008 = 600 級。
  2. ADC 位數 n 滿足 2^n ≥ N。
      2^9 = 512 < 600(不夠)
      2^10 = 1024 ≥ 600(滿足)
  3. 結論:至少需要 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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved