超聲波測距模組工作原理

2021-09-25 15:50:25 字數 1469 閱讀 8724

(1)採用io口trig觸發測距,給至少10us的高電平訊號;

(2)模組自動傳送8個40khz的方波,自動檢測是否有訊號返回;

(3)有訊號返回,通過io口echo輸出乙個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340m/s))/2;

(4)本模組使用方法簡單,乙個控制口發乙個10us以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開定時器計時,當此口變為低電平時就可以讀定時器的值,此時就為此次測距的時間,方可算出距離。如此不斷的週期測,即可以達到你移動測量的值

trig負責接收10us以上的觸發訊號,echo則是輸出距離訊號

本模組效能穩定,測度距離精確,模組高精度,盲區小

產品應用領域: 機械人避障 物體測距 液位檢測 公共安防 停車場檢測 。

模組測距的操作步驟:

首先要對串列埠進行初始化,超聲波模組必須要用到115200波特率的串列埠初始化

void inituar_115200()

接著是對超聲波模組進行初始化,讓超聲波開始工作,給超聲波10us的高電平,超聲波初始化包括計時器功能。要給超聲波脈衝,首先給它乙個低電平,再給他連續的10us的高電平,再拉低。

void delay10us()

void init_csb()

超聲波介面trig進行了10us的脈衝之後,會去檢測介面echo的值,echo的值置為高電平後,開始計時,echo=1置為低電平後返回,發出值,結束計時:

void star_time()

void stop_time() //結束計時

int get_time() //獲取波的時間

float get_distance() //獲取距離

主函式如下:

int main()

; inituar_115200();

while(1)

{

init_csb();

while(echo != 1); //波出去,echo1,退出迴圈,並開始計時

star_time();

while(echo != 0); //波回來,echo0,退出迴圈,並結束計時

stop_time();

time = get_time(); //獲取波的時間

dis=get_distance(); //計算距離

sprintf(buf,"distance:%fcm\r\n",dis); //輸出結果

stringsend(buf);

定義全域性變數

sbit trig = p1^0;

sbit echo = p1^1; //連線的介面

超聲波測距模組

疑問 探測頻率 和探測最大耗時 探測最大耗時裡面的返回值範圍 返回距離比返回時間耗時長 且5m和10m一樣 1.探測頻率 500hz,即每秒500次,一次2ms。若安裝12個,則掃瞄一圈24ms。若機械人的速速為1m s,24ms前進24mm 2.4cm 若10m 29ms 1ms 30ms,一圈 ...

超聲波測距程式

利用51微控制器實現超聲波測距,也是大二做得,當時沒有照相機,無法提供 比較遺憾,這個程式,有很多問題,但是還是實現了測距,誤差兩厘公尺,範圍從20cm 500cm include define uchar unsigned char define uint unsigned int define ...

超聲波測距初識

人類耳朵能聽到的聲波頻率為20hz 20khz。當聲波的振動頻率大於20khz或小於20hz時,我們便聽不見了。因此,我們把頻率高於20000赫茲的聲波稱為 超聲波 因其方向性好,穿透能力強,易於獲得較集中的聲能,在水中傳播距離遠,可用於測距 測速 清洗 焊接 碎石 殺菌消毒等。在醫學 軍事 工業 ...