矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 江边树

我对LC/Rd表程序的学习体会点滴

[复制链接]
     
发表于 2015-1-13 15:19:04 |
举个例子,  基准电压使用5V  ,采集电压为0V的时候 ,ad_val =0,  采集电压为5V的时候ad_val=1023

采集电压为1V的时候  ,1 / 5   =ad_val / 1023   ,得到 ad_val= 204    ,
采集值  AD=ad_val  *5   /1.023  = 997   ,也就是  0.997V ,放大1000倍的目的是 变成 整型减少浮点型变量。
     
发表于 2015-1-13 15:29:39 |
我是来学习的,谢谢楼主
     
 楼主| 发表于 2015-1-13 16:32:25 |
本帖最后由 江边树 于 2015-1-13 16:38 编辑
huarana 发表于 2015-1-13 15:06
在纠正你下,  10位AD,  AD值从 0-1023  共1024个。

应该除以1023


    非常感谢你来参与研究!我平时想找个朋友来讨论都找不到!高手认为没必要跟我们这些菜鸟浪费时间,没入门的看了还是一头雾水,所以也没兴趣。
    你说的这个问题,我也纠结过:8位ADC,到底是乘255,还是乘256?256不是到第9位的1了吗?10位ADC,到底是乘1023,还是乘1024?1024不是到第11位的1了吗?的确,网上也能搜到8位乘255,10位乘1023的。我特地到宏晶的网站上下载了STC12C5A60S2的详细资料,没料到打不开,说是"加了密"!真是感到好笑,又要推销产品,又怕人家了解产品的性能,什么意思嘛!后经朋友帮助,找到一款PDF密码解除软件,给我解了密。我在几百页的资料里仔细查看,终于找到10位AD转换乘的不是1023,而是1024。当然,关于“位”,有两种解读:一种是位数的位,例如51单片机P0口有8位,我们不能说是7位吧。AD转换的10位,就是指的这种“位”。另一种位是二进制数的“位”,最低位是b0(也有称D0的)最高位是bn-1(也有称Dn-1的),这时8位二进制数最高位是b7而不是b8.  10位二进制数最高位是b9而不是b10.诚如你所说,10位AD转换后的值是从最小的0(不能分辩0.5,也就是所谓分辨率+-一个字)到最大一个值1023,但是,加上0,是1024份,参考电压是被均匀分在这1024份(不是1023份!)里了,所以数字量的1份就是参考量的1024分之一,即模拟量=AD转换结果*(参考电压/1024).程序里参考电压是单片机电源电压5V,因此括号里是5/1024而不是5/1023,不知道我这样解释,你是否同意?如果还有疑问,我看你可以查看有关STC12C5A60S2的datasheet,或者到网上查找有关逐次比较,逼近式AD转换器的工作过程解释资料.
     
发表于 2015-1-13 17:00:22 |
江边树 发表于 2015-1-13 16:32
非常感谢你来参与研究!我平时想找个朋友来讨论都找不到!高手认为没必要跟我们这些菜鸟浪费时间, ...

你的疑问恰好也是很多人的疑问,而正是很多人搞不懂这个,不要以为是高手就不会出错哦,不要以为是stc的手册就不会出错哦。

我曾经也查了很多资料,最终才很肯定的相信1023才是正确的值。

首先2的10次方就是1024,也就是说AD采集到的数据用0到1023这1024个数值来表示,这还需要看你设置的参考电压的值,如果设置参考电压为5V(VREF引脚接5V),则参考电压范围是0V~5V,其对应的就是0~1023
所以  AD值 = (采集到的数据 * 5V)/ 1023


可以带入值计算下 , 假如  采集到的数据是   1023(说明输入5V了)  ,带入 得到 AD=5V ,这符合设定。

如果你除以1024的话 ,假如采集到的数据是1023(说明输入5V了),带入得到  AD=1023*5/1024  是不等于5V的 ,这就违背了0V~5V=0~1023这个大前提。
     
 楼主| 发表于 2015-1-13 18:39:36 |
