久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12079|回復: 1
打印 上一主題 下一主題
收起左側

帶溫度補償的超聲波測距系統單片機課程設計報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:290266 發表于 2018-4-12 02:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面是做出來的實物圖:

傳感與檢測技術課程設計

設計報告


項    目:帶溫度補償的超聲波測距系統設計

班    級:_______141_______________

姓    名:______鄭*_______________

學    號:____1412*_____________  

評定成績:____________________________



摘要

在日常生活和工業控制中,經常會需要進行位置監控和距離測量,超聲波測距就是其中的一種方法,由于聲音的傳播速度和溫度有關,因此,超聲波測距的精度受溫度影響比較大,要實現高精度的超聲波測距,須考慮溫度變化對聲速的影響,從而進行必要的補償。本文以AT89S52 單片機為核心,設計了一種帶溫度補償的超聲波測距系統。系統包括單片機、超聲波發射及接收模塊、溫度補償模塊、信息顯示模塊。溫度補償模塊采用溫度傳感器DSl8B20 采集環境溫度,根據超聲波速度與溫度值的對應關系及時修正波速,以糾正溫度的變化引起超聲波測距系統產生的誤差。


Abstract

In daily life and industrial control, often need to position control and distance measurement is one of the ways of ultrasonic ranging, due to the speed of sound and temperature, therefore, ultrasonic ranging accuracy is affected by temperature is relatively large, in order to achieve high precision ultrasonic ranging, must consider the influence of temperature change on the speed of sound thus, the necessary compensation. Based on the AT89S52 microcontroller as the core, designed a kind of ultrasonic ranging system with temperature compensation. The system consists of microcomputer, ultrasonic transmitting and receiving module, temperature compensation module and information display module. A temperature compensation module with temperature sensor D Sl8B20 collecting temperature, velocity correction in time according to the corresponding relationship between ultrasonic velocity and temperature, changes in temperature caused by the error correction of ultrasonic ranging system.


一、前言

課題背景:

在日常生活和工業控制中,經常會需要進行位置監控和距離測量,可用的方法很多,有激光測距、雷達測距、超聲波測距。與微波雷達測距、激光測距相比,超聲波具有方向指向性強、能量消耗比較緩慢、在介質中的傳播距離比較遠等優點。但是,由于聲音的傳播速度和溫度有關,一般情況下,溫度每變化1℃,聲速會變化大約0. 61 m/s。因此,超聲波測距的精度受溫度影響比較大,要實現高精度的超聲波測距,須考慮溫度變化對聲速的影響,從而進行必要的補償。

國內外發展現狀:

近十年來,國內科研人員在超聲波回波信號處理方法、新型超聲波換能器研發、超聲波發射脈沖選取等方面進行了大量理論分析與研究,并針對超聲測距的常見影響因素提出溫度補償、接收回路串入自動增益調節環節等提高超聲波測距精度的措施。目前國產低功率超聲波探頭,一般不能用于探測15m以外的物體,美國AIRMAR公司生產的Airducer AR30超聲波傳感器的作用距離可達30m,但價格較高。隨著傳感器和單片機控制技術的不斷發展,非接觸式檢測技術已被廣泛應用于多個領域。

課題設計要求:

具體要求為:

1)利用超聲波傳感器實現非接觸式測距,并用溫度傳感器進行超聲波補償。要求學生在查閱各傳感器資料及其應用方法的基礎上,設計出硬件結構圖。

2)掌握根據硬件結構圖設計并繪制硬件電路圖,并搭建、安裝和制作硬件。

3)掌握利用各種儀器設備,如萬用表、示波器等,對硬件進行調試的基本方法

4)記錄實驗數據,采用數據處理方法和相關軟件對實驗數據進行處理并加以分析,與真實數據結果對比,得出有意義的結論。

二、整體方案設計

系統方案結構框圖:

方案一:

         

系統工作原理和功能:

本系統工作時,由單片機提供 40 k Hz 的脈沖信號,經放大后通過超聲波發射器輸出。超聲波在空氣中傳播,在到達被測物體時被反射回來,由超聲波接收器接收。當超聲波接收器接收到反射波時,先經放大器放大,用鎖相環電路檢波處理后產生一個負跳變,在 INT0 產生一個中斷請求信號,單片機響應外部中斷請求,執行外部中斷服務程序。單片機在啟動發射電路時同時啟動單片機內部的定時器 T0,利用定時器記錄超聲波發射的時間和收到反射波的時間。在外部中斷程序中讀取時間差,計算距離。其中溫度補償環節為:溫度補償環節,設超聲波速度為v,往返時間為 t,溫度為 T,v = 331.5 + 0. 61T,距離為速度除以二可得。

