一、簡(jiǎn)介
1. C-SR04超聲波模塊是一種常用的測(cè)距模塊,其通過發(fā)射超聲波并接收其反射信號(hào)來實(shí)現(xiàn)測(cè)距功能。因其成本低、精度高、使用簡(jiǎn)便等特點(diǎn),被廣泛應(yīng)用于以下場(chǎng)景:
(1)避障機(jī)器人:HC-SR04超聲波模塊可以用于避障機(jī)器人的距離測(cè)量,通過檢測(cè)障礙物與機(jī)器人的距離,實(shí)現(xiàn)避障控制。
(2)智能家居:HC-SR04超聲波模塊可用于智能家居中的人體檢測(cè)和距離測(cè)量。例如,在門口安裝超聲波模塊,可以檢測(cè)人的接近并觸發(fā)開門動(dòng)作,或者用于室內(nèi)的距離測(cè)量和觸發(fā)自動(dòng)照明等。
2. 本實(shí)驗(yàn)用到了CW32F030C8T6小藍(lán)板、0.96寸OLED顯示屏、HC-SR04超聲波模塊及Keil5開發(fā)環(huán)境。
二、超聲波模塊測(cè)距的使用方法
使用流程 連接電源 將VCC引腳連接到+5V,GND引腳連接到GND。
連接觸發(fā)引腳
將Trig引腳連接到單片機(jī)的數(shù)字輸出引腳。
連接回波引腳
將Echo引腳連接到單片機(jī)的數(shù)字輸入引腳。
發(fā)送信號(hào)
通過向Trig引腳發(fā)送一個(gè)至少10微秒的高電平觸發(fā)信號(hào)來啟動(dòng)測(cè)距過程
接收信號(hào)
模塊發(fā)送觸發(fā)信號(hào)后,自動(dòng)發(fā)射超聲波,并等待接收反射信號(hào)。當(dāng)接收到反射信號(hào)時(shí),Echo引腳會(huì)輸出一個(gè)高電平信號(hào),持續(xù)時(shí)間與超聲波的往返時(shí)間成正比。
計(jì)算距離
通過測(cè)量Echo引腳輸出高電平信號(hào)的持續(xù)時(shí)間,可以計(jì)算得到距離,一般使用以下公式計(jì)算:
距離= 高電平持續(xù)時(shí)間 × 聲波在空氣中傳播的速度 / 2。
重復(fù)測(cè)量
根據(jù)需要可定時(shí)測(cè)量距離,以實(shí)現(xiàn)連續(xù)的距離監(jiān)測(cè)。
需要注意的是,HC-SR04超聲波模塊的測(cè)距精度受到多種因素的影響,如溫度、超聲波傳播介質(zhì)等。在使用過程中,需要結(jié)合具體的應(yīng)用場(chǎng)景和需求進(jìn)行參數(shù)調(diào)整和校準(zhǔn),以獲得準(zhǔn)確的距離測(cè)量結(jié)果。
三、核心代碼
HC_SR04.c: #include "HC_SR04.h" extern unsigned int time; void HC_GPIO_Init(void) { __RCC_GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.IT=GPIO_IT_NONE; GPIO_InitStruct.Mode=GPIO_MODE_INPUT_PULLDOWN;//下拉輸入 GPIO_InitStruct.Pins=GPIO_PIN_8; //Echo GPIO_Init(CW_GPIOB,&GPIO_InitStruct); GPIO_InitStruct.Speed=GPIO_SPEED_HIGH; GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP; //推挽輸出 GPIO_InitStruct.Pins=GPIO_PIN_9; //Trig GPIO_Init(CW_GPIOB,&GPIO_InitStruct); PB09_SETLOW(); //Trig拉低,為輸出脈沖觸發(fā)信號(hào)做準(zhǔn)備 } unsigned int Measure_Distance(void) //測(cè)距 { unsigned int distance=0; SetTrig(); //10us的脈沖觸發(fā)信號(hào) Delay_us(10); ResetTrig(); while(ReadEcho()==0); //等待Echo輸出高電平 time=0; //開始記錄回波信號(hào)脈寬 while(ReadEcho()==1); //等待Echo輸出低電平 distance=time*1.7;//根據(jù)聲速和時(shí)間計(jì)算距離,即distance=time*340/2/100 /* 關(guān)于分辨力(mm): 定時(shí)器每次對(duì)time加1是10us,10us=0.01ms,340m/s=340mm/ms 計(jì)算距離時(shí),最小分辨力為:0.01(ms) * 340(mm/ms) / 2 = 1.7(mm) 小于模塊標(biāo)準(zhǔn)精度3mm,故測(cè)距結(jié)果十分精準(zhǔn) */ return distance; //返回距離,單位mm } main.c: #include "HC_SR04.h" extern unsigned int time; void HC_GPIO_Init(void) { __RCC_GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.IT=GPIO_IT_NONE; GPIO_InitStruct.Mode=GPIO_MODE_INPUT_PULLDOWN;//下拉輸入 GPIO_InitStruct.Pins=GPIO_PIN_8; //Echo GPIO_Init(CW_GPIOB,&GPIO_InitStruct); GPIO_InitStruct.Speed=GPIO_SPEED_HIGH; GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP; //推挽輸出 GPIO_InitStruct.Pins=GPIO_PIN_9; //Trig GPIO_Init(CW_GPIOB,&GPIO_InitStruct); PB09_SETLOW(); //Trig拉低,為輸出脈沖觸發(fā)信號(hào)做準(zhǔn)備 } unsigned int Measure_Distance(void) //測(cè)距 { unsigned int distance=0; SetTrig(); //10us的脈沖觸發(fā)信號(hào) Delay_us(10); ResetTrig(); while(ReadEcho()==0); //等待Echo輸出高電平 time=0; //開始記錄回波信號(hào)脈寬 while(ReadEcho()==1); //等待Echo輸出低電平 distance=time*1.7;//根據(jù)聲速和時(shí)間計(jì)算距離,即distance=time*340/2/100 /* 關(guān)于分辨力(mm): 定時(shí)器每次對(duì)time加1是10us,10us=0.01ms,340m/s=340mm/ms 計(jì)算距離時(shí),最小分辨力為:0.01(ms) * 340(mm/ms) / 2 = 1.7(mm) 小于模塊標(biāo)準(zhǔn)精度3mm,故測(cè)距結(jié)果十分精準(zhǔn) */ return distance; //返回距離,單位mm }
審核編輯:劉清
-
OLED顯示屏
+關(guān)注
關(guān)注
6文章
218瀏覽量
30814 -
GND
+關(guān)注
關(guān)注
2文章
540瀏覽量
38911 -
避障機(jī)器人
+關(guān)注
關(guān)注
0文章
18瀏覽量
7722 -
超聲波模塊
+關(guān)注
關(guān)注
1文章
21瀏覽量
13562 -
CW32
+關(guān)注
關(guān)注
1文章
218瀏覽量
742
原文標(biāo)題:【CW32優(yōu)秀項(xiàng)目展示】基于CW32的超聲波模塊的應(yīng)用
文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【CW32模塊使用】US-016超聲波測(cè)距傳感器
![【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】US-016<b class='flag-5'>超聲波</b>測(cè)距傳感器](https://file1.elecfans.com//web3/M00/00/44/wKgZPGdH602AfIZLAAAuAFA24Bs131.jpg)
超聲波液位計(jì)的工作原理 超聲波液位計(jì)與其他液位計(jì)的比較
超聲波和次聲波的頻率范圍和應(yīng)用
PGA460超聲波模塊硬件和軟件優(yōu)化
![PGA460<b class='flag-5'>超聲波模塊</b>硬件和軟件優(yōu)化](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
超聲波測(cè)速的原理、方法及應(yīng)用
AFE5812超聲波模擬前端數(shù)據(jù)表
![AFE5812<b class='flag-5'>超聲波模</b>擬前端數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AFE5818 16通道超聲波模擬前端數(shù)據(jù)表
![AFE5818 16通道<b class='flag-5'>超聲波模</b>擬前端數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
超聲波驅(qū)動(dòng)板-超聲波它激式驅(qū)動(dòng)板
![<b class='flag-5'>超聲波</b>驅(qū)動(dòng)板-<b class='flag-5'>超聲波</b>它激式驅(qū)動(dòng)板](https://file1.elecfans.com/web2/M00/ED/95/wKgZomZruUeAOf6jAAFQGYS1dfk073.png)
評(píng)論