找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6539|回復(fù): 2
收起左側(cè)

超聲波精確測(cè)距 毫米級(jí)測(cè)距時(shí)間分辨率將如何改?

[復(fù)制鏈接]
ID:168638 發(fā)表于 2017-8-14 13:24 | 顯示全部樓層 |閱讀模式
5黑幣
  1. /***********************************************************************************************************/
  2. //HC-SR04 超聲波測(cè)距模塊 DEMO 程序
  3. //晶振:11.0592
  4. //接線:模塊TRIG接 P1.2  ECH0 接P1.1
  5. //串口波特率9600
  6. //精度為米級(jí)別的,毫米級(jí)測(cè)距時(shí)間分辨率將如何改?
  7. /***********************************************************************************************************/         
  8. #include"chao.h"

  9. unsigned int  time=0;
  10. unsigned int  timer=0;
  11. float         S=0;
  12. bit           flag =0;
  13.         
  14. /*******************************************************************************
  15. * 函 數(shù) 名       : Conut
  16. * 函數(shù)功能                 : 數(shù)據(jù)處理
  17. * 輸    入       : 無(wú)
  18. * 輸    出             : 距離S
  19. *******************************************************************************/
  20. float Conut(void)
  21. {
  22.         time=TH0*256+TL0;
  23.         TH0=0;
  24.         TL0=0;
  25.         S=(time*1.87)/100;     //算出來(lái)是CM
  26.         if(flag==1)                    //超出測(cè)量
  27.         {
  28.                 flag=0;
  29.                  S=0;
  30.                   return S;
  31.         }
  32.         return S;
  33. }

  34. /*******************************************************************************
  35. * 函 數(shù) 名       : delayms
  36. * 函數(shù)功能                 : 延時(shí)函數(shù)
  37. * 輸    入       : ms
  38. * 輸    出             : 無(wú)
  39. *******************************************************************************/
  40. void delayms(unsigned int ms)
  41. {
  42.         unsigned char i=100,j;
  43.         for(;ms;ms--)
  44.         {
  45.                 while(--i)
  46.                 {
  47.                         j=10;
  48.                         while(--j);
  49.                 }
  50.         }
  51. }

  52. /*******************************************************************************
  53. * 函 數(shù) 名       : StartModule
  54. * 函數(shù)功能                 : 啟動(dòng)模塊
  55. * 輸    入       : 無(wú)
  56. * 輸    出             : 無(wú)
  57. *******************************************************************************/
  58. void  StartModule()                        
  59. {
  60.           Trig = 1;                                             //啟動(dòng)一次模塊
  61.           _nop_();
  62.           _nop_();
  63.           _nop_();
  64.           _nop_();
  65.           _nop_();
  66.           _nop_();
  67.           _nop_();
  68.           _nop_();
  69.           _nop_();
  70.           _nop_();
  71.           _nop_();
  72.           _nop_();
  73.           _nop_();
  74.           _nop_();
  75.           _nop_();
  76.           _nop_();
  77.           _nop_();
  78.           _nop_();
  79.           _nop_();
  80.           _nop_();
  81.           _nop_();
  82.           Trig = 0;
  83. }

  84. /*******************************************************************************
  85. * 函 數(shù) 名       : ChaoShengBoInit
  86. * 函數(shù)功能                 : 超聲波模塊初始化函數(shù),允許T0中斷,開(kāi)啟定時(shí)器,開(kāi)啟總中斷
  87. * 輸    入       : 無(wú)
  88. * 輸    出             : 無(wú)
  89. *******************************************************************************/
  90. void ChaoShengBoInit()
  91. {
  92.         TMOD=0x21;                   //設(shè)T0為方式1,GATE=1;
  93.         SCON=0x50;
  94.         TH1=0xFD;
  95.         TL1=0xFD;
  96.         TH0=0;
  97.         TL0=0;
  98.         TR0=1;  
  99.         ET0=1;             //允許T0中斷
  100.         TR1=1;                           //開(kāi)啟定時(shí)器
  101.         TI=1;
  102.         EA=1;                           //開(kāi)啟總中斷
  103. }

  104. /*******************************************************************************
  105. * 函 數(shù) 名       : CaiJi
  106. * 函數(shù)功能                 : 超聲波數(shù)據(jù)采集并轉(zhuǎn)換為數(shù)字信號(hào)
  107. * 輸    入       : 無(wú)
  108. * 輸    出             : 無(wú)
  109. *******************************************************************************/
  110. void CaiJi(void)
  111. {  
  112.          StartModule();
  113.          while(!Echo);                //當(dāng)RX為零時(shí)等待
  114.          TR0=1;                            //開(kāi)啟計(jì)數(shù)
  115.          while(Echo);                //當(dāng)RX為1計(jì)數(shù)并等待
  116.          TR0=0;                                //關(guān)閉計(jì)數(shù)
  117.      Conut();                        //計(jì)算
  118.          delayms(100);                //100MS

  119. }  

復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:111517 發(fā)表于 2017-8-20 00:08 | 顯示全部樓層
網(wǎng)上看的一些資料說(shuō)這個(gè)模塊精準(zhǔn)度最大也就在在3mm,自己實(shí)際用過(guò)達(dá)到這么高的精確度,如果非要那么高的精確度的話是不是需要采取補(bǔ)償手段。

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-8-21 10:16 | 顯示全部樓層
超聲波傳遞速率與介質(zhì)、溫度有關(guān)。探測(cè)精度有絕對(duì)精度和相對(duì)精度之分,把概念搞清楚。什么3mm?如果是倒車測(cè)距,絕對(duì)精度也就是0.5cm.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表