ADC的过采样技术

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADC 的过采样技术

其实原理很简单, 很容易明白, 怎样实现提高分辨率?

假定环境条件: 10位ADC最小分辨电压1LSB 为1mv

假定没有噪声引入的时候, ADC采样上的电压真实反映输入的电压, 那么小于1mv的话,如ADC在0.5mv是数据输出为0

我们现在用4倍过采样来, 提高1位的分辨率,

当我们引入较大幅值的白噪声: 1.2mv振幅(大于1LSB), 并在白噪声的不断变化的情况下, 多次采样, 那么我们得到的结果有

真实被测电压白噪声叠加电压叠加后电压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就是我们想要得到的

这里请留意, 我们平时做滤波的时候, 也是一样的操作喔! 那么为什么没有提高分辨率?????

是因为, 我们做滑动滤波的时候, 把有用的小数部分扔掉了, 因为超出了字长啊, 那么0.5取整后就是0 了, 结果和没有过采样的时候一样是0 ,

而过采样的方法时候是需要保留小数部分的, 所以用4个样本的值, 但最后除的不是4, 而是2! 那么就保留了部分小数部分, 而提高了分辨率!

从另一角度来说, 变相把ADC的结果放大了2倍(0.5*2=1mv), 并用更长的字长表示新的ADC 值,

这时候, 1LSB(ADC输出的位0)就不是表示1mv了, 而是表示0.5mv, 而(ADC输出的位1)才是原来表示1mv的数据位,

下面来看看一下数据的变化:

ADC值相应位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(平均数, 对改善分辨率没作用)

过采样插值2mv/2 0 0 0 0 0 0 0 0 0 0 1 2mv/2=0.5mv, 将这个数作为11位ADC值, 那么代表就是0.5mv

这里我们提高了1位的ADC分辨率

这样说应该就很简单明白了吧, 其实多出来的位上的数据, 是通过统计输入量的分布, 计算出来的,

而不是硬件真正分辨率出来的, 引入噪声并大于1LSB, 目的就是要使微小的输入信号叠加到ADC能识别的程度(原ADC最小分辨率).

理论来说, 如果ADC速度够快, 可以无限提高ADC的分辨率, 这是概率和统计的结果

但是ADC的采样速度限制, 过采样令到最后能被采样的信号频率越来越低,

就拿stm32的ADC来说, 12ADC, 过采样带来的提高和局限

分辨率采样次数每秒采样次数

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

要记住, 这些采样次数, 还未包括我们要做的滑动滤波,

看到这些文档, 啰啰嗦嗦说一大堆公式什么的, 忍不住就随便写了些,

如果我是做IC的, 我一定要求把文档写到白话文一样, 小学生都能看明白的, 自然小学生都会用, 人多用了, 才有钱赚嘛,

都不知道这些芯片厂是怎么推广的, 写一大堆公式有什么用, 这么复杂的芯片都设计了, 写个文档却马马虎虎,

其实不管多复杂的公式, 实现起来还不是加减乘除, 废话少说, 有时间再写了......

相关文档
最新文档