方案二:

系統工作原理和功能:

接口向觸發引腳發送≥10 μs 的脈沖觸發信號,該模塊內部將發出 8 個 40 kHz 周期電平并檢測回波,一旦檢測到有回波信號,則 3 腳輸出回響信號,所測的距離與回響信號的脈沖寬度成正比,由此可通過發射信號到收到回響信號的時間間隔計算得到距離。

超聲波時序圖如下:

   

方案比較選擇:有系統總體框圖可以看出方案二的結構更為簡單,而且HC-SR04模塊將超聲波發射、接收電路集成在一起,使用方便,價格也便宜,所以選擇方案二。
三、傳感器工作原理

1)溫度傳感器DS18B20

       DS18B20的引腳圖如右圖所示:其中UDD接電源,GND接地,I/O為數據輸入/輸出口。                                                  
DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s減為750ms。 DS18B20測溫原理如圖所示。圖中低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器1的預置值。



  • 超聲波模塊HCSR04


HC-SR04模塊的引腳圖如圖所示:

                       VCC              Trig   Echo   GND

Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd,工作原理如下:

(1)采用IO 觸發測距,給至少10us 的高電平信號;

(2)模塊自動發送8 個40khz 的方波,自動檢測是否有信號返回;

(3)有信號返回,通過IO 輸出一高電平,高電平持續的時間就是

(4)超聲波從發射到返回的時間.測試距離=(高電平時間*聲速)/2;

四、硬件電路設計

整體硬件設計原理圖如下圖所示:

1)溫度測量模塊


溫度測量選擇DS18B20,單片機口接 DS18B20 數據總線,控制 DS18B20 進行溫度轉換和傳輸數據,數據總線接10kΩ的上拉電阻,作用是使總線控制器在溫度轉換期間無需一直保持高電平。DS18B20 protel 硬件圖如右圖所示。

  • 超聲波測距模塊
本次設計采用HC-SR04模塊,采用單片機IO 觸發測距,給至少10us 的高電平信號;模塊自動發送8 個40khz 的方波,自動檢測是否有信號返回;有信號返回,通過IO 輸出一高電平,高電平持續的時間就是超聲波從發射到返回的時間.測試距離=(高電平時間*聲速)/2;HC-SR04硬件protel圖如下圖所示:

  • 數碼管顯示模塊
本次顯示用到數碼管為共陰極數碼管,顯示內容為溫度值和檢測的距離值,單片機控制其段選碼和位選碼就能控制數碼管的點亮情況,同時本次試驗所用的數碼管的顯示方式為動態顯示。數碼管的protel硬件圖如下圖所示:

五、軟件設計及仿真調試

  • 軟件設計流程圖:
                                       
主函數流程圖

               
加入溫度傳感和超聲波模塊后的流程
  • 仿真調試
由于在proteus軟件中找不到超聲波傳感器,所以就用了一個方波作為單片機接收到的回響信號,仿真結果如下圖所示:
圖中左邊顯示的是溫度29度,右邊顯示的是測得的距離290cm。

改變回響信號頻率或改變溫度值,測得的距離也將不同,如下圖所示:


增大回響信號頻率,顯示結果如下:

增大溫度值,顯示結果如下:

同時還可以用示波器觀察發射信號和回響信號波形,如下圖所示:

圖中黃色的代表發射信號脈沖(20us左右),紅色代表回響信號波形。


最后做出的硬件調試結果如圖所示:左邊顯示的是補償前的距離,右邊顯示的是補償后的距離


      

  

   

由上圖可以看出溫度對超聲波測距有影響,而且隨著距離的增大,所補償的距離也越多,這是因為距離越大,超聲波傳播時間也越長,這樣溫度對聲速的變化也會凸顯出來。

六、設計總結及改進思路

    1)系統技術特點:

