9回答

0收藏

如何用STM32来控制超声波

STMCU STMCU 4965 人阅读 | 9 人回复 | 2013-07-27

超声波探测精度要1mm,声音传输速度是0.34mm/us所以定时必须是1us,如果用中断来计数,CPU全部浪费在CPU上,且死在定时中断里,根本就无法精确,求高手解答!最好能自己做个,然后附上代码!谢谢!
分享到:
回复

使用道具 举报

回答|共 9 个

倒序浏览

沙发

apple1163526267

发表于 2013-7-27 00:01:37 | 只看该作者

自己抢沙发
板凳

hq5714

发表于 2013-7-27 15:32:45 | 只看该作者

那就采用更高的系统时钟啊。但是1mm的精度应该是做不到的,还要考虑温度、湿度等这些外界因素的影响。
地板

Hayasaky

发表于 2013-7-27 19:52:45 | 只看该作者

这貌似确实是个问题啊
5#

哈勃

发表于 2013-7-30 16:11:55 | 只看该作者

刚测了SR04,用HCLK的,如果lz能精确到这个地步,同求代码
6#

apple1163526267

发表于 2013-7-30 21:17:39 | 只看该作者

bli19 发表于 2013-7-30 16:11
刚测了SR04,用HCLK的,如果lz能精确到这个地步,同求代码

我用计数方法做的,当超声波发出时开始定时使能,把TIM分频为72,这样频率为1M,最小刻度为1us,然后TIM->ARR设置很大(保证超声波接收是,定时永远无法溢出),但超声波接收时产生外部中断读取计数值x复位TIM,,这样就定时了xus,这是距离精确到0.17mm,最后修正代码误差,得到比较精确的数值,我没有考虑温度湿度。仅供参考!谢谢!
7#

uniqueeefocus418121

发表于 2013-8-2 14:07:26 | 只看该作者

apple1163526267 发表于 2013-7-30 21:17
我用计数方法做的,当超声波发出时开始定时使能,把TIM分频为72,这样频率为1M,最小刻度为1us,然后TIM- ...

额···想请教一下,这样的数据可靠么,个人觉得不能精确到mm级。楼上用的是超声波的模块吗?
8#

apple1163526267

发表于 2013-8-4 14:08:21 | 只看该作者

608伺候 发表于 2013-8-2 14:07
额···想请教一下,这样的数据可靠么,个人觉得不能精确到mm级。楼上用的是超声波的模块吗? ...

是的,111111111111111111111111111111111111111111111111111111111
9#

uniqueeefocus418121

发表于 2013-8-4 23:23:47 | 只看该作者

apple1163526267 发表于 2013-8-4 14:08
是的,111111111111111111111111111111111111111111111111111111111

呵呵···这些都是叹号么···我还是对数据的真实度表示怀疑,个人觉得,你精确到的数据只是定时器时钟频率导致数据单位可以达到mm...因为超声波模块,很难做到那么精确吧···
10#

apple1163526267

发表于 2013-9-13 22:39:06 | 只看该作者

608伺候 发表于 2013-8-4 23:23
呵呵···这些都是叹号么···我还是对数据的真实度表示怀疑,个人觉得,你精确到的数据只是定时器时钟 ...

首先呢,我确实达到这个精度,信不信由你,1是我为了让凑字数用的
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条