參考資料:
https://www.cnblogs.com/qsyll0916/p/6964638.html
http://blog.csdn.net/zhangdaxia2/article/details/50783566
首先,先來看一下這個模塊的基本功能和原理。
HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發射器、接收器與控制電路。像智能小車的測距以及轉向,或是一些項目中,常常會用到。智能小車測距可以及時發現前方的障礙物,使智能小車可以及時轉向,避開障礙物。
注意是5v輸入,但是我用stm32 的3.3v輸入也是沒有問題的
1、模塊(OUT腳的作用是什么)
2、工作原理
(1)、采用IO口TRIG觸發測距,給至少10us的高電平信號;
(2)、模塊自動發送8個40khz的方波,自動檢測是否有信號返回;
(3)、有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平*聲速(340m/s)/2);
3、時序圖
圖解:上時序圖表明你只需要提供一個10us以上脈沖信號,該模塊內部將發出8個40kHz周期電平並檢測回波。一旦檢測到有回波信號則輸出回響信號。回響信號的脈沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離。
4、計算公式
公式:uS/58=厘米或者uS/148=英寸;或是:距離高電平時間*聲速(340m/s)/2;建議測量周期為60ms以上,以防止發射信號對回響的影響。
5、編程的思路是:
(1)、配置好使用GPIO以及定時器;
(2)、給模塊TRIG端口發送大於10us的高電平,當收到ECHO回響信號時,打開定時器開始定時;
(3)、當回響信號消失,關閉定時器;
(4)、通過定時器定時時間來確定距離。