本次課程設計采用HC-SR04超聲波測距模塊測出距離,考慮到溫度對聲速的影響,需要將溫度值檢測出來,然后修正聲速值,單片機發送一個大于10us的發射脈沖,然后檢測HC-SR04模塊的回響信號的高電平時間,測試距離=(高電平時間*聲速)/2,然后將距離值同數碼管顯示出來。

     2)技術層面的改進:

本次課程設計顯示模塊采用的是數碼管,實驗時發現顯示時會出現閃爍問題,還存在顯示空間不足的缺陷,8位數碼管只能顯示溫度值和補償后的距離值,或者顯示補償前后的距離值,因此可以采用lcd液晶顯示,既解決了顯示閃爍的問題,又有足夠的空間顯示。

    為期將近三天的傳感及檢測課程設計,在克服一個又一個困難的過程中,鞏固了我們所學的理論知識,還培養我的實際動手能力,還培養我們在實際的工程設計中查閱專業資料、工具書或參考書,掌握工程設計手段和軟件工具,并能用設計報告表達設計思想和結果的能力。

這次課程設計不僅培養了我的設計思想和仿真及編寫程序的能力,更檢驗了我對本門課學習的情況,培養我們嚴肅認真的學習態度。過程中我通過集體討論設計方法、設計步驟等問題,使我感受到團隊合作的重要性。真正做到理論聯系實際,提高動手能力和分析問題、解決問題的能力,并能用設計報告表達設計思想和結果的能力正是我們這次課程設計的目的。


