中文工具 / 電子工具

ADC 換算

電壓和 ADC 數值互相換算,可以選解析度和參考電壓,也能用兩個點把 ADC 數值換成感測器的讀值。

電壓和 ADC 數值

除以
換算方向

ADC 數值換成感測器讀值

使用上面的解析度、參考電壓和除數。從感測器規格書找兩個點填入,例如 0.5 V 時是 0、2.5 V 時是 100。

結果不對或有錯字?填寫意見回饋

ADC 怎麼把電壓變成數字?

N 位元的 ADC 把 0 V 到參考電壓 Vref 分成 2N 階,回報輸入落在第幾階,是 0 到 2N − 1 的整數:

ADC 數值 = Vin / Vref × 2N
Vin = ADC 數值 × Vref / 2N

12 位元、參考電壓 3.3 V 的 ADC 有 4096 階,每階 3.3 / 4096 = 0.806 mV。輸入 1.2 V 時讀到 1.2 / 3.3 × 4096 ≈ 1489。

要除以 4096 還是 4095?

兩種寫法都有人用。大多數 ADC 規格書的理想轉換公式用 2N(12 位元是 4096):每個數值代表 Vref / 4096 的一階,最大值 4095 在比 Vref 少一階的地方就達到了。很多應用手冊和範例程式改用 2N − 1(4095),讓讀到 4095 時換算回來剛好等於 Vref。

兩者只差 4096 分之 1,12 位元約 0.02%,比大多數微控制器內建 ADC 的偏移和增益誤差還小。跟著你的程式或規格書用同一種,比對數字時才會一致。

解析度數值範圍每階(3.3 V)每階(5 V)
8 位元0~25512.89 mV19.53 mV
10 位元0~10233.223 mV4.883 mV
12 位元0~4095805.7 µV1.221 mV
14 位元0~16383201.4 µV305.2 µV
16 位元0~6553550.35 µV76.29 µV
24 位元0~16777215196.7 nV298 nV

ADC 數值怎麼換成感測器讀值?

大部分類比感測器輸出的電壓和量測值成直線關係,從規格書找兩個點就能換算。第二個面板會算出 讀值 = 斜率 × ADC 數值 + 偏移,可以直接寫進韌體。電壓越低、讀值越高的感測器也適用,例如 0 A 時 2.5 V、10 A 時 0.5 V 的電流感測器,斜率就是負的。

常見問題

電壓超過參考電壓會怎樣?

到達或超過滿刻度時,ADC 都讀到最大值(12 位元是 4095)。輸入超過電源電壓或低於 0 V 可能會損壞腳位,比較高的電壓要先用分壓電阻降到範圍內。

為什麼讀值會跳動好幾個數?

輸入或參考電壓上的雜訊,以及 ADC 本身的誤差,通常會讓讀值差 1、2 個數。多次取樣平均、輸入端加小電容、使用穩定的參考電壓都有幫助。

LSB 是什麼?

最低有效位元,也就是一階的電壓:Vref / 2N,代表 ADC 能分辨的最小變化。

Arduino Uno 的 analogRead() 怎麼換成電壓?

Uno 是 10 位元 ADC,預設參考電壓 5 V,所以電壓 = 數值 × 5 / 1024,讀到 512 是 2.5 V。上面選 10 位元、輸入 5 就能換算。