1.模塊簡(jiǎn)介
HC-SR04超聲波模塊常用于機(jī)器人避障、物體測(cè)距、液位檢測(cè)、公共安防、停車場(chǎng)檢測(cè)等場(chǎng)所。HC-SR04超聲波模塊主要是由兩個(gè)通用的壓電陶瓷超聲傳感器,并加外圍信號(hào)處理電路構(gòu)成的。
2. 模塊參數(shù)
(1)模塊主要電氣參數(shù)
使用電壓:DC---5V 靜態(tài)電流:小于2mA 電平輸出:高5V 電平輸出:低0V
感應(yīng)角度:不大于15度
探測(cè)距離:2cm-450cm
高精度 可達(dá)0.2cm
超聲波模塊有4個(gè)引腳,分別為Vcc、 Trig(控制端)、 Echo(接收端)、 GND;其中VCC、GND接上5V電源, Trig(控制端)控制發(fā)出的超聲波信號(hào),Echo(接收端)接收反射回來(lái)的超聲波信號(hào)。
此次調(diào)試主要是調(diào)試的是基于msp430f149的超聲波測(cè)距的,沒(méi)有外加顯示,有需要的小伙伴可以持續(xù)關(guān)注,后續(xù)會(huì)發(fā)布相應(yīng)的帖子。
超聲波的使用,使用了定時(shí)器A的定時(shí)和對(duì)上升沿和下降沿的捕獲等;全部代碼在附加件中,歡迎大家下載和交流!
部分代碼如下:
#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; //這里要注意是否考慮溢出,跟測(cè)試距離有關(guān),希望大家拓展
S=(Period*17)/100; // 距離計(jì)算 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ù)計(jì)數(shù),中斷允許,計(jì)數(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; // 開(kāi)始低電平,控制驅(qū)動(dòng)波形發(fā)生
}
void init_clk(void)
{
uchar i;
BCSCTL1&=~XT2OFF; //打開(kāi)XT振蕩器
BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M
do
{
IFG1 &= ~OFIFG;//清除振蕩錯(cuò)誤標(biāo)志
for(i = 0; i < 0xff; i++) _NOP();//延時(shí)等待
}
while ((IFG1 & OFIFG) != 0);//如果標(biāo)志為1繼續(xù)循環(huán)等待晶振起振
IFG1&=~OFIFG;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |