超聲波雷達系統(tǒng)畢業(yè)設計論文_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  單片機控制的超聲波雷達系統(tǒng)</p><p>  摘要  超聲波測距器,可以應用于汽車倒車、建筑施工工地以及一些工業(yè)現場的位置監(jiān)控,也可用于如液位、井深、管道長度的測量等場合。測量時與被測物體無直接接觸,能夠清晰穩(wěn)定地顯示測量結果。由于超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而超聲波經常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現。利用超聲波檢測往往比

2、較迅速、方便、計算簡單、易于做到實時控制,并且在測量精度方面能達到實用的要求,因此在日常生活中得到了廣泛的應用。 </p><p>  關鍵詞 單片機  超聲波   傳感器   測量距離 </p><p><b>  設計思路</b></p><p>  超聲波是指頻率高

3、于20KHz的機械波。為了以超聲波作為檢測手段,必須產生超生波和接收超聲波。完成這種功能的裝置就是超聲波傳感器,習慣上稱為超聲波換能器或超聲波探頭。超聲波傳感器有發(fā)送器和接收器,但一個超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。超聲波傳感器是利用壓電效應的原理將電能和超聲波相互轉化,即在發(fā)射超聲波的時候,將電能轉換,發(fā)射超聲波;而在收到回波的時候,則將超聲振動轉換成電信號。</p><p>  超聲波測距的原理

4、是利用超聲波在空氣中的傳播速度為已知,測量聲波在發(fā)射后遇到障礙物反射回來的時間,根據發(fā)射和接收的時間差計算出發(fā)射點到障礙物的實際距離。由此可見,超聲波測距原理與雷達原理是一樣的。 測距的公式表示為:L=C×T。式中L為測量的距離長度;C為超聲波在空氣中的傳播速度;T為測量距離傳播的時間差(T為發(fā)射到接收時間數值的一半)。</p><p>  本設計通過從單片機TX腳(P3.3)輸出40KH的方波信號,即

5、從該引腳連續(xù)發(fā)出高低電平,產生方波,方波的個數一般為10個左右,發(fā)出后啟動定時器,開始計時,此時,超聲波發(fā)射頭(T端)開始發(fā)出超聲波,當發(fā)出的超聲波被前方的障礙物返射回來,返射回來的超聲波被接收探頭(R)接收到,此時,單片機的RX引腳(P3.2)會產生一個從高電平到低電平的跳變,從而引起中斷。此時,停止計時,保存計時的時間。在本設計中我們根據以下公式:</p><p>  測量距離= (時間*聲速( 340M/S

6、 ) ) / 2  </p><p>  可以算出測量距離。然后我們再通過一定的函數算法和C語言子程序的調用與整合,使測量距離顯示在事先設計好的數碼管顯示電路上。本設計的精度為0.1cm。</p><p>  本設計用Stc8989c52單片機作為主控制器,用動態(tài)掃描法實現數碼管數字顯示,超聲波驅動信號用單片機的定時器完成,超聲波測距器的系統(tǒng)框圖</p><p

7、><b>  二、系統(tǒng)組成 </b></p><p>  系統(tǒng)主要有軟件部分和硬件部分組成。</p><p>  1.硬件部分介紹硬件部分主要由單片機系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲</p><p>  波檢測接收電路等三部分組成。采用 stc89c52 單片機來實現對</p><p>  CX20106

8、A紅外接收芯片和CD4609系列超聲波轉換模塊的控制。</p><p>  單片機通過P3.3引腳經反相器來控制超聲波的發(fā)送,然后單片機不</p><p>  停的檢測INT0引腳,當INT0引腳的電平由高電平變?yōu)榈碗娖綍r就</p><p>  認為超聲波已經返回。計數器所計的數據就是超聲波所經歷的時間,</p><p>  通過換算就可以得

9、到傳感器與障礙物之間的距離。</p><p>  本設計利用的是壓電超聲波轉換器,其原理是:利用壓電晶體諧振工作。它有兩個壓電晶片和一個共振板。當它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動產生超聲波,這時它就是一超聲波發(fā)生器;如沒加電壓,當共振板接受到超聲波時,將壓迫壓電振蕩器作振動,將機械能轉換為電信號,這時它就成為超聲波接受轉換器。</p>

10、<p>  硬件部分電路圖如下: </p><p><b>  a.超聲波發(fā)射電路</b></p><p><b>  b.單片機控制電路</b></p><p>  c.超聲波接收電路圖</p><p><b>  2.軟件部分介紹</b></p&g

