智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 15727|回复: 68
打印 上一主题 下一主题

【原创】K60之超声波测速方案(本人已验证)

  [复制链接]

22

主题

425

帖子

0

精华

常驻嘉宾

追梦

Rank: 8Rank: 8

积分
5460
QQ
威望
2558
贡献
1504
兑换币
1706
注册时间
2013-1-27
在线时间
699 小时
跳转到指定楼层
1#
发表于 2014-5-23 13:57:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
技术不高,只为分享。

      有帖子说,因为看见“周期最好60ms以上,所以就不太想用超声波了”,确实,在没看到王童鞋的“建议重新学习计数器/定时器”时,我还没有什么灵感和想法。
      以前没灵感是因为野火的三天学会K60只给出了pit_init周期中断函数,如果用周期中断对 超声波的高电平测时间显然不可能,偶然发现了PIT模块中的Timer Load Value Register (PIT_LDVALn)、Current Timer Value Register (PIT_CVALn)这两个寄存器。
      PIT模块用bus_clock作频率源,从PIT_LDVALn递减到0,产生中断又装载PIT_LDVALn值。那么为测量echo端的高电平时间,只要知道如下图所示的第二个时间节点时的PIT_CVALn值就行。根据公式(PIT_LDVALn - PIT_CVALn)*总线时钟周期*声速/2。

实现过程如下:
1.trig脚  简单随意的来个10微秒以上的脉冲;
2.echo脚 设成跳变沿触发中断,在第1步之后,开启引脚中断;
             在第一个上升沿中断开启 PITn中断,中断周期可以设定为60毫秒(这个值PIT_LDVALn 自己设定);
             在第二个下降沿中断读取PIT_CVALn值,然后关闭PITn定时器和IO口中断,结束此次测量。
3.还有注意PITn产生中断就说明没有接收到返回来的波,(即前面没障碍或很远),也结束此次测量。


      虽然还没用砖头测试,但是测墙面还是很准的,1.5m还是可以保证的(若以直道4m/s的速度,假设完成一次测距要100ms,那么小车走过的距离是40cm,因此1.5m应该可以了)。

通过这次我发现仅用提供的库可能还是不够的,得看看K60内部强大的资源了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

0

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
110
威望
56
贡献
36
兑换币
38
注册时间
2017-6-6
在线时间
9 小时
毕业学校
北镇中学
69#
发表于 2017-7-19 19:26:27 | 只看该作者
楼主大大有写好的程序吗   可不可以借我参考下   最近快被超声波搞疯了
回复 支持 反对

使用道具 举报

10

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
威望
614
贡献
386
兑换币
383
注册时间
2014-11-18
在线时间
143 小时
毕业学校
未毕业
68#
发表于 2016-5-4 12:29:36 | 只看该作者
感谢楼主写超声波的思路以及王童鞋不用重复开启定时器的提示,事实证明这样写真的挺好用。
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1750
威望
856
贡献
516
兑换币
532
注册时间
2015-11-17
在线时间
189 小时
毕业学校
大连海事
67#
发表于 2016-3-11 15:17:03 | 只看该作者
顶!!!!!!
回复 支持 反对

使用道具 举报

1

主题

179

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5364
威望
1070
贡献
622
兑换币
732
注册时间
2014-4-17
在线时间
1836 小时
66#
发表于 2015-5-22 21:38:17 | 只看该作者
wensenchao 发表于 2014-5-23 19:58
我能说我一直用PIT_CVAL0测算法的运行时间么

同学可以详细说一下,你是如何测算法的执行时间的,谢谢,
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
57
威望
25
贡献
14
兑换币
14
注册时间
2015-4-2
在线时间
9 小时
毕业学校
中国矿业大学
65#
发表于 2015-4-4 21:13:34 | 只看该作者
小洋洋 发表于 2014-5-23 19:03
新版的野火库已经有PIT计时功能。

你好,请问你有这个带计时功能的库函数吗?谢谢
回复 支持 反对

使用道具 举报

22

主题

425

帖子

0

精华

常驻嘉宾

追梦

Rank: 8Rank: 8

积分
5460
QQ
威望
2558
贡献
1504
兑换币
1706
注册时间
2013-1-27
在线时间
699 小时
64#
 楼主| 发表于 2014-7-17 15:32:19 | 只看该作者
恩恩,跳变沿触发,用一个变量记录上升和下降
回复 支持 反对

使用道具 举报

3

主题

186

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
QQ
威望
565
贡献
335
兑换币
367
注册时间
2013-2-27
在线时间
96 小时
63#
发表于 2014-7-17 14:55:22 | 只看该作者
情绪控先森- 发表于 2014-7-16 23:14
怎么确定是上升沿还是下降沿触发的?

请问你是设置成跳变沿触发?还是上升沿触发?还是下降沿触发?然后怎么两次进入中断如何做的区分?
回复 支持 反对

使用道具 举报

3

主题

186

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
QQ
威望
565
贡献
335
兑换币
367
注册时间
2013-2-27
在线时间
96 小时
62#
发表于 2014-7-17 14:16:02 | 只看该作者
andyxu 发表于 2014-7-17 06:35
就用了io口跳变沿

跳变沿怎么区分是上升沿还是下降沿啊?
回复 支持 反对

使用道具 举报

22

主题

425

帖子

0

精华

常驻嘉宾

追梦

Rank: 8Rank: 8

积分
5460
QQ
威望
2558
贡献
1504
兑换币
1706
注册时间
2013-1-27
在线时间
699 小时
61#
 楼主| 发表于 2014-7-17 06:35:35 | 只看该作者
情绪控先森- 发表于 2014-7-16 23:14
怎么确定是上升沿还是下降沿触发的?

就用了io口跳变沿
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 21:23 , Processed in 0.084361 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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