步驟1:零件清單
只需要很少的部件:
1只有HC-SR04超聲波模塊或類似的
1只有Arduino Uno R3
4只有Arduino male-女性跳線
第2步:接線圖
完成此項目只需要四條線。
接線圖顯示在photo1中。
步驟3:理論
HC-SR04超聲波測距儀模塊(照片1)提供2cm-400cm范圍內的非接觸式測量。精度通常為+/- 3mm,具體取決于距離,氣溫和濕度。
為獲得最高精度,目標區域應至少為0.5平方米。當換能器直接指向目標時獲得最佳結果。但是,可以在+/- 15度的假想“錐形”內使用可用的結果。
將HC-SR04連接到Arduino非常簡單,因為除了兩個電源引腳外,只有兩根電線,“Trig”(觸發器)和“Echo”是必需的。
必須將10uS(微秒)觸發脈沖施加到“Trig”引腳以開始每次測量。
接收到觸發脈沖后,模塊以40kHz(千赫茲)的頻率發出8個周期的“脈沖串”,然后“Echo”線變為高電平。觸發脈沖和“Echo”引腳的上升沿之間有一個短的430uS間隔,在此期間,在超聲波脈沖發生之前,發射器電路中會產生高能量+/- 10伏電荷。
收到回波信號時,“Echo”引腳降至LOW,或者先取210mS。
[注意:
如果阻止超聲波信號(我使用過在換能器上卷起襪子,您將觀察到3550cm的距離讀數,該讀數超出傳感器范圍約400cm。
超過400厘米時,距離讀數會突然跳到3550厘米。原因如下:
在正常操作中,measure()函數在小于25mS(423cm)內完成其測量,然后再等待25mS,直到任務調度程序接下來將TaskFlag1設置為“TRUE”。
如果沒有收到回聲,任務調度程序將繼續每隔50mS將TaskFlag1設置為“TRUE”,直到HC-SR04在210mS后超時并且Echo引腳降低。 HC-SR04忽略由measure()函數產生的所有10uS啟動脈沖。
210mS的超時值對應3550cm的距離。..因此距離突然跳躍閱讀。
重點是所有距離讀數都小于400厘米是正確的。 ]
典型波形
照片2,3,4中顯示了5cm,10cm,20cm和200cm距離的波形,以及5.
每張照片中的頂部曲線是“Trig”引腳。..。..每張照片中的下部曲線是“Echo”引腳。
每個“Echo”脈沖的持續時間可以通過將跡線長度乘以每張照片右下角顯示的“uS/div”值來計算。
計算距離
可以從公式計算出精確距離:
距離(cm)=脈沖長度*聲速/2 * 100 。..。..。..。..。..。..。..。..。..。..。..。..。..。.(1)
這假設“聲速”為340m/S,并且回波距離是實際距離的兩倍。
也可以計算距離使用公式:
距離(cm)=脈沖長度(uS)/59 。..。..。..。..。..。..。..。. 。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。. 。..。(2)
通過調整常數值59可以得到確切的距離。
[注意:
常數的59值推導如下:
聲速約為340m/S,為0.034cm/uS(厘米/微秒) nd)。
0.034cm/uS的倒數是29.412uS/cm,當乘以2以允許返回路徑時,倒圓時等于58.824或59。 ]
示例1:
將脈沖長度2400uS代入等式( 1)我們得到:
距離= 2400/1000000 * 340/2 * 100 = 40.8cm
示例2:
將脈沖長度2400uS代入等式(2)得到:
距離= 2400/59 = 40.7cm
步驟4:代碼
代碼包含一個“measure()”函數,使用instructable https://www中描述的任務調度程序每50mS調用一次。 instructables.com/id/Multi-task-Your-。..
measure()函數包含以下代碼:
// ----- generate 10uS start pulse
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
// ----- measure the distance
while (!digitalRead(Echo)); //wait for Echo pin to go high
start_time = micros();
while (digitalRead(Echo)); //wait for Echo pin to go low
finish_time = micros();
time_taken = finish_time - start_time;
Distance = ((float)time_taken)/59;
完整代碼“Ultrasonic_range_finder將此文本文件的內容復制到Arduino草圖中,將其保存為“Ultrasonic_range_finder”(不帶引號),然后編譯并上傳到Arduino。
步驟5:測量距離
要查看距離讀數,請單擊“工具|串行監視器”并將速度設置為115200波特。
可以通過沿標尺放置物體然后調整“距離”的常數“59”值來校準距離讀數,直到顯示精確讀數。
-
Arduino
+關注
關注
188文章
6478瀏覽量
188287 -
超聲波測距儀
+關注
關注
1文章
47瀏覽量
13958
發布評論請先 登錄
相關推薦
超聲波傳感器的種類原理與設計應用的注意要點

畢業設計競賽選題推薦 | 鴻蒙物聯網應用之智能測距儀項目實戰(含文檔及源碼)

超聲波液位計的工作原理 超聲波液位計與其他液位計的比較
RK3568教學實驗箱_操作案例:5-19 超聲波測距實驗
什么是超聲波一體氣象儀?

超聲波測速的原理、方法及應用
超聲波測速是利用超聲波的什么效應
激光測距儀真的好用嗎?

評論