導航:首頁 > 操作系統 > 單片機超聲波測距

單片機超聲波測距

發布時間:2022-02-21 00:53:16

① 51單片機超聲波測距最遠距離是多少

51單片機超聲波測距最遠距離是30m。

提高超聲波測試距離的辦法有三種:

1、降低超聲波的頻率;

2、加大超聲波發射功率;

3、提高超聲波接收的靈敏度,提高放大電路的增益;如果用的是模塊,要注意它的技術文檔。

51單片機的優點:

51單片機之所以成為經典,成為易上手的單片機主要有以下特點:從內部的硬體到軟體有一套完整的按位操作系統,稱作位處理器,處理對象不是字或位元組而是位。不但能對片內某些特殊功能寄存器的某位進行處理,如傳送、置位、清零、測試等,還能進行位的邏輯運算,其功能十分完備,使用起來得心應手。

② 單片機超聲波測距系統原理

超聲波測距學習板,可應用於汽車倒車、建築施工工地以及一些工業現場的位置監控,也可用於如液位、井深、管道長度的測量等場合。要求測量范圍在0.27~4.00m,測量精度1cm,測量時與被測物體無直接接觸,能夠清晰穩定地顯示測量結果。超聲波測距原理
超聲波發生器內部結構有兩個壓電晶片和一個共振板。當它的兩極外加脈沖信號,其頻率等於壓電晶片的固有振盪頻時,壓電晶片將會發生共振,並帶動共振板振動,便產生超聲波。反之,如果兩電極間未外加電壓,當共振板接收到超聲波本時,將壓迫壓電晶片作振動,將機械能轉換為電信號,就成為超聲波接收器。在超聲探測電路中,發射端得到輸出脈沖為一系列方波,其寬度為發射超聲的時間間隔,被測物距離越大,脈沖寬度越大,輸出脈沖個數與被測距離成正比。超聲測距大致有以下方法:① 取輸出脈沖的平均值電壓,該電壓 (其幅值基本固定 )與距離成正比,測量電壓即可測得距離;② 測量輸出脈沖的寬度,即發射超聲波與接收超聲波的時間間隔 t,故被測距離為 S=1/2vt。本測量電路採用第二種方案。由於超 聲波 的聲速 與溫度有關,如果溫度變化不大,則可認為聲速基本不變 。如果測距精度要求很高,則應通 過溫度補償 的方法加以校正。超聲波測距適用於高精度的中長距離測量。因為超聲波在標准空氣中的傳播速度為331.45米/秒,由單片機負責計時,單片機使用12.0M晶振,所以此系統的測量精度理論上可以達到毫米級。
採用AT89C51或AT89S51單片機,晶振:12M,單片機用P1.0口輸出超聲波換能器所需的40K方波信號,利用外中斷0口監測超聲波接收電路輸出的返回信號,顯示電路採用簡單的4位共陽LED數碼管,斷碼用74LS244,位碼用8550驅動.
超聲波測距的演算法設計: 超聲波在空氣中傳播速度為每秒鍾340米(15℃時)。X2是聲波返回的時刻,X1是聲波發聲的時刻,X2-X1得出的是一個時間差的絕對值,假定X2-X1=0.03S,則有340m×0.03S=10.2m。由於在這10.2m的時間里,超聲波發出到遇到返射物返回的距離。
硬體部分採用AT89C51或AT89S51單片機,晶振:12M,單片機用P1.0口輸出超聲波換能器所需的40K方波信號,利用外中斷0口監測超聲波接收電路輸出的返回信號,顯示電路採用簡單的4位共陽LED數碼管,斷碼用74LS244,位碼用8550驅動. 主要由單片機系統及顯示電路、超聲波發射電路和超聲波檢測接收電路三部分組成。採用AT89S51來實現對CX20106A紅外接收晶元和TCT40-10系列超聲波轉換模塊的控制。單片機通過P1.0引腳經反相器來控制超聲波的發送,然後單片機不停的檢測INT0引腳,當INT0引腳的電平由高電平變為低電平時就認為超聲波已經返回。計數器所計的數據就是超聲波所經歷的時間,通過換算就可以得到感測器與障礙物之間的距離。

