这篇文章将为大家详细讲解有关如何理解超声波模块HC-SR04原理以及树莓派编程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
超声波测距模块HC-SR04提供2cm-400cm非接触测量功能,测距精度可达3mm。模块包括超声波发射器、接收器和控制电路。工作的基本原则:
(1) 对至少10us高电平信号使用IO触发器,
(2) 模块自动发送8个40 kHz,并检测是否有脉冲信号返回。
(3) 如果信号返回,通过高电平,高输出IO持续时间是从发送超声波到返回的时间。测试距离=(高电平时间×声速(340M/S)/2,
电线直接连接如下:
5伏电源
触发脉冲输入
回波脉冲输出
0V接地
Electric Parameter:
Trig 和 Echo 为 TTL电平,所以可以直接接在TTL电平的GPIO口上。
时序图
您只需向触发器输入端提供一个10uS的短脉冲即可开始测距,
然后,模块将以40 kHz的频率发出8个周期的超声波脉冲,并提高其回波。
回波是一个距离物体,其脉冲宽度与距离成比例。
您可以通过发送触发信号和接收回波信号之间的时间间隔来计算范围。公式:uS/58=厘米或uS/148=英寸;或:范围=高水位时间*速度(340M/S)/2;
我们建议使用60毫秒以上的测量周期,以防止触发信号变成回波信号。
5、 操作:
初始化时将trig和echo端口都置低,
首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),
然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,
因为echo高电平的时间等于超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。
树莓派上连接这个模块,写程序 ultrasonic_hc-sr04.py:
#!/usr/bin/python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time SONIC_ECHO = 36 SONIC_TRIG = 37 def checkdist(): #发出触发信号 GPIO.output(SONIC_TRIG,GPIO.HIGH) #保持10us以上(我选择20us) time.sleep(0.000020) GPIO.output(SONIC_TRIG,GPIO.LOW) while not GPIO.input(SONIC_ECHO): pass #发现高电平时开时计时 t1 = time.time() while GPIO.input(SONIC_ECHO): pass #高电平结束停止计时 t2 = time.time() #返回距离,单位为米 return (t2-t1)*340/2 GPIO.setmode(GPIO.BOARD) GPIO.setup(SONIC_TRIG,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(SONIC_ECHO,GPIO.IN) time.sleep(2) while True: L_distance = checkdist() if L_distance > 10: pass else: print 'Distance: %0.2f m' %L_distance time.sleep(0.5) GPIO.cleanup()
关于如何理解超声波模块HC-SR04原理以及树莓派编程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。