求助~超声波测距

[复制链接]
1637|11
 楼主| 基辅之门 发表于 2014-11-6 10:51 | 显示全部楼层 |阅读模式
uint32_t timer_value,wave_distance;
uint8_t s[25];
TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet());//初值装满
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x08);//触发信号
SysCtlDelay(800/3); //延时20微秒
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x00);//触发信号结束
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x00);//收到回波检测到上升沿跳出
TimerEnable(TIMER0_BASE, TIMER_A);//开始计时
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x04);//回波信号结束检测到下降沿跳出
timer_value=SysCtlClockGet()-TimerValueGet(TIMER0_BASE, TIMER_A);//读取值
TimerDisable(TIMER0_BASE, TIMER_A);//停止计时
wave_distance=timer_value*344000/SysCtlClockGet();//计算距离
sprintf(s,"%d",wave_distance);//写入字符数组
UARTSend(s);//通过串口打印

为什么收到的数字都是1~110左右的一些奇怪的数,貌似只和超声波模块放的位置有一点点关联,例如模块固定,数字稍稳定。但距离根本不靠谱。。。
dirtwillfly 发表于 2014-11-6 21:47 | 显示全部楼层
你的超声波接收电路是怎么样的?并不是收到回波就是正确的距离
youluo235 发表于 2014-11-8 09:58 | 显示全部楼层
超声波模块是买的?主要是测量时间然后计算就好了。这个网上的参考程序很多
smilingangel 发表于 2014-11-9 21:27 | 显示全部楼层
这个主要使用到定时器的捕获功能的吧。
kenjifang 发表于 2014-12-18 15:02 | 显示全部楼层
光有这样的程序,无法分析出问题。
vivilzb1985 发表于 2014-12-18 22:38 | 显示全部楼层
这个是需要滤除杂波的吧先。。
ccw1986 发表于 2015-4-30 14:33 来自手机 | 显示全部楼层
问题问的不是太清楚,电路图啥的没有看到
FireRiver9 发表于 2015-5-19 21:09 | 显示全部楼层
不知道楼主问题解决了吗,求分享
angerbird 发表于 2015-5-19 22:54 | 显示全部楼层
这个针对接收信号的处理的还是比较复杂的。
Thor9 发表于 2015-5-20 19:28 | 显示全部楼层
15321378015 发表于 2015-6-8 10:56 来自手机 | 显示全部楼层
楼主你完整的程序能否给我发一份
vivilzb1985 发表于 2015-6-8 21:44 | 显示全部楼层
这个检查下你的接收电路的吧,可能对接受的信号的处理不理想。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

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