闲话:数学功底好的人,对于编程来说是真的好。高精尖的东西都涉及深厚的数学知识,算法的优化也涉及各种数学知识、……编译器对于除法的优化,数学不好都搞不明白,只能记个结论算啦!如果有大把的时间用来学习的程序员,比如还在学校当学生的准程序员,那么花时间研究数学是太值得了。
本篇文章开始介绍关于超声波测距传感器模块,算是又多认识了一个传感器。
超声波测距传感器是通过振动频率高于 20KHz 的机械波来工作的。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播的特点,应用广泛。以上这段描述来自于超声波测距传感器产品的介绍。我这里使用的超声波测距是 HC-SR04 模块,这个模块的测距范围在 2cm 到 600cm 之间,精度在 0.1cm + 1%,模块的外形如下图所示。
超声波测距传感器说白了就是用来测量距离的一种模块,通过发送和接收超声波,利用时间差和声音的传播速度,来计算出传感器到障碍物的距离。初中物理中就讲到了通过声音计算距离的例子。动物中的蝙蝠也是靠这种方式来躲避障碍物的。
在超声波测距传感器上有 4 个引脚,分别s是 VCC、TRIG、ECHO 和 GND,其中 VCC 和 GND 每个传感器几乎都有,因为是用来供电的嘛!而 TRIG 和 ECHO 是用来测距的关键。
TRIG 引脚对于 超声波测距传感器 来说是一个输入引脚,单片机向它输入一个 10us 以上的高电平,可以触发该模块进行测距。所谓开始测距就是让它开始向外发送超声波。
ECHO 引脚对于 超声波测距传感器 来说是一个输出引脚,当它接收到回波时,这个引脚会输出一个高电平,这个高电平就表示发送的超声波回来了。
它的工作原理图如下:
在图示中,只需要在 TRIG 引脚输入一个 10us 以上的高电平,系统便可发出 8 个 40KHz 的超声波脉冲,然后检测回波信号。当检测到回波信号后,通过 ECHO 引脚输出给单片机。
根据 ECHO 引脚输出高电平的持续时间可以计算距离值,即距离值为:(高电平时间 * 340m/s)/ 2。
当测量距离超过 HC-SR04 的测量范围时,仍会通过 ECHO 引脚输出高电平信号,高电平的宽度约为 66ms。如下图所示:
测量周期:当接收到 HC-SR04 通过 ECHO 引脚输出的高电平脉冲后,便可进行下一次测量,所以测量周期取决于测量距离,当距离北侧物体很近时,ECHO 返回的脉冲宽度较窄,测量周期就很短;当距离被测物体比较远时,ECHO 返回的脉冲宽度较宽,测量周期也就相应的变长。最坏情况下,被测物体超出超声波模块的测量范围,此时返回的脉冲宽度最长,约为 66ms,所以最坏情况下的测量周期稍大于 66ms 即可。
不过,我们编程时也可以不计算高电平的宽度,而是自己使用定时器来计时,发送信号时来开启定时器,接收到信号时结束定时器,这样也可以得到发波和回波的时间,从而计算距离。
具体代码实现,在下篇文章中进行整理!
我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!