ADC誤差產生的原因(一)

本篇文章列出了影響模數轉換精度的主要誤差。這些類型的誤差存在于所有模數轉換器中,轉換質量將取決于它們的消除情況。STM32微控制器數據手冊的ADC特性部分規定了這些誤差 值。規定了STM32 ADC的不同精度誤差類型。

Image placeholder
管理員 2021-04-02 15:36

本篇文章列出了影響模數轉換精度的主要誤差。這些類型的誤差存在于所有模數轉換器中,轉換質量將取決于它們的消除情況。STM32微控制器數據手冊的ADC特性部分規定了這些誤差 值。規定了STM32 ADC的不同精度誤差類型。為便于參考,將精度誤差表達為1 LSB的倍數。就電壓而言,分辨率取決于參考電壓。通過將LSB數乘以1 LSB對應的電壓來計算電壓誤差。


一、 ?ADC自身導致的誤差

?

偏移誤差

偏移誤差是第一次實際轉換和第一次理想轉換之間的偏離。第一次轉換發生在數字ADC輸出 從0變為1時。理想情況下,當模擬輸入介于0.5 LSB和1.5 LSB之間時,數字輸出應為1。仍然是理想情況下,第一次轉換發生在0.5 LSB處。用EO表示偏移誤差。可通過應用固件輕松校準偏移誤差。

示例:

對于STM32 ADC,電壓的最小可檢測增量變化用LSB表示為:

?1 LSB = VREF+/4096(在某些封裝上,VREF+ = VDDA)。?

如果 VREF+ = 3.3 V,則在理想情況下, 402.8 μV (0.5 LSB = 0.5 × 805.6 μV)的輸入應導致生成數字輸出 1。但實際上, ADC 可能仍然提供讀數 0。如果從 550 μV 的模擬輸入獲得 數字輸出 1,則:

?偏移誤差 = 實際轉換 – 理想轉換?

EO = 550 μV – 402.8 μV = 141.2 μV?

EO = 141.2 μV / 805.6 μV = 0.17 LSB

當大于0.5 LSB的模擬輸入電壓生成第一次轉換時,偏移誤差為正。如下圖:

當小于0.5 LSB的模擬輸入電壓生成第一次轉換時,偏移誤差為負。如下圖:

?

增益誤差

增益誤差是最后一次實際轉換和最后一次理想轉換之間的偏離。增益誤差用EG表示。最后一次實際轉換是從0xFFE到0xFFF的轉換。

理想情況下,當模擬輸入等于VREF+ – 0.5 ?LSB時,應存在從0xFFE到0xFFF的轉換。因此對于VREF+= 3.3 V,最后一次理想轉換應發生 在3.299597 V處。如果ADC提供VAIN

示例

按以下公式計算增益誤差:?

EG = 最后一次實際轉換 – 理想轉換?

如果VREF+ = 3.3 V且VAIN = 3.298435 V時生成從0xFFE到0xFFF的轉換,則:

?EG = 3.298435 V – 3.299597 V?

EG = –1162 μV?

EG = (–1162 μV / 805.6 V) LSB = –1.44 LSB?

如果VAIN等于VREF+時沒有得到滿量程讀數(0xFFF),則增益誤差為正。

正增益誤差的表示方法:

負增益誤差的表示方法:

?

微分線性誤差

微分線性誤差(DLE)為實際步進和理想步進之間的最大偏離。這里的“理想情況”不是指理想傳輸曲線,而是指ADC分辨率。在下圖中,用ED表示DLE。?

ED = 實際步寬 – 1 LSB

理想情況下,1 LSB的模擬輸入電壓變化量應導致數字代碼變化。如果需要大于1 LSB的模擬輸入電壓才能導致數字代碼變化,將觀察到微分線性誤差。因此,DLE對應于從一個數字代 碼變為下一個數字代碼所需的最大額外電壓。DLE也稱為微分非線性(DLE)誤差。


示例

給定數字輸出應對應于模擬輸入范圍。理想情況下,步寬應為1 LSB。我們假設1.9998 V至 2.0014 V模擬輸入電壓范圍內的數字輸出相同,則步寬為:2.0014 V – 1.9998 V = 1.6 mV。因此,ED等于較高(2.0014 V)和較低(1.9998 V)模擬電壓之間的電壓差減去1 LSB所對 應的電壓

如果VREF+ = 3.3 V,則1.9998 V(0x9B1)的模擬輸入可提供介于0x9B0和0x9B2之間的結 果。同樣地,2.0014 V(0x9B3)的輸入可提供介于0x9B2和0x9B4之間的結果。因此,0x9B2步進所對應的總電壓變化量為:?

0x9B3 – 0x9B1,

即 2.0014 V – 1.9998 V = 1.6 mV (1660 μV)?

ED = 1660 μV – 805.6 μV?

ED = 854.4 μV?

ED = (854.4 μV/805.6 μV) LSB?

ED = 1.06 LSB?

假設當步寬小于1 LSB時,電壓高于2.0014 V不會導致0x9B2數字代碼,則ED為負


?

積分線性誤差

積分線性誤差為任何實際轉換和端點相關線間的最大偏離。在下圖中,用EL表示ILE。端點相關線可以定義為A/D傳輸曲線上連接第一次實際轉換與最后一次實際轉換的線。EL是指與每一次轉換的這條線的偏離。因此,端點相關線對應于實際傳輸曲線并且與理想傳輸曲線不相關。ILE也稱為積分非線性(INL)誤差。ILE是整個范圍內DLE的積分。

示例?

如果從 0 到 1 的第一次轉換發生在 550 μV 處并且最后一次轉換 (0xFFE 到 0xFFF)發生在 3.298435 V (增益誤差)處,則傳輸曲線上連接實際數字代碼 0x1 和 0xFFF 的線為端點相關線。

?

總未調整的誤差

總未調整誤差(TUE)為實際和理想傳輸曲線間的最大偏離。此參數指定可能發生的會導致理想數字輸出與實際數字輸出之間最大偏離的總誤差。TUE是記錄到的任何輸入電壓的理想預期值與從ADC獲得的實際值之間的最大偏離。在下圖中,用ET表示TUE。TUE不是EO、EG、EL與ED之和。偏移誤差影響較低電壓的數字結果,而增益誤差影響較高電壓的數字輸出。?

示例

如果VREF+ = 3.3 V且VAIN = 2 V,則理想結果為0x9B2。但是,如果得到的轉換結果為0x9B4, 由于DLE和ILE同時發生,因此偏離可能源于偏移。?

TUE = 絕對(實際值 – 理想情況值)?

? ? ? ? ?= 0x9B4 – 0x9B2 = 0x2 = 2 LSB。

評論0