amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 12966|回复: 42

关于avr ad采样速度的问题

[复制链接]
发表于 2009-3-3 21:10:06 | 显示全部楼层 |阅读模式
最近在做一个采集系统,一共两路,频率都是5khz以下,想通过atmega48来交替采集。但是采样率就成了问题,这里我只要8位的有效位就可以,可在8位的情况下atmega48 的adc能跑多快呢?手册上没有写,不知如何是好。望马老师给于指点,谢谢
 楼主| 发表于 2009-3-4 11:00:34 | 显示全部楼层
在avr adc特点及校正的应用手册上看到“为了优化性能,ADC时钟不要超过200KHz,但是即使频率达到1MHz也不会显著降低ADC的分辨率的。”这个说的很模糊,不知到底采样率对分辨率的影响如何?
发表于 2009-3-5 11:48:12 | 显示全部楼层
在我的教程中有解释和说明,你可以在上面下载前2篇的电子文挡参考一下。
 楼主| 发表于 2009-3-6 09:41:35 | 显示全部楼层
谢谢,这本书我已经买了,也已经读过。可是这里并没有说明1Mhz的adc时钟的分辨率怎样(或者说我只要8位的数据,采样率最高可以多少),我需要具体的性能指标,否则我仍然不知atmega48能否胜任这个采集任务,希望老师能说得具体一点
发表于 2009-3-7 17:24:14 | 显示全部楼层
在P320页上,你认真读过?或读明白了吗?

AVR内部的AD转换是硬件完成的,由于硬件采用逐次比较电路,所以达到10位的精度,AD采样时钟只能在50K-200K。提高AD的采样时钟并不能提高采样精度,这是ADC硬件电路的本身限制。

就是AVR采用了16M的时钟,也必须分频到50K-200K作为采样时钟,才能达到10位精度。因此理论上的被侧(采样)信号的频率要小于7.7K.
 楼主| 发表于 2009-3-7 19:04:18 | 显示全部楼层
您的书中是这样写的。手册推荐时钟也是50K-200K,但并没有说adc的时钟不能超频,而且应用手册中说“即使adc的时钟频率达到1MHz也不会显著降低ADC的分辨率的”。而且atmega48的数据手册中的adc特性描述也有adc时钟1MHz的例子,不过只给出了绝对精度,却没有给出分辨率。截图如下:

(原文件名:未命名.JPG)

我想知道的是atmega48的adc在1Mhz的时钟下有效位数是多少?或分辨率是多少?
谢谢马老师
发表于 2009-3-7 19:10:23 | 显示全部楼层
学什么专业的?明白误差为几个LSB的概念么?

200K为2个LSB,1M为4.5的LSB,哪个好?
 楼主| 发表于 2009-3-7 19:28:35 | 显示全部楼层
不是很明白,所以向您请教,我的理解:LSB最低有效位。可有两种解释,1.比如10位的adc,lsb表示其中10位中的最低位。2.还以10位的adc为例,参考电压5v,那么如果说绝对精度为4.5LSB的话,那么精度应该为4.5*5/1024V。
再次感谢马老师迅速的回复。希望能把这个问题搞明白。
发表于 2009-3-7 21:43:18 | 显示全部楼层
10位,误差是4.5个LSB,表示最低4.5位不准确。参考电压5V时,误差为 (5/1024)* 24 = 0.12v。

所以你得到的测量结果为 测得电压±0.12v (相当AD的精度只有5.5位)

============================================================================
以上回答错误,抱歉。你的理解是对的。

1个LSB的意思应该表示的是组成满量程输入范围的最小单位:
对于10位AD,参考电压为5V时,这时1个LSB应该代表的数值是 5/1024=0.0048828125V,
那么误差为4.5个LSB时,实际AD的误差电压为 4.5*0.0048828125=0.02197265625V
 楼主| 发表于 2009-3-7 22:02:30 | 显示全部楼层
那按您的说法,如果用200k的adc时钟,那只有8位或7.5位的有效位了?那为什么手册上说50k~200k可以到达最大的精度10位呢?干脆写为8位就好了阿,这里还是不甚明白,望指导,谢谢。
发表于 2009-3-7 22:47:33 | 显示全部楼层
参考24楼
 楼主| 发表于 2009-3-9 22:32:38 | 显示全部楼层
看了一些ad的手册,我认为lsb不是这个意思,如果10位ad,4v参考那么 1lsb应该是3.9mv。所以4.5lsb的误差不是说4.5位不准。
发表于 2009-4-5 21:50:33 | 显示全部楼层
【10楼】 machao

10位,误差是4.5个LSB,表示最低4.5位不准确。参考电压5V时,误差为 (5/1024)* 24 = 0.12v。

所以你得到的测量结果为 测得电压±0.12v (相当AD的精度只有5.5位)
------------------------------------------------------
偶然看到这个帖子,个人认为马老师上面的说法有误,
“10位,误差是4.5个LSB,表示最低4.5位不准确。”并不是说AD最低的4.5位不准确,高5.5位才准确。
这里的1个LSB的意思应该表示的是组成满量程输入范围的最小单位。例如:
对于10位AD,参考电压为5V时,这时1个LSB应该代表的数值是
    5/1024=0.0048828125V,
那么误差为4.5个LSB时,实际AD检测到的误差电压为
    4.5*0.0048828125=0.02197265625V 而并非0.12V,更不是说AD的精度只有5.5位了!
参考资料:http://hi.baidu.com/fanjialin17/blog/item/f38bdd0896400138e8248842.html

================================================================

是错误,已经在24楼修正
发表于 2009-4-14 00:47:41 | 显示全部楼层
我一直认为LSB就是ADC在理想状态下的量化单位,而4.5LSB应该视为4.5 * LSB。马潮老师的说法让我出了一身冷汗!要是那样的话我得重新审视一下我以前写过的所有程序了……我也觉得马老师的说法可能有误

===========================================
================================================================

是错误,已经在24楼修正
发表于 2009-4-14 02:35:27 | 显示全部楼层
M48英文手册的ADC特性里写着“Up to 76.9 kSPS (Up to 15 kSPS at Maximum Resolution)”。

10bit ±2LSB,也就是绝对精度有8bit,±4.5LSB,绝对精度有7bit。
是不是被“绝对精度”概念弄晕了,觉得这10bit的ADC怎么只有8bit的精度了?
没错,因为还有一个“校准精度”,这个基本上只和非线性误差有关,所以M48的ADC经过校准后,能够达到0.5LSB的单端精度和0.25LSB的差分精度的。

200k和1M时钟,精度差±2.5LSB,也就是大概2个最低位没了,所以200k对应10bit精度的话,1M就是对应8bit精度了。
发表于 2009-4-15 16:58:02 | 显示全部楼层
赞成楼上的意见

反正手册推荐的最高采样率是76.9k(对应1M ADC时钟),分两路只有38.5k
5kHz信号,行还是不行?楼主自己决定
发表于 2009-11-1 17:39:52 | 显示全部楼层
糊涂:
误差
分辨率
绝对精度
发表于 2009-12-21 15:16:02 | 显示全部楼层
可以收藏吗
发表于 2010-5-12 21:20:54 | 显示全部楼层
mark
发表于 2010-12-23 15:22:12 | 显示全部楼层
马老师的解释没有错,楼上TX理解错误的地方,在于没有了解逐次逼近式AD转换器的原理

比如10bit的AD转换器,在内部其实并没有1/1024精度的一个参考电压,可以简单理解,10bit逐次逼近AD转换器里,只有10个固定电阻,每个电阻代表1bit,按照2的n次方排列,就是每一个电阻比下一个大一倍

而AD的时钟,决定了用被侧电压加在待测电阻上的时间,而这个时间又和AD内部的一个采样保持电容的充放电速度有关,如果充电时间太短,必然会造成采保电容充电不足,采样结果会不准

所以一般的AD转换器价格都差不多,但是高速的AD转换器就很贵了

============================================
我的解释没有错,但是一随便给出了错误的计算,属于误导了。

你的问题也有不对的地方,10bit逐次逼近AD转换器里,不是“只有10个固定电阻”,而是有1024个电阻,每个电阻代表1bit。

有的时候不是不明白,是随手就打上去了。犯了与我相同的错误。
发表于 2010-12-23 22:09:32 | 显示全部楼层
mark
发表于 2011-6-13 16:54:54 | 显示全部楼层
还有人能详细地的说说吗?
发表于 2011-6-14 00:36:56 | 显示全部楼层
回复【5楼】qigui2
您的书中是这样写的。手册推荐时钟也是50k-200k,但并没有说adc的时钟不能超频,而且应用手册中说“即使adc的时钟频率达到1mhz也不会显著降低adc的分辨率的”。而且atmega48的数据手册中的adc特性描述也有adc时钟1mhz的例子,不过只给出了绝对精度,却没有给出分辨率。截图如下:


(原文件名:未命名.jpg)
引用图片
我想知道的是atmega48的adc在1mhz的时钟下有效位数是多少?或分辨率是多少?
谢谢马老师
-----------------------------------------------------------------------

首先贴上手册中的原文,我没看到有这样的“即使adc的时钟频率达到1mhz也不会显著降低adc的分辨率的”解释,

By default, the successive approximation circuitry requires an input clock frequency between 50 kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate.

根据这段说明,可以知道,在50-200KHZ之间,可以得到最好的精度。如果你不需要10位的精度,可以提高ADC的时钟,以换取高的转换率。(这是牺牲精度换取速度的做法。)

ADC是需要转换时间的,这个时间与ADC的硬件实现方式有关,如果超过这个转换时间,保持转换的时间太少,肯定会影响精度的(见19楼解释)。有一种ADC的实现叫“西个吗-的而他”精度可以到16位,但转换时间为3-5次/秒。知道4位半的电压表测量电压的转换频次吗?每秒3次。

有的人已经贴出《M48英文手册的ADC特性里写着“Up to 76.9 kSPS (Up to 15 kSPS at Maximum Resolution)”。》
那么我们可以得到那些结论?

1。要得到最高精度10BIT,那么转换速度(这里就是采样频率了)最高也就为15K。如果ADC的时钟为200K,那么200/15 = 13,这个正好是AVR的ADC连续转换一次所需要的ADC时钟个数。如果你每转换一次,然后换一个通道,连这个转换速率也做不到,因为AVR手册上给出的第1次转换需要25个ADC时钟!此时转换速度只能为8K了!

2。对于连续转换,精度达到10bit的话,转换速率也就是15K,按采样定理,模拟的输入信号最高频率为7.5k,这个频率刚刚超过电话语音的要求,连FM的广播音质都做不到。

==============================================================
实际ADC的最终精度是一个比较复杂的东西,不是手册上的某个单一指标所决定的。

首先是理论上的精度,这个通常给出的分辩率或最小绝对误差,那就是+-1bit。这里没有考虑硬件电路的误差。那么这个1bit是什么概念?还要看你的参考电压值和ADC的位数。对于参考电压5V,8位ADC,那么5/255就是此时的分辩率,也就是最小绝对误差值。再次说明,这是理论上的计算!

考虑到硬件本身的误差,所以厂家给出的标准是+-2BIT。

但实际上这个精度是可能也是做不到的,受到很多因素的影响,比如ADC的工作时钟频率,ADC内部电路的线形、非线形误差、0点漂移、参考电压的精度、工作电压的稳定性、输入阻抗是否匹配等。有些因素你是不能改变的(或比较麻烦进行矫正),如ADC内部电路的线形、非线形误差、0点漂移等。有些因数是你在掌握的情况下可以选择到最佳:如ADC的工作频率,使用精度高的参考电压,采用更加稳定的工作电压,设计的模拟信号输入阻抗匹配,以及对被采样信号频率理解,选择4倍以上的转换速率等。

【5楼】 qigui2给出的表格没有任何的疑问,这里厂家给出的最差精度的可能性,当你使用1M时钟,已经超过了200K的最佳工作频率,然后加上各种内部可能的误差(还假定这些误差都是正累加,没有抵消),当然误差要到+-4.5。这个是在这个条件下最坏的情况了。其实在这个表中,已经说明在1M情况下,精度大大降低,因为同样其它条件时,200K频率为2bit。所以也搞不懂5楼的《应用手册中说“即使adc的时钟频率达到1MHz也不会显著降低ADC的分辨率的”。》到底来自何处。

一般MCU中集成的ADC通常都是低速的,位数也就10-12位。如果要高速,精度达到16位,这样的片子价格会非常高。在MCU内部有许多数字电路部分,频率高,而且电流也大(I/O要求高的驱动能力),这些都会干扰内部ADC模拟电路的工作,使其精度和速度不可能(困难和麻烦)做上去的。AVR有一个AVCC脚,想过为什么?这个就是为ADC专用的,如果你使用ADC,厂家要求使用更稳定的ADC工作电压,而不是简单的与VCC共用,这就是说,ADC工作电压选择不好,也会影响的精度。

在我的教材中,这些都有讲解,只是许多人可能理解不到这么透,因为基础不扎实。
发表于 2011-6-14 06:00:58 | 显示全部楼层
"明白误差为几个LSB的概念么? "

you are confusing two rudimentary concepts: accuracy (which is what you are talking about) and resolution (which is what the original poster is talking about).

you will always have inaccuracy issues at any sampling speed, from many different sources. for the most part, inaccuracy is independent of sampling speed.

you can sample at higher speeds, sometimes higher than specified. This is particularly a huge advance for SAR type adc: they generate MSB first and then move down to LSB. so if you terminate a SAR adc prematurely (ie at high sampling speeds), you still get the MSBs correctly.

few other ADCs have that advantage.
发表于 2011-6-14 12:13:03 | 显示全部楼层
仔细整理一下,不是讲深入的理论和推导,只是从实际应用的角度给些参考。当然也是顺便改正8楼的错误,(稍为粗心都要犯错),作为补救。

以下供各位参考。

