黑龍江 姬紅旭
基于STC89C52單片機(jī)智能避障小車設(shè)計(jì)
黑龍江 姬紅旭
本文設(shè)計(jì)智能避障小車基于STC89C52單片機(jī)作為小車的避障、遙控、顯示的核心,通過四對紅外發(fā)射和接收模塊對前方的障礙物距離進(jìn)行檢測,從而把反饋的信號送給單片機(jī),由單片機(jī)進(jìn)行分析處理對小車進(jìn)行自動控制躲避障礙物行走。顯示部分分為液晶顯示和LED點(diǎn)陣顯示,是由一塊8x8LED點(diǎn)陣屏進(jìn)行顯示,漢字采用專門的取模軟件進(jìn)行漢字編碼,然后通過軟件經(jīng)動態(tài)掃描顯示出來,使小車有一種動態(tài)的活力感。液晶主要顯示當(dāng)前所處環(huán)境的溫度和當(dāng)時(shí)的時(shí)間,時(shí)間可以由按鍵進(jìn)行設(shè)置,遙控部分主要是為了人為的對小車進(jìn)行干預(yù),使小車能根據(jù)個(gè)人喜好設(shè)置行走路線,獲得人機(jī)溝通的樂趣。
單片機(jī);8x8點(diǎn)陣屏;遙控;智能
(一)小車能夠?qū)崿F(xiàn)自動躲避在車前方的障礙物,達(dá)到智能的效果。
(二)時(shí)間和溫度顯示功能:液晶顯示的前六位顯示時(shí)分秒,后兩位顯示當(dāng)前的溫度,時(shí)間具有可調(diào)功能。
(三)遙控功能:遙控器可以遙控小車,人為干預(yù)小車的行走路線,實(shí)現(xiàn)人性化的設(shè)計(jì)。
(四)小車還有自動走舞步的功能,增加了很多的樂趣。
(五)點(diǎn)陣的顯示功能,可以顯示歡迎詞,8x8 LED點(diǎn)陣顯示屏顯示歡迎詞,其屬于高亮度的顯示屏。
(一)主控電路設(shè)計(jì)
硬件電路設(shè)計(jì):小車的主要控制核心是一塊STC89C52單片機(jī),該單片機(jī)中有一個(gè)8位的微處理器,與通用的微處理器基本相同,同樣包括了運(yùn)算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理。數(shù)據(jù)存儲器片內(nèi)為256個(gè)字節(jié),片外最多可外擴(kuò)至64k字節(jié)。中斷系統(tǒng)具有5個(gè)中斷源,2級中斷優(yōu)先權(quán)。定時(shí)器/計(jì)數(shù)器片內(nèi)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器,具有四種工作方式串行口,1個(gè)全雙工的串行口??捎脕磉M(jìn)行串行通訊,擴(kuò)展并行I/O口,甚至與多個(gè)單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。特殊功能寄存器共有21個(gè),用于對片內(nèi)的各功能部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制寄存器和狀態(tài)寄存器,是一個(gè)具有特殊功能的RAM區(qū)。
下圖是單片機(jī)的最小系統(tǒng)也是單片機(jī)能夠正常運(yùn)行并完成各種性能要求的經(jīng)典電路。
圖1 單片機(jī)最小系統(tǒng)
(二)電動機(jī)驅(qū)動電路設(shè)計(jì)
小車本身采用的是市面上銷售的遙控玩具小車,主要有兩個(gè)電動機(jī)。一個(gè)是動力驅(qū)動部分,主要有電動機(jī)和減齒輪,方向舵也是由電動機(jī)驅(qū)動齒輪帶動前輪進(jìn)行拐彎。為了讓單片機(jī)能夠更好更安全更方便驅(qū)動和控制小車底盤中的兩個(gè)電動機(jī),我采用專門的驅(qū)動芯片L298N輸出的兩路驅(qū)動OUT,1OUT2J接動力部分的電動機(jī)MG1,OUT3OUT4接轉(zhuǎn)向電動機(jī)MG2,驅(qū)動芯片和單片機(jī)的接口也采用了抗干擾光電隔離技術(shù),極大地減少了因?yàn)橥獠侩姶挪▽π≤囘\(yùn)行的干擾,這使小車更好的按照程序來運(yùn)行整體電路圖。如圖所示:
圖2 電動機(jī)驅(qū)動電路
(三)避障電路設(shè)計(jì)
本避障電路的設(shè)計(jì)是采用紅外對管元件對小車前的障礙物進(jìn)行檢測,紅外線對管傳感器分別放置在小車前方,水平互成600角,這樣就可以把發(fā)射的紅外線排布在小車的前方任何范圍,提高小車反應(yīng)及增強(qiáng)避障的能力。當(dāng)四個(gè)中的一個(gè)或多個(gè)(障礙物較大)接收部分的傳感器,就能根據(jù)反射回來的紅外線進(jìn)行自動的調(diào)整,從而使小車的運(yùn)行軌跡達(dá)到自動避障的目的。下圖是傳感器的驅(qū)動及接受電路,其中偵測前方障礙的距離,可以通過調(diào)節(jié)滑動變阻器的阻值,經(jīng)比較處理后,將對應(yīng)的電壓輸出給紅外發(fā)射管,達(dá)到調(diào)節(jié)距離的目的。
圖3 避障電路設(shè)計(jì)
(四)LED點(diǎn)陣電路設(shè)計(jì)
點(diǎn)陣電路的設(shè)計(jì)是本小車的一個(gè)創(chuàng)新之一,點(diǎn)陣屏為小車增添了不少的新奇和樂趣。同時(shí)此屏可以通過電腦隨時(shí)編寫各種歡迎詞語下載到小車上,讓小車有自己獨(dú)特的個(gè)性。LED點(diǎn)陣顯示屏采用市面上銷售的8x8點(diǎn)陣模塊,要想顯示字符或者漢字,那么就要點(diǎn)陣屏進(jìn)行動態(tài)的掃描,而掃描的過程就是讓單片機(jī)在一定的時(shí)間里通過74HC595擴(kuò)展的I/O口輸出低電平來驅(qū)動8x8點(diǎn)陣顯示屏,并根據(jù)程序的要求進(jìn)行點(diǎn)亮,根據(jù)人眼的視覺暫留現(xiàn)象形成一個(gè)靜態(tài)的字符或者是文字,使我要想表的思想通過顯示屏展現(xiàn)出來。點(diǎn)陣屏是由發(fā)光的二極管以矩陣的形式接在一起的,互相獨(dú)立,互不干擾。于是,要想點(diǎn)亮屏幕,驅(qū)動的電流要遠(yuǎn)遠(yuǎn)超過單片機(jī)的驅(qū)動能力。這就對單片機(jī)的I/O提出了更高的要求。因此,對于陰極的驅(qū)動,我用了一個(gè)串轉(zhuǎn)并的芯片74hc595,陽極用的是74ls373芯片,是以總線形式來驅(qū)動的,下面是顯示屏電路的設(shè)計(jì)及芯片資料:
圖4 點(diǎn)陣顯示電路設(shè)計(jì)
(五)溫度電路設(shè)計(jì)
由于本設(shè)計(jì)測量的溫度與常溫相像,對于傳感器的測量范圍沒有太多的要求。所以考慮用總線的溫度傳感器DS18B20,它體積小,總線少,接口方便。為此我采用了如下的設(shè)計(jì)方法,在數(shù)據(jù)線上加了一個(gè)上拉電阻,常用的是4K7,電路如下:
圖5 溫度接口
(六)遙控電路設(shè)計(jì)
遙控電路設(shè)計(jì)是采用專門的解碼和編碼芯片,電路元件少,連接方便,穩(wěn)定性能好。發(fā)射電路采用的是PT2262芯片,設(shè)計(jì)成四個(gè)按鍵,分別是A、B、C、D,單獨(dú)按A是前進(jìn),單獨(dú)按B是后退,單獨(dú)按C是左拐,單獨(dú)按D是右拐,同時(shí)按下ABC小車能夠自動走舞,接受電路用的PT2272經(jīng)過解碼讀出鍵值變成低電平送給單片機(jī),由單片機(jī)處理,讓小車的驅(qū)動電機(jī)執(zhí)行相應(yīng)的功能。
PT2262/2272是臺灣普城公司生產(chǎn)的一種CMOS工藝制造的低功耗、低價(jià)位通用編解碼電路,PT2262/2272最多可有12位(A0-A11)三態(tài)地址端管腳(懸空、接高電平、接低電平),任意組合可提供531441地址碼,PT2262最多可有6位(D0-D5)數(shù)據(jù)端管腳。通常在使用中,我們一般采用8位地址碼和4位數(shù)據(jù)碼,這時(shí)編碼電路PT2262和解碼PT2272的第1~8腳為地址設(shè)定腳,有三種狀態(tài)可供選擇:懸空、接電源正極、接地三種狀態(tài),3的8次方為6561,所以地址編碼不重復(fù)度為6561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用。遙控模塊的生產(chǎn)廠家為了便于生產(chǎn)管理,出廠時(shí)遙控模塊的PT2262和PT2272的八位地址編碼端要全部懸空,這樣用戶可以很方便選擇各種編碼狀態(tài),用戶如果想改變地址編碼,只要將PT2262和PT2272的1~8腳設(shè)置相同即可。例如,將發(fā)射機(jī)的PT2262的第1腳接地,第5腳接正電源,其它引腳懸空,那么接收機(jī)的PT2272只要也第1腳接地,第5腳接正電源,其它引腳懸空就能實(shí)現(xiàn)配對接收。當(dāng)兩者地址編碼完全一致時(shí),接收機(jī)對應(yīng)的D1~D4端輸出約4V互鎖高電平控制信號,同時(shí)VT端也輸出解碼有效高電平信號。用戶可將這些信號加一級放大,便可驅(qū)動繼電器、功率三極管等進(jìn)行負(fù)載遙控開關(guān)操縱。
在具體的應(yīng)用中,外接振蕩電阻可根據(jù)需要進(jìn)行適當(dāng)?shù)恼{(diào)節(jié),阻值越大振蕩頻率越慢,編碼的寬度越大,發(fā)送一幀的時(shí)間越長。一般用2262/1.2M/2272/200K組合的,少量產(chǎn)品用2262/4.7M/2272/820K。
PT2272解碼芯片有不同的后綴,表示不同的功能,有L4/M4/L6/M6之分,其中L表示鎖存輸出,數(shù)據(jù)只要成功接收就能一直保持對應(yīng)的電平狀態(tài),直到下次遙控?cái)?shù)據(jù)發(fā)生變化時(shí)改變。M表示非鎖存輸出,數(shù)據(jù)腳輸出的電平是瞬時(shí)的,而且和發(fā)射端是否發(fā)射相對應(yīng),可以用于類似點(diǎn)動的控制。為了方便程序的下載和小車的調(diào)試,特意設(shè)計(jì)了串口下載電路。此電路和電腦連接非常方便,不需要總是插拔芯片,避免了因?yàn)槎啻蔚牟灏螌?dǎo)致芯片的引腳變形,另外,也為做二次開發(fā)做了準(zhǔn)備,一舉多得。
(一)程序流程圖
(二)主驅(qū)動程序設(shè)計(jì)
軟件設(shè)計(jì)中最難也是最重要的是通過程序把字符液晶和溫度傳感器驅(qū)動起來,為了減少單片機(jī)的I/O端口,液晶屏的驅(qū)動是串口。雖然元件少了,方便了焊接,但是軟件上卻增加了很多的程序。筆者設(shè)計(jì)小車實(shí)現(xiàn)的各種功能是通過把各部分的程序分塊來處理,經(jīng)過編寫調(diào)試運(yùn)行通過后,再把各塊程序再融合到一個(gè)主要程序。
(編輯 劉麗娜)
(作者單位:齊齊哈爾工程學(xué)院)