假定環(huán)境條件: 10位ADC最小分辨電壓1LSB 為 1mv
假定沒有噪聲引入的時候, ADC采樣上的電壓真實反映輸入的電壓, 那么小于1mv的話,如ADC在0.5mv是數(shù)據(jù)輸出為0
我們現(xiàn)在用4倍過采樣來, 提高1位的分辨率,
當我們引入較大幅值的白噪聲: 1.2mv振幅(大于1LSB), 并在白噪聲的不斷變化的情況下, 多次采樣, 那么我們得到的結(jié)果有
真實被測電壓 白噪聲疊加電壓 疊加后電壓 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就是我們想要得到的
這里請留意, 我們平時做濾波的時候, 也是一樣的操作喔! 那么為什么沒有提高分辨率?????
是因為, 我們做滑動濾波的時候, 把有用的小數(shù)部分扔掉了, 因為超出了字長啊, 那么0.5取整后就是 0 了, 結(jié)果和沒有過采樣的時候一樣是 0 ,
而過采樣的方法時候是需要保留小數(shù)部分的, 所以用4個樣本的值, 但最后除的不是4, 而是2! 那么就保留了部分小數(shù)部分, 而提高了分辨率!
從另一角度來說, 變相把ADC的結(jié)果放大了2倍(0.5*2=1mv), 并用更長的字長表示新的ADC值,
這時候, 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 0 0mv(10位ADC的分辨率1mv,小于1mv無法分辨,所以輸出值為0)
疊加白噪聲的4次過采樣值的和 0 0 0 0 0 0 0 0 1 0 2mv
滑動平均濾波2mv/4次 0 0 0 0 0 0 0 0 0 0 0mv(平均數(shù), 對改善分辨率沒作用)
過采樣插值2mv/2 0 0 0 0 0 0 0 0 0 0 1 2mv/2=0.5mv, 將這個數(shù)作為11位ADC值, 那么代表就是0.5mv
這里我們提高了1位的ADC分辨率
這樣說應(yīng)該就很簡單明白了吧, 其實多出來的位上的數(shù)據(jù), 是通過統(tǒng)計輸入量的分布, 計算出來的,
而不是硬件真正分辨率出來的, 引入噪聲并大于1LSB, 目的就是要使微小的輸入信號疊加到ADC能識別的程度(原ADC最小分辨率).
理論來說, 如果ADC速度夠快, 可以無限提高ADC的分辨率, 這是概率和統(tǒng)計的結(jié)果
但是ADC的采樣速度限制, 過采樣令到最后能被采樣的信號頻率越來越低,
就拿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ù), 還未包括我們 要做的 滑動濾波,