.

最最霸气的超声波测距设计,千万不要尖叫哦

背景:最近整理东西,发现了一个蓝色的小模块,上面还有两个像喇叭的小东西,关键上面还有丝印,用蓝底白字写着“HC-SR04”,于是勾起了我的好奇心,动动小手指,百度找到了这个小板子的信息,原来是一个超声波测距模块,还挺有意思的,而且只引出来了四个引脚,应用也比较简单,下面简单介绍下这个模块以及简单的超声波测距方案。

1.HC-SR04模块实物图和工作原理

1.1实物如下图,可以看到这个模块是双面贴片的,整体感觉大气,印出来了四个引脚,分别是GND,Echo,Trig,VCC具体功能见下方

1.2首先这个模块是要单独供电的,需要给VCC接5V,GND就不多说了

关键是Echo和Trig这两个脚,可以看下方的时序图。

a.需要给触发信号即Trig一个大于10us的方波信号

b.模块内部会产生一个8*40KHz的声波,因为是内部产生的,所以引出的四个脚测不出来这个信号,或许可以从PCBA里面其它地方测出,我没深入研究

c.输出回响信号,即Echo会返回一个高电平信号,这个高电平的持续时间和测量距离有关。

计算测距方法:我可以用一个遮挡物挡在两个突出物上方,通过初中的只是我们都知道距离=速度*时间/2,速度在空气中的速度约等于m/s,时间即Echo的高电平信号。所以我们可以很简单的就测量出遮挡物到模块的距离。

2.要掌握的知识点和设备

2.1硬件环境

我这边用的是HC-SR04模块+STM32FZET6开发板+示波器,示波器是帮助分析用,可以验证设计和实际是否一致的工具,可以不要。开发板也只是起一个连接串口调试助手,产生PWM以及输入捕获的一个功能,并不一样要和我一样的开发板,理论上任何一个开发板都可以实现这个功能。

2.2软件知识

要用上面这套工具实现超声波测距的功能,需要的代码知识点也说过了,这里再提一下。

a.PWM输出一个脉冲大于10us的方波到Trig,可以用STM32的定时器输出

b.输入捕获Echo接受到的高电平信号,通过测量接受到的高电平时间,即可通过距离=速度*时间/2计算出距离。

c.串口调试,我们要通过串口调试助手打印出测量的时间和距离,可以方便直观地看到我们的结果。

理论上掌握上面三个技能就可以实现超声波测距的这个简单的项目,当然条条大路通罗马,上面的方式也不是唯一的一种。譬如我可以用信号发生器产生方波,就可以不用定时器了。毕竟工具只是工具而已。

3.代码编写,代码是参考的正点原子的PWM输出和输入捕获,因为项目原理上面说过了,基本就是这两个功能的叠加。我本来想用HAL库来做,但是CUBEMX生成的代码调试没成功,所以最后还是用的原子的标准库来做的。下面代码截取的是main.c和time.c。也是这个项目里面最重要的两个部分。

4.硬件连接以及实验照片

4.1硬件连接

4.2串口显示结果

4.3Echo和Trig信号

基本功能是实现了,以上就是对HC-SR04这个模块的简单介绍和使用分享。当然这个模块也很常见,网上类似的分享也挺多的,但和我一样的肯定没有,起码图片都是我新鲜截取拍摄的,这次的测试也是我花了些心思做出来的,我的小目标就是攒齐3个原创文章,贴一个加V的认证,看了下原创活动是到今年年底,也算是今年的一个年度计划吧,希望可以实现。

PS:附件是我在网上找的一个HC-SR04模块的资料,可以参考,但我看了下好像和我手上这个有点儿不一样,但引脚定义是一样的,不影响整体设计思路,可以看看。

原标题:用HC-SR04和STM32FZET6做超声波测距

原作者:王小琪

本文为21ic有奖征文作品,详情请见21ic论坛活动专区:第一届万元红包——蓝V达人有奖征文活动,如果您也有兴趣参与征文,欢迎进入论坛参与活动~




转载请注明:http://www.abachildren.com/hbyx/7494.html