超聲波測距模塊有好多種類型,目前比較常用的有URM37超聲波傳感器默認(rèn)是232接口,可以調(diào)為TTL接口,URM05大功率超聲波傳感器測試距離能到10米,算是目前來說測試距離比較遠(yuǎn)的一款了,另外還有比較常用的國外的幾款SRF系列的超聲波模塊,目前的超聲波模塊精度能到1cm。
1.模塊簡介 HC-SR04超聲波模塊常用于機(jī)器人避障、物體測距、液位檢測、公共安防、停車場檢測等場所。HC-SR04超聲波模塊主要是由兩個通用的壓電陶瓷超聲傳感器,并加外圍信號處理電路構(gòu)成的。 2. 模塊參數(shù)
(1)模塊主要電氣參數(shù) 使用電壓:DC---5V 靜態(tài)電流:小于2mA 電平輸出:高5V 電平輸出:低0V 感應(yīng)角度:不大于15度 探測距離:2cm-450cm 高精度 可達(dá)0.2cm 超聲波模塊有4個引腳,分別為Vcc、 Trig(控制端)、 Echo(接收端)、 GND;其中VCC、GND接上5V電源, Trig(控制端)控制發(fā)出的超聲波信號,Echo(接收端)接收反射回來的超聲波信號。 此次調(diào)試主要是調(diào)試的是基于msp430f149的超聲波測距的,沒有外加顯示,有需要的小伙伴可以持續(xù)關(guān)注,后續(xù)會發(fā)布相應(yīng)的帖子。 超聲波的使用,使用了定時器A的定時和對上升沿和下降沿的捕獲等;全部代碼在附加件中,歡迎大家下載和交流! 部分代碼如下: #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) {
switch(TAIV) { case 2 :if(Edge==RISE) { RiseCapVal = TACCR1; TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改為下降沿捕獲 Edge = FALL;//下降沿捕獲標(biāo)志 } else {
_DINT(); Period = TACCR1-RiseCapVal; //這里要注意是否考慮溢出,跟測試距離有關(guān),希望大家拓展 S=(Period*17)/100; // 距離計算 s=340m/s*Period/2*10^(-6)*1000(mm) TACCR1 = 0; TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲 Edge = RISE;//上升沿捕獲標(biāo)志 _EINT(); } break; case 4 : break; case 10: //TA_Overflow_Cnt++; //溢出標(biāo)志 break; } }
void init_timerA(void) { TACTL |= TASSEL_2+MC_2+TAIE+TACLR+ ID_3;//SMCLK,8MHz,8分頻,連續(xù)計數(shù),中斷允許,計數(shù)器清零 TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//捕獲模式,上升沿捕獲(CM_2),CCI1A輸入,同步捕獲,中斷允許 }
void init_IO(void) { P1DIR |= BIT1; //P1.1輸出,普通I/O P1DIR &=~ BIT2; //P1.2輸入 P1SEL |= BIT2; //P1.2第二功能,捕獲輸入
P1OUT &=~BIT1; // 開始低電平,控制驅(qū)動波形發(fā)生 }
void init_clk(void) { uchar i; BCSCTL1&=~XT2OFF; //打開XT振蕩器 BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M do { IFG1 &= ~OFIFG;//清除振蕩錯誤標(biāo)志 for(i = 0; i < 0xff; i++) _NOP();//延時等待 } while ((IFG1 & OFIFG) != 0);//如果標(biāo)志為1繼續(xù)循環(huán)等待晶振起振 IFG1&=~OFIFG;
}
51hei.png (5.76 KB, 下載次數(shù): 74)
下載附件
2021-7-20 23:04 上傳
全部代碼51hei下載地址:
單純的超聲波測距.zip
(116.21 KB, 下載次數(shù): 16)
2021-7-20 22:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|