1.單片機系統及顯示電路
單片機採用89S51或其兼容系列。採用12MHz高精度的晶振,以獲得較穩定的時鍾頻率,減小測量誤差。
單片機用P1.0埠輸出超聲波轉化器所需的40KHz方波信號,利用外中斷0口檢測超聲波接受電路輸出的返回信號。顯示電路採用簡單實用的4位共陽LED數碼管,段碼用74LS244驅動,位碼用PNP三極體驅動。單片機系統及顯示電路如下圖所示.
使用CX20106A集成電路對接收探頭受到的信號進行放大、濾波。其總放大增益80db。以下是CX20106A的引腳注釋。

1腳:超聲信號輸入端,該腳的輸入阻抗約為40kΩ。
2腳:該腳與地之間連接RC串聯網路,它們是負反饋串聯網路的一個組成部分,改變它們的數值能改變前置放大器的增益和頻率特性。增大電阻R1或減小C1,將使負反饋量增大,放大倍數下降,反之則放大倍數增大。但C1的改變會影響到頻率特性,一般在實際使用中不必改動,推薦選用參數為R1=4.7Ω,C1=1μF。
3腳:該腳與地之間連接檢波電容,電容量大為平均值檢波,瞬間相應靈敏度低;若容量小,則為峰值檢波,瞬間相應靈敏度高,但檢波輸出的脈沖寬度變動大,易造成誤動作,推薦參數為3.3μf。
4腳:接地端。
5腳:該腳與電源間接入一個電阻,用以設置帶通濾波器的中心頻率f0,阻值越大,中心頻率越低。例如,取R=200kΩ時,f0≈42kHz,若取R=220kΩ,則中心頻率f0≈38kHz。
6腳: 該腳與地之間接一個積分電容,標准值為330pF,如果該電容取得太大,會使探測距離變短。
7腳:遙控命令輸出端,它是集電極開路輸出方式,因此該引腳必須接上一個上拉電阻到電源端,推薦阻值為22kΩ,沒有接受信號是該端輸出為高電平,有信號時則產生下降。 8腳:電源正極,4.5~5V。
軟硬體調試及性能
超聲波測距儀的製作和調試,其中超聲波發射和接收採用Φ16的超聲波換能器TCT40-16F1(T發射)和TCT40-16S1(R接收),中心頻率為40kHz,安裝時應保持兩換能器中心軸線平行並相距4~8cm,其餘元件無特殊要求。若能將超聲波接收電路用金屬殼屏蔽起來,則可提高抗干擾能力。根據測量范圍要求不同,可適當調整與接收換能器並接的濾波電容C4的大小,以獲得合適的接收靈敏度和抗干擾能力。
硬體電路製作完成並調試好後,便可將程序編譯好下載到單片機試運行。根據實際情況可以修改超聲波發生子程序每次發送的脈沖寬度和兩次測量的間隔時間,以適應不同距離的測量需要。根據所設計的電路參數和程序,測距儀能測的范圍為0.07~5.5m,測距儀最大誤差不超過1cm。系統調試完後應對測量誤差和重復一致性進行多次實驗分析,不斷優化系統使其達到實際使用的測量要求。後續工作需實驗後才能驗證 根據參考電路和集成的電路器件測距范圍有限10m以內為好。

③ AT89C51單片機超聲波測距電路圖

我也要,我自己的電路怎麼都不好使

④ 51單片機超聲波測距代碼是多少

1602液晶顯示 的超聲波模塊程序
介面程序里邊都有、、

#include<reg52.h>
//#include<delay.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit lcdrs=P2^3;
sbit lcden=P2^2;
sbit trig=P2^0; //超聲波發送
//sbit echo=P3^2; //超聲波接受
//P0____________DB0-DB7
uchar dis[]="Disp_HC-SR04";
uchar num[]="0123456789";
uint distance;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}

void HC_init()
{
TMOD=0x09;
TR0=1;
TH0=0;TL0=0;
}

uint HC_jisuan()
{
uint dist,timer;
timer=TH0;
timer<<=8;
timer=timer|TL0;
dist=timer/53; //晶振11.0592MHz 距離cm=微秒us/58
return dist; //1個機器周期是12個時鍾周期 timer*12/(58*11.0592)=timer/53
}

