HC-SR04 超聲波測距模塊可提供 2cm-400cm 的非接觸式距離感測功能,測距精度可達高到 3mm;模塊包括超聲波發射器、接收器與控制電路。
基本工作原理:
?。?)采用 IO 口 TRIG 觸發測距,給最少 10us 的高電平信呈。
?。?)模塊自動發送 8 個 40khz 的方波,自動檢測是否有信號返回;
(3)有信號返回,通過 IO 口 ECHO 輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
2.實物圖:
如右圖接線,VCC 供 5V
電源, GND 為地線,
TRIG 觸發控制信號輸入,ECHO 回響信號輸出等四個接口端。
3、電氣參數:
4、超聲波時序圖:
以上時序圖表明你只需要提供一個 10uS 以上脈沖觸發信號,該模塊內部將發出 8 個 40kHz 周期電平并檢測回波。一旦檢測到有回波信號則輸出回響信號?;仨懶盘柕拿}沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離。公式:uS/58=厘米或者 uS/148=英寸;或是:距離=高電平時間*聲速(340M/S)/2;建議測量周期為 60ms 以上,以防止發射信號對回響信號的影響。
注:1、此模塊不宜帶電連接,若要帶電連接,則先讓模塊的 GND 端先連接,否則會影響模塊的正常工作。
2、測距時,被測物體的面積不少于 0.5 平方米且平面盡量要求平整,否則影響測量的結果
5、實物規格:
下面是自編自寫的測試代碼:
#! /usr/bin/python
# -*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
def checkdist():
#發出觸發信號
GPIO.output(22,GPIO.HIGH)
#保持10us以上(我選擇15us)
time.sleep(0.000015)
GPIO.output(22,GPIO.LOW)
while not GPIO.input(23):
pass
#發現高電平時開時計時
t1 = time.time()
while GPIO.input(23):
pass
#高電平結束停止計時
t2 = time.time()
#返回距離,單位為米
return (t2-t1)*340/2
GPIO.setmode(GPIO.BCM)
#第15號針,GPIO22
GPIO.setup(22,GPIO.OUT,initial=GPIO.LOW)
#第16號針,GPIO23
GPIO.setup(23,GPIO.IN)
time.sleep(2)
try:
while True:
print ‘Distance: %0.2f m’ %checkdist()
time.sleep(3)
except KeyboardInterrupt:
GPIO.cleanup()
[color=rgb(51, 102, 153) !important]復制代碼
該程序每3秒測試一次距離,用ctrl+c停止。
經測試,該模塊測試較為準確,特別是測試物體表面平整時效果更好。
?。踓olor=rgb(51, 102, 153) !important]
?。踓olor=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]
?。踓olor=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]
?。踓olor=rgb(51, 102, 153) !important]
?。踓olor=rgb(51, 102, 153) !important]
評論
查看更多