汪揚埔
摘 要 本設(shè)計采用51單片機(jī)來控制整個系統(tǒng)。通過單片機(jī)控制步進(jìn)電機(jī)從而控制超聲波探頭進(jìn)行多個方向的測距,然后通過單片機(jī)計算出容積。最后通過顯示屏顯示出相應(yīng)的數(shù)據(jù)。
關(guān)鍵詞 AT89C52 超聲波 步進(jìn)電機(jī) 測距
中圖分類號:TP873 文獻(xiàn)標(biāo)識碼:A
整個硬件電路由超聲波發(fā)射電路、超聲波接收電路、電源電路、顯示電路等模塊組成。探頭的信號經(jīng)單片機(jī)綜合分析處理,實現(xiàn)了超聲波測距儀的測距功能。在此基礎(chǔ)上設(shè)計了系統(tǒng)的總體方案,最后通過硬件和軟件實現(xiàn)了各個功能模塊。相關(guān)部分附有硬件電路圖、程序流程圖,給出了系統(tǒng)構(gòu)成、電路原理及程序設(shè)計。此系統(tǒng)具有易控制、工作可靠、測距準(zhǔn)確度高、可讀性強(qiáng)和流程清晰等優(yōu)點。實現(xiàn)后的作品可用于需要測量容積參數(shù)的各種應(yīng)用場合。
1系統(tǒng)的硬件設(shè)計
1.1單片機(jī)最小系統(tǒng)
本系統(tǒng)采用的單片機(jī)是AT89C52單片機(jī)。這一款單片機(jī)的工作性能非常穩(wěn)定,能夠完全滿足本設(shè)計的要求。很好的兼容了本設(shè)計的各個硬件模塊,使各個模塊能夠協(xié)同工作,實現(xiàn)本設(shè)計的要求。
1.2電源電路
為方便起見,本設(shè)計采用的是5v穩(wěn)壓電源供電,通過數(shù)據(jù)線輸入+5V穩(wěn)恒直流電作為電路的電源。LED是電源指示燈,通電后會發(fā)光。
1.3復(fù)位電路
復(fù)位功能是一個好的設(shè)計必不可少的功能,由于在系統(tǒng)運行的過程中,容易發(fā)生死機(jī),系統(tǒng)命令出錯等現(xiàn)象。我們通過復(fù)位按鍵就能夠使系統(tǒng)立刻終止正在進(jìn)行的指令并且恢復(fù)到最初始的工作狀態(tài)。本設(shè)計采用的是傳統(tǒng)的電平式開關(guān)與上電復(fù)位電路,從而能使運行中的系統(tǒng)經(jīng)過手動干預(yù)使系統(tǒng)恢復(fù)到初始工作狀態(tài)。
1.4顯示電路
顯示電路時一個設(shè)計的最直觀的部分,本設(shè)計的采用顯示屏是TC1602液晶顯示屏。該顯示屏能夠顯示2行16個字的內(nèi)容。該液晶顯示的體積小、重量輕、功耗低、顯示容量大、接入電路簡單方便等優(yōu)點,與傳統(tǒng)的數(shù)碼管相比顯得更精致與美觀。使用時,可將串口與LCD的數(shù)據(jù)線和控制線相連。 TC1602第4腳RS為寄存器選擇,第5腳RW為讀寫信號線,第6腳E為使能端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。我為了方便布線工作,單片機(jī)端的D0~D7端口接到LCD1602的D1~D7,端口的順序剛好完全是相反的。因此在軟件編寫過程中時需要進(jìn)行相應(yīng)的處理,從而使讀取數(shù)據(jù)更準(zhǔn)確清晰。
1.5步進(jìn)電機(jī)電路
本系統(tǒng)采用步進(jìn)電機(jī)來控制超聲波探頭的旋轉(zhuǎn),使超聲波探頭自動測出三個方向的距離。本設(shè)計采用的是42步進(jìn)電機(jī)42BY250C,工作電壓為5v扭矩為0.55nm長度為48MM,工作溫度為-40℃到50℃范圍內(nèi)。該步進(jìn)電機(jī)的工作能力非常好,符合本設(shè)計的要求。我們通過單片機(jī)對于步進(jìn)電機(jī)的控制,使得超聲波探頭在水平和垂直的方向上能夠準(zhǔn)確的測量出距離。
2系統(tǒng)的軟件設(shè)計
2.1超聲波發(fā)送子程序及超聲波接收中斷子程序
超聲波子程序的功能是通過控制兩個端口來發(fā)射超聲波。在發(fā)射超聲波的同時啟動計時器T1開始工作,記錄下傳播的起始時間。超聲波測距模塊的工作方式首先通過外部中斷1來不斷檢測反射回來的超聲波信號,當(dāng)反射回來的超聲波信號進(jìn)入到檢測范圍以內(nèi)時就能立刻檢測到,并且此時系統(tǒng)會立即啟動中斷程序,同時使計時器T1停止計時,這種情況下表示測距成功。如果當(dāng)計時器超出計時范圍仍然沒能夠檢測到反射回來的超聲波信號時,這種情況的出現(xiàn)一般是由測量角度過大或者被測物處于測量盲區(qū)范圍導(dǎo)致的,此時定時器T1的中斷會將外中斷1關(guān)閉,這種情況下表示測距結(jié)果是失敗的。
2.2距離計算子程序
測量出超聲波往返時間之后,就可以通過計算公式進(jìn)行對于距離的測算。具體的程序如下:void Conut(void)
{ ultrasonic_time = TH1*256+TL1;
TH1=0;
TL1=0;
// time是us級別的,t/1000/1000 * 340m/s / 2 = t*1.7/1000/10 m = t*1.7 / 100 cm
// 下在的S算出來是mm級別的t/1000/100 m
S = (ultrasonic_time*1.7)/100;
if( (S >= 700) || flag == 1)
{ flag=0;
distance_buffer[0] = '-';
distance_buffer[1] = '-';
distance_buffer[2] = '-';
}
else
{
distance_buffer[0] = S/100 + 0X30;
distance_buffer[1] = S%100/10 + 0X30;
distance_buffer[2] = S%10 + 0X30;
}
2.3實現(xiàn)體積計算的程序
本設(shè)計的最終目的是對于規(guī)則房屋體積的測量。我們先通過對于三個方向的距離進(jìn)行測算,同時取得一個準(zhǔn)確值。之后,通過V=X*Y*Z這個計算式對于體積進(jìn)行計算。
2.4顯示子程序
LCD1602顯示屏的主要功能是能夠方便在距離選取時選擇一個比較穩(wěn)定的值。同時顯示出測試的距離與計算得出的體積。
3系統(tǒng)的測試
當(dāng)系統(tǒng)的硬件和軟件設(shè)計都完成時,最后需要對系統(tǒng)的功能進(jìn)行測試,查詢設(shè)計時的錯誤并修改,最終完成整個溫濕度控制系統(tǒng)的設(shè)計。根據(jù)超聲波傳播的特性,距離測量時必須滿足以下的條件:(1)被測目標(biāo)必須垂直于超聲波測距儀。(2)被測目標(biāo)表面必須要平坦。(3)測量時在超聲波測距儀周圍沒有其他可反射超聲波的物體。因此當(dāng)不滿足以下的條件時,就會有很大的幾率不能接收到超聲波,從而導(dǎo)致沒有測量結(jié)果。測試結(jié)果如表1:
經(jīng)過實際的測量結(jié)果顯示,測量得到的值普遍存在誤差,測量值都要比準(zhǔn)確值小。雖然說本設(shè)計的測量精度能夠到達(dá)一定的高度,但是由于超聲波測距在進(jìn)行過程中會受很多因素的影響。同時,由于超生波自身的盲區(qū)問題以及發(fā)射探頭與接收探頭之間的共振問題也會使測量的精度受到影響。
4結(jié)論
利用51單片機(jī)控制的體積測量儀結(jié)構(gòu)簡單,使用方便。經(jīng)過實際測試證明,本設(shè)計的性能穩(wěn)定,能夠測量出量程范圍以內(nèi)的體積參數(shù),且制作的成本較低、有較高的性價比。由于本設(shè)計在測量距離時容易產(chǎn)生誤差,在一般的體積測量的應(yīng)用中可忽略不計;但在相對精度要求較高的高科技應(yīng)用方面,我們不能忽略這點誤差,我們一般可以通過改變硬件的本身精度實現(xiàn)對超聲波測距的高精度測量或根據(jù)任務(wù)的需求在程序中編入相應(yīng)的距離補(bǔ)償程序,使得本設(shè)計的精度達(dá)到更高的標(biāo)準(zhǔn)。