8575f6a9cd17e5181800bd9c7fb38f58.png

(原创:奔跑的晶体管)

1.硬件原理

本节用Arduino驱动超声波测距传感器测试距离,并将距离值在LCD1602实时显示。超声波测距传感器用到的是SR04。

681aa9c89f8803faaa9a0bff339672bb.png

SR04

SR04的量程是2—450cm,还是比较远的,精度可以达到0.3cm,它的工作原理是采用 IO 触发测距,给至少 10us 的高电平信号;模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回,有信号返回,则通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*声速(340M/S))/2。

4b78c42c7c62636282c0c80bc5bc283a.png

超声波时序图

从上面的时序图可以看到,只要给触发信号提供一个10us的高电平,模块内部就会循环发出8个40KHz的脉冲电平,并检测回波,一旦检测到回波,就会输出回响信号,回响信号是一个高电平,高电平的长短,与检测距离成正比。

LCD1602的驱动原理以前文章已有介绍了。Arduino和1602与超声波模块直接用杜邦线连接,原理图如下。

7abaa8a9e08dd7f58ebc977405fd1681.png

硬件原理图

2.程序解读

算法描述:

控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时得到此次测距的时间,就可以算出距离。

测试距离=(高电平时间*声速(340M/S))/2 ,算得的距离在LCD1602上显示,这里需要注意的是,LCD1602显示之前需要清屏,否则液晶会有残影,显示的数字是不正确的。

代码解读:

详细代码解读如图注释。

5bc95b904d590368e7c4bb8b3f789714.png

代码

3.实物效果

我们用一把尺子做对比,检测超声波测试的距离,发现测试结果还是比较准确的。请看实物效果图,连接用的是杜邦线。

fd257e87a0cbf43e4bafedd24afe4406.png

实物连接图

实验效果图:

0d3a4adc37d2024686afc222c0c8dca5.gif

效果图

欢迎点赞和转发,关注头条号:奔跑的晶体管 可以学到更多的电子知识哦。

8bfd5faca6b9eb363db496fa01f4ea11.png
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