一、基本的概念
1。 量化误差:±0.5LSB。这个误差是由于量化产生的,是ADC固有的。
2。 分辨率:表示ADC对收入信号的分辩能力。n位ADC,分辨率为1/(2^n-1),通常认为就是1LSB的大小。
3。 转换误差:ADC实际输出与理论输出之间的差别,这个是在应用中比较关注的指标。通常以整个输入范围内最大输出误差表示,一般用最低有效位数(LSB)的倍数来表示。受众多因数的影响。就ADC本身考虑,主要是电路本身的线形、非线形误差等引起,通常是≥±1LSB(注意这个误差包含了量化误差等ADC内部的一些误差,是一个综合的误差)。

二、LSB
    以上都是以LSB做单位的,那么1个LSB的概念是最低位变化对于输入变化的一个量化间距,这个等同分辨率。其计算有2种定义:
   1。参考电压/2^n
   2。满量程电压/(2^n-1)。这里满量程电压 = 参考电压 - 1LSB

三、ADC有效位数的估算

    ENOB = N - LOG(转换误差(单位LSB))/LOG2

四、分析实际手册数据

(原文件名:ourdev_424248.jpg)

1。10位ADC(n=10),分辨率为1/1024 = 1个LSB。
   在参考电压5V时, 1LSB = 5/1024 = 0.0048828125

2。第2行,ADC时钟为200Khz,误差为2LSB = 0.009765625

      ENOB = 10 - LOG2/LOG2 = 9
      有效位数9位,第10位参考,有误差。可以认为考虑了综合误差的这个10位的ADC相当与理想的9位ADC。

      9位ADC的LSB = 5/512 = 0.009765625

3。当ADC时钟为1M,误差为4.5LSB = 0.02197265625
     ENOB = 10 - LOG4.5/LOG2 =  7.830075
     相当于一个7.830075位的理想ADC(当然BIT位没有小数,所以相当)。
     
     7.830075位理想ADC的1LSB = 5/2^7.830075 = 0.02197265622
     
通过以上2和3的对比,我们看到在其它不变的情况下,只是ADC的工作频率没有按最佳条件设置,ADC的性能就大大的减低了。

手册上给出的误差还是基于其它的都是理想工作条件,是ADC本身内部产生的。其实在实际应用中,还有许多的地方都会影响ADC的工作,产生更大误差的(此为22楼我所说废话的中心意图)。具体提供一个资料参考如下:

点击此处下载 ourdev_649197OE0MGP.pdf(文件大小:252K) (原文件名:The_ABCs_of_ADCs-Understanding_How_ADC_Errors_Affect_System_Performance.pdf)
发表于 2011-7-9 09:56:27 | 显示全部楼层
MARK
发表于 2011-7-31 01:48:59 | 显示全部楼层
mark
发表于 2011-7-31 07:25:01 | 显示全部楼层
MARK
发表于 2011-7-31 08:28:13 | 显示全部楼层
mark
发表于 2011-8-11 09:16:52 | 显示全部楼层
mark很不错的
发表于 2011-8-26 00:19:17 | 显示全部楼层
好文章 论坛里 竟是好文章啊
发表于 2011-8-26 12:48:02 | 显示全部楼层
学习
发表于 2011-9-1 21:20:29 | 显示全部楼层
MARK
发表于 2011-9-1 21:54:08 | 显示全部楼层
mark
发表于 2011-9-21 11:22:41 | 显示全部楼层
09年的帖子都能如此认真细致的回复,为网友解惑释疑,很佩服马老师的治学态度及名家大气风度。
发表于 2012-1-17 09:56:48 | 显示全部楼层
mark
发表于 2012-4-4 11:10:19 | 显示全部楼层
要讲清楚还真不容易.mark
发表于 2012-4-4 18:55:32 | 显示全部楼层
By default, the successive approximation circuitry requires an input clock frequency between 50 kHz and 200 kHz to get maximum resolution.

根据这段说明,可以知道,在50-200KHZ之间,可以得到最好的精度。


dude, you are confusing "resolution" with "精度".

any undergraduate should know the difference.
发表于 2012-4-5 18:43:59 | 显示全部楼层
学习了,大家讨论很认真
发表于 2012-6-6 11:50:46 | 显示全部楼层
学习了,这个帖子太好了
发表于 2012-6-6 14:42:02 | 显示全部楼层
发表于 2014-3-20 10:31:31 | 显示全部楼层
machao 发表于 2009-3-7 17:24
在P320页上,你认真读过?或读明白了吗?

AVR内部的AD转换是硬件完成的,由于硬件采用逐次比较电路,所以 ...

请问马老师AD采样时钟,采样精度,采样率这三者有什么区别和联系
还有就是在最高精度下可达到15kSPS/s的采样速率是怎么来?是硬件本身决定的吗
我要8位精度设置16kHZ的采样速率怎么设置呢
发表于 2014-4-27 21:00:53 | 显示全部楼层
路过路过了  顺便看看
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-18 03:58

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表