9540|29

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ADC12测量的AD直问题,请教! [复制链接]

采样的电压很低,40mv ,内部2.5V基准,数据应该为65,实际采样数据在60-80跳变,是否正常??

最新回复

噪声信号影响比较大,可以加滤波,或者可以增加采样次数,看你的采样数据在哪个范围比较准确,最后可以自己排序选择合适数据段  详情 回复 发表于 2012-7-21 17:21
 
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
引用:

采样的电压很低,40mv ,内部2.5V基准,数据应该为65,实际采样数据在60-80跳变,是否正常??

应该不会跳变的,是硬件的问题。用内部基准的时候,可以在VEREF加104的电容。

而且可以用1.5V做基准啊
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是不是采样电压太低的原因,我用高电压,没有这么跳变的
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
一般是电路设计的问题
地电流可能会引起这种情况
一般跳动2个字左右正常
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
会不会是程序问题,帮我看看啊

ADC12CTL0&=~ENC; //ENC=0 ,允许修改参数
ADC12CTL1=CSTARTADD_1+SHS_0+ADC12SSEL_2+CONSEQ_0; //单通道单次转换 ,ADC12MEM1
//选择MLCK为时钟源,not use sample timer
//S/H source: directly controlled by ADC12SC
ADC12CTL0|= REF2_5V+REFON+ADC12ON;
ADC12CTL0|=ENC; //ENC=1 ,不允许修改参数

delay(5000); //delay 30ms,fosc=1M ??????????????
ADC12_SUM=0;
for(i=0;i<16;i++) //采样Vp输出的电压16次,取平均值
{
ADC12CTL0|=ADC12SC; //ADC12SC=1
_NOP();
_NOP();
_NOP();
_NOP();
ADC12CTL0&=~ADC12SC; //ADC12SC=0,启动AD转换
_NOP();
while ((ADC12CTL1 & ADC12BUSY) == 1); //如果转换未结束,等待
_NOP();
ADC12_SUM+=ADC12MEM1; //把采样的AD值加到ADC12_SUM上
_NOP();
_NOP();
} //进行下一
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
为什么不把信号放大后采样呢?在信号很小的时候,硬件电路包括布线对采样的影响都很大的。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用:

为什么不把信号放大后采样呢?在信号很小的时候,硬件电路包括布线对采样的影响都很大的。
同意,可以加个运放呀
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
应该还是从硬件电路上下工夫,小信号也不应该跳动的!
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

9
 
未放大的电压为 10-700mv,我已经放大3倍了,就是10mv放大后的30mv测量不稳定
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
60-80大了些,跳动3-4差不多吧。把小信号后的采样电阻加大。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用:

60-80大了些,跳动3-4差不多吧。把小信号后的采样电阻加大。


用意,输入电阻一定要大?最好用仪用放大器
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

12
 
2.5的基准,在放大3倍也没有问题啊,
是不是有干扰,从地引入,或者是50HZ??
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
如果测量电压有1V 的话,测量的AD值相差只有 1-2个,是不是电压太低了
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

14
 
ADC12MCTL1 没定义呀 用内部2.5通道0的话是10H
采样保持定时器SHT0 按你实际时间来定义
这个不对的话就是这个现象 我以前也就是这样的
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 

要怎么定义啊。我用的通道0 和通道 1的设置差不多的。如下

通道0
ADC12CTL1=CSTARTADD_0+SHS_0+ADC12SSEL_2+CONSEQ_0; //单通道单次转换

//选择MLCK为时钟源,not use sample timer
//S/H source: directly controlled by ADC12SC
ADC12CTL0|= REF2_5V+REFON+ADC12ON;

通道1
ADC12CTL1=CSTARTADD_1+SHS_0+ADC12SSEL_2+CONSEQ_0; //单通道单次转换 ,ADC12MEM1
//选择MLCK为时钟源,not use sample timer
//S/H source: directly controlled by ADC12SC
ADC12CTL0|= REF2_5V+REFON+ADC12ON;

通道0是正常的啊。为什么!!
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

16
 
我说的是ADC12MCTLx不是ADC12CTLx
ADC12MCTLx是转换存储器控制寄存器 它的定义如下:第7位是EOS表示序列结束
4~6位Sref参考电源选择 你要用内部的就是Sref_1
0~3位INCH选择输入通道 在这里定义你输入通道 通道0就是INCH_0
而不是用CSTARTADD_0
CSTARTADD_0只是定义起始通道
总结程序:
ADC12CTL0&=~ENC; //ENC=0 ,允许修改参数
ADC12CTL1=CSTARTADD_0+SHS_0+ADC12SSEL_2+CONSEQ_0; //单通道单次转换 ,ADC12MEM0
//选择MLCK为时钟源,not use sample timer
//S/H source: directly controlled by ADC12SC
ADC12CTL0|= SHT0_4+REF2_5V+REFON+ADC12ON;
ADC12MCTL0=10H;//信号由A0输入,内部参考电源
ADC12CTL0|=ENC; //ENC=1 ,不允许修改参数

delay(5000); //delay 30ms,fosc=1M ??????????????
ADC12_SUM=0;
for(i=0;i<16;i++) //采样Vp输出的电压16次,取平均值
{
ADC12CTL0|=ADC12SC; //ADC12SC=1
_NOP();
_NOP();
_NOP();
_NOP();
ADC12CTL0&=~ADC12SC; //ADC12SC=0,启动AD转换
_NOP();
while ((ADC12CTL1 & ADC12BUSY) == 1); //如果转换未结束,等待
_NOP();
ADC12_SUM+=ADC12MEM0; //把采样的AD值加到ADC12_SUM上
_NOP();
_NOP();
} //进行下一
 
 
 

回复

85

帖子

1

TA的资源

一粒金砂(初级)

17
 
我的通道1 改为如下设置,还是有问题,??为什么??

ADC12CTL1=CSTARTADD_1+SHS_0+ADC12SSEL_2+CONSEQ_0;
//单通道单次转换 ,MCLK做内部时钟源,
ADC12CTL0|= REF2_5V+REFON+ADC12ON;
//内部基准 2.5V
ADC12MCTL1 = SREF_1+INCH_1;
//选择通道1
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

18
 

不好意思,早上讲错了。
我的问题是出在通道1 上。我现在设置通道1 如下,还是不行,

ADC12CTL1=CSTARTADD_1+SHS_0+ADC12SSEL_2+CONSEQ_0;
//单通道单次转换 ,MCLK做内部时钟源,
ADC12CTL0|= REF2_5V+REFON+ADC12ON;
//内部基准 2.5V
ADC12MCTL1 = SREF_1+INCH_1;


我把ADC12CTL1中的CONSEQ_0改为CONSEQ_1, 程序就停在 while ((ADC12CTL1 & ADC12BUSY) == 1);
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

19
 
CONSEQ_1是序列通道转换了
这个你不要改 就是CONSEQ_0单通道单次转换
你用的是什么型号的片子?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

20
 

我现在改为这样,实际大概200mv(用万用表测量的,很稳定的),AD 测量16次,取平均值,数据在198-212MV 跳变,还可以,
我仿真的时候,每次测量的AD值相差很大(200mv 应该是 327 ),测量AD值 100-500跳变。用149片子

ADC12CTL1=CSTARTADD_1+SHS_0+ADC12SSEL_2+CONSEQ_0;
//单通道单次转换 ,MCLK做内部时钟源,
ADC12CTL0|= REF2_5V+REFON+ADC12ON;
//内部基准 2.5V
ADC12MCTL1 = SREF_1+INCH_1;
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表