void HC_run()
{
uint tempH=0x00,tempL=0x00;
TH0=0;TL0=0;
trig=0;
trig=1;
delay(1);
trig=0;
while((TH0-tempH!=0||TL0-tempL!=0)||(TH0==0&&TL0==0))
{
tempH=TH0;
tempL=TL0;
}
delay(1);
}

void lcd_write_com(uchar com) //LCD寫指令
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}

void lcd_write_data(uchar date) //LCD寫數據
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}

void lcd_init() //LCD初始化
{
lcden=0;
lcd_write_com(0x38);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
}

void lcd_display(uchar temp)
{
uint i;

lcd_write_com(0x82);
for(i=0;i<12;i++)
{
lcd_write_data(dis[i]);
}

lcd_write_com(0x80+0x41);
lcd_write_data('D');
lcd_write_data('i');
lcd_write_data('s');
lcd_write_data('t');
lcd_write_data('a');
lcd_write_data('n');
lcd_write_data('c');
lcd_write_data('e');
lcd_write_data(':');
lcd_write_data(num[temp/100]);
lcd_write_data(num[temp/10%10]);
lcd_write_data(num[temp%10]);
lcd_write_data('c');
lcd_write_data('m');
}

void main()
{
lcd_init();
HC_init();
while(1)
{
HC_run();
distance=HC_jisuan();
lcd_display(distance);
delay(200);
}
}

⑤ 51單片機超聲波測距代碼

1602液晶顯示 的超聲波模塊程序
介面程序里邊都有、、

#include
//#include
#include

#define uchar unsigned char
#define uint unsigned int

sbit lcdrs=P2^3;
sbit lcden=P2^2;
sbit trig=P2^0; //超聲波發送
//sbit echo=P3^2; //超聲波接受
//P0____________DB0-DB7
uchar dis[]="Disp_HC-SR04";
uchar num[]="0123456789";
uint distance;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}

void HC_init()
{
TMOD=0x09;
TR0=1;
TH0=0;TL0=0;
}

uint HC_jisuan()
{
uint dist,timer;
timer=TH0;
timer<<=8;
timer=timer|TL0;
dist=timer/53; //晶振11.0592MHz 距離cm=微秒us/58
return dist; //1個機器周期是12個時鍾周期 timer*12/(58*11.0592)=timer/53
}

void HC_run()
{
uint tempH=0x00,tempL=0x00;
TH0=0;TL0=0;
trig=0;
trig=1;
delay(1);
trig=0;
while((TH0-tempH!=0||TL0-tempL!=0)||(TH0==0&&TL0==0))
{
tempH=TH0;
tempL=TL0;
}
delay(1);
}

void lcd_write_com(uchar com) //LCD寫指令
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}

void lcd_write_data(uchar date) //LCD寫數據
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}

void lcd_init() //LCD初始化
{
lcden=0;
lcd_write_com(0x38);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
}

void lcd_display(uchar temp)
{
uint i;

lcd_write_com(0x82);
for(i=0;i<12;i++)
{
lcd_write_data(dis[i]);
}

lcd_write_com(0x80+0x41);
lcd_write_data('D');
lcd_write_data('i');
lcd_write_data('s');
lcd_write_data('t');
lcd_write_data('a');
lcd_write_data('n');
lcd_write_data('c');
lcd_write_data('e');
lcd_write_data(':');
lcd_write_data(num[temp/100]);
lcd_write_data(num[temp/10%10]);
lcd_write_data(num[temp%10]);
lcd_write_data('c');
lcd_write_data('m');
}

void main()
{
lcd_init();
HC_init();
while(1)
{
HC_run();
distance=HC_jisuan();
lcd_display(distance);
delay(200);
}
}

⑥ 基於單片機的超聲波測距儀設計需要哪些

需要單片機控制板,超聲波感測器,電源等等。剩下的就是編程序了。如有幫助請採納,手機則點擊右上角的滿意,謝謝!!

⑦ 有誰知道怎麼調試用51單片機來做的超聲波測距儀

T40-16 看這個型號就知道這只是一個單發射的開放式探頭(外徑為16)。如果你的主板是是收發一體的,那型號應該是T/R40-16*,
有信號回來(單發單收的也能收到),回來的信號應經過單片機處理,計算出發射距接收到的時間,才能經顯示電路就成數字距離。有沒電路給你看看。

⑧ 基於單片機的超聲波測距儀

