ADC的精度和分辨率

以下内容来自:http://www.deyisupport.com/blog/b/adcdac/archive/2015/02/03/adc-i.aspx

ADC的分辨率被定义为输入信号值的最小变化,这个最小数值变化会改变数字输出值的一个数值。对于一个理想ADC来说,传递函数是一个步宽等于分辨率的阶梯。然而,在具有较高分辨率的系统中(≥16位),传输函数的响应将相对于理想响应有一个较大的偏离。这是因为ADC以及驱动器电路导致的噪声会降低ADC的分辨率。

此外,如果DC电压被施加到理想ADC的输入上并且执行多个转换的话,数字输出应该始终为同样的代码(由图1中的黑点表示)。现实中,根据总体系统噪声(也就是包括电压基准和驱动器电路),输出代码被分布在多个代码上(由下面的一团红点表示)。系统中的噪声越多,数据点的集合就越宽,反之亦然。图1中显示的是一个中量程DC输入的示例。ADC传递函数上输出点的集合通常被表现为ADC数据表中的DC柱状图。



图1:ADC传递曲线上ADC分辨率和有效分辨率的图示


图1中的图表提出了一个有意思的问题。如果同样的模拟输入会导致多个数字输出,那么对于ADC分辨率的定义仍然有效吗?是的,前提是我们只考虑ADC的量化噪声。然而,当我们将信号链中所有的噪声和失真计算在内时,正如等式 (1) 中所显示的那样,ADC的有效无噪声分辨率取决于输出代码分布 (NPP)。

在典型ADC数据表中,有效位数 (ENOB) 间接地由AC参数和信噪失真比 (SINAD) 指定,可使用方程式2计算得出:

下面,考虑一下图1中的输出代码簇(红点)不是位于理想输出代码的中央,而是位于远离黑点的ADC传递曲线上的其他位置(如图2中所示)。这个距离是指示出采集系统精度。不但ADC,还有前端驱动电路、基准和基准缓冲器都会影响到总体系统精度。

图2:ADC传递曲线的精度图示

需要注意的重要一点是ADC精度和分辨率是两个也许不相等的不同参数。从系统设计角度讲,精度确定了系统的总体误差预算,而系统软件算法完整性、控制和监视功能取决于分辨率。

以下的内容来自:http://www.cnblogs.com/MiLu/p/3677946.html

              简单做个比喻:有这么一把常见的塑料尺(中学生用的那种),它的量程是10厘米,上面有100个刻度,最小能读出1毫米的有效值。那么我们就说这把尺子的分辨率是1毫米,或者量程的1%;而它的实际精度就不得而知了(算是0.1毫米吧)。当我们用火来烤一下它,并且把它拉长一段,然后再考察一下它。我们不难发现,它还有有100个刻度,它的“分辨率”还是1毫米,跟原来一样!然而,您还会认为它的精度还是原来的0.1毫米么?(这个例子是引用网上的,个人觉得比喻的很形象!)

回到电子技术上,我们考察一个常用的数字温度传感器:AD7416。供应商只是大肆宣扬它有10位的AD,分辨率是1/1024。那么,很多人就会这么欣喜:哇塞,如果测量温度0-100摄氏度,100/1024……约等于0.098摄氏度!这么高的精度,足够用了。但是我们去浏览一下AD7416的数据手册,居然发现里面赫然写着:测量精度0.25摄氏度!所以说分辨率跟精度完全是两回事,在这个温度传感器里,只要你愿意,你甚至可以用一个14位的AD,获得1/16384的分辨率,但是测量值的精度还是0.25摄氏度^_^
所以很多朋友一谈到精度,马上就和分辨率联系起来了,包括有些项目负责人,只会在那里说:这个系统精度要求很高啊,你们AD的位数至少要多少多少啊……
其实,仔细浏览一下AD的数据手册,会发现跟精度有关的有两个很重要的指标:DNL和INL。似乎知道这两个指标的朋友并不多,所以在这里很有必要解释一下。
DNL:Differencial NonLiner——微分非线性度
INL:Interger NonLiner——积分非线性度(精度主要用这个值来表示)
他表示了ADC器件在所有的数值点上对应的模拟值,和真实值之间误差最大的那一点的误差值。也就是,输出数值偏离线性最大的距离。单位是LSB(即最低位所表示的量)。
当然,像有的AD如△—∑系列的AD,也用Linearity error 来表示精度。
为什么有的AD很贵,就是因为INL很低。分辨率同为12bit的两个ADC,一个INL=±3LSB,而一个做到了±1.5LSB,那么他们的价格可能相差一倍。
所以在这里帮大家把这两个概念理一下,以后大家就可以理直气壮的说精度和分辨率了,而不是将精度理解为分辨率。呵呵,希望对大家有用!
分辨率计算:测量电压范围/(2^AD位数-1);









你可能感兴趣的:(硬件开发)