|
其實(shí)原理很簡單, 很容易明白, 怎樣實(shí)現(xiàn)提高分辨率?
假定環(huán)境條件: 10位ADC最小分辨電壓1LSB 為 1mv
假定沒有噪聲引入的時(shí)候, ADC采樣上的電壓真實(shí)反映輸入的電壓, 那么小于1mv的話,如ADC在0.5mv是數(shù)據(jù)輸出為0
我們現(xiàn)在用4倍過采樣來, 提高1位的分辨率,
當(dāng)我們引入較大幅值的白噪聲: 1.2mv振幅(大于1LSB), 并在白噪聲的不斷變化的情況下, 多次采樣,那么我們得到的結(jié)果有
真實(shí)被測電壓 白噪聲疊加電壓 疊加后電壓 ADC輸出 ADC代表電壓
0.5mv 1.2mv 1.7mv 1 1mv
0.5mv 0.6mv 1.1mv 1 1mv
0.5mv -0.6mv -0.1mv 0 0mv
0.5mv -1.2mv -0.7mv 0 0mv
ADC的和為2mv, 那么平均值為: 2mv/4=0.5mv!!! 0.5mv就是我們想要得到的
這里請(qǐng)留意, 我們平時(shí)做濾波的時(shí)候, 也是一樣的操作喔! 那么為什么沒有提高分辨率?????
是因?yàn)? 我們做滑動(dòng)濾波的時(shí)候, 把有用的小數(shù)部分扔掉了, 因?yàn)槌隽俗珠L啊, 那么0.5取整后就是 0 了,結(jié)果和沒有過采樣的時(shí)候一樣是 0 ,
而過采樣的方法時(shí)候是需要保留小數(shù)部分的, 所以用4個(gè)樣本的值, 但最后除的不是4, 而是2! 那么就保留了部分小數(shù)部分,而提高了分辨率!
從另一角度來說, 變相把ADC的結(jié)果放大了2倍(0.5*2=1mv), 并用更長的字長表示新的ADC值,
這時(shí)候, 1LSB(ADC輸出的位0)就不是表示1mv了, 而是表示0.5mv,而(ADC輸出的位1)才是原來表示1mv的數(shù)據(jù)位,
下面來看看一下數(shù)據(jù)的變化:
ADC值相應(yīng)位 9 8 7 6 5 4 3 2 1 0
0.5mv測量值 0 0 0 0 0 0 0 0 0 00mv(10位ADC的分辨率1mv,小于1mv無法分辨,所以輸出值為0)
疊加白噪聲的4次過采樣值的和 0 0 0 0 0 0 0 0 1 0 2mv
滑動(dòng)平均濾波2mv/4次 0 0 0 0 0 0 0 0 0 0 0mv(平均數(shù), 對(duì)改善分辨率沒作用)
過采樣插值2mv/2 0 0 0 0 0 0 0 0 0 0 1 2mv/2=0.5mv, 將這個(gè)數(shù)作為11位ADC值,那么代表就是0.5mv
這里我們提高了1位的ADC分辨率
這樣說應(yīng)該就很簡單明白了吧, 其實(shí)多出來的位上的數(shù)據(jù), 是通過統(tǒng)計(jì)輸入量的分布, 計(jì)算出來的,
而不是硬件真正分辨率出來的, 引入噪聲并大于1LSB,目的就是要使微小的輸入信號(hào)疊加到ADC能識(shí)別的程度(原ADC最小分辨率).
理論來說, 如果ADC速度夠快, 可以無限提高ADC的分辨率, 這是概率和統(tǒng)計(jì)的結(jié)果
但是ADC的采樣速度限制, 過采樣令到最后能被采樣的信號(hào)頻率越來越低,
就拿stm32的ADC來說, 12ADC, 過采樣帶來的提高和局限
分辨率 采樣次數(shù) 每秒采樣次數(shù)
12ADC 1 1M
13ADC 4 250K
14ADC 16 62.5K
15ADC 64 15.6K
16ADC 256 3.9K
17DC 1024 976
18ADC 4096 244
19ADC 16384 61
20ADC 65536 15
要記住, 這些采樣次數(shù), 還未包括我們 要做的 滑動(dòng)濾波,
看到這些文檔, 啰啰嗦嗦說一大堆公式什么的, 忍不住就隨便寫了些,
如果我是做IC的, 我一定要求把文檔寫到白話文一樣, 小學(xué)生都能看明白的, 自然小學(xué)生都會(huì)用, 人多用了, 才有錢賺嘛,
都不知道這些芯片廠是怎么推廣的, 寫一大堆公式有什么用, 這么復(fù)雜的芯片都設(shè)計(jì)了, 寫個(gè)文檔卻馬馬虎虎,
其實(shí)不管多復(fù)雜的公式, 實(shí)現(xiàn)起來還不是加減乘除, 廢話少說, 有時(shí)間再寫了......
|
|