AD转换后码值不随输入正比例变化

[复制链接]
4342|22
 楼主| arm菜鸟人 发表于 2013-5-31 17:16 | 显示全部楼层 |阅读模式
请问电压信号经过AD转换后不随输入正比例变化有哪些因素?
是AD转换的程序有误吗?

比如AD输入信号每加0.05V,AD转换的码值变化为[40 /70/ 50/ 20/ 40……]

大家有遇到这种情况吗?
 楼主| arm菜鸟人 发表于 2013-5-31 17:37 | 显示全部楼层
有一个思路:
查找C8051F的AD转换方式,AD的码值是怎么来的,查找影响码值的因素。很可能是VREF的问题。
希望是吧。
impenger 发表于 2013-5-31 23:46 | 显示全部楼层
可以看看AD芯片的频率是否设置正确。

评分

参与人数 1威望 +3 收起 理由
arm菜鸟人 + 3

查看全部评分

 楼主| arm菜鸟人 发表于 2013-6-1 20:32 | 显示全部楼层
impenger 发表于 2013-5-31 23:46
可以看看AD芯片的频率是否设置正确。

Demo里用的是3M。
我到时改一改试一试。谢谢你的指点。
logokfu 发表于 2013-6-1 20:45 | 显示全部楼层
是干扰问题么

评分

参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1

查看全部评分

 楼主| arm菜鸟人 发表于 2013-6-1 21:06 | 显示全部楼层
**kfu 发表于 2013-6-1 20:45
是干扰问题么

应该不是干扰问题。没什么干扰。正常情况。
lcdi 发表于 2013-6-2 19:00 | 显示全部楼层
嗯,即使没干扰,信号也会叠加一点噪声的,所以越是没规律的越像噪声。一般采用多点平均来改善噪声情况,比如4点平均,根据信号带宽来决定。

评分

参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1

查看全部评分

 楼主| arm菜鸟人 发表于 2013-6-3 09:00 | 显示全部楼层
lcdi 发表于 2013-6-2 19:00
嗯,即使没干扰,信号也会叠加一点噪声的,所以越是没规律的越像噪声。一般采用多点平均来改善噪声情况,比 ...

使用了16点平均。
 楼主| arm菜鸟人 发表于 2013-6-3 09:01 | 显示全部楼层
忘了说一个重要的现象:
在一个特定的输入下,码值保持稳定。跳动1、2个码值的都极少。
lcdi 发表于 2013-6-3 09:54 | 显示全部楼层
有没有办法测试你的信号是否稳定?万用表不合适,因为万用表是积分型ADC,周期很长,微小且较快的噪声测不出来。
huazhongwang 发表于 2013-6-3 10:34 | 显示全部楼层
极有可能是读函数写错了,数据读的顺序反了,AD输出的数据是高(低)位先出来,但是你的读函数却是低(高)位在前高位在后,这样就会出现乱码,电压乱跳,楼上说的干扰可能会出现,如果输出乱跳,干扰肯定不会有这么大的影响

评分

参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1

查看全部评分

huazhongwang 发表于 2013-6-3 10:37 | 显示全部楼层
看完你的叙述,坚信是读函数的问题
 楼主| arm菜鸟人 发表于 2013-6-3 11:37 | 显示全部楼层
huazhongwang 发表于 2013-6-3 10:34
极有可能是读函数写错了,数据读的顺序反了,AD输出的数据是高(低)位先出来,但是你的读函数却是低(高) ...

AD数据右对齐。C8051F550。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| arm菜鸟人 发表于 2013-6-3 11:47 | 显示全部楼层
impenger 发表于 2013-5-31 23:46
可以看看AD芯片的频率是否设置正确。

datasheet里说 ADC最高的转换速率是200ksps,这是否是说其转换频率最高只能200KHz?
为什么Demo里ADC时钟用的是3MHz?
之前F040里ADC时钟使用2.5MHz的是正常的,而且F040的最高采样频率为100ksps。

不过我做了一下试验,发现我将ADC时钟降低时,线性度确实在变好。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| arm菜鸟人 发表于 2013-6-3 11:49 | 显示全部楼层
还要等到实际标定时,才能出结论。
impenger 发表于 2013-6-3 16:19 | 显示全部楼层
arm菜鸟人 发表于 2013-6-3 11:47
datasheet里说 ADC最高的转换速率是200ksps,这是否是说其转换频率最高只能200KHz?
为什么Demo里ADC时钟 ...

最高转换速率数值不代表最高时钟吧,这个我就不太清楚了,不好意思。

评分

参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1

查看全部评分

lcdi 发表于 2013-6-3 16:28 | 显示全部楼层
这是ADC的驱动时钟,n多时钟周期才完成一次转换的。
你降低了时钟也就是降低了采样率,那么你这个单片机能不能设置不同的采样保持时间?

另外我一直怀疑你信号的纯净度,如果信号有几十毫伏的噪声就足以造成这样的结果了。
请详述你的信号?

评分

参与人数 1威望 +2 收起 理由
arm菜鸟人 + 2

查看全部评分

 楼主| arm菜鸟人 发表于 2013-6-4 08:55 | 显示全部楼层
lcdi 发表于 2013-6-3 16:28
这是ADC的驱动时钟,n多时钟周期才完成一次转换的。
你降低了时钟也就是降低了采样率,那么你这个单片机能 ...

采样保持时间在寄存器里也是能够设置的。
信号当时用示波器看过。噪声也是有的,但是还好。
输入信号频率较低,0-20mv。经过了仪放,再输入给AD的。
C8051F的为逐次逼近型ADC。
lcdi 发表于 2013-6-4 09:55 | 显示全部楼层
arm菜鸟人 发表于 2013-6-4 08:55
采样保持时间在寄存器里也是能够设置的。
信号当时用示波器看过。噪声也是有的,但是还好。
输入信号频率 ...

这样的话,采样时间设置长一些。
信号最后入AD之前加一级简单的RC滤波,时间常数根据你的信号频率来计算。

看看会不会有好转?

因为你的AD分辨率比较高,所以示波器能看出来的噪声肯定能测出啦。
仪放之前的信号很弱,这里的一点噪声后面将会是你的放大倍数乘积,要处理好引线要短要屏蔽,信号的激励电源要纯净。信号入仪放前有没有滤波?

评分

参与人数 1威望 +4 收起 理由
arm菜鸟人 + 4

查看全部评分

 楼主| arm菜鸟人 发表于 2013-6-4 10:22 | 显示全部楼层
lcdi 发表于 2013-6-4 09:55
这样的话,采样时间设置长一些。
信号最后入AD之前加一级简单的RC滤波,时间常数根据你的信号频率来计算 ...

前端是接有 RC滤波的。信号的激励电源用了一个稳压芯片,不过实际上还是不纯的。
我一直比较困惑的是,之前用F040时 AD时钟到了2.5MHz,性能很好,F550的Demo里AD的时钟一般都是3MHz。而现在使用的50KHz,还没原来F040的效果好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:感染属性。

34

主题

539

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部