我也出現過這種情況,就是不停的在掃描,數碼管在閃爍,但沒有查出來原因,有可能是代碼問題,有可能是代碼和你的電路不符合一至,你可以用電表把作品查一遍,是否是某一個拐角接錯了,電平不對,導致局部電流不通,晶元的拐角作用都清楚嗎?如果硬體沒問題,那就應該是上述的兩種可能了。

⑨ 51單片機控制的超聲波測距原理圖誰有啊!

單片機測距就是能夠發送接收超聲波就行了,沒有什麼測距原理圖之說,只要能夠發送接收就行了,發送接收的圖我畫在紙上了,沒法模擬啊,具體用單片機寫程序接收處理顯示信號。。。。(計數器和外部中斷)希望能夠幫助你。。。

⑩ 求51單片機超聲波測距代碼

關鍵這個電路是硬體設計好就可以。做一個40KHz的發射電路。。。用2051的一個IO控制電源。。。動態掃描LED顯示
另外再做一個40KHZ的接收電路。。。二者頻率對准。。。接收電路接收到發射信號的時候輸出一個電壓觸發中斷,先接通40KHZ發射電路的工作電壓。。。單片機開始計時。。。等侍接收電路觸發中斷。當有中斷。停止計時。。。
這個時間除以2再乘以超聲波在空氣中傳播速度。應該就是等於你要測試的距離。。。
這是參考源代碼,可能不全,僅作參考!
#include <AT892051.H>
#define unit unsigned int
#define uchar unsigned char
sbit fs="P3"^0; //發送端;
sbit h="P3"^7;
sbit l="P3"^5; //數碼管位選端;
sbit m="P3"^4;
uchar tab[16]=\{0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xA0,0x60,0x25,0x3C,0x23,0x34,0x74};//段碼;
uchar u[3]; //顯示數組;
unit count,b;
void delay(unit a) //延時;
\{
unit m;
for(m=0;m<a;m++);
}
void tx() //從P3.0發出40KHz的脈沖
\{
uchar n,p;
for(n=0;n<40;n++)\{
fs=1;
for(p=0;p<3;p++);
fs=0;
for(p=0;p<2;p++);
fs=0;
}
}
void display(void) //顯示;
\{
for(;;)
\{
l=1;m=1;h=1;
P1=tab[u[0]];
m=0;
delay(10);
m=1;
P1=tab[u[1]];
l=0;
delay(10);
l=1;
P1=tab[u[2]];
h=0;
delay(10);
h=1;
}
}
void rx() interrupt 0 //外部中斷0,接收信號
\{
TR0=0;
count=TH0*256+TL0;
if(count<300);
if(count>=300)
\{
b=(17*count)/1000;
u[0]=b%10;
u[1]=(b/10)%10;
u[2]=(b/100)%10;
display();
}
}
void over()interrupt 1 //T0溢出為無效測量FFF;
\{
u[0]=15;
u[1]=15;
u[2]=15;
display();
}
void main()
\{
fs=0;
delay(8600);
TH0=0;
TL0=0;
TMOD=0x01;
TR0=1;
EA=1;
ET0=1;
PT0=1;
tx();
IT0=1;
IE=0x83;

}

閱讀全文

與單片機超聲波測距相關的資料

熱點內容
給pdf加目錄 瀏覽:472
加密軟體怎麼改安全問題 瀏覽:548
cmd命令ip 瀏覽:946
python輸出單引號雙引號 瀏覽:272
腳本編程管理命令 瀏覽:379
小愛音箱pro怎麼自己裝app 瀏覽:118
建立ftp文件夾命令 瀏覽:570
sha1withrsa演算法 瀏覽:453
域名交易系統源碼php 瀏覽:171
求解微分方程數值解的命令有哪些 瀏覽:626
程序員轉時尚傳媒 瀏覽:82
古拳譜pdf 瀏覽:42
一元二次方程無實數根的演算法 瀏覽:352
程序員測試輕松嗎 瀏覽:172
英雄聯盟神魔怎麼綁定伺服器 瀏覽:984
音樂app怎麼換音質 瀏覽:976
python進階客戶流失 瀏覽:282
華為榮耀10伺服器地址 瀏覽:1000
javastring相等判斷 瀏覽:413
程序員考研究生學校 瀏覽:937