溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解超聲波模塊HC-SR04原理以及樹莓派編程

發(fā)布時(shí)間:2021-11-23 10:41:52 來源:億速云 閱讀:260 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細(xì)講解有關(guān)如何理解超聲波模塊HC-SR04原理以及樹莓派編程,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

超聲波測(cè)距模塊HC-SR04提供2cm-400cm非接觸測(cè)量功能,測(cè)距精度可達(dá)3mm。模塊包括超聲波發(fā)射器、接收器和控制電路。工作的基本原則:

(1) 對(duì)至少10us高電平信號(hào)使用IO觸發(fā)器,

(2) 模塊自動(dòng)發(fā)送8個(gè)40 kHz,并檢測(cè)是否有脈沖信號(hào)返回。

(3) 如果信號(hào)返回,通過高電平,高輸出IO持續(xù)時(shí)間是從發(fā)送超聲波到返回的時(shí)間。測(cè)試距離=(高電平時(shí)間×聲速(340M/S)/2,

如何理解超聲波模塊HC-SR04原理以及樹莓派編程

電線直接連接如下:

5伏電源

觸發(fā)脈沖輸入

回波脈沖輸出

0V接地

Electric Parameter:

如何理解超聲波模塊HC-SR04原理以及樹莓派編程

Trig 和 Echo 為 TTL電平,所以可以直接接在TTL電平的GPIO口上。

時(shí)序圖

您只需向觸發(fā)器輸入端提供一個(gè)10uS的短脈沖即可開始測(cè)距,

然后,模塊將以40 kHz的頻率發(fā)出8個(gè)周期的超聲波脈沖,并提高其回波。

回波是一個(gè)距離物體,其脈沖寬度與距離成比例。

您可以通過發(fā)送觸發(fā)信號(hào)和接收回波信號(hào)之間的時(shí)間間隔來計(jì)算范圍。公式:uS/58=厘米或uS/148=英寸;或:范圍=高水位時(shí)間*速度(340M/S)/2;

我們建議使用60毫秒以上的測(cè)量周期,以防止觸發(fā)信號(hào)變成回波信號(hào)。

 如何理解超聲波模塊HC-SR04原理以及樹莓派編程

5、 操作:

初始化時(shí)將trig和echo端口都置低,

首先向給 trig     發(fā)送至少10 us的高電平脈沖(模塊自動(dòng)向外發(fā)送8個(gè)40K的方波),

然后等待,捕捉 echo  端輸出上升沿,捕捉到上升沿的同時(shí),打開定時(shí)器開始計(jì)時(shí),再次等待捕捉echo的下降沿,當(dāng)捕捉到下降沿,讀出計(jì)時(shí)器的時(shí)間,

因?yàn)閑cho高電平的時(shí)間等于超聲波在空氣中運(yùn)行的時(shí)間,按照  測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2    就可以算出超聲波到障礙物的距離。

樹莓派上連接這個(gè)模塊,寫程序 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():
    #發(fā)出觸發(fā)信號(hào)
    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
    #發(fā)現(xiàn)高電平時(shí)開時(shí)計(jì)時(shí)
    t1 = time.time()
    while GPIO.input(SONIC_ECHO):
        pass
    #高電平結(jié)束停止計(jì)時(shí)
    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()

關(guān)于如何理解超聲波模塊HC-SR04原理以及樹莓派編程就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI