標(biāo)題: 基于msp430f149單片機(jī)的SR04的超聲波源程序 [打印本頁(yè)]

作者: 244512469    時(shí)間: 2021-7-20 22:30
標(biāo)題: 基于msp430f149單片機(jī)的SR04的超聲波源程序
超聲波測(cè)距模塊有好多種類型,目前比較常用的有URM37超聲波傳感器默認(rèn)是232接口,可以調(diào)為T(mén)TL接口,URM05大功率超聲波傳感器測(cè)試距離能到10米,算是目前來(lái)說(shuō)測(cè)試距離比較遠(yuǎn)的一款了,另外還有比較常用的國(guó)外的幾款SRF系列的超聲波模塊,目前的超聲波模塊精度能到1cm。

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;


}



全部代碼51hei下載地址:
單純的超聲波測(cè)距.zip (116.21 KB, 下載次數(shù): 16)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1