矿坛XJW01老师的LCRD表源程序.c (13.98 KB, 下载次数: 73) 逐次比较型AD转换器原理.pdf (185.72 KB, 下载次数: 63)     能有不同的见解,是非常好的事情!只怕无论我说的对错,都没人理会,那才是令人感到无奈的。根据你说的,也很有道理:如果模拟量输入恰好等于参考电压,比如+5V,是不是10个脚都是1,也就是1023  !开始我就是这样想的!只是根据我现在查到的资料,大多数不支持我当初的想法,所以后来我才改变了的。现在我也不能确定到底是哪个对错。诚如你所说,高手们也有犯错的时候,教科书也有错误呢!所以,对任何资料都不能十分的迷信。
    为了让看帖子的朋友知道我说1024而不是1023的原因,特地附上几份参考图文。一是矿坛XJW01老师的源程序,发表在本坛的矿石收音机版块,其中10位AD转换用的是1024。二是生产STC12C5AS2单片机的宏晶公司的网站上资料照片,有关于1024公式的来源 AD转换式1.JPG AD转换式2.JPG 。三是广电网的关于AD转换的原理的文章,还有波形图。当然,也可能恰好这三份资料是犯同种错误,让大家研究一翻吧。





     
发表于 2015-1-13 18:49:23 |
多谢楼主 已经下载了 学习ING 中
发表于 2015-1-14 04:09:39 |
提示: 作者被禁止或删除 内容自动屏蔽
     
发表于 2015-1-14 10:45:02 |
江边树 发表于 2015-1-13 18:39
能有不同的见解,是非常好的事情!只怕无论我说的对错,都没人理会,那才是令人感到无奈的。根据你说的 ...

囧,你没认真看我的回复吗?  你是相信资料还是相信自己验证的结果?

AD输入0V对应 0
AD输入5V对应1023

所以按照你的结论 5 =  1023  *5   /1024    ??

这能等吗?
     
发表于 2015-1-14 11:13:14 |
     
发表于 2015-1-14 12:00:12 |
1023是正确的?你画出个图来,各个位对应的门槛都画出来再看看!别太自信。
     
 楼主| 发表于 2015-1-14 15:10:26 |
huarana 发表于 2015-1-14 11:13
http://bbs.mydigit.cn/read.php?tid=1046649&page=1

发个连接再看看。

      谢谢你发的链接!我已经到“数码之家”看过这个链接的内容了,好象也是两种意见。不过,按照输入电压就等于参考电压这一特殊值代入检验的话,还真的是1023靠谱,因为10位二进制数都是1的话,正好是1023,而不是1024。
     但是,问题还是存在的,因为用AD转换的数字万用表的2V档最高显示1.999V,而2.000V溢出而不能显示.10位AD的情况下,若输入模拟量是[0,  Vref/1024),都转换为0,而不会有0.5这个分度,并且右边是)而不是].
    很有意思!各位各抒己见吧!
     
发表于 2015-1-14 16:08:42 |
江边树 发表于 2015-1-14 15:10
谢谢你发的链接!我已经到“数码之家”看过这个链接的内容了,好象也是两种意见。不过,按照输入电 ...

其实还有个更简单的方法可以验证,就是自己写个程序验证下。

用万用表测实际值,然后看ad换算值,哪个更接近,就说明是那个 - -  
发表于 2015-1-14 21:12:24 |
提示: 作者被禁止或删除 内容自动屏蔽
     
发表于 2015-1-15 10:47:49 |
江边树 发表于 2015-1-13 16:32
非常感谢你来参与研究!我平时想找个朋友来讨论都找不到!高手认为没必要跟我们这些菜鸟浪费时间, ...

验证一下,下面是在同样条件下的两个程序的测量值,两个程序也只有  1023/1024的区别,其他地方完全一样。
供电电源是台湾明伟的12V电源,非常稳定。

相信谁都能看出来哪个更接近真实值吧。

采用1024的结果:

1024

1024



采用1023的结果:

1023

1023



其实大家都可以自己做个实验,我的实验也有可能不准确,说服力不够。


其实我也是看了很多人的程序,大多数采用的是1023 ,包括百度随便搜一下各种入门教程,我也相信这不是偶然。
这是很多有经验的工程师的选择。其实我也疑惑过很久为啥会是1023这么奇怪的数字,因为参考电压经常是1.024V或者他的倍数。

如果除以1024的话,很容易整除。反而除以1023就很尴尬。  比如参考电压选用2.048V的话(单片机片内参考电压,多为1.024V或者他的整数倍,2.048,4.096 。)计算公式变成    v=ad  * 2.048 /1.023  , (放大1000倍)。这样看着很不和谐,但选用 1024的话刚好可以整除,也许有些工程师觉得这样更加美观和谐而已。
IMG_0419.JPG
IMG_0420.JPG
发表于 2015-1-15 11:46:05 |
提示: 作者被禁止或删除 内容自动屏蔽

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-24 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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