在此我們簡要總結一下ADC的各種指標如何理解,以及從硬件到軟件都有哪些可以采用的手段來提高ADC的轉(zhuǎn)換精度。
1.ADC指標
除了分辨率,速度,輸入范圍這些基本指標外,衡量一個ADC好壞通常會用到以下這些指標:失調(diào)誤差,增益誤差,微分非線性,積分非線性,信噪比,信納比,有效位數(shù),總諧波失真。讓我們以下圖為例來看一下這些指標的意義。
LSB
參數(shù)中經(jīng)常用LSB作為單位,比如說差分非線性為2 LSB。這究竟是多大一個值呢?為了簡單起見,我們以一個3bit分辨率,滿量程為5V的ADC為例。1個LSB對應的電壓大小為5V/7=714mV。如果是8bit分辨率,那么1個LSB對應5/255=19mV。
圖中橫軸為輸入電壓Vin增長方向,縱軸為數(shù)字輸出。理想情況下輸入電壓每增長1LSB(714mV),那么輸出會向上跳變一次,對應虛線L1所在轉(zhuǎn)換曲線。但實際電路往往會引入偏差,轉(zhuǎn)換曲線往往如 L2 所對應曲線。
失調(diào)誤差(Offset Error)
電壓從0開始增大時,引起輸出第一次跳變的電壓值,與理論上應該引起第一次跳變的電壓值(0.5 LSB)的差值。衡量小電壓時的轉(zhuǎn)換精度。如圖中,理論上應該在0.5 LSB處跳變,實際電壓增大到1 LSB時才跳變,所以Offset Error是 1–0.5 = 0.5 LSB。
增益誤差(Offset Error)
可以理解為實際轉(zhuǎn)換曲線偏離理想曲線的程度。用最接近滿量程時跳變點電壓值和理論跳變點電壓值的差表示。
差分非線性 DNL(Differential Non-Linearity)
理論上每增加或減少1 LSB 的電壓,都會引起輸出對應的一次跳變。但實際情況可能如圖中a,b處所示,電壓的步距大于或小于1個LSB的理論步距。
a 處 DNL = 1.5 – 1 = 0.5 LSB;
b 處 DNL = 0.5 – 1 = -0.5 LSB;
積分非線性 INL(Integral Non Linearity)
差分非線性累積起來造成的對實際轉(zhuǎn)換曲線的最大偏離就是INL。如圖中所示,需要注意的是INL不能表征對理想轉(zhuǎn)換曲線的偏離程度。
總不可調(diào)整誤差 TUE(Total Unadjusted Error)
實際轉(zhuǎn)換曲線與理想轉(zhuǎn)換曲線之間最大的偏離。在最糟糕的一點,我們通過ADC得到的電壓,與實際電壓的差值。通俗講就是最不準的一點差多少。
思考一下,如果 DNL 和 INL 都非常好,那么是不是說明 TUE 就非常好?
對,還真不一定。即使線性度非常好,如果增益誤差大,還是會導致最終結果大的偏差。
信噪比 SNR(Signal-to-Noise Ratio)
有用信號與噪聲的能量比。我們總是期望信噪比越大越好。對于一個 N-Bit 分辨率的ADC來說,如果輸入是一個滿量程的正弦信號,在只考慮量化噪聲的情況下,可以推導出一個有用的公式:
SNR = 6.02N + 1.76dB
推導過程見參考文檔ADI: MT-001
此公式直觀的表明了ADC分辨率和信噪比之間的量化關系。
信納比 SINAD (Signal-to-Noise-and-Distortion Ratio)
實際ADC是無法達到理想狀態(tài)的,它的輸出除了會引入噪聲,還會引入輸入信號的諧波。SINAD是有用信號能量,與諧波(Distortion)加噪聲(Noise)能量的比,它更能體現(xiàn)現(xiàn)實世界中的ADC性能。
SINAD = 20log(S/(N+D))
*而SNR = 20log(S/N)
有效位數(shù) ENOB(Effective Number of Bits)
體現(xiàn)ADC實際性能相當于多少位。可以從SINAD推出:
ENOB = (SINAD–1.76)/6.02
*和理想情況下的位數(shù)對應:NOB =(SNR - 1.76)/6.02。
總諧波失真 THD(Total Harmonic Distortion)
有用信號能量與諧波能量的比。
THD = 20log(S/D)
2.如何提高轉(zhuǎn)換精度
有的單片機ADC模塊會引出單獨的電源引腳和電壓參考引腳,最好用LDO給這些引腳供電,或者用磁珠和濾波電容把這部分電源從數(shù)字部分隔離出來。
輸入信號的輸出阻抗
下圖是ADC采樣簡化等效電路。ADC采樣和保持電路的等效輸入電阻電容Radc,和Cadc,手冊中都會給出。在采樣期間,開關SW會接通外部的信號輸入電路,給采樣電容Cadc充電至和輸入信號相等(接近),之后SW斷開,ADC對采樣電容上的電壓進行轉(zhuǎn)換。如果采樣時間過短,或者輸入信號的輸出阻抗過大,將導致采樣電壓不準。在信號源輸出阻抗過高時,可以考慮增加一級運放。
高頻串擾
如果與模擬輸入引腳靠近的IO上有高頻翻轉(zhuǎn)的信號,或者PCB上有與輸入信號長距離的平行走線,串擾將干擾輸入信號。應避免ADC引腳臨近信號高頻翻轉(zhuǎn)。在ADC輸入布線和臨近的走線之間用地線隔離開也可以避免ADC精度下降。
Wait,Stop模式
如果ADC在Wait和Stop模式下還可以工作,在此種模式下可以最大限度的降低MCU電源的波動,提高ADC的轉(zhuǎn)換精度。
過采樣(Oversampling)
如果采樣頻率為fs,那么對于fs/2以內(nèi)的信號頻率既可以獲得完整信息。過采樣是用遠高于所需的采樣頻率去采樣,這樣噪聲就會均攤在整個采樣頻帶內(nèi)。我們用數(shù)字濾波器可以濾除有用信號頻帶之外的噪聲,從而使頻帶內(nèi)的信噪比提高,獲得更高的分辨率。對多次轉(zhuǎn)換結果進行平均也可以提高結果的精度。
芯片內(nèi)部校正
很多單片機內(nèi)部都有校正機制(Calibration),每次上電后執(zhí)行一次Calibration,可以以提高ADC的精度。
溫度的影響
ADC受溫度影響比較大,特別是失調(diào)誤差和增益誤差。如果芯片工作溫度范圍很寬,可以在不同的溫度下預先測量,按溫度做出查找表以在實際工作時做校正。
混入白噪聲
這種方法對提高直流信號的分辨率很有用。如果輸入信號接近直流而且很穩(wěn)定,那么輸出就不會產(chǎn)生跳變,比如輸出一直是0x15A,我們無法確認輸入電平是更接近0x159,還是更接近0x15B。那么我們可以人為地把白噪聲混入信號,使信號產(chǎn)生小的波動從而輸出產(chǎn)生跳變,然后再通過數(shù)學平均得出一個精度更高的數(shù)值。實際操作中可以用GPIO產(chǎn)生一個方波然后通過阻容耦合進輸入信號引腳。
審核編輯:符乾江
-
單片機
+關注
關注
6037文章
44558瀏覽量
635355 -
adc
+關注
關注
98文章
6498瀏覽量
544659
發(fā)布評論請先 登錄
相關推薦
評論