一、實物圖
二、原理圖
編号 | 名稱 | 功能 |
1 | VCC | 電源正 |
2 | TRIG | 觸發控制信号輸入 |
3 | ECHO | 回響信号輸出 |
4 | GND | 電源地 |
三、簡介
由于超音波指向性強,能量消耗緩慢,在媒體中傳播的距離較遠,因而超音波經常用于距離的測量,如測距儀和物體測量儀等都可以通過超音波來實作。利用超音波檢測往往比較迅速、友善、計算簡單、易于做到實時控制,并且在測量精度方面能達到工業實用的要求,是以在移動機器人研制上也得到了廣泛的應用。
HC-SR04超音波測距子產品可提供2cm-400cm的非接觸式距離感測功能,測距精度3mm,子產品包括超音波發射器、接收器與控制電路。
基本工作原理:
超音波發射器向某一方向發射超音波,在發射時刻的同時開始計時,超音波在空氣中傳播,途中碰到障礙物就立即傳回,超音波接收器收到反射波就立即停止計時。測試距離=(計時時間*聲速)/2
四、電器特性
五、時序解析
(1)采用IO口TRIG觸發測距,給最少10us的高電平觸發信号。
(2)子產品自動發送8個40khz的方波,自動檢測是否有信号傳回;
(3)有信号傳回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超音波從發射到傳回的時間。
(4)測試距離=(高電平時間*聲速)/2;
代碼如下:
uint Hcsr04_GetDistance(uint Hcsr04_temp)
{
uint Hcsr04_distance; //用于記錄測得的距離
float Hcsr04_speed; //儲存超音波的速度值
TH2 = 0; //使用定時器2作為計時器
TL2 = 0;
HCSR04_Trig = 0; //給超音波子產品一個高電平的開始脈沖
Hcsr04_Delay(20);
HCSR04_Trig = 1;
Hcsr04_Delay(20);
HCSR04_Trig = 0;
while(!HCSR04_Echo); //等待超音波子產品的傳回脈沖
TR2 = 1; //啟動定時器,開始計時
while(HCSR04_Echo); //等待超音波子產品的傳回脈沖結束
TR2 = 0; //停止定時器,停止計時
Hcsr04_speed = 0.607*Hcsr04_temp+331.4; //根據公式 v=0.607T+331.4 計算出目前溫度值對應的超音波速度,這時的機關是“米/秒”
Hcsr04_speed = Hcsr04_speed/10000; //将超音波的速度從機關“m/s”轉為“cm/us”,友善後面的計算
Hcsr04_distance=((TH2*256+TL2) * (12/FOSC) * Hcsr04_speed) / 2; // 距離cm = (時間us * 速度cm/us) / 2
if(Hcsr04_distance > 500) //把檢測結果限制500厘米内
Hcsr04_distance = 500;
return Hcsr04_distance;
}
六、流程設計
首先初始化引腳,然後複位定時器計數值,接着給超音波一個高電平的開始信号,等待超音波子產品的傳回脈沖,接到傳回脈沖,則開始計時,然後等待超音波子產品的傳回脈沖結束,如果結束,則停止計時。接下來通過溫度補償計算聲波速度,通過距離=(時間*速度)/2最終得到距離值。最後判斷距離值是否超過量程,如果超過量程則将距離值設定成最大量程值。