11、t;<p>  軟件部分主要由主程序、超聲波發(fā)生子程序、超聲波接收中</p><p>  斷程序及顯示子程序等部分組成。</p><p>  超聲波發(fā)生子程序的作用是通過P3.3端口發(fā)送2個左右的超聲波信號頻率約40KHz的方波,脈沖寬度為12us左右,同時把計數器T0打開進行計時。超聲波測距器主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲波信號(INT0引腳出現低

12、電平),立即進入中斷程序。進入該中斷后就立即關閉計時器T0停止計時,并將測距成功標志字賦值1。如果當計時器溢出時還未檢測到超聲波返回信號,則定時器T0溢出中斷將外中斷0關閉,并將測距成功標志字賦值0以表示此次測距不成功。</p><p><b>  以下是程序流程圖</b></p><p>  以下是本設計的程序部分:</p><p>  #i

13、nclude <reg52.h> </p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  #define ulong unsigned long</p><p>  sbit Tx = P3^3; //產

14、生脈沖引腳</p><p>  sbit Rx = P3^2; //回波引腳</p><p>  sbit fmq=P1^7;</p><p>  uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};</p><p>  uint distance[

15、4]; //測距接收緩沖區(qū)</p><p>  uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定義寄存器</p><p>  bit succeed_flag; //測量成功標志</p><p>  void conversion(uint temp_data) //顯示數據轉換程序</p

16、><p><b>  { </b></p><p>  uchar ge_data,shi_data,bai_data ;</p><p>  bai_data=temp_data/100 ;</p><p>  temp_data=temp_data%100; //取余運算</p><p> 

17、 shi_data=temp_data/10 ;</p><p>  temp_data=temp_data%10; //取余運算</p><p>  ge_data=temp_data;</p><p>  bai_data=SEG7[bai_data];</p><p>  shi_data=SEG7[shi_data]&0x

18、7f;</p><p>  ge_data =SEG7[ge_data];</p><p><b>  EA=0;</b></p><p>  bai = bai_data;</p><p>  shi = shi_data;</p><p>  ge = ge_data ; </p>

19、;<p><b>  EA=1;</b></p><p><b>  }</b></p><p>  //20us延時函數</p><p>  void delay_20us() </p><p>  { uchar bt ;</p><p>  for

20、(bt=0;bt<38;bt++);</p><p><b>  }</b></p><p>  //500us基準延時程序 </p><p>  void delay500us() </p><p><b>  {</b></p><p>  unsigned ch

21、ar j;</p><p>  for(j=0;j<57;j++) </p><p><b>  { ;} </b></p><p><b>  } </b></p><p>  //1ms基準延時程序</p><p>  void delay1ms(unsigned

