精度不夠,噪聲來湊

將觀察到的模擬量轉換成數字量,給觀察和處理到來很大的便利。比如一個數字溫度計可以清晰的顯示出你的體溫,這要比判斷水銀溫度計方便。
數字溫度計

數字溫度計

但這裏也會出現一個問題,信號轉換成數字信號會產生量化誤差,會降低數值的精度。比如數字溫度計只顯示到1攝氏度,則在±0.5\pm 0.5攝氏度範圍內所顯示的溫度都一樣,這對判斷你是否發燒有時也會帶來麻煩。

那麼該如何提高ADC轉換精度,降低量化誤差對於測量結果的影響呢?

1. ADC的信噪比(SNR)

ADC將模擬信號轉換成有限個數的數字編碼,通常取連續區間的整數。比如0~255就構成了8位ADC的數字編碼集合。變化後的數字就與原來模擬信號產生了量化誤差。對於理想ADC,這種量化誤差一般位於±0.5\pm 0.5LSB。如果在每次採樣之間信號變化若干個量化區間,而且變化與採樣時間不同步,這種量化誤差基本上呈現一種白色噪聲,取值均勻分佈在從直流到採樣頻率一半的頻率區間內。
ADC可以表示成兩個階段時間採樣和幅度量化

ADC可以表示成兩個階段時間採樣和幅度量化

SNR表徵了ADC結果中的信號能量與噪聲能量的比值。在上述理想假設下,僅僅考慮量化誤差所產生的噪聲,對於滿量程模擬信號經過量化之後對應的信噪比有下面公式給出:
SNRdB=6.02N+1.76SNR_{dB} = 6.02N + 1.76
其中N是ADC的位數,也稱爲ADC的分辨率。當轉換結果的SNR增加時,對應的ADC的 有效位數也增加了,一個ADC的有效位對應6dB的信噪比。所以前面提到的減少數字量化誤差本質上是如何提高轉換結果中SNR。

2. Nyquist定理和過採樣

Nyquist定理,也稱爲Shannon採樣定理,表明如使用均勻時間間隔的信號採樣完全恢復原來的信號,採樣頻率至少比原信號最高頻率大兩倍,否則就會在採樣的數據中出現“混疊”假的干擾信號。

爲此,實際應用中常常在採樣前使用低通濾波器將高於採樣頻率一半的成分去掉,做到這一點有時比較困難。

在下面的東途中,可以看到不同比例下所顯示的圖片因爲空間像採樣頻率不滿足Nyquist頻譜而出現的混疊現象。
二維圖片中的混疊現象

二維圖片中的混疊現象

過採樣就是採用比Nyquist頻率高多的採樣速率採集信號,然後再對信號進行平滑濾波、下采樣,這樣就可以避免使用抗混疊低通濾波器了。

3. 使用白噪聲進行過採樣

3.1 帶有白噪聲時過採樣後的信噪比(SNR)

如果採樣後的數據轉化成數字信號時的量化誤差爲白噪聲,那麼它的能量密度均勻分佈在直流到Nyquist採樣頻率一般的頻率空間裏,它與是採樣頻率之間沒有關聯。

當使用高的採樣速率的時,量化噪聲分佈在更寬的頻率範圍內。如下圖所示:

過採樣如何影響量化噪聲的

過採樣如何影響量化噪聲的

根據上圖所示,當採用更高的採樣頻率是,同樣的量化噪聲能力(綠色方框所示)就會分佈在更寬的頻率空間(灰色方框),這樣就只有少部分的噪聲落在信號頻譜範圍內了:[fm,  fm]\left[ { - f_m ,\,\,f_m } \right]。而信號頻譜範圍外的噪聲可以通過數字低通濾波器消除掉。

減少了量化噪聲,從而也就帶來了ADC有效的轉換位數。使用OSROSR表示過採樣比率,即實際採樣速率除以Nyquist採樣頻率。那麼通過過採樣所帶來的信噪比的變化爲:SNRovs=6.02N+1.72+10log(OSR)SNR_{ovs} = 6.02 \cdot N + 1.72 + 10\log \left( {OSR} \right)
因此,每增加一倍的採樣頻率,就會提高信噪比3dB,相當於提高了ADC 1/21/2個bit。增加6個dB就可以提高ADC轉換精度1個bit。

所以,假設需要增加p個ADC的有效轉換比特,那麼所需要的採樣頻率爲:
Fovs=4pFsF_{ovs} = 4^p \cdot F_s
其中FsF_s是當前ADC的採樣頻率。

3.2 數據抽取(Decimation)

通常情況下的頻率是將 m 個數據相加之後再除以 m。這相當於對數據進行了低通平滑濾波,將信號中的毛刺去掉。

這種簡單的平均並不能夠帶來結果的 bit 位的增加。數據抽取(Decimation)和過採樣結合可以增加數據的有效位數。應用中,將4p4^p個數據累加,得到 N+2p 位的數,然後在右移 p 位,便可以得到 N+p 位的數據了。

3.3 什麼時候採用過採樣可以提高ADC的有效位數?

爲了能夠使得過採樣加數據抽取可能夠提高ADC的有效位數,需要滿足以下條件:

  • 在輸入信號中應該有一定的噪聲,具有在感興趣頻率範圍內均勻分佈的高斯分佈的噪聲;
  • 噪聲的幅值應該能夠使得信號ADC結果最後一位跳動,否則所採集到的數值都一樣,經過平均抽取就無法有效提高精度了。

通常情況下ADC內部的熱噪聲以及輸入信號中的噪聲就可以滿足上面的要求,否則就要另外增加白色噪聲,此時成爲噪聲擾動(dither)方法。那麼就有兩個問題出現了:

  • 第一就是如何判斷採集過程中有複合高斯分佈的白噪聲?
  • 如果沒有如何人工添加?

對於第一個問題在實際中可以通過對一個直流信號進行採集數據的直方圖統計,通過它的分佈,可以進行Gause檢驗驗證是複合高斯白噪聲分佈的。下面兩個圖顯示了兩種可能的情形。
數據直方圖分析

數據直方圖分析

對於第二個問題,可以在需要添加噪聲的時候,將二極管,或者電阻所產生的熱噪聲注入到輸入信號中。此過程需要保證注入的噪聲與輸入信號之間不相關。因此在一些反饋系統中,這種直接注入白色噪聲的方法就會失效。

下圖顯示了單片機採集1.65V直流電壓所得到的ADC數據,在EXCEL表格中繪製的直方圖分析表格,它反映了單片機ADC內部的熱噪聲。
對於DC=1.65V採樣的ADC結果的直方圖分析

對於DC=1.65V採樣的ADC結果的直方圖分析

使用三角波信號擾動進行過採樣

爲了使得過採樣數據能夠提高有效ADC位數,需要採樣數據能夠在多個數字之間變動。如果輸入數據噪聲非常小,採集到的ADC數據是穩定的,此時就需要額爲在信號中加入波動的噪聲,以使得採集到的數據能夠 有變動。

一種常使用的擾動噪聲信號就是三角波信號。理論分析可知,加入的三角波在週期上應該等於ADC採樣時間再乘以過採樣倍數,三角波在幅度上爲 n+0.5LSB,n可以取0,1,2,3。

如何增加三角信號來提高過採樣性能

如何增加三角信號來提高過採樣性能

如果輸入信號 與加入的三角波信號不消管,通過過採樣可以得到結果的信噪比爲:SNRGain=20log(OSR2)SNR_{Gain} = 20 \cdot \log \left( {\frac{{OSR}}{2}} \right)
因此,每增加一倍的採樣率,就可以增加一位有效ADC位數。但實際上,這個增加的位數有可能減少,因此一般情況下,如果需要增加 p 位的ADC分辨率,施加三角波擾動過採樣的頻率應該等於:Fovs=2.2pFsF_{ovs} = 2.2^p \cdot F_s
對比前面通過白噪聲過採樣的情況,再增加同樣ADC有效位數時,使用三角波擾動所需要增加的採樣頻率更低。

不像前面所分析的白噪聲,可以直接由期間內部的熱噪聲產生。如果需要在輸入信號中添加三角波形,則需要藉助外部的電路完成。下面顯示了在原有的信號採集調理電路迴路中,通過RC電路將單片機所產生的PWM方波信號轉換成三角波,然後在疊加在輸入信號的幅值上去。

使用硬件電路完成增加三角波擾動

使用硬件電路完成增加三角波擾動

雖說使用外加三角波擾動可以更加有效提高採樣位數,但它要求三角波的週期與採樣週期之間保持有效的倍數關係,這往往需要對單片機內部的時鐘設置有了更高的要求,有的時候可能無法滿足。

如果單片機電路中還帶有DAC模塊,則可以利用DAC產生所需要的白噪聲,或者三角波噪聲,疊加到採樣信號中,通過過採樣 有效提高採樣的有效位數。

噪聲,有的時候會干擾信號被人討厭,但有的時候則會幫助澄清信息,改善ADC的精度。這個世界就是這麼奇妙。

發佈了275 篇原創文章 · 獲贊 199 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章