参考资料:
https://www.cnblogs.com/qsyll0916/p/6964638.html
http://blog.csdn.net/zhangdaxia2/article/details/50783566
首先,先来看一下这个模块的基本功能和原理。
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。像智能小车的测距以及转向,或是一些项目中,常常会用到。智能小车测距可以及时发现前方的障碍物,使智能小车可以及时转向,避开障碍物。
注意是5v输入,但是我用stm32 的3.3v输入也是没有问题的
1、模块(OUT脚的作用是什么)
2、工作原理
(1)、采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)、模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)、有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平*声速(340m/s)/2);
3、时序图
图解:上时序图表明你只需要提供一个10us以上脉冲信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
4、计算公式
公式:uS/58=厘米或者uS/148=英寸;或是:距离高电平时间*声速(340m/s)/2;建议测量周期为60ms以上,以防止发射信号对回响的影响。
5、编程的思路是:
(1)、配置好使用GPIO以及定时器;
(2)、给模块TRIG端口发送大于10us的高电平,当收到ECHO回响信号时,打开定时器开始定时;
(3)、当回响信号消失,关闭定时器;
(4)、通过定时器定时时间来确定距离。