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