打印

ADC采样不准确

[复制链接]
2455|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米其林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启动一次?

采样周期最短可设为多少

使用特权

评论回复
5
米其林r|  楼主 | 2010-4-25 23:22 | 只看该作者
就是用一个定时器(我用的是Systick)来做基准时间,到时间就触发一次采样就可以了。

采样周期最短要考虑AD模块的处理时间,主时钟16M的话,几十个us吧,我猜。

使用特权

评论回复
6
金鱼木鱼| | 2010-4-25 23:22 | 只看该作者
楼主还能给下你的Systick中断函数,触发ad中断的。怎么用不太明白,在中断里面只进行 adcSample()吗?

使用特权

评论回复
7
linux1| | 2010-4-25 23:23 | 只看该作者
注意要点:ADC采样,必须首先打开PLL!!

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

【Luminary开发工具及开发指南】http://www.zlgmcu.com/luminary/exploitation_guide.asp

使用特权

评论回复
8
skky2010| | 2010-4-26 09:41 | 只看该作者
你说采样不准确,你清楚的说一下什么情况,我也用LM3S的单片机的,感觉采样的精度还是可以的,可以的话可以交流交流。

使用特权

评论回复
9
928315| | 2010-4-26 13:29 | 只看该作者
基准很难重要的。确保你的基准很稳定。。

使用特权

评论回复
10
peigang| | 2010-4-26 15:24 | 只看该作者
先改变一下采集周期试试看
实在不行你就用算法校正

使用特权

评论回复
11
canary2004| | 2010-4-26 18:49 | 只看该作者
增益误差需要校准

使用特权

评论回复
12
BitFu| | 2010-4-27 15:31 | 只看该作者
调整一下ADC的转换(采样)速度试一下

使用特权

评论回复
13
年轻不在| | 2010-4-28 14:14 | 只看该作者
板集与电源共地!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

1587

帖子

3

粉丝