22、 int i)</p><p><b>  {</b></p><p>  unsigned char j;</p><p>  while(i--)</p><p><b>  {</b></p><p>  for(j=0;j<115;j++) </p&g

23、t;<p><b>  { ;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //產生1KHZ頻率聲音的函數</p><p>  void beep()</p><p>&l

24、t;b>  {</b></p><p><b>  fmq=0;</b></p><p>  delay1ms(500);</p><p><b>  fmq=1;</b></p><p>  delay1ms(500);</p><p><b>

25、;  }</b></p><p><b>  // 主程序</b></p><p>  void main(void) </p><p>  { uint distance_data,a,b;</p><p>  uchar CONT_1; </p><p><b>

26、  i=0;</b></p><p><b>  flag=0;</b></p><p>  Tx=0; //首先拉低脈沖輸入引腳</p><p>  TMOD=0x11; //定時器0,定時器1,16位工作方式</p><p>  TR0=1; //啟動定時器0</p>

27、;<p>  IT0=0; //由高電平變低電平,觸發(fā)外部中斷</p><p>  ET0=1; //打開定時器0中斷</p><p>  EX0=0; //關閉外部中斷</p><p>  EA=1; //打開總中斷0</p><p>  while(1)

28、 //程序循環(huán)</p><p><b>  {</b></p><p><b>  EA=0;</b></p><p><b>  Tx=1;</b></p><p>  delay_20us();</p><p>  Tx=0;

29、//產生一個20us的脈沖,在Tx引腳 </p><p>  while(Rx==0); //等待Rx回波引腳變高電平</p><p>  succeed_flag=0; //清測量成功標志</p><p>  EX0=1; //打開外部中斷</p><p>  TH1=0; //定時器1清零</

30、p><p>  TL1=0; //定時器1清零</p><p>  TF1=0; //</p><p>  TR1=1; //啟動定時器1</p><p><b>  EA=1;</b></p><p>  while(TH1 < 50);/

31、/等待測量的結果,周期65.535毫秒(可用中斷實現) </p><p>  TR1=0; //關閉定時器1</p><p>  EX0=0; //關閉外部中斷</p><p>  if(succeed_flag==1)</p><p><b>  { </b></p>

32、<p>  distance_data=outcomeH; //測量結果的高8位</p><p>  distance_data<<=8; //放入16位的高8位</p><p>  distance_data=distance_data|outcomeL;//與低8位合并成為16位結果數據</

33、p><p>  distance_data*=12; //因為定時器默認為12分頻</p><p>  distance_data/=58; //微秒的單位除以58等于厘米</p><p>  } //為什么除以58等于厘米,

34、 Y米=(X秒*344)/2</p><p>  // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 </p><p>  if(succeed_flag==0)</p><p><b>  {</b></p><p>  distance_data=0;

35、 //沒有回波則清零</p><p><b>  }</b></p><p>  distance[i]=distance_data; //將測量結果的數據放入緩沖區(qū)</p><p><b>  i++;</b></p><p><b>  if(i==3)</b

36、></p><p><b>  {</b></p><p>  distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4; </p><p>  a=distance_data;</p><p>  if(b==a) CONT_1=0;<

37、;/p><p>  if(b!=a) CONT_1++;</p><p>  if(CONT_1>=3)</p><p><b>  {</b></p><p><b>  CONT_1=0;</b></p><p><b>  b=a;</b><

38、;/p><p>  conversion(b);</p><p>  if(b>0&&b<200)</p><p><b>  {</b></p><p><b>  fmq=0;</b></p><p>  delay1ms(100);</p&

39、gt;<p><b>  fmq=1; </b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  i=0;</b></p><p><b>  }

40、 </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //外部中斷0,用做判斷回波電平</p><p>  INTO_() interrupt 0 // 外部中斷是0號</p><p><b&

41、gt;  { </b></p><p>  outcomeH =TH1; //取出定時器的值</p><p>  outcomeL =TL1; //取出定時器的值</p><p>  succeed_flag=1; //至成功測量的標志</p><p>  EX0=0; //關閉外部中斷

42、</p><p><b>  }</b></p><p>  //定時器0中斷,用做顯示</p><p>  timer0() interrupt 1 // 定時器0中斷是1號</p><p><b>  {</b></p><p>  TH0=0xfd; //寫入定時器0

43、初始值</p><p>  TL0=0x77; </p><p>  switch(flag) </p><p>  {case 0x00:P0=ge; P2=0x7f;flag++;break;</p><p>  case 0x01:P0=shi;P2=0xbf;flag++;break;</p><p>

44、  case 0x02:P0=bai;P2=0xdf;flag=0;break;</p><p><b>  }</b></p><p><b>  }  </b></p><p>  本設計當測出的距離小于20cm時,單片機通過調用一個1000HZ的音頻子程序發(fā)出周期性的聲音警報,同時伴隨LED警示燈周期性的閃

45、爍,從而起到報警作用。</p><p><b>  三.小結</b></p><p>  利用本系統(tǒng)對0cm~60cm范圍進行了多次測試,經補償后最大誤差達1cm,線性度、穩(wěn)定性和重復性都比較好。系統(tǒng)具有結構簡單、體積小、實時數碼管顯示和報警、抗干擾性能好等優(yōu)點。系統(tǒng)的誤差主要來自于發(fā)射探頭發(fā)出的超聲波是呈喇叭狀擴散傳播、被測物的表面不光滑且不一定垂直于兩探頭的軸線而

46、導致所反射回來的波也許是從不同點獲得,此外電子元器件自身的時延、干擾等也造成一定影響。本設計電路相對簡單,編程方便且成本較低,隨著設計電路的進一步完善與改進,它一定會具有廣泛的商業(yè)前景與實際應用價值。</p><p><b>  參考文獻:</b></p><p>  張洪潤,《傳感器應用設計300例(上冊)》,北京航空航天大學出版社,出版日期2008-10-01&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論