單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #include <intrins.h>
  5. sbit RX=P2^1;
  6. sbit TX=P2^0;
  7. unsigned long  time=0;
  8. unsigned int  timer=0;
  9. unsigned char posit=0;
  10. unsigned long S=0;
  11. unsigned long S0=0;
  12. uchar c[7];
  13. uint temp;// variable of temperature
  14. uint t;
  15. float v;
  16. bit flag1;            // sign of the result positive or negative
  17. bit flag =0;
  18. sbit  DS=P2^2;           //define interface
  19. sbit  dula=P2^6;
  20. sbit  wela=P2^7;
  21. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  22.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  23. unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
  24.                         0x87,0xff,0xef};
  25. unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  26. void delay(uint count)      //delay
  27. {
  28.   uint i;
  29.   while(count)
  30.   {
  31.     i=200;
  32.     while(i>0)
  33.     i--;
  34.     count--;
  35.   }
  36. }
  37. void dsreset(void)       //send reset and initialization command
  38. {
  39.   uint i;
  40.   DS=0;
  41.   i=103;
  42.   while(i>0)i--;
  43.   DS=1;
  44.   i=4;
  45.   while(i>0)i--;
  46. }

  47. bit tmpreadbit(void)       //read a bit
  48. {
  49.    uint i;
  50.    bit dat;
  51.    DS=0;i++;          //i++ for delay
  52.    DS=1;i++;i++;
  53.    dat=DS;
  54.    i=8;while(i>0)i--;
  55.    return (dat);
  56. }

  57. uchar tmpread(void)   //read a byte date
  58. {
  59.   uchar i,j,dat;
  60.   dat=0;
  61.   for(i=1;i<=8;i++)
  62.   {
  63.     j=tmpreadbit();
  64.     dat=(j<<7)|(dat>>1);
  65.   }
  66.   return(dat);
  67. }

  68. void tmpwritebyte(uchar dat)   //write a byte to ds18b20
  69. {
  70.   uint i;
  71.   uchar j;
  72.   bit testb;
  73.   for(j=1;j<=8;j++)
  74.   {
  75.     testb=dat&0x01;
  76.     dat=dat>>1;
  77.     if(testb)     //write 1
  78.     {
  79.       DS=0;
  80.       i++;i++;
  81.       DS=1;
  82.       i=8;while(i>0)i--;
  83.     }
  84.     else
  85.     {
  86.       DS=0;       //write 0
  87.       i=8;while(i>0)i--;
  88.       DS=1;
  89.       i++;i++;
  90.     }

  91.   }
  92. }

  93. void tmpchange(void)  //DS18B20 begin change
  94. {
  95.   dsreset();
  96.   delay(1);
  97.   tmpwritebyte(0xcc);  // address all drivers on bus
  98.   tmpwritebyte(0x44);  //  initiates a single temperature conversion
  99. }

  100. uint tmp()               //get the temperature
  101. {
  102.   float tt;
  103.   uchar a,b;
  104.   dsreset();
  105.   delay(1);
  106.   tmpwritebyte(0xcc);
  107.   tmpwritebyte(0xbe);
  108.   a=tmpread();
  109.   b=tmpread();
  110.   temp=b;
  111.   temp<<=8;             //two byte  compose a int variable
  112.   temp=temp|a;
  113.   tt=temp*0.0625;
  114.   temp=tt*10+0.5;
  115.   return temp;
  116. }

  117. /*void zh(uint temp)
  118. {
  119.    uchar A1,A2,A2t,A3;
  120.    A1=temp/100;
  121.    A2t=temp%100;
  122.    A2=A2t/10;
  123.    A3=A2t%10;
  124.    c[0]=table[A1];
  125.    c[1]=table1[A2];
  126.    c[2]=table[A3];

  127. }*/
  128.     void Conut()
  129. {
  130. ime=TH0*256+TL0;
  131. time=time*12/11.0592;
  132. TH0=0;
  133. TL0=0;
  134. v=331.5+0.607*t;
  135. S0=(long)(0.17*time);
  136. S= (long)(time*v/2000);     //??????CM
  137. if((S>=4000)||flag==1) //
  138. {            
  139. flag=0;
  140.                             S=0;
  141. //c[4]=0x30;
  142. //c[5]=0x50;
  143.               //c[6]=0x50;
  144. //              c[7]=0x79;
  145.                            
  146.               }
  147. else
  148. {
  149. c[4]=table[S%10000/1000];
  150. c[5]=table[S%1000/100];
  151. c[6]=table1[S%100/10];
  152. c[7]=table[S%10/1];
  153. c[0]=table[S0%10000/1000];
  154. c[1]=table[S0%1000/100];
  155. c[2]=table1[S0%100/10];
  156. c[3]=table[S0%10/1];
  157.                 }
  158. }

  159. /********************************************************/
  160.    void  zd3()  interrupt 3                             //T1
  161.   {
  162. TH1=0xf8;
  163. TL1=0x30;
  164. timer++;
  165. if(timer>=100)
  166. {
  167. timer=0;
  168. flag1=1;
  169.             
  170. }
  171.   }
  172. void zd0() interrupt 1
  173.   {
  174.     flag=1;
  175.   }

  176. void hc_sr04()
  177. {
  178. TX=1;                                                          //800MS
  179. _nop_();
  180. _nop_();
  181. _nop_();
  182. _nop_();
  183. _nop_();
  184. _nop_();
  185. _nop_();
  186. _nop_();
  187. _nop_();
  188. _nop_();
  189. _nop_();
  190. _nop_();
  191. _nop_();
  192. _nop_();
  193. _nop_();
  194. _nop_();
  195. _nop_();
  196. _nop_();
  197. _nop_();
  198. _nop_();
  199. _nop_();
  200. TX=0;
  201. …………
  202. …………
  203. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載(下文底部可下載完整的word格式論文+原理圖):
http://www.zg4o1577.cn/bbs/dpj-112538-1.html



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:666657 發表于 2019-12-18 00:54 來自手機 | 只看該作者
超聲波測距
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久av | 日本成人二区 | 在线伊人网| 欧美精品网 | 欧美日韩视频在线播放 | 日韩在线欧美 | 全部免费毛片在线播放网站 | 3级毛片| av国产精品毛片一区二区小说 | 久久久久久久一区 | 亚洲欧美中文字幕在线观看 | 欧美乱大交xxxxx另类电影 | 成年人黄色一级片 | 精品av久久久久电影 | 午夜精品一区二区三区在线视 | 午夜视频一区二区 | 欧美福利影院 | 久久国产美女视频 | 久草在线在线精品观看 | 天天操操 | 国内久久 | 久久久蜜桃一区二区人 | 成人午夜在线观看 | 久久国产精品-国产精品 | 久久久综合色 | 91热在线| 欧美一级毛片久久99精品蜜桃 | 欧美日韩精品在线免费观看 | 日韩91| 欧美日韩国产一区二区 | 天天搞天天搞 | 久久99精品久久 | 久久久免费 | 99精品国产一区二区三区 | 欧美a区 | 狠狠亚洲| 中文字幕国产 | 色婷婷综合成人av | 天堂素人约啪 | 成人二区 | 日本免费一区二区三区 |