圖片
運作
超音波測距模組用來測量前方障礙物的距離. HC-SR0這型號有四支針腳,
VCC : +5V
Trig : 接到GPIO04, 設為Output
Echo : 接到GPIO05, 設為Input
Gnd : 接地
Trig 先啟動3V, 加入電壓約10ms後再關掉. 過了一段時間準備後, Echo 針腳狀況會變成High, 此時就可以開始計時(t1), 因為此時開始發射8個40kHz的方型超音波.
當接收到回波後, 此針腳就狀態就會變成Low, 此時就可以結束計時(t2)
t2-t1就是聲波來回的時間, 所以單程時間為 (t2-t1)/2
音速
音速依當時溫及氣壓有所不同. 但差異不多, 所以可以依 340m/s的速度來計算. 也就是每秒會跑340公尺=34000cm.
所以1cm需要1/34000秒 = 2.9412 * 10-5秒 = 2.9412 * 10-2 ms = 29.412 微秒
另一個思考方式
1 sec : 34000cm (1秒 34000公分)
1 ms : 34cm (1毫秒 34公分)
1微秒 : 0.034cm (1微秒 0.034公分)
1奈秒 : 0.000034cm (1奈秒 0.000034公分)
距離計算
所以上述的(t2-t1)/2, 為單程的奈秒數, (t2-t1)/2/1000為單程的微秒數,
(t2-t1)/2/1000/29.412 即為單程距離的cm值.
當然也可以使用 (t2-t1)/2/1000*0.034 cm
精準度
本模組的精準度真的是會嚇死人, 規格如下
輸出電位( 1/ 0):5V/ 0V
精度:3mm
距離範圍:2 ~ 450cm
有效的角度:<15o
觸發輸入信號:10uS TTL pulse
接線方式
超音波感測器的 Vcc 接 ping 2(+5v)
超音波感測器的 Trig 接 GPIO 24
超音波感測器的 GND 接樹莓派的GND
請注意,超音波感測器的 Echo 端輸出為 5V,而樹莓派的 GPIO 23 只接收 3.3V。
為了不讓樹莓派燒毀,需在超音波感測器的 Echo 端並連 150Ω 及300Ω 電阻,150Ω 接入 GPIO23,300Ω接入樹莓派的 GND。
其實也並不一定要 150Ω 及 300Ω,只要是 1:2 即可。這樣就可以把 5V 降底為 3.3V。
程式範例
底下為最簡單的距離測量代碼
from gpiozero import DistanceSensor from time import sleep sensor = DistanceSensor(23, 24) while True: print('Distance to nearest object is', sensor.distance*100, 'cm') sleep(0.5)
官網
https://gpiozero.readthedocs.io/en/stable/api_input.html#distancesensor-hc-sr04