或許你會(huì)問(wèn),常規(guī)的應(yīng)用都是過(guò)采樣,怎么也沒(méi)見(jiàn)分辨率提高了呀?如果僅僅過(guò)采樣,要實(shí)現(xiàn)更高分辨率顯然是不夠的,那么要怎么利用過(guò)采樣實(shí)現(xiàn)更高的分辨率呢?要知道所采用的ADC硬件核分辨率是固定的,難道還會(huì)變不成?
過(guò)采樣提高分辨率
如果對(duì)一模擬信號(hào),采用過(guò)采樣,然后再進(jìn)行一定的軟件后處理,理論上是可以得到更高分辨率的:
為增加有效位數(shù)(ENOB :effective number of bits),對(duì)信號(hào)進(jìn)行過(guò)采樣,所需的過(guò)采樣率可以由下面公式確定(省略理論推導(dǎo),過(guò)于枯燥):
其中:
●
為過(guò)采樣頻率
●
產(chǎn)品所需實(shí)際采樣頻率
●W為額外所需增加的分辨率位數(shù)
假設(shè)系統(tǒng)使用12位ADC每100 ms輸出一次采樣值也即(10 Hz)。為了將測(cè)量的分辨率提高到16位,我們按上述公式計(jì)算過(guò)采樣頻率:
因此,如果我們以
對(duì)信號(hào)進(jìn)行過(guò)采樣,然后在所需的采樣周期內(nèi)收集足夠的樣本以對(duì)它們進(jìn)行平均,現(xiàn)在可以將16位輸出數(shù)據(jù)用于16位測(cè)量。
具體怎么做呢?
首先將256個(gè)連續(xù)采樣累加
然后將總數(shù)除以16(或?qū)⒖倲?shù)右移4位)。該過(guò)程通常稱(chēng)為抽取,也即將速率采樣。
在類(lèi)似進(jìn)行下一次16位樣本處理
注意:用于累積過(guò)采樣數(shù)據(jù)并執(zhí)行除法抽取數(shù)據(jù)類(lèi)型必須具有足夠的字節(jié)寬度,以防止溢出和截?cái)噱e(cuò)誤。比如這里累積和可以采樣32位無(wú)符號(hào)整型。
由上面公式可得出一個(gè)重要結(jié)論:每提高W位分辨率,需要提高采樣率
倍。
過(guò)采樣提高ADC的信噪比
ADC測(cè)量的SNR理論極限基于量化噪聲,這是基于在沒(méi)有過(guò)采樣和平滑濾波情況下模數(shù)轉(zhuǎn)換過(guò)程中固有的量化誤差所致。而量化誤差取決于A(yíng)DC分辨率的位數(shù),其中N為ADC的位數(shù),
為參考電壓。
SNR理論情況下極限值的計(jì)算方式是數(shù)據(jù)轉(zhuǎn)換的有效位數(shù),如下所示:
這個(gè)公式?jīng)]必要去記,用到的時(shí)候參考計(jì)算一下即可。從公式中可看出,要提升一個(gè)模數(shù)轉(zhuǎn)換器的理論SNR的一種可行方案可以通過(guò)提升采樣位數(shù),但是需要注意的是這里的信噪比是度量模數(shù)轉(zhuǎn)換器本身的,就一個(gè)真實(shí)系統(tǒng)的信噪比還與整個(gè)信號(hào)鏈相關(guān)!
從上式中不難算出,12位ADC的理論SNR極限值為74dB,而通過(guò)過(guò)采樣提升4位分辨率后,其SNR理論極限提高至96 dB!
到底怎么實(shí)現(xiàn)呢?
這里以偽代碼的方式給出編程思路:
該方案有一個(gè)缺陷,就是每次ADC中斷都需要CPU參與,在過(guò)采樣率很高的情況下,上述方案消耗很多CPU資源,那么如果單片機(jī)內(nèi)存資源足夠的情況下可以考慮采用DMA模式,采集很多數(shù)據(jù)并將數(shù)據(jù)暫存下來(lái),然后再做累加平均抽取。這是空間換時(shí)間的策略的體現(xiàn)。這個(gè)編代碼也很容易,只需要申請(qǐng)一片內(nèi)存區(qū),內(nèi)存區(qū)的大小可以定為256的倍數(shù),這是因?yàn)樵谔嵘?位分辨率情況下,一個(gè)16位的輸出樣本需要256個(gè)12位樣本。
總結(jié)一下
在成本受限的情況下,可以通過(guò)單片機(jī)片內(nèi)ADC過(guò)采樣以及累積抽取的技術(shù)來(lái)提升采樣分辨率,這種技術(shù)的特點(diǎn):
●可以使用過(guò)采樣和平均來(lái)提高測(cè)量分辨率,而無(wú)需增加昂貴的片外ADC。
●過(guò)采樣和加和抽取將以提高CPU利用率和降低吞吐量為代價(jià)來(lái)提高SNR和測(cè)量分辨率。
●過(guò)采樣和加和抽取可以改善白噪聲的信噪比。