CC2540的ADC不线性
我的逻辑问题
请详细描述你说的“情况”,谢谢。
BR. Albin
你好
谢谢你的回复
已经贴出来原理图,代码,测试得到的数据,我不清楚还欠缺什么信息?
请明确说一下欠缺什么信息?谢谢
就是详细描述一下你的问题。
BR. Albin
如题 ADC采集电阻上面的电压不是线性的,
原理图,代码如上,ADC口接入P06
ADC的数据是稳定的,当可变电阻阻值从100K、150K、200K、300K、400K、500K、600K、700K、800K、1000K、变化
ADC值分别是 665、830、 950、 1100、1190、1250、1300、1333、1360、 1402
这些值很明显不线性
这就是问题所在,
实测电压(万用表) vs. ADC的曲线?
我理解你是少考虑了ADC接口的等效对地阻抗。
BR. Albin
你问问题的方式改一下,要让人家一眼知道你想表达什么?
我仔细看了下你的问题, 你是想说ADC 的实际采样值和理论值有误差,并且随着电压的上升,ADC的值偏差更大。
从你给出的数值来看,确实是误差非常大。
不过我认为软件出错的可能性非常大。一般来讲ADC的误差能做到这么大也不太可能,不要轻易怀疑芯片的BUG。如果真的有这个BUG,在勘误表中一定会给出来。
给你几个建议,你回去再测试一下。
1. 一般我们进行ADC采样,在开启ADC之后第一次采样的数据是不准确的,因为ADC并没有稳定下来。
2. 一个简单的方法判断ADC采样值是否合理,你可以对一个点进行多次采样,去掉最高值和最低值,看中间几个数值是否合理。因为最高值和最低值可能是因为干扰,或者ADC刚启动时的不稳定造成的。
3. 检查你的参考源,是设置的外部参考还是内部参考。如果是外部参考,确保你的参考源电压是稳定的。如果是VDD做的参考,确保你的VDD是稳定的。
谢谢AZ和Triton Zhang、
AZ:
万用表测得结果是对的,跟电阻比值完全一致
ADC的输入阻抗计算成对地电阻,这个算法是什么样?
Triton Zhang:
我也不相信是TI的芯片设计问题,
你的考虑是正确的,但是我已经这样做了,我的代码是连续采集64次 进行滤波,我的adc具体结果是滤波后的。我的参考电压就是VDD3.3V的参考电压,然后现在的板子内容很简单,VDD很稳定。
连续采集64次的ADC,得到ADC的值非常稳定,最大的值比最小的值最多大2.
假设待测电阻的电压为Vadc即ADC测得的电压值,参考电阻为R1,待测电阻为R2,根据电阻分压公式可知:Vadc=3.3*R2/(R1+R2)
我把R1接1M的电阻,R2电阻阻值从100K、150K、200K、300K、400K、500K、600K、700K、800K、1000K,
用万用表测R2身上的电压Vadc,是符合Vadc=3.3*R2/(R1+R2)的
但是我们实际测得的ADC值分别是 665、830、 950、 1100、1190、1250、1300、1333、1360、 1402
ADC的应该符合ADC/4096 = R2 /(R1+R2)
` 我们把100K的ADC值665带去上式中,665/4096 = 100/(1000+100),很显然这个等式不成立
再把500K的ADC值1250,带入上式中,1250/4096 = 500/(1000+500),很显然这个等式也不成立
所以我无法通过ADC采集去正确计算R2的值。
找到问题了
请教 对地阻抗是多少呢
请问是什么原因?可以解释一下吗,关于ADC这方面
你好,我也遇到了同样的问题,请问你是怎么解决的。
你好,问下你是什么问题,我也碰到了这样的问题?
您好,我目前碰到了相同问题,请问您的问题后来是怎么解决的呢?
这个问题在于采集结果(即寄存器读出来的数据)的处理错误,而并非adc非线性。对于存adc转换后的结果的寄存器的值,在ADC转换之前已经定义好了采集位数,
如若是10位的 sample rate(datasheet 好像是用的这个词语吧)的ADC,其最高位为符号位。
若采集电压小于0,则该位为1,如此时的采样结果为:1xxxxxxx ;
如果采集电压大于零,则最高位为0,如此时的采样结果为:0xxxxxxx。
如果此时的采样结果为为正电压,最高位为0,而计算时将高位计算进去 即 10位采样结果(包含符号位)/1024 *Vref = 错误结果。
此时正确的计算方式为取有效x位:
取 9位 采样结果(14位采样结果,舍符号位,且低四位不要) /2^9 *Vref = 采样电压,
取8位 采样结果(14位采样结果,舍符号位,且低5位不要)/2^8 *Vref = 采样电压。
不同的sample rate的ADC转化时间不同,如10位的sample rate 与 14位的 sample rate 比较 ,14位的sample rate 的采样时间更长,其转化时间更长的
原因是对低几位也进行 严格转换计算,因此精度更高,而十位 sample rate 则对 低三位不转化或者粗糙转化,时间更短,因此计算10位sample rate 的采集电压
的正确方式,需要注意的是:要取哪几位进行计算
你好,请问是怎么解决的,是不是对地阻抗的问题,我也是电阻分压,测电阻大小,测量值完全对不上啊,
你好, 请问可以回复一下,解决方案吗?
这样的提问者实在是让人觉得讨厌,问题解决了是什么原因不说,把问题都删除了。你这样会让很多像你当初来找帮助的人失去参考,即使造成问题的原因可能是你的代码有BUG,其他人会误以为他们遇到的问题和你是一样的,但是在这个已经结帖的地方找不到答案。
