如何理解超声波模块HC-SR04原理以及树莓派编程

2023-05-25,

这篇文章将为大家详细讲解有关如何理解超声波模块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原理以及树莓派编程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

《如何理解超声波模块HC-SR04原理以及树莓派编程.doc》

下载本文的Word格式文档,以方便收藏与打印。