ADC采样不准确

[复制链接]
 楼主| 米其林r 发表于 2010-4-25 23:20 | 显示全部楼层 |阅读模式
本帖最后由 米其林r 于 2010-4-25 23:24 编辑

ADC进行采样,2秒启动一次:
ADCProcessorTrigger(ADC_BASE, 0);    /*  处理器触发采样序列0         */
  while(!ADC_EndFlag);
  ADC_EndFlag = false;                                    //  清除ADC采样结束标志
  ADCSequenceDataGet(ADC_BASE, 0, &ulData);              /*  读出10位转换结果            */但是结果非常不准确:
bit6019 发表于 2010-4-25 23:21 | 显示全部楼层
分辨率是10位,但精度显然没达到

分辨率只取决于ADC本身的设计结构,已经是10位

但精度跟多种因素相关。

楼主用的是EasyARM1138吗?

在其电路上VDD/AVDDA和GND/GNDA并没有分开,是不严格的设计,在一定会影响精度。

还跟测试方法相关,不合理的测试方法自然得不到好的结果。

测试信号来源?本身是否稳定可靠?有没有受到干扰?有没有加低通或带通滤波?
huzixian 发表于 2010-4-25 23:21 | 显示全部楼层
MCU用的是LM3S316。

LM3S316的VDD/VAVDDA和GND/GNDA也没有分开,但是精度会相差这么多吗(从1000跳到100).



测试信号是用电阻进行分压送到采样脚的,没有进行滤波,用示波器观察,该信号是一个周期为10ms的类方波。



我现在加上滤波电路试一下。
六楼的窗户 发表于 2010-4-25 23:22 | 显示全部楼层
请问下楼主这个采样周期是怎么设置的,就是你说的2S启动一次?

采样周期最短可设为多少
 楼主| 米其林r 发表于 2010-4-25 23:22 | 显示全部楼层
就是用一个定时器(我用的是Systick)来做基准时间,到时间就触发一次采样就可以了。

采样周期最短要考虑AD模块的处理时间,主时钟16M的话,几十个us吧,我猜。
金鱼木鱼 发表于 2010-4-25 23:22 | 显示全部楼层
楼主还能给下你的Systick中断函数,触发ad中断的。怎么用不太明白,在中断里面只进行 adcSample()吗?
linux1 发表于 2010-4-25 23:23 | 显示全部楼层
注意要点:ADC采样,必须首先打开PLL!!

先看这里的ADC文档吧,pdf里有详细解释的:

【Luminary开发工具及开发指南】http://www.zlgmcu.com/luminary/exploitation_guide.asp
skky2010 发表于 2010-4-26 09:41 | 显示全部楼层
你说采样不准确,你清楚的说一下什么情况,我也用LM3S的单片机的,感觉采样的精度还是可以的,可以的话可以交流交流。
928315 发表于 2010-4-26 13:29 | 显示全部楼层
基准很难重要的。确保你的基准很稳定。。
peigang 发表于 2010-4-26 15:24 | 显示全部楼层
先改变一下采集周期试试看
实在不行你就用算法校正
canary2004 发表于 2010-4-26 18:49 | 显示全部楼层
增益误差需要校准
BitFu 发表于 2010-4-27 15:31 | 显示全部楼层
调整一下ADC的转换(采样)速度试一下
年轻不在 发表于 2010-4-28 14:14 | 显示全部楼层
板集与电源共地!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

1587

帖子

3

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