搜索
bottom↓
回复: 19

M8的ADC转换后的结果为什么是除1024,而不是1023

[复制链接]

出0入0汤圆

发表于 2009-12-12 23:43:25 | 显示全部楼层 |阅读模式
手册中计算实际电压的公式为:
ADC = Vin*1024 / VREF,则实际电压Vin = ADC*VREF / 1024
为什么不是1023呢?

10位对应最大值为0x3ff=1023,该值对应的即是VREF的值
最小值时为0,该值对应的是0V的值

按此看的话,Vin=0+(Vmax-0)(Dx-0)/(1023-0)  =VREF*Dx/ 1023
其中Vmax=Vref  Dx=ADC,采集到的数字量

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-12-12 23:47:11 | 显示全部楼层
16 进制应该除以15 吗?

出0入0汤圆

发表于 2009-12-13 00:43:41 | 显示全部楼层
一共1024份嘛。。。

出0入0汤圆

发表于 2009-12-13 00:49:43 | 显示全部楼层
当然是 1024

出0入0汤圆

发表于 2009-12-13 07:41:11 | 显示全部楼层
当然是1023  不要想当然。

出0入0汤圆

发表于 2009-12-13 08:56:45 | 显示全部楼层
呵呵,你当0不是数啊?

出0入0汤圆

发表于 2009-12-13 09:04:48 | 显示全部楼层
0~1023,共1024个值,楼主你想想C语言里数组的定义方法也是这样的:
unsigned char A[3];
A[0]=0x11; --正确
A[1]=0x22; --正确
A[2]=0x12; --正确
A[3]=0x23; --错误

出0入0汤圆

 楼主| 发表于 2009-12-13 11:14:31 | 显示全部楼层
假设VREF=2.56V,如果是除以1024,那么当输入电压此时为2.56V时

计算得到的电压应该是Vin=1023*2.56/1024=2.5575V 与2.56V相比就会产生误差

如果是除以1023,则Vin刚好是2.56V ,因此,我认为还是1023

另外,附一般的AD转换器的标度变换公式,来自ADC0809 手册:

Vin/(Vfs-Vz)=Dx/(Dmax-Dmin)

Vin为输入电压,Vfs为满量程电压,Vz为零电压 ,Dx为所测得的数字量,Dmax为最大数字量,Dmin为最小数字量

在测控原理中看到的标度变换公式也和上面相同

出0入0汤圆

发表于 2009-12-13 11:34:29 | 显示全部楼层
假设VREF=2.56V,如果是除以1024,那么当输入电压此时为2.56V时
---------------------------------------------------------------

ADC转换值最高是1023,换句话说,可准确测量最高输入电压是2.5575V,
2.56输入超标了,计算有误差是应该的。

出0入25汤圆

发表于 2009-12-13 11:44:52 | 显示全部楼层
学习了。觉得lz说的有道理!

特意查了ds:
(原文件名:1.JPG)

上面写的Vin量程是0- Vref的 ,感觉ls说的不太对哦。这个问题,我同意lz的说法,应该是除以1023.

出0入0汤圆

发表于 2009-12-13 11:46:43 | 显示全部楼层
Vin = ADC*VREF / 1024 是去掉了小数部分,感觉可以用四舍五入,更精准一点。即 Vin = (ADC+0.5)*VREF / 1024 或 Vin = ADC*VREF / 1024 + Vref/2048。有些ADC在硬件上叠加了1/2LSB,不应AVR的有没有?

出0入0汤圆

发表于 2009-12-13 12:06:18 | 显示全部楼层
手册的公式大概这么理解吧:
为了好说明,先做个假设,假设参考电压不是2.56V,而是1.024V,输入电压为Vin,转换后的数字为ADC
那么按手册的说法,就是:
Vin < 0.0010V时,ADC=0
0.0010 <= Vin < 0.0020V时,ADC=1
...
1.0220 <= Vin < 1.0230V时,ADC=1022
1.0230 <= Vin 时,ADC=1023

所以你可以认为1.024V为1024,但转换器不能表示,只能表示为1023,
就算是1.240V也是表示为1023.

出0入0汤圆

发表于 2009-12-13 12:47:11 | 显示全部楼层

出0入0汤圆

发表于 2009-12-13 13:04:12 | 显示全部楼层
你要把量化值0当成一个区间来看,同理1,2,.... 1023 ,一共有1024个区间,所以要除以1024 . 量化有两种方式,参见下图:


(原文件名:量化.jpg)

出0入25汤圆

发表于 2009-12-13 13:12:53 | 显示全部楼层
手册的公式大概这么理解吧:
为了好说明,先做个假设,假设参考电压不是2.56V,而是1.024V,输入电压为Vin,转换后的数字为ADC
那么按手册的说法,就是:
Vin < 0.0010V时,ADC=0
0.0010 <= Vin < 0.0020V时,ADC=1
...
1.0220 <= Vin < 1.0230V时,ADC=1022
1.0230 <= Vin 时,ADC=1023

所以你可以认为1.024V为1024,但转换器不能表示,只能表示为1023,
就算是1.240V也是表示为1023.

-----
明白了,谢谢

出0入0汤圆

 楼主| 发表于 2009-12-14 15:19:55 | 显示全部楼层
谢谢各位,看来这是由量化误差引起的

出0入0汤圆

发表于 2010-1-24 00:20:26 | 显示全部楼层
留个 爪子

出0入0汤圆

发表于 2011-6-23 14:18:46 | 显示全部楼层
爪子

出0入0汤圆

发表于 2015-3-30 10:16:35 | 显示全部楼层
make一下

出0入0汤圆

发表于 2015-4-8 15:23:16 | 显示全部楼层
终于弄明白了,这个简单却不简约~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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