各位朋友,大家好~
相信很多朋友都用過(guò)一款HC-SR04超聲波測(cè)距模塊,這個(gè)模塊售價(jià)很平民,某寶上僅4RMB左右:能測(cè)3-400cm,真的很不錯(cuò)的。
前一段時(shí)間,偶爾看到一款超聲波測(cè)距模塊(m**eblock的),控制方式與HC-SR04有所不同,硬件上是大同小異的,但售價(jià)非常有逼格。
本菜出于好奇,在網(wǎng)上找了很久的資料,大多數(shù)都是講怎么使用HC-SR04模塊的,而我想找的資料是如何制作HC-SR04這個(gè)模塊,關(guān)鍵是模塊中STC單片機(jī)的程序。
1、原理部分
HC-SR04這個(gè)模塊是2線制的(不包含電源線),Echo與Trig,Trig負(fù)責(zé)接收10us以上的觸發(fā)信號(hào),Echo則是輸出距離信號(hào);下面是時(shí)序圖:
1.png (46.67 KB, 下載次數(shù): 98)
下載附件
2018-7-17 16:58 上傳
而m**eblock的超聲波模塊采用1線制(不包含電源線),,Echo與Trig和二為一(SIG),在一定程度上節(jié)省了IO資源,SIG在收到觸發(fā)信號(hào)后采集并輸出距離信號(hào),其時(shí)序圖與HC-SR04類似,使用起來(lái)略有不同,需要注意IO模式的轉(zhuǎn)換,而如果使用m**eblock官方提供的庫(kù)(Arduino)就非常簡(jiǎn)單了;
關(guān)于HC-SR04系列超聲波傳感器的介紹網(wǎng)上有很多的帖子,本菜不贅述了。
2、硬件部分:
下面就先看一個(gè)原理圖吧,由于本菜的硬件不行,只是簡(jiǎn)單的分析一下,有說(shuō)錯(cuò)的地方,歡迎大神們吐槽!
2.jpg (158.64 KB, 下載次數(shù): 86)
下載附件
2018-7-17 16:58 上傳
3.jpg (104.31 KB, 下載次數(shù): 94)
下載附件
2018-7-17 16:58 上傳
左邊是m**eblock的原理圖,右邊是HC-SR04的原理圖,可以看到,硬件部分的實(shí)現(xiàn)方式是大同小異的,下面以m**eblock為例。 這里主要分成三個(gè)部分: 1、主控IC部分:完成觸發(fā)信號(hào)的檢測(cè)、產(chǎn)生8個(gè)40KHz脈沖信號(hào)、檢測(cè)回波信號(hào)、輸出距離信號(hào)等; 2、發(fā)射部分:由主控IC產(chǎn)生8個(gè)40KHz脈沖信號(hào)后,經(jīng)過(guò)MAX232放大后驅(qū)動(dòng)超聲波發(fā)射端; 3、接收部分:將微弱的回波信號(hào)放大,送到主控IC的IO端檢測(cè)回波。
3、軟件部分
下面是程序思路,圍繞STC展開,說(shuō)一下STC每個(gè)管腳的作用~
1、P30(SIG): 負(fù)責(zé)監(jiān)測(cè)觸發(fā)信號(hào);
配置其為高阻輸入,可以輪詢其高低電平并使用Timer0(2),也可以輪詢高電平后使用INT4低電平,完成一個(gè)觸發(fā)脈沖的檢測(cè)(10us以上),一旦檢測(cè)到觸發(fā)信號(hào),此管腳配置為推挽輸出,并拉低,當(dāng)8個(gè)40KHz信號(hào)發(fā)送完成后將其拉高,等到回波到來(lái)。
2、P33(T2)、P32(T1):8個(gè)40KHz脈沖信號(hào);
配置為推挽輸出,當(dāng)SIG檢測(cè)到觸發(fā)信號(hào)后,其同時(shí)發(fā)送8個(gè)40KHz信號(hào),注意這兩個(gè)信號(hào)存在半個(gè)周期的相位差(重要!),發(fā)射完成之后將SIG拉高。
3、P31(T_PWR):MAX232供、斷電;
配置其為推挽輸出;通過(guò)NPN控制232,低電平有效,只在8個(gè)40KHz脈沖信號(hào)時(shí)給232供電,防止雜波出現(xiàn),232在這里起到一個(gè)驅(qū)動(dòng)放大功率的作用;
4、P34(PWM): 比較電壓;
一開始我以為這是一個(gè)PWM信號(hào),后來(lái)發(fā)現(xiàn)我錯(cuò)了,可以看一下電路圖中的放大器A,是作為一個(gè)比較器使用的。其實(shí)只要在檢測(cè)回波信號(hào)的時(shí)候?qū)⑵淅呔托辛恕#壳拔沂沁@樣做的)
5、P35(CHK):回波檢測(cè);
配置為高阻輸入;可以利用INT3來(lái)檢測(cè)下降沿并使用Timer2(0)計(jì)算周期,并檢測(cè)回波頻率,判斷是否為發(fā)射出去的40KHz信號(hào),檢測(cè)完成后將SIG拉高,完成一次測(cè)量。
第一次發(fā)表這么長(zhǎng)的開源貼子,歡迎大家吐槽(鼓勵(lì)~~),源代碼中幾乎每一條代碼后都跟有注釋,相信大家讀起來(lái)不會(huì)太費(fèi)時(shí)間的。程序中難免有些處理不妥的地方,歡迎大家下載優(yōu)化,記得分享您的成果哈~~~
單片機(jī)源程序如下:
- /*-----------------------------------------------
- 名稱:HC-SR04內(nèi)源碼
- 版本:v1.1
- 編寫:XiaoKai
- 環(huán)境:MDK51 Pro V9.50a
- 日期:2017.2.23
- 修改:無(wú)
- 內(nèi)容:超聲波測(cè)距模塊源碼
- ------------------------------------------------*/
- #include "main.h"
- bit TRRIG = FALSE; //標(biāo)志是否接收到觸發(fā)信號(hào):FALSE(否)、TRUE(是)
- /*------------------------------------------------
- 主函數(shù)
- ------------------------------------------------*/
- void main (void)
- {
- Clock_Init(); //系統(tǒng)時(shí)鐘初始化
- GPIO_Init(); //GPIO 口初始化
- Timer0_Init(); //Timer0 初始化,負(fù)責(zé)測(cè)量回波信號(hào)頻率
- Timer2_Init(); //Timer2 初始化,負(fù)責(zé)測(cè)量觸發(fā)脈沖寬度
- Exint3_Init(); //INT3 初始化,負(fù)責(zé)檢測(cè)回波信號(hào)
-
- DelayMs(10); //延時(shí)等待完成
-
- while (1) //主循環(huán)
- {
- //---------------監(jiān)測(cè)觸發(fā)信號(hào)-------------
- TRIGGER();
- //--------------監(jiān)測(cè)到觸發(fā)信號(hào)------------
- if(TRRIG)
- {
- //------------P3.0 設(shè)置為推挽輸出----------
- P3M0 |= (1 << 0); //P3.0 設(shè)置為推挽輸出
- P3M1 &= ~(1 << 0);
- //-----------------拉低 SIG----------------
- SIG = LOW; //SIG 由輸入模式變?yōu)檩敵瞿J胶竽J(rèn)輸出高
- //-----------發(fā)送 8 個(gè) 40KHz 信號(hào)----------
- EIGHT(); //發(fā)送脈沖后應(yīng)該立即拉高SIG,這樣測(cè)量更加精準(zhǔn)???
- //-----------------拉高 SIG----------------
- SIG = HIGH; //發(fā)送完 8 個(gè) 40KHz 后,拉高 SIG 表示測(cè)量開始
- //----------開啟Timer0及接收INT3-----------
- INT_CLKO |= (1<<5); //接收INT3
- //--------------等待 SIG 被拉低------------
- while(SIG) //SIG 在 exint3.c 中被檢測(cè)
- {
- //--------------比較電壓輸出高-----------
- PWM = HIGH; //P34輸出比較電壓,允許信號(hào)通過(guò)
- }
- }
- //-----------------拒收INT3----------------
- INT_CLKO &= ~(1<<5); //拒收INT3
- //----------------關(guān)閉Timer2---------------
- TR0=0; //關(guān)閉Timer0
- //---------------比較電壓輸出低------------
- PWM = LOW;//不允許信號(hào)通過(guò)
- //----------表示沒(méi)有接收到觸發(fā)信號(hào)---------
- TRRIG = FALSE;
- }
- }
復(fù)制代碼
0.png (41.63 KB, 下載次數(shù): 99)
下載附件
2018-7-17 16:57 上傳
所有資料51hei提供下載:
HC-SR04-V1.2.zip
(4.27 MB, 下載次數(shù): 192)
2018-7-17 11:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|