工作原理和使用方法主要参考了 树莓派实验室转载简书的一篇文章,但是这里面有一些错误
接地端接线问题
这是传感器使用树莓派的5V电源的方案,亲测可行。
测距的实现问题
原理
HC-SR04超声波模块工作原理:
1)给TRIG口至少10us的高电平信号触发测距;
2)之后模块自动发送8个40khz的方波
3)之后ECHO口输出高电平(这也是为什么测量距离有下限而不能无限小)
4)自动检测是否有信号返回
4)有信号返回,ECHO口输出低电平,高电平持续的时间就是超声波从发射到返回的时间。
上时序图: 没有什么是时序图表达不清楚的
网上关于这个的博文很多,大都是复制粘贴的,一个错个个错,很少有能把这个HC-SR04工作过程说正确的。
所以本程序的核心是:
1.初始化:将trig和echo端口都置低
2.给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波)
3.等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器计下此时的时刻
4.等待捕捉echo的下降沿,当捕捉到下降沿时,记下此时时刻
5.两个时刻相减就是echo高电平持续时间
主要代码
第三、四步的的代码实现
# 记录发送超声波的时刻1
while GPIO.input(GPIO_ECHO) == 0:
pass #这个pass在C++中写成 ; 也是一样的
start_time = time.time()
# 记录接收到返回超声波的时刻2
while GPIO.input(GPIO_ECHO) == 1:
pass
stop_time = time.time()
亲测可行,误差可保持在在一厘米之内
传感器供电问题
这个方案中使用树莓派的5V电源供电,但是我在自己尝试外部电源给传感器供电时,怎么也不能让他正常工作。这个地方需要学习。