智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5620|回复: 23
打印 上一主题 下一主题

[硬件类] 传感器放大

  [复制链接]

11

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
威望
300
贡献
1685
兑换币
16
注册时间
2010-1-19
在线时间
61 小时
跳转到指定楼层
1#
发表于 2010-4-22 16:31:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位车友,大家好
我们在做车的过程中,遇到一个问题。传感器做的还可以,能够放大到4V左右(检波以后),可以一加上AD采样以后,信号马上就拉低了,我用万用表测两端的电压,信号很正常,可是一加上AD,就不正常了。请问一下,这是什么原因,是硬件原因还是程序没有写好。

0

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
207
贡献
20
兑换币
0
注册时间
2010-4-10
在线时间
1 小时
2#
发表于 2010-4-22 17:09:14 | 只看该作者
可以采用软件放大啊
回复 支持 反对

使用道具 举报

11

主题

212

帖子

0

精华

常驻嘉宾

侠客

Rank: 8Rank: 8

积分
5969

论坛元老奖章

威望
2649
贡献
3234
兑换币
0
注册时间
2010-1-13
在线时间
43 小时
3#
发表于 2010-4-22 21:29:25 | 只看该作者
嗯,的确可以通过软件上拉比如:PUCR_PUPAE=1; //对PA口进行上拉,增加抗干扰能力
回复 支持 反对

使用道具 举报

11

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
威望
300
贡献
1685
兑换币
16
注册时间
2010-1-19
在线时间
61 小时
4#
 楼主| 发表于 2010-4-22 22:41:30 | 只看该作者
回复 3# 632693521


    但是我是用AD采样啊,没法上拉的。你那个是A口,我看了datasheet,AD没有上拉功能
回复 支持 反对

使用道具 举报

4

主题

248

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2267
QQ
威望
447
贡献
1700
兑换币
2
注册时间
2009-3-15
在线时间
60 小时
5#
发表于 2010-4-23 00:35:49 | 只看该作者
如果上拉不行,你可以增加信号输出内阻,比如用三极管增加一级电压跟随电路。
回复 支持 反对

使用道具 举报

4

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
499
QQ
威望
364
贡献
87
兑换币
20
注册时间
2009-12-26
在线时间
24 小时
6#
发表于 2010-4-23 07:53:18 | 只看该作者
回复 1# 463719979


   应该你的程序有问题吧,我们没有发现这种情况,你有其他驱动?
回复 支持 反对

使用道具 举报

11

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
威望
300
贡献
1685
兑换币
16
注册时间
2010-1-19
在线时间
61 小时
7#
 楼主| 发表于 2010-4-23 17:41:58 | 只看该作者
回复 6# kechenwei

你好,这是我的AD程序,有时间可以帮我看看。或者把你AD初始化的程序贴过来,我看看。呵呵,谢谢了。。。。
    void AD_Init(void)
{
  ATD0CTL1=0x10;   //73210:选择通道0; 65选择转换序列为8位精度; 4决定采样前不放电
  ATD0CTL2=0x40;   //2禁止外部触发, 1中断禁止,6快速清除标志位
  ATD0CTL3=0xa0;   //7右对齐无符号,6543每次转换4个序列, 2不用FIFO, 10Freeze模式下继续转   
  ATD0CTL4=0x03;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]=8*0.5/4=1MHz
  ATD0CTL5=0x20;   //6:0特殊通道禁止,5:1连续转换 ,4:0单通道
  ATD0DIEN=0x00;   //禁止数字输入   
  
}
回复 支持 反对

使用道具 举报

11

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
威望
300
贡献
1685
兑换币
16
注册时间
2010-1-19
在线时间
61 小时
8#
 楼主| 发表于 2010-4-24 10:23:24 | 只看该作者
怎么没人解决问题呢
回复 支持 反对

使用道具 举报

11

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
威望
300
贡献
1685
兑换币
16
注册时间
2010-1-19
在线时间
61 小时
9#
 楼主| 发表于 2010-4-24 10:23:36 | 只看该作者
怎么没人解决问题呢
回复 支持 反对

使用道具 举报

7

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
559
QQ
威望
299
贡献
128
兑换币
0
注册时间
2009-10-19
在线时间
66 小时
10#
发表于 2010-4-24 10:39:34 | 只看该作者
void AD_Init(void){
  ATD0CTL1  = 0x20;     //AD转换初始化,10位精度 (AN0作为外部触发,但不使能)
  ATD0CTL2  = 0x42;     //清除转换完成标志位,当SCF(转换序列完成中断标志),响应中断      
  ATD0CTL3  = 0xa0;    //转换序列长度为4,转换数据结构右对齐
  ATD0CTL4  = 0x01;    //设置AD转换时钟为总线频率的1/4,采样时钟为AD时钟的1/4
}
你说的问题我没有遇到过,说不定时硬件的问题呢。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 01:30 , Processed in 0.111332 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表