第一篇:智能循跡小車
專業(yè)創(chuàng)新實(shí)踐實(shí)訓(xùn)報(bào)告
課題名稱 成員 院系 專 業(yè) 指導(dǎo)教師
智能循跡小車
*** 航空工程學(xué)院 電子信息科學(xué)與技術(shù)專業(yè)
***
2016年5月28日
目錄 實(shí)訓(xùn)任務(wù)與內(nèi)容..............................................................1 1.1實(shí)訓(xùn)任務(wù)...................................................................1 1.2 實(shí)訓(xùn)內(nèi)容..................................................................1 2 模塊設(shè)計(jì)....................................................................2 2.1 電路模塊設(shè)計(jì)..............................................................2 2.1.1 硬件電路設(shè)計(jì)............................................................2 2.1.2 軟件程序設(shè)計(jì)............................................................3 2.2 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)..........................................................5 2.2 電源模塊的設(shè)計(jì)............................................................6 2.3 傳感器模塊的設(shè)計(jì)..........................................................6 3 測(cè)試結(jié)果....................................................................7 4 心得體會(huì)....................................................................8 附錄1電路原理圖的總圖........................................................9 附錄2 源程序.................................................................10
實(shí)訓(xùn)任務(wù)與內(nèi)容 1.1實(shí)訓(xùn)任務(wù)
1)熟悉51單片機(jī)集成開發(fā)環(huán)境,運(yùn)用C語(yǔ)言編寫工程文件;
2)熟練應(yīng)用所選用單片機(jī)的內(nèi)部結(jié)構(gòu)、資源、以及軟硬件調(diào)試的設(shè)備的基本方法; 3)自行構(gòu)建基于單片機(jī)的最小系統(tǒng),完成相關(guān)硬件電路的設(shè)計(jì)實(shí)現(xiàn); 1.2 實(shí)訓(xùn)內(nèi)容
基于AT89C52單片機(jī)的智能小車的設(shè)計(jì)與實(shí)現(xiàn),小車完成的主要功能是能夠自主識(shí)別黑色引導(dǎo)線并根據(jù)黑線的走向?qū)崿F(xiàn)快速穩(wěn)定的循線行駛。小車系統(tǒng)以AT89C52單片機(jī)位系統(tǒng)控制處理器;采用紅外傳感獲取賽道的信息,來對(duì)小車的方向和速度進(jìn)行控制。此外,對(duì)整個(gè)控制軟件進(jìn)行設(shè)計(jì)和程序的編制以及程序的調(diào)試,并最終完成軟件和硬件的融合,實(shí)現(xiàn)小車的預(yù)期功能。2 模塊設(shè)計(jì) 2.1 電路模塊設(shè)計(jì) 2.1.1 硬件電路設(shè)計(jì)
圖2.1 驅(qū)動(dòng)系統(tǒng)的原理圖
圖2.2傳感器系統(tǒng)的原理圖
圖2.3電源系統(tǒng)的原理圖
我們選用的是三個(gè)光電開關(guān)進(jìn)行尋跡。光電開關(guān)電源線接入5V的電源,三個(gè)光電開關(guān)分別接入單片機(jī)的P1.0口-P1.2口。采用兩個(gè)L298N芯片作為電機(jī)驅(qū)動(dòng)芯片,步進(jìn)電機(jī)模塊的引腳ENA和ENB分別連接P0.6口和P0.7口;直流電機(jī)模塊的引腳ENA和ENB分別連接P0.4口和P0.5口。模塊的INT1-INT4連接單片機(jī)的P0.0-P0.3口,另一驅(qū)動(dòng)模塊IN為P2.0-P2.3口,OUT1-OUT4連接兩個(gè)直流電機(jī)。
小車進(jìn)入循跡模式后,即開始不停地掃描與探測(cè)器連接的單片機(jī)I/O口,一旦檢測(cè)到某個(gè)I/O口有信號(hào),即進(jìn)入判斷處理程序,先確定4個(gè)探測(cè)器中的哪一個(gè)探測(cè)到了黑線,如果左面第一級(jí)傳感器或者左面第二級(jí)傳感器探測(cè)到黑線,即小車左半部分壓到黑線,車身向右偏出,此時(shí)應(yīng)使小車向左轉(zhuǎn);如果是右面第一級(jí)傳感器或右面第二級(jí)傳感器探測(cè)到了黑線,即車身右半部壓住黑線,小車向左偏出了軌跡,則應(yīng)使小車向右轉(zhuǎn)。在經(jīng)過了方向調(diào)整后,小車再繼續(xù)向前行走,并繼續(xù)探測(cè)黑線重復(fù)上述動(dòng)作。2.1.2 軟件程序設(shè)計(jì)
圖2.4 驅(qū)動(dòng)系統(tǒng)的流程圖 系統(tǒng)總體軟件設(shè)計(jì)綜上所述,本系統(tǒng)主要實(shí)現(xiàn)的各個(gè)模塊算法為:電機(jī)驅(qū)動(dòng)算法,尋跡算法,測(cè)速算法,LCD顯示算法。系統(tǒng)總體程序框圖如圖11所示。其中在小車尋跡的過程中,會(huì)不斷調(diào)用測(cè)速算法,并通過LCD將實(shí)時(shí)速度顯示出來。各個(gè)數(shù)的調(diào)用關(guān)系為了控制電機(jī)1和電機(jī)2PWM信號(hào)的占空比,設(shè)置了兩個(gè)變量DutyCycle1和DutyCycle2,這兩個(gè)變量的值可以作為控制電機(jī)移動(dòng)函數(shù)的參數(shù)控制電機(jī)的速度。規(guī)定當(dāng)DutyCycle的值小于time_count時(shí)電機(jī)的使能端輸出1,反之輸出0,這樣就可以改變PWM信號(hào)占空比,控制電機(jī)的轉(zhuǎn)速了。小車轉(zhuǎn)向控制小車轉(zhuǎn)向控制::小車移動(dòng)中前進(jìn)比較容易控制,只要讓兩個(gè)電機(jī)同時(shí)正轉(zhuǎn)就可以了。控制小車轉(zhuǎn)向時(shí)有兩種策略,第一種是一個(gè)電機(jī)正轉(zhuǎn)而另一個(gè)不轉(zhuǎn),第二種是一個(gè)電機(jī)正轉(zhuǎn)而另一個(gè)反轉(zhuǎn)。在測(cè)試中我們發(fā)現(xiàn)采用第一種方法當(dāng)小車運(yùn)動(dòng)時(shí),運(yùn)動(dòng)一側(cè)的輪子會(huì)帶動(dòng)不運(yùn)動(dòng)一側(cè)的輪子迫使小車?yán)^續(xù)運(yùn)動(dòng)。所以我們采用了第二種控制小車轉(zhuǎn)向的方法??刂齐姍C(jī)轉(zhuǎn)向的有兩個(gè)方向位,DIR_L和DIR_R,它們不同狀態(tài)和電機(jī)轉(zhuǎn)向之間的關(guān)系表1表所示:小車速度和方向控制的函數(shù)都已經(jīng)封裝在一起,通過入口參數(shù)可以進(jìn)行調(diào)節(jié)。
圖2.5 智能循跡小車運(yùn)行圖
圖2.6 智能循跡小車圖
2.2 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)
驅(qū)動(dòng)模塊采用專用芯片L298N作為電機(jī)驅(qū)動(dòng)芯片,L298N是一個(gè)具有高電壓大電流的全橋驅(qū)動(dòng)芯片,其響應(yīng)頻率高,一片L298N可以分別控制兩個(gè)直流電機(jī),驅(qū)動(dòng)電路的設(shè)計(jì)如圖L298N的5、7、10、12四個(gè)引腳接到單片機(jī)上,通過對(duì)單片機(jī)的編程就可實(shí)現(xiàn)兩個(gè)直流電機(jī)的PWM調(diào)速以及正反轉(zhuǎn)控制。
L298驅(qū)動(dòng)電機(jī)介紹:
L298N 為SGS-THOMSON Microelectronics 所出產(chǎn)的雙全橋步進(jìn)電機(jī)專用驅(qū)動(dòng)芯片,內(nèi)部包含4信道邏輯驅(qū)動(dòng)電路,是一種二相和四相步進(jìn)電機(jī)的專用驅(qū)動(dòng)器,可同時(shí)驅(qū)動(dòng)2個(gè)二相或1個(gè)四相步進(jìn)電機(jī),內(nèi)含二個(gè)橋式的高電壓、大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯準(zhǔn)位信號(hào),可驅(qū)動(dòng)46V、2A以下的步進(jìn)電機(jī),且可以直接透過電源來調(diào)節(jié)輸出電壓;此芯片可直接由單片機(jī)的I/O端口來提供模擬時(shí)序信號(hào),但在本驅(qū)動(dòng)電路中用L298來提供時(shí)序信號(hào),節(jié)省了單片機(jī)I/O 端口的使用。L298N 接腳Pin1 和Pin15 可與電流偵測(cè)用電阻連接來控制負(fù)載的電路;OUTl、OUT2 和OUT3、OUT4 之間分別接2個(gè)步進(jìn)電機(jī);in1~in4 輸入控制電位來控制電機(jī)的正反轉(zhuǎn);Enable則控制電機(jī)停轉(zhuǎn)。
采用L298N作為電機(jī)驅(qū)動(dòng)芯片。L298N具有高電壓、大電流、響應(yīng)頻率高的全橋驅(qū)動(dòng)芯片,一片 L298N可以分別控制兩個(gè)直流電機(jī),并且?guī)в锌刂剖鼓芏?。該電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)能力強(qiáng)、操作方便,穩(wěn)定性好,性能優(yōu)良。L298N的使能端可以外接電平控制,也可以利用單片機(jī)進(jìn)行軟件控制,滿足各種復(fù)雜電路的需要。另外,L298N的驅(qū)動(dòng)功率較大,能夠根據(jù)輸入電壓的大小輸出不同的電壓和功率,解決了負(fù)載能力不夠的問題。2.2 電源模塊的設(shè)計(jì)
在本系統(tǒng)中,需要用到的電源有單片機(jī)的5V,L298N芯片的電源5V和電機(jī)的電源7-15V。所以需要對(duì)電源的提供必須正確和穩(wěn)定可靠。
方案一:用9V的鋅電源給前、后輪電機(jī)供電,然后使用7805穩(wěn)壓管來把高電壓穩(wěn)成5V分別給單片機(jī)和電機(jī)驅(qū)動(dòng)芯片供電。這種接法比較簡(jiǎn)單,但小車的電路功耗過大會(huì)導(dǎo)致后輪電機(jī)動(dòng)力不足。
方案二:采用雙電源。為了確保單片機(jī)控制部分和后輪電機(jī)驅(qū)動(dòng)的部分的電壓不會(huì)互相影響,要把單片機(jī)的供電和驅(qū)動(dòng)電路分開來,即:用直流電12v供給單片機(jī),后輪電機(jī)的電源用5V供電,這樣有助于消除電機(jī)干擾,提高系統(tǒng)的穩(wěn)定性。
基于以上分析,我們選擇了方案二,采用雙電源供電。2.3 傳感器模塊的設(shè)計(jì)
TC端是傳感器工作控制端,為高電平時(shí),發(fā)光二極管不工作,傳感器休眠,為低電平時(shí),傳感器啟動(dòng)。Signal端為檢測(cè)信號(hào)輸出,當(dāng)遇到黑線,黑線吸收大量的紅外線,反射的紅外線很弱,光敏三極管不導(dǎo)通,Signal輸出高電平;當(dāng)遇到白線,與黑線相反,反射的紅外線很強(qiáng),使光敏三極管導(dǎo)通,Signal輸出低電平。
這種探測(cè)方法,即利用紅外線在不同顏色的表面特征,具有不同的反射性能,汽車行駛過程中接收地面的紅外光。當(dāng)紅外光遇到白色路線,地板發(fā)生漫反射,安裝在小型車的反射光接收器接收;如果是遇到黑色路線,紅外光將被黑線吸收,安裝在小車上的接收管沒有收到紅外光??刂破鲿?huì)根據(jù)是否收到反射的紅外光為判斷依據(jù)來確定的黑線的位置和小車的路線。紅外探測(cè)器距離通常是不應(yīng)超過15厘米的。紅外發(fā)射和接收紅外線感應(yīng)器,可以使自己或直接使用集成紅外探頭。調(diào)整左右傳感器之間的距離,兩探頭距離約等于黑線寬度最合適,選擇寬度為3-5厘米的黑線。該傳感器的靈敏度是可調(diào)的,傳感器有時(shí)遇到黑線卻不能送出相應(yīng)的信號(hào),通過調(diào)節(jié)傳感器上的可調(diào)電阻,適當(dāng)?shù)脑龃蠡驕p小可改變靈敏度。另外,循跡傳感器的放置也是有講究的,有兩種方法,一種是兩個(gè)都是放置在黑線內(nèi)側(cè)緊貼黑線邊緣,第二種是都放置在黑線的外側(cè),同樣緊貼黑線邊緣。本設(shè)計(jì)采用第二種方法。
單片機(jī)燒錄程序后,就可以執(zhí)行循跡指令了。如果小車向前行駛時(shí)向左偏離了黑線,那么右邊傳感器會(huì)產(chǎn)生一個(gè)高電平,單片機(jī)判斷這個(gè)信號(hào),然后向右拐回到黑線。兩傳感器輸出信號(hào)為低電平時(shí),小車前進(jìn)。如果小車向右偏離黑線,左邊傳感器產(chǎn)生一個(gè)高電平,單片機(jī)判斷這個(gè)信號(hào),然后向左拐。這樣,小車一定不會(huì)偏離黑線。若兩個(gè)光電傳感器同時(shí)輸出的信號(hào)為高電平,即單片機(jī)判斷的都為高電平時(shí),小車向前直走。3 測(cè)試結(jié)果
從直線段O點(diǎn)出發(fā),讓小車智能循跡至N點(diǎn),記錄直點(diǎn)線段O點(diǎn)至A點(diǎn)的所用時(shí)間,記錄A點(diǎn)至B點(diǎn)的時(shí)間,依次記錄B點(diǎn)至C點(diǎn)、C點(diǎn)至D點(diǎn)、D點(diǎn)至E點(diǎn)、E點(diǎn)至F點(diǎn)、F點(diǎn)至N點(diǎn)的時(shí)間,重復(fù)測(cè)試5次,并記錄時(shí)間。
圖3.1 智能循跡小車跑道圖
起點(diǎn)位于彎道的運(yùn)行時(shí)間要長(zhǎng)于起點(diǎn)位于直道的運(yùn)行時(shí)間。導(dǎo)致這個(gè)現(xiàn)象出現(xiàn)的原因是由于彎道的曲率變化給小車的循跡調(diào)整帶來了較大的影響,對(duì)應(yīng)小號(hào)的調(diào)整時(shí)間業(yè)比起于直道的測(cè)試過程要長(zhǎng)些。有時(shí),小車會(huì)稍微偏離跑道。對(duì)傳感器的靈敏度需要更加仔細(xì)的調(diào)整。4 心得體會(huì)
根據(jù)本次設(shè)計(jì)要求,我們小組系統(tǒng)地閱讀了大量的資料,并認(rèn)真分析了設(shè)計(jì)課題的需求,還系統(tǒng)學(xué)習(xí)了51系列單片機(jī)的工作原理及其使用方法,并獨(dú)自設(shè)計(jì)智能小車的整個(gè)項(xiàng)目。雖然條件艱苦,但經(jīng)過不懈鉆研和努力,購(gòu)買到了所有所需的元器件,并系統(tǒng)的進(jìn)行了多項(xiàng)試驗(yàn),最終做出了整個(gè)小車的硬件系統(tǒng),然后結(jié)合課題任務(wù)和小車硬件進(jìn)行了程序的編制,本系統(tǒng)能夠基本滿足設(shè)計(jì)要求,能夠較快較平穩(wěn)的是小車沿引導(dǎo)線行駛,但由于經(jīng)驗(yàn)?zāi)芰τ邢?,該系統(tǒng)還存在著許多不盡人意的地方有待于進(jìn)一步的完善與改進(jìn)。
通過本次課題設(shè)計(jì),不僅是對(duì)我們課本所學(xué)知識(shí)的考查,更是對(duì)我的自學(xué)能力和收集資料能力以及動(dòng)手能力的考驗(yàn)。本次課程設(shè)計(jì)使我們對(duì)一個(gè)項(xiàng)目的整體設(shè)計(jì)有了初步認(rèn)識(shí),還認(rèn)識(shí)了幾種傳感器,并能獨(dú)立設(shè)計(jì)出其接口電路,再有對(duì)電路板的制作有了一定的了解,并學(xué)會(huì)了使用Protel設(shè)計(jì)電路。本次智能循跡小車課程設(shè)計(jì)使我們意識(shí)到了實(shí)驗(yàn)的重要性,在硬件制作和軟件調(diào)試的過程中,出現(xiàn)了很多問題,最終都是通過實(shí)驗(yàn)的方法來解決的。還有以前對(duì)程序只是一個(gè)很模糊的概念,通過這次的智能循跡小車的課程設(shè)計(jì)使我對(duì)程序完全有了一個(gè)新的認(rèn)識(shí),并能使用C熟練的進(jìn)行編程了。通過本次智能循跡小車的課程設(shè)計(jì),極大的鍛煉了我們的思考和分析問題的能力,并對(duì)單片機(jī)有了一個(gè)更深的認(rèn)識(shí)。
總之,在這次的課程設(shè)計(jì)的過程中,無論是對(duì)于學(xué)習(xí)方法還是理論知識(shí),我們都有了新的認(rèn)識(shí),受益匪淺,這將激勵(lì)我們?cè)诮窈笤俳釉賲枺粩嗤晟谱约旱睦碚撝R(shí),提高實(shí)踐運(yùn)作能力。附錄1 電路原理圖的總圖
圖3.1 電路原理圖總圖 附錄2 源程序
#include
小車跑出軌道,直走前進(jìn),重新
第二篇:智能循跡小車實(shí)驗(yàn)報(bào)告
摘要
本設(shè)計(jì)主要有單片機(jī)模塊、傳感器模塊、電機(jī)驅(qū)動(dòng)模塊以及電源模塊組成,小車具有自主尋跡的功能。本次設(shè)計(jì)采用STC公司的89C52單片機(jī)作為控制芯片,傳感器模塊采用紅外光電對(duì)管和比較器實(shí)現(xiàn),能夠輕松識(shí)別黑白兩色路面,同時(shí)具有抗環(huán)境干擾能力,電機(jī)模塊由L298N芯片和兩個(gè)直流電機(jī)構(gòu)成,組成了智能車的動(dòng)力系統(tǒng),電源采用7.2V的直流電池,經(jīng)過系統(tǒng)組裝,從而實(shí)現(xiàn)了小車的自動(dòng)循跡的功能。
關(guān)鍵詞 智能小車
單片機(jī)紅外光對(duì)管 STC89C52 L298N 1 緒論
隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人的設(shè)計(jì)越來越精細(xì),功能越來越復(fù)雜,智能小車作為其的一個(gè)分支,也在不斷發(fā)展。在近幾年的電子設(shè)計(jì)大賽中,關(guān)于小車的智能化功能的實(shí)現(xiàn)也多種多樣,因此本次我們也打算設(shè)計(jì)一智能小車,使其能自動(dòng)識(shí)別預(yù)制道路,按照設(shè)計(jì)的道路自行尋跡。設(shè)計(jì)任務(wù)與要求
采用MCS-51單片機(jī)為控制芯片(也可采用其他的芯片),紅外對(duì)管為識(shí)別器件、步進(jìn)電機(jī)為行進(jìn)部件,設(shè)計(jì)出一個(gè)能夠識(shí)別以白底為道路色,寬度10mm左右的黑色膠帶制作的不規(guī)則的封閉曲線為引導(dǎo)軌跡并能沿該軌跡行進(jìn)的智能尋跡機(jī)器小車。方案設(shè)計(jì)與方案選擇
3.1 硬件部分
可分為四個(gè)模塊:?jiǎn)纹瑱C(jī)模塊、傳感器模塊、電機(jī)驅(qū)動(dòng)模塊以及電源模塊。
3.1.1 單片機(jī)模塊
為小車運(yùn)行的核心部件,起控制小車的所有運(yùn)行狀態(tài)的作用。由于以前自己開發(fā)板使用的是ATMEL公司的STC89C52,所以讓然選擇這個(gè)芯片作為控制核心部件。STC89C52是一種低損耗、高性能、CMOS八位微處理器,片內(nèi)有4k字節(jié)的在線可重復(fù)編程、快速擦除快速寫入程序的存儲(chǔ)器,能重復(fù)寫入/擦除1000次,數(shù)據(jù)保存時(shí)間為十年。其程序和數(shù)據(jù)存儲(chǔ)是分開的。
3.1.2 傳感器模塊
方案一:使用光敏電阻組成光敏探測(cè)器采集路面信息。阻值經(jīng)過比較器輸出高低電平進(jìn)行分析,但是光照影響很大,不能穩(wěn)定工作。
方案二:使用光電傳感器來采集路面信息。使用紅外光電對(duì)管,其結(jié)構(gòu)簡(jiǎn)明,實(shí)現(xiàn)方便,成本低廉,沒有復(fù)雜的圖像處理工作,因此反應(yīng)靈敏,響應(yīng)時(shí)間少。但也存在不足,它能獲取的信息是不完全的,容易受很多擾動(dòng)(如背景光源,高度等)的影響,抗干擾能力較差。
方案三:使用CCD傳感器來采集路面信息。使用CCD可以獲取大量的圖像信息,掌握全面的路徑信息,抗干擾能力強(qiáng),為以后功能的擴(kuò)展提供方便。但使用CCD需要大量的圖像處理工作,進(jìn)行大量數(shù)據(jù)的存儲(chǔ)和計(jì)算,因此電路復(fù)雜,實(shí)現(xiàn)起來工作量大。
方案四:使用光電對(duì)管采集路面信息。RPR220結(jié)構(gòu)緊湊,體積小,調(diào)整電路簡(jiǎn)單工作性能穩(wěn)定。
可見方案四最適宜,但僅從此項(xiàng)目考慮,方案二成本低,也能完成設(shè)計(jì),故選用方案二。3.1.3 電機(jī)控制模塊
3.1.3.1電機(jī)的選擇
方案一:采用步進(jìn)電機(jī),其轉(zhuǎn)過的角度可以精確定位,可實(shí)現(xiàn)小車行進(jìn)過程的精確定位。但步進(jìn)電機(jī)的輸出力矩低,隨轉(zhuǎn)速的升高而降低,且轉(zhuǎn)速越快下降得越快。
方案二:采用直流電機(jī),其轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝配簡(jiǎn)單,操作方便。速度的調(diào)節(jié)可以改變電壓也可以調(diào)節(jié)PWM。
基于以上,我們選擇了方案二,使用直流電機(jī)作為驅(qū)動(dòng)電機(jī)。
3.1.3.2電機(jī)的驅(qū)動(dòng)
采用專用芯片L298N作為電機(jī)驅(qū)動(dòng)芯片,其操作方便,穩(wěn)定性好,性能優(yōu)良。一片L298N就可以分別控制兩個(gè)直流電機(jī)。
3.1.4 電源模塊
給整個(gè)系統(tǒng)穩(wěn)定供電以保持其正常工作,包括7.2V的電源以及轉(zhuǎn)5V部分,其中7.2V的是給電機(jī)和其驅(qū)動(dòng)供電,5V的用來驅(qū)動(dòng)單片機(jī)及其他芯片。
以上單元連接如下圖所示: 3.2 軟件部分
3.2.1程序流程圖
此系統(tǒng)采用89C52單片機(jī),再根據(jù)硬件連接,通過相應(yīng)的軟件來完成對(duì)信號(hào)的采集和數(shù)據(jù)的分析,再控制小車的運(yùn)行狀態(tài),以下為主程序流程圖:
3.2.2程序設(shè)計(jì)思路
3.2.2.1尋跡模塊程序
通過傳感器獲得路面信息然后反饋給單片機(jī),再通過單片機(jī)來實(shí)現(xiàn)相應(yīng)的功能。
3.2.2.2電機(jī)驅(qū)動(dòng)模塊程序
控制兩個(gè)直流電機(jī),實(shí)現(xiàn)前進(jìn)、后退、前左轉(zhuǎn)、前右轉(zhuǎn)、停車等功能。各部分電路的作用及電路工作原理分析
4.1 信號(hào)采集模塊
4.1.1 TCRT500結(jié)構(gòu)與工作原理
TCRT5000(L)具有緊湊的結(jié)構(gòu)發(fā)光燈和檢測(cè)器安排在同一方向上,利用紅外光譜反射對(duì)象存在另一個(gè)對(duì)象上,操作的波長(zhǎng)大約是950毫米。探測(cè)器由光電晶體三極管組成的,它由高發(fā)射功率紅外光電二極管和高度靈敏光電晶體管組成。通過測(cè)試,其檢測(cè)距離在2mm-10mm。TCRT5000的發(fā)射管和接收管是一起封裝在矩形塑料殼中,為了使檢測(cè)更加準(zhǔn)確,我們用了5只TCRT5000檢測(cè)黑線,實(shí)物見圖4-1。
4.1.2 信號(hào)采集電路圖及原理
小車在白色地面行駛時(shí),紅外發(fā)射管發(fā)出的紅外信號(hào)被反射,接收管收到信號(hào)后,輸出端為低電平,經(jīng)過比較器比較后輸出為低電平。而當(dāng)紅外信號(hào)遇到黑色導(dǎo)軌時(shí),紅外信號(hào)被吸收,接收管不能接收信號(hào),輸出端為高電平,經(jīng)過比較器比較后輸出高電平。單片機(jī)通過采集每個(gè)比較器的輸出端電壓,便可以檢測(cè)出黑線的相對(duì)位置的位置,從而控制小車的行駛方向。
4.2 信息處理模塊
4.2.1 原理
檢測(cè)到白色路面的紅外接收頭處理后送出的是低電平,而檢測(cè)到黑色路線的檢測(cè)頭送出的是高電平,由此可根據(jù)這5個(gè)紅外接收頭的高低電平判斷路線情況而調(diào)整小車前進(jìn)方向。具體情況有如下幾種: a 檢測(cè)到
1 1 1 1 或
0 0 0 0 0小車應(yīng)該停止。
b 檢測(cè)到
0 0 0 0 或
0 1 0 0 0 或 1 0 0 0 說明路線向左偏,小車向左轉(zhuǎn)。
c 檢測(cè)到
0 0 0 0 1 或
0 0 0 1 0 或
0 0 0 1 1說明路線向右偏,小車向左轉(zhuǎn)。
d 檢測(cè)到
x x 1 x x(x不全為1)說明線路是直的,小車直走。4.3 電機(jī)驅(qū)動(dòng)模塊
4.3.1直流電機(jī)
給兩個(gè)電刷A和B加上直流電源,如上圖(a)所示,則有直流電流從電刷 A 流入,經(jīng)過線圈abcd,從電刷 B 流出,根據(jù)電磁力定律,載流導(dǎo)體ab和cd收到電磁力的作用,其方向可由左手定則判定,兩段導(dǎo)體受到的力形成了一個(gè)轉(zhuǎn)矩,使得轉(zhuǎn)子逆時(shí)針轉(zhuǎn)動(dòng)。如果轉(zhuǎn)子轉(zhuǎn)到如上圖(b)所示的位置,電刷 A 和換向片2接觸,電刷 B 和換向片1接觸,直流電流從電刷 A 流入,在線圈中的流動(dòng)方向是dcba,從電刷 B 流出。
此時(shí)載流導(dǎo)體ab和cd受到電磁力的作用方向同樣可由左手定則判定,它們產(chǎn)生的轉(zhuǎn)矩仍然使得轉(zhuǎn)子逆時(shí)針轉(zhuǎn)動(dòng)。這就是直流電動(dòng)機(jī)的工作原理。外加的電源是直流的,但由于電刷和換向片的作用,在線圈中流過的電流是交流的,其產(chǎn)生的轉(zhuǎn)矩的方向卻是不變的。實(shí)用中的直流電動(dòng)機(jī)轉(zhuǎn)子上的繞組也不是由一個(gè)線圈構(gòu)成,同樣是由多個(gè)線圈連接而成,以減少電動(dòng)機(jī)電磁轉(zhuǎn)矩的波動(dòng),繞組形式同發(fā)電機(jī)。
4.3.2電路圖
我們采用成品L298N電機(jī)驅(qū)動(dòng)模塊,采用光電耦合器件隔離單片機(jī)與L298N的控制電路,工藝精度高,性能可靠。L298N模塊內(nèi)部通過H橋電路實(shí)現(xiàn)直流電機(jī)的正轉(zhuǎn),反轉(zhuǎn),其原理如下:
如圖4-3所示,全橋式驅(qū)動(dòng)電路的4只開關(guān)管都工作在斬波狀態(tài),S1、S2為一組,S3、S4 為另一組,兩組的狀態(tài)互補(bǔ),一組導(dǎo)通則 另一組必須關(guān)斷。當(dāng)S1、S2導(dǎo)通時(shí),S3、S4關(guān)斷,電機(jī)兩端加正向電壓,可以實(shí) 現(xiàn)電機(jī)的正轉(zhuǎn)或反轉(zhuǎn)制動(dòng);當(dāng)S3、S4導(dǎo) 通時(shí),S1、S2關(guān)斷,電機(jī)兩端為反向電 壓,電機(jī)反轉(zhuǎn)或正轉(zhuǎn)制動(dòng)。
橋驅(qū)動(dòng)電路
4.3.3原理
L298N是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。系統(tǒng)調(diào)試
5.1硬件部分
焊接完成后,首先進(jìn)行的調(diào)試是用數(shù)字萬用表測(cè)量各個(gè)電路是否焊接正常,是否有虛焊漏焊等現(xiàn)象的出現(xiàn),以及各個(gè)電容是否是正常的未被擊穿狀態(tài)、電阻的阻值是否與設(shè)計(jì)的原理圖上的一致。接通電源,用數(shù)字萬用表測(cè)量當(dāng)有+5V的各引腳是否有+5V的電壓,測(cè)量電路中是否出現(xiàn)了不該有的短路現(xiàn)象。接入光電傳感器模塊,使各個(gè)光電檢測(cè)器的光電對(duì)管靠近白紙,觀察對(duì)應(yīng)的發(fā)光二極管是否發(fā)光,不發(fā)光表示正常。然后再使各個(gè)光電對(duì)管靠近黑線,觀察對(duì)應(yīng)的發(fā)光二級(jí)管是否發(fā)光,發(fā)光表示正常。
5.2軟件部分
我們先測(cè)試了小車的前進(jìn),停止,左轉(zhuǎn)和右轉(zhuǎn)。組裝信號(hào)采集模塊后,實(shí)現(xiàn)小車的自動(dòng)循跡功能。
具體實(shí)現(xiàn)程序見附錄一
總結(jié)
實(shí)驗(yàn)結(jié)果如符合實(shí)驗(yàn)要求,小車按照黑膠布軌跡前進(jìn),并能夠及時(shí)正確顯示小車的行進(jìn)狀態(tài)以及行進(jìn)距離。具體現(xiàn)象如下:
左邊傳感器檢測(cè)到黑線,小車左轉(zhuǎn); 右邊傳感器檢測(cè)到黑線,小車右轉(zhuǎn); 中間傳感器檢測(cè)到黑線,小車直行。從而就可以完成對(duì)黑膠布的循跡功能。參考文獻(xiàn)
[1]電子信息專業(yè)實(shí)驗(yàn)教程 趙剛 李佐儒 四川大學(xué)出版社 [2]單片機(jī)C語(yǔ)言教程 郭天祥 電子工業(yè)出版社 [3]模擬電子技術(shù) 童詩(shī)白 清華大學(xué)出版社 附錄一 程序:
#include
sbit DJ_left_s = P1^0;//直流電機(jī)控制 sbit DJ_left_n = P1^1;
sbit DJ_right_s = P1^2;sbit DJ_right_n = P1^3;
//左轉(zhuǎn)函數(shù)
void Turn_right(){ DJ_left_s = 0;DJ_left_n = 1;DJ_right_s = 1;DJ_right_n = 0;}
//右轉(zhuǎn)函數(shù)
void Turn_left(){ DJ_left_s = 1;DJ_left_n = 0;DJ_right_s = 0;DJ_right_n = 1;}
//前進(jìn)函數(shù)
void Go_ahead(){ DJ_left_s = 1;DJ_left_n = 0;DJ_right_s = 1;DJ_right_n = 0;}
//停止函數(shù) void Stop(){ DJ_left_s = 0;DJ_left_n = 0;DJ_right_s = 0;DJ_right_n = 0;}
//循跡函數(shù)
void xunji(unsigned int m){
if(m==0x7c)
{
Turn_right();
return;
}
if(m&0x10)
{
Go_ahead();
return;
}
if(m&0x0c)
{
Turn_right();
return;
}
if(m&0x60)
{
Turn_left();
return;
} } //主函數(shù) void main(){ while(1){
xunji(P2&0x7c);
}
} 附錄二 實(shí)物圖:
第三篇:智能循跡小車___設(shè)計(jì)報(bào)告
智能循跡小車設(shè)計(jì)
專 業(yè): 自動(dòng)化 班 級(jí): 自動(dòng)化132 姓 名:羅植升 莫柏源 梁桂賓 指導(dǎo)老師:
2014年4月——2010年6月
摘要: 本課題是基于STC89C52單片機(jī)的智能小車的設(shè)計(jì)與實(shí)現(xiàn),小車完成的主要功能是能夠自主識(shí)別黑色引導(dǎo)線并根據(jù)黑線走向?qū)崿F(xiàn)快速穩(wěn)定的尋線行駛。小車系統(tǒng)以 STC89C52單片機(jī)為系統(tǒng)控制處理器; 采用紅外傳感獲取賽道的信息,來對(duì)小車的方向和速度進(jìn)行控制。此外,對(duì)整個(gè)控制軟件進(jìn)行設(shè)計(jì)和程序的編制以及程序的調(diào)試,并最終完成軟件和硬件的融合,實(shí)現(xiàn)小車的預(yù)期功能。
引 言 當(dāng)今世界,傳感器技術(shù)和自動(dòng)控制技術(shù)正在飛速發(fā)展,機(jī)械、電氣和電子信息已經(jīng)不再明顯分家,自動(dòng)控制在工業(yè)領(lǐng)域中的地位已經(jīng)越來越重要,“智能”這個(gè)詞也已經(jīng)成為了熱門詞匯。現(xiàn)在國(guó)外的自動(dòng)控制和傳感器技術(shù)已經(jīng)達(dá)到了很高的水平,特別是日本,比如日本本田制作的機(jī)器人,其仿人雙足行走已經(jīng)做得十分逼真,而且具有一定的學(xué)習(xí)能力,還據(jù)說其智商已達(dá)到6歲兒童的水平。
作為機(jī)械行業(yè)的代表產(chǎn)品—汽車,其與電子信息產(chǎn)業(yè)的融合速度也顯著提高,呈現(xiàn)出兩個(gè)明顯的特點(diǎn):一是電子裝置占汽車整車(特別是轎車)的價(jià)值量比例逐步提高,汽車將由以機(jī)械產(chǎn)品為主向高級(jí)的機(jī)電一體化方向發(fā)展,汽車電子產(chǎn)業(yè)也很有可能成為依托整車制造業(yè)和用車提升配置而快速成為新的增長(zhǎng)點(diǎn);二是汽車開始向電子化、多媒體化和智能化方向發(fā)展,使其不僅作為一種代步工具、同時(shí)能具有交通、娛樂、辦公和通訊等多種功能。
無容置疑,機(jī)電一體化人才的培養(yǎng)不論是在國(guó)外還是國(guó)內(nèi),都開始重視起來,主要表現(xiàn)在大學(xué)生的各種大型的創(chuàng)新比賽,比如:亞洲廣播電視聯(lián)盟亞太地區(qū)機(jī)器人大賽(ABU ROBCON)、全國(guó)大學(xué)生“飛思卡爾”杯智能汽車競(jìng)賽等眾多重要競(jìng)賽都能很好的培養(yǎng)大學(xué)生對(duì)于機(jī)電一體化的興趣與強(qiáng)化機(jī)電一體化的相關(guān)知識(shí)。但很現(xiàn)實(shí)的狀況是,國(guó)內(nèi)不論是在機(jī)械還是電氣領(lǐng)域,與國(guó)外的差距還是很明顯的,所以作為機(jī)電一體化學(xué)生,必須加倍努力,為逐步趕上國(guó)外先進(jìn)水平并超過之而努力。
為了適應(yīng)機(jī)電一體化的發(fā)展在汽車智能化方向的發(fā)展要求,提出簡(jiǎn)易智能小車的構(gòu)想,目的在于:通過獨(dú)立設(shè)計(jì)并制作一輛具有簡(jiǎn)單智能化的簡(jiǎn)易小車,獲得項(xiàng)目整體設(shè)計(jì)的能力,并掌握多通道多樣化傳感器綜合控制的方法。所以立“智能循跡小車”一題作為嘗試。
此項(xiàng)設(shè)計(jì)是在以楊老師提供的小車為基礎(chǔ)上,采用AT89C52單片機(jī)作為控制核心,實(shí)現(xiàn)能夠自主識(shí)別黑色引導(dǎo)線并根據(jù)黑線走向?qū)崿F(xiàn)快速穩(wěn)定的尋線行駛。
一、實(shí)驗(yàn)?zāi)康模?/p>
通過設(shè)計(jì)進(jìn)一步掌握51單片機(jī)的應(yīng)用,特別是在嵌入式系統(tǒng)中的應(yīng)用。進(jìn)一步學(xué)習(xí)51單片機(jī)在系統(tǒng)中的控制功能,能夠合理設(shè)計(jì)單片機(jī)的外圍電路,并使之與單片機(jī)構(gòu)成整個(gè)系統(tǒng)。
二、設(shè)計(jì)方案:
該智能車采用紅外傳感器對(duì)賽道進(jìn)行道路檢測(cè),單片機(jī)根據(jù)采集到的信號(hào)的不同狀態(tài)判斷小車當(dāng)前狀態(tài),通過電機(jī)驅(qū)動(dòng)芯片L9110發(fā)出控制命令,控制電機(jī)的工作狀態(tài)以實(shí)現(xiàn)對(duì)小車姿態(tài)的控制。
三、報(bào)告內(nèi)容安排:
本技術(shù)報(bào)告主要分為三個(gè)部分。第一部分是對(duì)整個(gè)系統(tǒng)實(shí)現(xiàn)方法的一個(gè)概要說明,主要內(nèi)容是對(duì)整個(gè)技術(shù)原理的概述;第二部分是對(duì)硬件電路設(shè)計(jì)的說明,主要介紹系統(tǒng)傳感器的設(shè)計(jì)及其他硬件電路的設(shè)計(jì)原理等;第三部分是對(duì)系統(tǒng)軟件設(shè)計(jì)部分的說明,主要內(nèi)容是智能模型車設(shè)計(jì)中主要用到的控制理論、算法說明及代碼設(shè)計(jì)介紹等。
技術(shù)方案概要說明
本模型車的電路系統(tǒng)包括電源管理模塊、單片機(jī)模塊、傳感
器模塊、電機(jī)驅(qū)動(dòng)模塊。
工作原理:
? 利用紅外采集模塊中的紅外發(fā)射接收對(duì)管檢測(cè)路面上的軌跡 ? 將軌跡信息送到單片機(jī)
? 單片機(jī)采用模糊推理求出轉(zhuǎn)向的角度和行走速度,然后去控制 行走部分
? 最終完成智能小車可以按照路面上的軌跡運(yùn)行。
硬件電路的設(shè)計(jì)
1、最小系統(tǒng):
小車采用STC89C52單片機(jī)作為控制芯片,圖1是其最小系統(tǒng)電路。主要包括:時(shí)鐘電路、電源電路、復(fù)位電路。其中各個(gè)部分的功能如下:
1、時(shí)鐘電路:給單片機(jī)提供一個(gè)外接的12MHz的石英晶振。
2、電源電路:給單片機(jī)提供5V電源。
3、復(fù)位電路:在電壓達(dá)到正常值時(shí)給單片機(jī)一個(gè)復(fù)位信號(hào)。
圖1
單片機(jī)最小系統(tǒng)原理圖
2、電源電路設(shè)計(jì):
模型車通過自身系統(tǒng),采集賽道信息,獲取自身速度信息,加以處理,由芯片給出指令控制其前進(jìn)轉(zhuǎn)向等動(dòng)作,各部分都需要由電路支持,電源管理尤為重要。在本設(shè)計(jì)中,51單片機(jī)使用5V電源,電機(jī)及舵機(jī)使用6V電源??紤]到電源為充電電池組,額定電壓為7.2V,實(shí)際充滿電后電壓則為6.5-6.8V,所以單片機(jī)及傳感器模塊采用7805穩(wěn)壓后的5V電源供電,舵機(jī)及電機(jī)直接由電池供電。
3、傳感器電路:
光電尋線方案一般由多對(duì)TCRT5000紅外收發(fā)管組成,通過檢測(cè)接收到的反射光強(qiáng),判斷黑白線。原理圖由紅外對(duì)管和電壓比較器兩部分組成,紅外對(duì)管輸出的模擬電壓通過電壓比較器轉(zhuǎn)換成數(shù)字電平輸出到單片機(jī)。
圖2
賽道檢測(cè)原理圖:
4、電機(jī)驅(qū)動(dòng)電路:
電機(jī)驅(qū)動(dòng)芯片L9110,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。其引腳排列如圖1中U4所示,1腳和15腳可單獨(dú)引出連接電流采樣電阻器,形成電流傳感信號(hào)。L9110可驅(qū)動(dòng)2個(gè)電機(jī),OUT1、OUT2和OUT3、OUT4之間分別接2個(gè)電動(dòng)機(jī)。5、7、10、12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機(jī)的停轉(zhuǎn)。也利用單片機(jī)產(chǎn)生PWM信號(hào)接到ENA,ENB端子,對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié)。L9110的邏輯功能:
表1 SHARP GP2D12實(shí)物圖
外形及封裝:
圖3 L9110實(shí)物圖
L9110電路原理圖:
由于一片L298N可以直接驅(qū)動(dòng)兩個(gè)電機(jī),但是為了加大驅(qū)動(dòng)力,我們采用兩路并聯(lián)的方式來驅(qū)動(dòng)電機(jī)。
圖3.3 L9110電路圖
小車循跡規(guī)則:
若小車偏左的時(shí)候,車輪將向右偏轉(zhuǎn);若小車偏右,車輪將向左偏轉(zhuǎn);若沒有偏移,小車將繼續(xù)向前;若小車完全偏離黑色軌跡,小車后退以尋找黑色軌跡。小車程序:
#include
sbit chongshua=P3^6;//定義單片機(jī)控制沖刷的引腳 sbit tuodi=P3^7;//定義單片機(jī)控制拖地的引腳
//--------//1602液晶相關(guān)I/O設(shè)置
sbit E=P2^3;//1602液晶的E腳接在P2.3口上 sbit RW=P2^4;//1602液晶的RW腳接在P2.4口上 sbit RS=P2^5;//1602液晶的RS腳接在P2.5口上
//HC-SR04相關(guān)I/O設(shè)置 sbit TIRG=P3^4;sbit ECHO=P3^2;
bit flag =0;
//定義IO口,具體可以去查看原理圖 //定義IO口,具體可以去查看原理圖 uchar k;uchar a=0;//定義一個(gè)變量a,用來讀取串口的數(shù)據(jù)
void delay(uint z)//一個(gè)帶參數(shù)的延時(shí)程序 {
}
void init()//初始化子程序 {
} TMOD=0x20;//設(shè)置定時(shí)器T1為工作方式2 TH1=0xfd;TL1=0xfd;//T1定時(shí)器裝初值 TR1=1;//啟動(dòng)定時(shí)器T1 REN=1;//允許串口接收 SM0=0;SM1=1;//設(shè)置串口工作方式1 EA=1;//開總中斷 ES=1;//開串口中斷 int i,j;//定義兩個(gè)變量 for(i=10;i>0;i--)for(j=z;j>0;j--);//將參數(shù)z賦值給j void qian()//左右輪協(xié)同前進(jìn)子函數(shù) {
} void zuo()//左右輪協(xié)同左轉(zhuǎn)子函數(shù) {
you1=0;you2=1;zuo1=1;zuo2=0;delay(9);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;you1=0;you2=1;zuo1=0;zuo2=1;delay(6);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;zuo1=1;zuo2=1;delay(4);
} zuo1=1;zuo2=1;delay(1);
void mzuo()//左右輪協(xié)同左轉(zhuǎn)子函數(shù) {
} void you()//左右輪協(xié)同右轉(zhuǎn)子函數(shù) {
you1=1;you2=0;zuo1=0;you1=0;you2=1;zuo1=1;zuo2=0;delay(10);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;zuo1=1;zuo2=1;delay(5);
} zuo2=1;delay(9);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;zuo1=1;zuo2=1;delay(1);
void myou()//左右輪協(xié)同右轉(zhuǎn)子函數(shù) {
} you1=1;you2=0;zuo1=0;zuo2=1;delay(10);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;zuo1=1;zuo2=1;delay(5);void hou()//左右輪協(xié)同前進(jìn)子函數(shù) {
}
void ting()//左右輪都停止轉(zhuǎn)動(dòng) {
} you1=1;you2=1;zuo1=1;zuo2=1;you1=1;you2=0;zuo1=1;zuo2=0;delay(9);//pwm調(diào)速 此為pwm有效值 you1=1;you2=1;zuo1=1;zuo2=1;delay(1);
void Delay1602(unsigned int t){ unsigned int k;//定義一個(gè)16位寄存器用來做延時(shí)用 for(k=0;k void LCD1602_busy(void){ P0_7=1;// RS=0;//RS=0讀入 RW=1;//RS=0讀入 E=1;//RS=0讀入 while(P0_7==1);// E=0;//} 延時(shí) 將P0.7置1,為讀狀態(tài)做準(zhǔn)備、RW= 1、E=1時(shí),忙信號(hào)輸出到DB7,由P0.7、RW= 1、E=1時(shí),忙信號(hào)輸出到DB7,由P0.7、RW= 1、E=1時(shí),忙信號(hào)輸出到DB7,由P0.7由P0.7讀入1,表示1602液晶忙,需要等待 讀完以后,恢復(fù)E的電平void LCD1602_Write_com(unsigned char combuf){ RS=0;//選擇指令寄存器 RW=0;//選擇寫狀態(tài) P0=combuf;//將命令字通過P0口送至DB E=1;//E高電平將命令字寫入1602液晶 E=0;//寫完以后,恢復(fù)E的電平} void LCD1602_Write_com_busy(unsigned char combuf){ LCD1602_busy();//調(diào)用忙檢測(cè)函數(shù) LCD1602_Write_com(combuf);//調(diào)用忙檢測(cè)函數(shù) } void LCD1602_Write_data_busy(unsigned char databuf){ LCD1602_busy();//調(diào)用忙檢測(cè)函數(shù) RS=1;//選擇數(shù)據(jù)寄存器 RW=0;//選擇寫狀態(tài) P0=databuf;//將命令字通過P0口送至DB E=1;//E高電平將命令字寫入1602液晶 E=0;//寫完以后,恢復(fù)E的電平} void LCD1602_Write_address(unsigned char x,unsigned char y){ x&=0x0f;//列地址限制在0-15間 y&=0x01;//行地址限制在0-1間 if(y==0)//如果是第一行 LCD1602_Write_com_busy(x|0x80);//將列地址寫入 else //如果是第二行 LCD1602_Write_com_busy((x+0x40)|0x80);//將列地址寫入 } void LCD1602_init(void){ Delay1602(1500);//調(diào)用延時(shí)函數(shù) LCD1602_Write_com(0x38);//8位數(shù)據(jù)總線,兩行顯示模式,5*7點(diǎn)陣顯示 Delay1602(500);//調(diào)用延時(shí)函數(shù) LCD1602_Write_com(0x38);//8位數(shù)據(jù)總線,兩行顯示模式,5*7點(diǎn)陣顯示 Delay1602(500);//調(diào)用延時(shí)函數(shù) LCD1602_Write_com(0x38);//8位數(shù)據(jù)總線,兩行顯示模式,5*7點(diǎn)陣顯示 LCD1602_Write_com_busy(0x38);//8位數(shù)據(jù)總線,兩行顯示模式,5*7點(diǎn)陣顯示 LCD1602_Write_com_busy(0x08);//顯示功能關(guān),無光標(biāo) LCD1602_Write_com_busy(0x01);//清屏 LCD1602_Write_com_busy(0x06);//寫入新的數(shù)據(jù)后,光標(biāo)右移,顯示屏不移動(dòng) LCD1602_Write_com_busy(0x0C);//顯示功能開,無光標(biāo) } void LCD1602_Disp(unsigned char x,unsigned char y,unsigned char buf){ LCD1602_Write_address(x,y);//先將地址信息寫入 LCD1602_Write_data_busy(buf);//再寫入要顯示的數(shù)據(jù) } void Timer0(void)interrupt 1 { } flag=0;void xunji(){ qian();//調(diào)用前進(jìn)子函數(shù),使小車光電管不滿足以下幾個(gè)條件時(shí)都處于前進(jìn)狀態(tài) while((z==0)&&(y==1)&&(q==1))//判斷當(dāng)左邊光電管遇到黑線,{ } while((z==1)&&(y==0)&&(q==1))//判斷當(dāng)右邊光電管遇到黑線,{ } while((z==0)&&(y==0)&&(q==1))//判斷當(dāng)左邊光電管遇到黑線,右邊 //左邊和前邊的光電管遇到白線時(shí)右轉(zhuǎn) //右邊和前邊的光電管遇到白線時(shí)左轉(zhuǎn) zuo();//調(diào)用左轉(zhuǎn)函數(shù) zd=1;you();//調(diào)用右轉(zhuǎn)函數(shù) yd=1;光電管也遇到黑線 { //前邊的光電管遇到白線時(shí)停止 ting();//調(diào)用停止函數(shù) } hd=1;while((z==0)&&(y==0)&&(q==0))//判斷當(dāng)左邊、右邊、前邊光電管同時(shí)遇到黑線 } void csb(){ long S;unsigned int i;unsigned int Timeout; { } //即遇到十字路口,小車前進(jìn) qian();//調(diào)用前進(jìn)函數(shù) LCD1602_init();//調(diào)用1602液晶初始化函數(shù) //***定時(shí)器Timer0初始化*** TMOD&=0xF0;//將TMOD的低4位定時(shí)器0控制部分清零 TMOD|=0x01;//設(shè)置定時(shí)器0為方式1 TMOD=0x01;TL0=0;//設(shè)置定時(shí)器0初值低8位 TH0=0; //設(shè)置定時(shí)器0初值高8位 TR0=0;//停止定時(shí)器0 ET0=1;//Timer0中斷允許 //***開全局中斷設(shè)置**** //定時(shí)器Timer0設(shè)置了中斷允許,此處要開全局中斷 EA=1;//開全局中斷 TIRG=1; //發(fā)一個(gè)脈沖觸發(fā)信號(hào) //維持約17US,符合不低于10US的要求 //維持約17US,符合不低于10US的要求 i=4; while(i>0)i--; TIRG=0;TR0=0; //維持約17US,符合不低于10US的要求 //撤銷觸發(fā)信號(hào) //關(guān)閉定時(shí)器 //設(shè)置定時(shí)器0初值低8位為0 TL0=0; TH0=0; //設(shè)置定時(shí)器0初值高8位為0 //清除溢出標(biāo)志 k=0;flag=0;Timeout=0;while((ECHO==0)&&((Timeout++)<50000)); //等待回響高電平 TR0=1;//回響高電平來后啟動(dòng)定時(shí)器 Timeout=0;while((ECHO==1)&&((Timeout++)<50000)); //等待回響高電平結(jié)束后 TR0=0; //關(guān)閉定時(shí)器 S=((TH0*256+TL0)*1)/58; if(flag==1||S>400)//超出測(cè)量范圍顯示“-” { LCD1602_Disp(0, 0, '-'); LCD1602_Disp(1, 0, '-'); LCD1602_Disp(2, 0, '-'); LCD1602_Disp(3, 0, 'C'); LCD1602_Disp(4, 0, 'M'); } else { LCD1602_Disp(0, 0, S%1000/100+'0'); LCD1602_Disp(1, 0, S%1000%100/10+'0');// LCD1602_Disp(2, 0, S%1000%100%10+'0'); LCD1602_Disp(3, 0, 'C'); LCD1602_Disp(4, 0, 'M'); } i=18000; while(i>0) //顯示百位- //顯示十位- //顯示個(gè)位- //顯示C //顯示M //顯示百位 顯示十位 //顯示個(gè)位 //顯示C //顯示M //維持約77400US,符合不低于60MS的要求 //維持約77400US,符合不低于60MS的要求 i--; } void main()//主程序 { //維持約77400US,符合不低于60MS的要求 init();//調(diào)用初始化子程序 while(1)//死循環(huán) { switch(a)//判斷a從串口讀取到的數(shù)據(jù) { case 0x00://如果是0x1f就前進(jìn) xunji();break;case 0x01://如果是0x2f就后退 qian();break;case 0x02://如果是0x3f就左轉(zhuǎn) csb();break; case 0x03://如果是0x4f就右轉(zhuǎn) mzuo();zd=1;break; case 0x04://如果是0x00就停止 hou();break; case 0x05://如果是0xa0車燈打開 myou();yd=1;break; case 0x06://如果是0xb0車燈關(guān)閉 chongshua=1;break; case 0x07://如果是0xc0蜂鳴器鳴響 } ting();hd=1;break; case 0x08://如果是0xc0蜂鳴器鳴響 tuodi=1;break;} } void chuan()interrupt 4//串口中斷服務(wù)程序 { } RI=0;//軟件清除串口響應(yīng) a=SBUF;//讀取單片機(jī)串口接受的藍(lán)牙模塊發(fā)送的數(shù)據(jù) 結(jié)論 根據(jù)本次設(shè)計(jì)要求,我們小組系統(tǒng)地閱讀了大量的資料,并認(rèn)真分析了設(shè)計(jì)課題的需求,還系統(tǒng)學(xué)習(xí)了51系列單片機(jī)的工作原理及其使用方法,并獨(dú)自設(shè)計(jì)智能小車的整個(gè)項(xiàng)目。 雖然條件艱苦,但經(jīng)過不懈鉆研和努力,購(gòu)買到了所有所需的元器件,并系統(tǒng)的進(jìn)行了多項(xiàng)試驗(yàn),最終做出了整個(gè)小車的硬件系統(tǒng),然后結(jié)合課題任務(wù)和小車硬件進(jìn)行了程序的編制,本系統(tǒng)能夠基本滿足設(shè)計(jì)要求,能夠較快較平穩(wěn)的是小車沿引導(dǎo)線行駛,但由于經(jīng)驗(yàn)?zāi)芰τ邢?,該系統(tǒng)還存在著許多不盡人意的地方有待于進(jìn)一步的完善與改進(jìn)。 通過本次課題設(shè)計(jì),不僅是對(duì)我們課本所學(xué)知識(shí)的考查,更是對(duì)我的自學(xué)能力和收集資料能力以及動(dòng)手能力的考驗(yàn)。本次畢業(yè)設(shè)計(jì)使我們對(duì)一個(gè)項(xiàng)目的整體設(shè)計(jì)有了初步認(rèn)識(shí),還認(rèn)識(shí)了幾種傳感器,并能獨(dú)立設(shè)計(jì)出其接口電路,再有對(duì)電路板的制作有了一定的了解,并學(xué)會(huì)了使用Protel設(shè)計(jì)電路。本次畢業(yè)設(shè)計(jì)使我們意識(shí)到了實(shí)驗(yàn)的重要性,在硬件制作和軟件調(diào)試的過程中,出現(xiàn)了很多問題,最終都是通過實(shí)驗(yàn)的方法來解決的。還有以前對(duì)程序只是一個(gè)很模糊的概念,通過這次的課題設(shè)計(jì)使我對(duì)程序完全有了一個(gè)新的認(rèn)識(shí),并能使用C熟練的進(jìn)行編程了。通過本次課題設(shè)計(jì),極大的鍛煉了我們的思考和分析問題的能力,并對(duì)單片機(jī)有了一個(gè)更深的認(rèn)識(shí)。 總之,在課題設(shè)計(jì)的過程中,無論是對(duì)于學(xué)習(xí)方法還是理論知識(shí),我們都有了新的認(rèn)識(shí),受益匪淺,這將激勵(lì)我們?cè)诮窈笤俳釉賲枺粩嗤晟谱约旱睦碚撝R(shí),提高實(shí)踐運(yùn)作能力。 2013年 7 月12日 一、緒論.......................................................................4 1.1智能小車的作用和意義..................................................................4 二、方案設(shè)計(jì)與論證................................................4 2.1 總體方案設(shè)計(jì)...............................................................................42.2主控系統(tǒng)........................................................................................5 2.3傳感器選擇方案............................................................................6 2.4電機(jī)驅(qū)動(dòng)芯片選擇方案..................................................................6 2.5電機(jī)方案選擇..................................................................................6 2.6電源方案選擇..................................................................................7 三、主要器件介紹.....................................................7 3.1 STC89C52的介紹.........................................................................7 3.2 L298N的介紹...............................................................................8 3.2.1 L298N的引腳功能...................................................................................9 3.2.2 L298N的運(yùn)行參數(shù)...................................................................................10 3.2.3 L298N的邏輯控制...................................................................................10 3.3 TCRT5000的介紹........................................................................11 3.4LM339的介紹................................................................................12 3.5 L7805CV和L7806CV的介紹.........................................................12 四、硬件設(shè)計(jì)...............................................................14 4.1 主控芯片STC89C52單片機(jī)最小系統(tǒng)板電路...........................14 4.2 電機(jī)驅(qū)動(dòng)模塊電路..........................................................................15 4.3紅外對(duì)黑線檢測(cè)模塊電路...............................................................16 4.4穩(wěn)壓電源電路...................................................................................18 五、程序設(shè)計(jì).............................................................19 5.1主程序.............................................................................................19 六、調(diào)試.......................................................................28 6.1硬件調(diào)試.........................................................................................28 6.1.1元件的固定...........................................................................28 6.1.2TCRT5000探頭.....................................................................29 6.1.3 L298N馬達(dá)驅(qū)動(dòng)模塊...........................................................29 6.2軟件調(diào)試........................................................................................29 6.2.1調(diào)試平臺(tái)介紹.........................................................................29 6.2.2程序調(diào)試.....................................................................................29 6.3 測(cè)試結(jié)果與分析...........................................................................30 七、心得體會(huì)..................................................................................30 附件 元件清單 參考文獻(xiàn) 一、緒論 1.1智能小車的作用和意義 自第一臺(tái)工業(yè)機(jī)器人誕生以來,機(jī)器人的發(fā)展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國(guó)防等領(lǐng)域。近年來機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們?cè)诓粩嗵接?、改造、認(rèn)識(shí)自然的過程中,制造能替代人勞動(dòng)的機(jī)器一直是人類的夢(mèng)想。 隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人的感系統(tǒng),對(duì)于視覺的各種技術(shù)而言圖像處理技術(shù)已相當(dāng)發(fā)達(dá),而基于圖像的理解技術(shù)還很落后,機(jī)器視覺需要通過大量的運(yùn)算也只能識(shí)別一些結(jié)構(gòu)化環(huán)境簡(jiǎn)單的目標(biāo)。視覺傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動(dòng)聚焦。但CCD傳感器的價(jià)格、體積和使用方式上并不占優(yōu)勢(shì),因此在不要求清晰圖像只需要粗略感覺的系統(tǒng)中考慮使用接近覺傳感器是覺傳感器種類越來越多,其中視覺傳感器成為自動(dòng)行走和駕駛的重要部件。視覺的典型應(yīng)用領(lǐng)域?yàn)樽灾魇街悄軐?dǎo)航一種實(shí)用有效的方法。 機(jī)器人要實(shí)現(xiàn)自動(dòng)導(dǎo)引功能和避障功能就必須要感知導(dǎo)引線和障礙物,感知導(dǎo)引線相當(dāng)給機(jī)器人一個(gè)視覺功能。避障控制系統(tǒng)是基于自動(dòng)導(dǎo)引小車(AVG—auto-guide vehicle)系統(tǒng),基于它的智能小車實(shí)現(xiàn)自動(dòng)識(shí)別路線,判斷并自動(dòng)避開障礙,選擇正確的行進(jìn)路線。使用傳感器感知路線和障礙并作出判斷和相應(yīng)的執(zhí)行動(dòng)作。 該智能小車可以作為機(jī)器人的典型代表。它可以分為三大組成部分:傳感器檢測(cè)部分、CPU、執(zhí)行部分。機(jī)器人要實(shí)現(xiàn)自動(dòng)避障功能,還可以擴(kuò)展循跡等功能,感知導(dǎo)引線和障礙物??梢詫?shí)現(xiàn)小車自動(dòng)識(shí)別路線,選擇正確的行進(jìn)路線,并檢測(cè)到障礙物自動(dòng)躲避。基于上述要求,傳感檢測(cè)部分考慮到小車一般不需要感知清晰的圖像,只要求粗略感知即可。智能小車的執(zhí)行部分,是由直流電機(jī)來充當(dāng)?shù)?,主要控制小車的行進(jìn)方向和速度。 二、方案設(shè)計(jì)與論證 2.1 總體方案設(shè)計(jì) 本系統(tǒng)基于AT89C52單片機(jī)的小車尋跡系統(tǒng),該系統(tǒng)采用兩組高靈敏度的紅外反射式光 3 電傳感器,對(duì)路面的黑色軌跡進(jìn)行檢測(cè),將檢測(cè)的數(shù)據(jù)送入單片機(jī)進(jìn)行處理,并利用單片機(jī)產(chǎn)生PWM波,并以最短時(shí)間完成尋跡。同時(shí)采用紅外傳感器對(duì)障礙物進(jìn)行躲避功能,遇到對(duì)于交通燈的檢測(cè)采用固定頻率的紅外線信號(hào)表示不同的交通指示燈,使控制系統(tǒng)更加智能。在軟件程序上采用一定的控制算法,使得小車在通道上第一次遇到十字黑線時(shí)候減速行駛,在第二次遇到十字黑線可以實(shí)現(xiàn)減速轉(zhuǎn)彎,因此,本系統(tǒng)由紅外光電傳感器,單片機(jī)和驅(qū)動(dòng)單元共同作用,保證小車能在預(yù)先設(shè)定的軌跡上行駛。 本設(shè)計(jì)的主要特色本設(shè)計(jì)的主要特色本設(shè)計(jì)的主要特色本設(shè)計(jì)的主要特色: 1.自制的四個(gè)輪結(jié)構(gòu)小車,采用PWM調(diào)速。2.采用6V電池供電,直流穩(wěn)壓電路工作穩(wěn)定。 3.采用紅外發(fā)射傳感器接收對(duì)黑線標(biāo)志進(jìn)行識(shí)別,具有高精度和高靈敏度。 2.2主控系統(tǒng) 根據(jù)設(shè)計(jì)要求,我認(rèn)為此設(shè)計(jì)屬于多輸入量的復(fù)雜程序控制問題。據(jù)此,擬定了以下兩種方案并進(jìn)行了綜合的比較論證,具體如下: 方案一: 選用一片CPLD(如EPM7128LC84-15)作為系統(tǒng)的核心部件,實(shí)現(xiàn)控制與處理的功能。CPLD具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點(diǎn),可利用VHDL語(yǔ)言進(jìn)行編寫開發(fā)。但CPLD在控制上較單片機(jī)有較大的劣勢(shì)。同時(shí),CPLD的處理速度非常快,而小車的行進(jìn)速度不可能太高,那么對(duì)系統(tǒng)處理信息的要求也就不會(huì)太高,在這一點(diǎn)上,MCU就已經(jīng)可以勝任了。若采用該方案,必將在控制上遇到許許多多不必要增加的難題。為此,我們不采用該種方案,進(jìn)而提出了第二種設(shè)想。 方案二: 采用單片機(jī)作為整個(gè)系統(tǒng)的核心,用其控制行進(jìn)中的小車,以實(shí)現(xiàn)其既定的性能指標(biāo)。充分分析我們的系統(tǒng),其關(guān)鍵在于實(shí)現(xiàn)小車的自動(dòng)控制,而在這一點(diǎn)上,單片機(jī)就顯現(xiàn)出來它的優(yōu)勢(shì)——控制簡(jiǎn)單、方便、快捷。這樣一來,單片機(jī)就可以充分發(fā)揮其資源豐富、有較為強(qiáng)大的控制功能及可位尋址操作功能、價(jià)格低廉等優(yōu)點(diǎn)。因此,這種方案是一種較為理想的方案。針對(duì)本設(shè)計(jì)特點(diǎn)——多開關(guān)量輸入的復(fù)雜程序控制系統(tǒng),需要擅長(zhǎng)處理多開關(guān)量的標(biāo)準(zhǔn)單片機(jī),而不能用精簡(jiǎn)I/O口和程序存儲(chǔ)器的小體積單片機(jī),D/A、A/D功能也不必選用。根據(jù)這些分析,我選定了STC89C52RA單片機(jī)作為本設(shè)計(jì)的主控裝置,52單片機(jī)具有功能強(qiáng)大的位操作指令,I/O口均可按位尋址,程序空間多達(dá)8K,對(duì)于本設(shè)計(jì)也綽綽有余,更可貴的是52單片機(jī)價(jià)格非常低廉。在綜合考慮了傳感器、兩部電機(jī)的驅(qū)動(dòng)等諸多因素后,我們決定采用一片單片機(jī),充分利用STC89C52單片機(jī)的資源。 2.3傳感器選擇方案 方案一:采用發(fā)光二極管發(fā)光,用光敏二極管接收;發(fā)光二極管發(fā)出的可見光照射到黑帶時(shí),光線被黑帶吸收,光敏二極管為檢測(cè)到信號(hào)。呈高阻抗,使輸出端為低電平。當(dāng)發(fā)光二極管發(fā)出的可見光照射到地面時(shí),它發(fā)出的可見光反射回來被光敏二極管檢測(cè)到,其阻抗迅速降低,此時(shí)輸出端為高電平。但是由于光敏二極管受環(huán)境中可見光影響較大,電路的穩(wěn)定性很差,但可以通過運(yùn)放對(duì)檢測(cè)信號(hào)進(jìn)行處理。 方案二: 采用反射式紅外光電傳感器。用TCRT5000型反射式紅外對(duì)管組成的路徑識(shí)別傳感器模塊,檢測(cè)距離和靈敏度均能達(dá)到系統(tǒng)要求,該器件具有如下特點(diǎn):當(dāng)發(fā)光二極管發(fā)出的光反射回來時(shí),三極管導(dǎo)通輸出低電平,該光電對(duì)管調(diào)理電路簡(jiǎn)單,工作性能穩(wěn)定。綜上所述,本設(shè)計(jì)采用發(fā)光二極管進(jìn)行檢測(cè),原因是性價(jià)比較合理。 2.4電機(jī)驅(qū)動(dòng)芯片選擇方案 方案一:采用分立元件的H橋驅(qū)動(dòng)電路。 方案二:采用集成的H橋驅(qū)動(dòng)電路芯片。由于集成的H橋驅(qū)動(dòng)電路芯片體積小,穩(wěn)定性高,因此選用集成的驅(qū)動(dòng)電路芯片作為電機(jī)的驅(qū)動(dòng)芯片,型號(hào)為L(zhǎng)298N。 2.5電機(jī)方案選擇 方案一: 采用步進(jìn)電機(jī),步進(jìn)電機(jī)的一個(gè)顯著特點(diǎn)就是具有快速啟停能力可實(shí)現(xiàn)電機(jī)正反轉(zhuǎn)及調(diào)速,啟動(dòng)性能好,啟動(dòng)轉(zhuǎn)矩大。工作電壓可達(dá)到36V,4A??赏瑫r(shí)驅(qū)動(dòng)兩臺(tái)直流電機(jī)。適合應(yīng)用于機(jī)器人設(shè)計(jì)及智能小車的設(shè)計(jì)中,如果符合不超過步進(jìn)電機(jī)所能提供的動(dòng)態(tài)轉(zhuǎn)矩值,就能夠立即使步進(jìn)電機(jī)的啟功或者反轉(zhuǎn)。調(diào)速方式:直流電動(dòng)機(jī)采用PWM信號(hào)平滑調(diào)速。 方案二: 采用普通直流減速電機(jī),直流電動(dòng)機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑,方便,調(diào)整范圍廣,過載能力強(qiáng),能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無極快速啟動(dòng),制動(dòng),和反轉(zhuǎn),能滿足各種不同的特殊運(yùn)行要求。綜上所訴,我們選擇直流減速電機(jī)。 2.6電源方案選擇 方案一: 直接使用AA干電池進(jìn)行供電它的結(jié)構(gòu)十分簡(jiǎn)單,但是供電能力差,不易長(zhǎng)時(shí)間供電。 方案二: 使用3500mA干電池配合直流穩(wěn)壓整流電路輸入端口接9mA的干電池,經(jīng)電容濾波和L7805和L7806穩(wěn)壓后輸出約5V,6V電壓??杀WC長(zhǎng)時(shí)間穩(wěn)定的輸出電壓。這樣可以提供持久穩(wěn)定的電流,穩(wěn)壓后給單片機(jī)系統(tǒng)和其他芯片供電??紤]到系統(tǒng)穩(wěn)定工作的要求,所以選擇方案一。 三 主要器件介紹 3.1 STC89C52的介紹 STC89C52引腳功能說明 VCC(40引腳):電源電壓 VSS(20引腳):接地 P0端口(P0.0~P0.7,39~32引腳):P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié); 而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。 P1端口(P1.0~P1.7,1~8引腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流。 此外,P1.0和P1.1還可以作為定時(shí)器/計(jì)數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表: 在對(duì)Flash ROM編程和程序校驗(yàn)時(shí),P1接收低8位地址。表XX P1.0和P1.1引腳復(fù)用功能 在對(duì)Flash ROM編程或程序校驗(yàn)時(shí),P3還接收一些控制信號(hào)。P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如下表所示: 表XX P3口引腳復(fù)用功能 來完成單片機(jī)單片機(jī)的復(fù)位初始化操作。看門狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。 XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。特殊功能寄存器 3.2 L298N的介紹 L298N是一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片的主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器、線圈等感性負(fù)載;采用標(biāo)準(zhǔn)TTL邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作;有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。 3.2.1 L298N的引腳功能 3.2.2 L298N的運(yùn)行參數(shù) 3.2.3 L298N的邏輯控制 主要采用L298N,通過單片機(jī)的I/O輸入改變芯片控制端的電平,即可以對(duì)電機(jī)進(jìn)行正反轉(zhuǎn),停止的操作,輸入引腳與輸出引腳的邏輯關(guān)系圖為 表3.3 L298N對(duì)直流電機(jī)控制的邏輯真值表 3.3 TCRT5000的介紹 TCRT5000光電傳感器模塊是基于TCRT5000紅外光電傳感器設(shè)計(jì)的一款紅外反射式光電開關(guān)。傳感器采用高發(fā)射功率紅外光電二極管和高靈敏度光電晶體管組成,輸出信號(hào)經(jīng)施密特電路整形,穩(wěn)定可靠。+:接直流DC5V正極 -:接直流DC5V負(fù)極 S:信號(hào)輸出端,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。應(yīng)用場(chǎng)合: 電度表脈沖數(shù)據(jù)采樣、傳真機(jī)碎紙機(jī)紙張檢測(cè)、障礙檢測(cè) 黑白線檢測(cè) 基本參數(shù): 外形尺寸: 長(zhǎng) 32mm~37 mm;寬 7.5mm;厚 5mm 工作電壓: DC 3V~5.5V,推薦工作電壓為5V 檢測(cè)距離: 1mm~8mm適用,焦點(diǎn)距離為2.5mm 傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被檢測(cè)物體出現(xiàn)在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。 靈敏度可調(diào)的循跡電路。當(dāng)比較器的正向輸入端電壓低于反向輸入端的電壓時(shí)輸出低電平,LED 亮,表示接收到反射光。 3.4 LM339的介紹 智能小車中運(yùn)用于電路分析模塊 LM339引腳圖與功能簡(jiǎn)介 LM339集成塊內(nèi)部裝有四個(gè)獨(dú)立的電壓比較器。LM339類似于增益不可調(diào)的運(yùn)算放大器。每個(gè)比較器有兩個(gè)輸入端和一個(gè)輸出端。兩個(gè)輸入端一個(gè)稱為同相輸入端,用“+”表示,另一個(gè)稱為反相輸入端,用“-”表示。用作比較兩個(gè)電壓時(shí),任意一個(gè)輸入端加一個(gè)固定電壓做參考電壓(也稱為門限電平,它可選擇LM339輸入共模范圍的任何一點(diǎn)),另一端加一個(gè)待比較的信號(hào)電壓。當(dāng)“+”端電壓高于“-”端時(shí),輸出管截止,相當(dāng)于輸出端開路。當(dāng)“-”端電壓高于“+”端時(shí),輸出管飽和,相當(dāng)于輸出端接低電位。兩個(gè)輸入端電壓差別大于10mV就能確保輸出能從一種狀態(tài)可靠地轉(zhuǎn)換到另一種狀態(tài),因此,把LM339用在弱信號(hào)檢測(cè)等場(chǎng)合是比較理想的。LM339的輸出端相當(dāng)于一只不接集電極電阻的晶體三極管,在使用時(shí)輸出端到正電源一般須接一只電阻(稱為上拉電阻,選3-15K)。選不同阻值的上拉電阻會(huì)影響輸出端高電位的值。因?yàn)楫?dāng)輸出晶體三極管截止時(shí),它的集電極電壓基本上取決于上拉電阻與負(fù)載的值。另外,各比較器的輸出端允許連接在一起使用。 3.5 L7805CV和L7806CV的介紹 L7805 L7805是我們最常用到的穩(wěn)壓芯片了,他的使用方便,用很簡(jiǎn)單的電路即可以輸入一個(gè)直流穩(wěn)壓電源他的輸出電壓恰好為5v,剛好是51系列單片機(jī)運(yùn)行所需的電壓,他有很多的系列如ka7805,ads7805,cw7805等,性能有微小的差別,用的最多的還是LM7805,下面我簡(jiǎn)單的介紹一下他的3個(gè)引腳以及用它來構(gòu)成的穩(wěn)壓電路的資料。 其中1接整流器輸出的+電壓,2為公共地(也就是負(fù)極),3就是我們需要的正5V輸出電壓了.L7806 L7806為固定正電壓穩(wěn)壓電路,屬三端正電源穩(wěn)壓電路系列(3Terminals positive Voltage Regulator Series)。產(chǎn)品應(yīng)用非常廣泛,涉及到各種穩(wěn)壓電源、充電器、數(shù)碼產(chǎn)品以及家電領(lǐng)域等。 L7806芯片參數(shù): 封裝 四、硬件設(shè)計(jì) .4.1 主控芯片AT89C52單片機(jī)最小系統(tǒng)板電路 本智能小車采用的單片機(jī)最小系統(tǒng)板是自己制做的AT89C52單片機(jī)最小系統(tǒng)板,它具有體積小,質(zhì)量輕,使用方便等優(yōu)點(diǎn),能夠很好的放置在智能小車中。原理圖如下。 小系統(tǒng)PCB板 4.2 電機(jī)驅(qū)動(dòng)模塊電路 電機(jī)驅(qū)動(dòng)模塊采用專用驅(qū)動(dòng)芯片L298N作為電機(jī)的驅(qū)動(dòng)芯片。L298N是一種具有高電壓大電流的全橋驅(qū)動(dòng)芯片,它的響應(yīng)頻率高,一片L298N可以分別控制兩個(gè)直流減速電機(jī),而且還帶有控制使能端,用它作為驅(qū)動(dòng)芯片,操作方便,穩(wěn)定,性能優(yōu)良。L298N的5、7引腳為一個(gè)電機(jī)的控制信號(hào)輸入端,10、12引腳為另一個(gè)電機(jī)的控制信號(hào)輸入端,2、3引腳為一個(gè)電機(jī)的控制信號(hào)輸出端,13、14引腳為另一個(gè)電機(jī)的控制信號(hào)輸出端,通過單片機(jī)對(duì)L298N的輸入端進(jìn)行指令控制,就能實(shí)現(xiàn)直流減速電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),從而控制小車前進(jìn)和后退。電機(jī)驅(qū)動(dòng)電路原理圖如下。 驅(qū)動(dòng)模塊PCB板 4.3紅外對(duì)黑線檢測(cè)模塊電路 由于有6個(gè)紅外傳感器排成一排均勻的安裝在小車底部,當(dāng)光線照射到路面并反射,由于黑線和白紙的反射系數(shù)不同,根據(jù)接收到的反射光強(qiáng)度判斷是否眼黑線前進(jìn)。在一般情況下,當(dāng)黑線位于中間的兩個(gè)紅外傳感器之間,不管小車偏向哪一邊,都能檢測(cè)出小車的偏移方向?;蛘弋?dāng)小車偏向左邊時(shí),右邊的傳感器檢測(cè)到黑線,輸出低電平給電機(jī),否則,輸出高電平。 紅外作循跡電路原理圖 紅外作循跡PCB板 采用紅外對(duì)管制作循跡電路,當(dāng)檢測(cè)到黑線時(shí),紅外接受管導(dǎo)通,否則紅外對(duì)管截止,通過比較器LM339電壓比較,把電平狀態(tài)送給單片機(jī)進(jìn)而單片機(jī)處理。原理圖如下。 電路分析原理圖 紅外電路分析PCB板 4.4穩(wěn)壓電源電路 電機(jī)驅(qū)動(dòng)電路模塊: 本題目要求小車的機(jī)械系統(tǒng)穩(wěn)定、靈活、簡(jiǎn)單,可選用兩輪式,考慮到現(xiàn)在的汽車多采用兩輪式我選用兩輪式的設(shè)計(jì),使設(shè)計(jì)更貼近生活需求。驅(qū)動(dòng)部分:直流驅(qū)動(dòng)電機(jī),由L298N雙通道馬達(dá)驅(qū)動(dòng)模塊驅(qū)動(dòng)前后兩個(gè)馬達(dá),其力矩完全可以達(dá)到模擬效果。電池的安裝:將電池放置在車體的下面,降低車體重心,提高穩(wěn)定性,同時(shí)可增加驅(qū)動(dòng)輪的抓地力,減小輪子空轉(zhuǎn)所引起的誤差。電源模塊:采用2支3500mA電池給電機(jī)供電,再用穩(wěn)壓芯片對(duì)電池電壓進(jìn)行降壓給單片機(jī)。采用一套電源可減少小車的負(fù)重。電機(jī)動(dòng)力電路應(yīng)用說明: 基本思路為使能端輸入使能信號(hào),即接高電平,控制輸入端A端輸入PWM 信號(hào),控制輸出端B輸入方向信號(hào),在一個(gè)PWM周期內(nèi),電動(dòng)機(jī)只承受單極性的電壓,電機(jī)的選擇方向由控制信號(hào)決定,電機(jī)的速度由PWM決定,PWM占空比為0%-100%對(duì)應(yīng)于電機(jī)轉(zhuǎn)速0-MAX。因此,當(dāng)接收到由檢測(cè)模塊的信號(hào)時(shí),單片機(jī)處理該信號(hào),根據(jù)該信號(hào)產(chǎn)生對(duì)應(yīng)的PWM 波,從而可以根據(jù)調(diào)節(jié)電機(jī)的轉(zhuǎn)速與方向。 穩(wěn)壓電源電路圖 穩(wěn)壓電源PCB板 五、程序設(shè)計(jì) 5.1主程序 #include uchar pwm_left =0;//變量定義,與速度比較的變量 uchar push_left =0;// 左電機(jī)占空比N/10 調(diào)速 uchar pwm_right =0;//與速度比較的變量 uchar push_right=0;// 右電機(jī)占空比N/10 調(diào)速 bit Right_moto_stop=1;bit Left_moto_stop =1;uint time=0;uint a=0,flag=0,flag1=0; sbit Left_1_led=P1^0;//四路尋跡模塊接口第一路 sbit Left_2_led=P1^1;//四路尋跡模塊接口第二路 sbit Right_1_led=P1^2;//四路尋跡模塊接口第二路 sbit Right_2_led=P1^3;//四路尋跡模塊接口第三路 uint a,d,y,z,q,w,c;sbit out1 = P2^0;sbit out2 = P2^1;sbit out3 = P2^2;sbit out4 = P2^3;sbit ena = P1^6;sbit enb = P1^7;sbit inright = P2^4;sbit inleft = P2^5; delay(uint a);int turnleft(uint z) { ena=1;enb=1;out1=1;out2=0;out3=1;out4=0;delay(z);return 0;} int turnright(uint y){ ena=1;enb=1;out1=0;out2=1;out3=0;out4=1;delay(y);return 0;} int dengdai(uint d){ ena=0;enb=0;out1=0;out2=0;out3=0;out4=0;delay(d);return 0;} void go(uint q){ ena=1;enb=1;out1=0;out2=1;out3=1;out4=0;delay(q);} int back(uint w) { ena=1;enb=1;out1=1;out2=0;out3=0;out4=1;delay(w);return 0;} int backright(int c){ ena=0;enb=1;out1=0;out2=0;out3=0;out4=1;delay(c);return 0;} void bizhang(){ if(inright==1&&inleft==1) { go(50); } if(inright==0) { turnright(50); } if(inleft==0) { turnleft(50); } if(inright==0&&inleft==0) { backright(2000); } } void xunji(){ { if(Left_1_led==0&&Left_2_led==0&&Right_1_led==0&&Right_2_led==0)//0 { go(50); } else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==0&&Right_2_led==1)//0001 { turnright(20); delay(5); } else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==1&&Right_2_led==0)//0010 { turnright(20); //(9,6) delay(1); } else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==1&&Right_2_led==1)//0011 { turnright(20); delay(3); } else if(Left_1_led==0&&Left_2_led==1&&Right_1_led==0&&Right_2_led==0)//0100 { turnleft(30); delay(3); } else if(Left_1_led==0&&Left_2_led==1&&Right_1_led==0&&Right_2_led==1)//0101 { turnright(30); delay(2); } else if(Left_1_led==0&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1)//0111 { turnleft(30); delay(1); } else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==0&&Right_2_led==0)//1000 { turnleft(30); delay(3); } else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==0&&Right_2_led==1)//1001 { go(30); delay(3);//本來延時(shí)6 } else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==1&&Right_2_led==0)//1010 { turnleft(30); delay(3); } else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==1&&Right_2_led==1)//1011 { turnright(20); delay(3); } else if(Left_1_led==1&&Left_2_led==1&&Right_1_led==0&&Right_2_led==0)//1100 { turnleft(20); delay(5); } else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==0&&Right_2_led==1)// 1101 { turnleft(20); delay(5); } else if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==0)// 1110 { turnleft(20); delay(5); } // else if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1)// 1111 // { //tiaosu();// go(20);// delay(5); // } } } int delay(uint a) { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--); return 0;} /************************************************************************/ /* PWM調(diào)制電機(jī)轉(zhuǎn)速 */ /************************************************************************/ /* 左電機(jī)調(diào)速 */ /*調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比 */ void pwm_out_left_moto(void){ if(Left_moto_stop){ if(pwm_left<=push_left)ena=1;else ena=0;if(pwm_left>=100)pwm_left=0;} else ena=0;} /******************************************************************/ /* 右電機(jī)調(diào)速 */ void pwm_out_right_moto(void){ if(Right_moto_stop){ if(pwm_right<=push_right)enb=1;else enb=0;if(pwm_right>=100)pwm_right=0;} else enb=0; } /*******************************************************************/ /* */ /* 定時(shí)器初值化 */ /*******************************************************************/ void init0(void){ TMOD=0X01;TH0= 0XF8;//1ms定時(shí) TH0= 0XF8;TL0= 0X30;TL0= 0X30;TR0= 1;ET0= 1;EA = 1;} void init1(void){ TMOD=0x10;//設(shè)置定時(shí)器0工作模式1 TH1=(65536-50000)/256;//定時(shí)器裝初值 TL1=(65536-50000)%256;IT0=1;IT1=1;EX0=1;//開外部中斷0 EX1=1;//開外部中斷1 ET1=1;//開定時(shí)器0中斷 TR1=1;//啟動(dòng)定時(shí)器0 EA=1; //開總中斷 } /******************************************************************/ ///*TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號(hào)*/ void timer0()interrupt 1 using 2 { TH0=0XF8;//1Ms定時(shí) TL0=0X30;time++;pwm_left++;pwm_right++;pwm_out_left_moto();pwm_out_right_moto();} void run(int m,int n){ push_left =m;//PWM 調(diào)節(jié)參數(shù)1-10 1為最慢,10是最快 改這個(gè)值可以改變其速度 push_right =n;//PWM 調(diào)節(jié)參數(shù)1-10 1為最慢,10是最快 改這個(gè)值可以改變其速度 out1=0;//左電機(jī)前進(jìn) out2=1;out3=1;out4=0;//右電機(jī)前進(jìn) } void tiaosu() { while(flag==1){run(30,30);delay(30);xunji();if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1){ a=1;flag=0;} } while(a==1){run(99,99);delay(30);xunji();if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1){ a=2;} } } void main() { init0(); init1(); P1=0xff; P2=0xff; while(1){ if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1){flag=1;} //1111 else flag=0; delay(3);if(flag==0)xunji();else tiaosu();} } 六、調(diào)試: 6.1硬件調(diào)試 6.1.1 元件的固定 小車主要有5大模塊的電路板組成的,板和板之間是靠導(dǎo)線連接。小車在循跡運(yùn)動(dòng)的時(shí)候時(shí)常顛簸,導(dǎo)致電路板移位致使電路板上面的元件受到干擾,使小車不穩(wěn)定運(yùn)動(dòng),特別是L298N.所以我們除了在板上打孔鎖上螺絲,還在板和板之間用熱熔膠再固定,減少震動(dòng)。 6.1.2 TCRT5000探頭 由TCRT5000組成的軌跡識(shí)別電路是本次設(shè)計(jì)成敗的關(guān)鍵,在初次調(diào)試時(shí)小車的搖頭動(dòng)作(即轉(zhuǎn)向)時(shí)常出現(xiàn)不靈的情況。后來用電壓表測(cè)量了電壓比較器量輸入端的電壓發(fā)現(xiàn)基準(zhǔn)電壓到了3.5V,而紅外探頭在檢測(cè)到黑線時(shí)才3.6V。兩者電壓相差無幾,所以遇到黑線顏色較淺或反光的區(qū)域單片機(jī)會(huì)發(fā)生誤判的現(xiàn)象。于是我們測(cè)量了紅外探頭在黑白兩種極限情況下的電壓輸出情況。在測(cè)量了紅外探頭在黑色和白色兩種極限情況下的電壓后,調(diào)節(jié)電阻我把基準(zhǔn)電壓調(diào)到5V,這個(gè)電壓值距黑色或白色情況下輸出的電壓值都很大,單片機(jī)會(huì)減少誤判的現(xiàn)象。改良過后測(cè)試正常,小車能靈活的搖頭,更功能實(shí)現(xiàn)。 6.1.3 L298N馬達(dá)驅(qū)動(dòng)模塊 第一次給L298N馬達(dá)驅(qū)動(dòng)模塊通電實(shí)現(xiàn)簡(jiǎn)單的馬達(dá)單向驅(qū)動(dòng),發(fā)現(xiàn)馬達(dá)時(shí)跑時(shí)不跑。經(jīng)過檢測(cè)發(fā)現(xiàn)是一根信號(hào)線接觸不良,重新接好后運(yùn)行正常。此模塊是用的市面上可以買到的模塊所以性能比較穩(wěn)定,調(diào)試很成功。 6.2軟件調(diào)試 6.2.1調(diào)試平臺(tái)介紹 此次編程采用了keil V4。KeilSoftware公司推出的uVision4是一款可用于多種8051MCU的集成開發(fā)環(huán)境(IDE),該IDE同時(shí)也是PK51及其它開發(fā)套件的一個(gè)重要組件。除增加了源代碼、功能導(dǎo)航器、模板編輯以及改進(jìn)的搜索功能外,uVision4還提供了一個(gè)配置向?qū)Чδ?,加速了啟?dòng)代碼和配置文件的生成。此外其內(nèi)置的仿真器可模擬目標(biāo)MCU,包括指令集、片上外圍設(shè)備及外部信號(hào)等。uVision4提供邏輯分析器,可監(jiān)控基于MCUI/O引腳和外設(shè)狀態(tài)變化下的程序變量。uVision4提供對(duì)多種最新的8051類微處理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。其界面如下圖 所示。 6.2.2程序調(diào)試 在調(diào)試好硬件之后我第一次把軟件下載到系統(tǒng)里面進(jìn)行實(shí)際測(cè)試,發(fā)現(xiàn)小車在彎道比較急的地方?jīng)]辦法繞過去,會(huì)發(fā)生脫軌現(xiàn)象。后來仔細(xì)分析了自己的算法,原本我是設(shè)定小車在遇到彎道后全力轉(zhuǎn)向繞過彎道,但是有些急得彎道小車無法繞過。此時(shí)我就想如何去解決在轉(zhuǎn)向角度有限的情況下解決轉(zhuǎn)急彎的問題。聯(lián)想到日常汽車在狹窄的小路上轉(zhuǎn)彎的情景我想到了倒退調(diào)整車體位置的方法。即在發(fā)現(xiàn)小車以現(xiàn)有的轉(zhuǎn)向角度無法完成轉(zhuǎn)彎時(shí)使小車反相倒退,這樣即可很很快的調(diào)整小車的位置。改進(jìn)算法后我在進(jìn)行了一次測(cè)試,這次小車成功的繞過了90度的彎道。 根據(jù)測(cè)試結(jié)果,可以看出小車循跡避障功能基本實(shí)現(xiàn)。但是測(cè)試還是存在失敗的現(xiàn)象。分析其原因有兩點(diǎn)。一,小車熟讀過快在轉(zhuǎn)彎時(shí)未及時(shí)剎車。二,畫在紙上的跑道會(huì)存在褶 皺的地方,而這些地方容易產(chǎn)生誤判的現(xiàn)象。得知這些原因以后我降低現(xiàn)車速度,再次進(jìn)行了測(cè)試。結(jié)果表明,小車能很好的完成循跡,即使循跡軌道發(fā)生改變也不影響。但是小車不能根據(jù)賽道的情況自主的改變速度。這也是本次設(shè)計(jì)的一個(gè)缺陷。在實(shí)際調(diào)試過程中小車發(fā)生過程序跑飛的情況,經(jīng)調(diào)整改進(jìn)程序后,小車運(yùn)行狀態(tài)穩(wěn)定。能很好的完成沿黑色軌道前進(jìn),改變軌道的形狀及轉(zhuǎn)彎角度,小車仍可完成循跡。 七、心得體會(huì) 在智能小車系統(tǒng)的設(shè)計(jì)、調(diào)試及論文的寫作過程中,感謝很多同學(xué)給予了無數(shù)的指導(dǎo)和大力的支持。在這個(gè)過程中我們不僅學(xué)會(huì)了知識(shí),還學(xué)會(huì)了治學(xué)的態(tài)度,那就是嚴(yán)謹(jǐn),把知識(shí)變?yōu)榧河?,棄其糟粕留其精華,用自己的方式去解決問題,而不是人云亦云。 智能小車是傳感技術(shù)和自動(dòng)化控制技術(shù)飛速發(fā)展的產(chǎn)物,使得機(jī)械和電子信息不再明顯分家,自動(dòng)控制在工業(yè)領(lǐng)域中得地位越來越重要,智能這個(gè)詞是我們科技發(fā)展的重要產(chǎn)物。這次實(shí)踐中涉及的主要部分有傳感器檢測(cè)車部分、驅(qū)動(dòng)部分、單片機(jī)為核心的控制芯片部分穩(wěn)壓及電路分析部分。各個(gè)部分的涉及,相互之間的連接協(xié)調(diào)等得成功,都是要建立在系統(tǒng)的閱讀大量資料,并且認(rèn)真的分析課題的需求,還系統(tǒng)的學(xué)習(xí)的單片機(jī)的工作原理及其使用方法。并且學(xué)習(xí)了相關(guān)軟件,如仿真、程序燒寫等得應(yīng)用。通過本次課題設(shè)計(jì),不僅是對(duì)我們課本所學(xué)知識(shí)的考查,更是對(duì)我的自學(xué)能力和收集資料能力以及動(dòng)手能力的考驗(yàn)。我們對(duì)一個(gè)項(xiàng)目的整體設(shè)計(jì)有了初步認(rèn)識(shí)并能獨(dú)立設(shè)計(jì)出其接口電路,再有對(duì)電路板的制作有了一定的了解,并學(xué)會(huì)了使用Protel99設(shè)計(jì)電路。課程設(shè)計(jì)使我們意識(shí)到了實(shí)驗(yàn)的重要性,在硬件制作和軟件調(diào)試的過程中,出現(xiàn)了很多問題,最終都是通過實(shí)驗(yàn)的方法來解決的。還有以前對(duì)程序只是一個(gè)很模糊的概念,通過這次的課題設(shè)計(jì)使我對(duì)程序完全有了一個(gè)新的認(rèn)識(shí),并能使用C熟練的進(jìn)行編程了。通過本次課題設(shè)計(jì),極大的鍛煉了我們的思考和分析問題的能力,并對(duì)單片機(jī)有了一個(gè)更深的認(rèn)識(shí)。 小車的設(shè)計(jì)制作工作量飽滿,體現(xiàn)了團(tuán)隊(duì)合作精神。在這次設(shè)計(jì)中也有很多的不足之處,我們?nèi)鄙賹?shí)際經(jīng)驗(yàn),更多的是依靠網(wǎng)絡(luò)資源來解決問題,特別是各模塊的程序編寫,在軟件設(shè)計(jì)方面花費(fèi)了很多的時(shí)間。特別是在最后調(diào)試階段,程序的控制問題給我們帶來了很大的困難,小車設(shè)計(jì)的硬件部分完成相對(duì)順利些,在軟件領(lǐng)域顯得不足,今后會(huì)更多的學(xué)習(xí)軟件。設(shè)計(jì)過程中單片機(jī)知識(shí)頗有設(shè)計(jì),我們還應(yīng)加強(qiáng)理論知識(shí)的學(xué)習(xí)。本次設(shè)計(jì)涉及到了一系列光機(jī)電一體化的技術(shù)。其中機(jī)械結(jié)構(gòu)是小車能否穩(wěn)定運(yùn)行的基礎(chǔ),硬件電路決定了小車實(shí)現(xiàn)的功能,軟件部分是控制的靈魂,而同伴們鍥而不舍的精神則是整個(gè)設(shè)計(jì)的支柱! 總之,在課題設(shè)計(jì)的過程中,無論是對(duì)于學(xué)習(xí)方法還是理論知識(shí),我們都有了新的認(rèn)識(shí),受益匪淺,這將激勵(lì)我們?cè)诮窈笤俳釉賲?,不斷完善自己的理論知識(shí),提高實(shí)踐運(yùn)作能力。 附件 元件清單: 1.電機(jī)驅(qū)動(dòng)芯片L298N 2.穩(wěn)壓芯片L7805一個(gè),L7806一個(gè) 3.單片機(jī)STC89C52 4.晶振12M 5.輕觸開關(guān)和點(diǎn)觸開關(guān)各一個(gè) 6.電解電容220uF/25v、100uf/16v若干, 電容104若干,103電容若干 7.10K滑動(dòng)變阻器、470歐電阻若干 8.電阻330歐若干,1K的若干個(gè),9.上拉電阻472歐一個(gè) 10.紅外線傳感器TCRT5000 4個(gè) 11.散熱片一個(gè) 12.杜邦線若干(杜邦頭,焊片,包括線)13.萬用表 14.插針和插排若干 15.發(fā)光二極管若干 16.二極管IN4007八個(gè) 17.車底盤模具 18.LM339芯片 19.TR18650 3000mAh 3.7v電源 20.各種芯片底座若干 21.驅(qū)動(dòng)直流電機(jī)4個(gè) 參考文獻(xiàn) [1]郭惠,吳迅.單片機(jī)C語(yǔ)言程序設(shè)計(jì)完全自學(xué)手冊(cè)[M].電子工業(yè)出版社,2008.10:1-200.[2]王東鋒,王會(huì)良,董冠強(qiáng).單片機(jī)C語(yǔ)言應(yīng)用100例[M].電子工業(yè)出版社,2009.3:145-300.[3]韓毅,楊天.基于HCS12單片機(jī)的智能尋跡模型車的設(shè)計(jì)與實(shí)現(xiàn)[J].學(xué)術(shù)期刊,2008,29(18):1535-1955.[4] 王曉明.電動(dòng)機(jī)的單片機(jī)控制[J].學(xué)術(shù)期刊,2002,13(15):1322-1755.[5]宏晶科技,《STC89C51RC/RD+系列單片機(jī)器件手冊(cè)》,2011年9月8號(hào)更新版本 [6求是科技,《單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航(第2版)》,人民郵電出版社,2008年7月出版 [7]李全利,《單片機(jī)原理及應(yīng)用技術(shù)》,高等教育出版社,2009年1月出版 [8]丁明亮,《51單片機(jī)應(yīng)用設(shè)計(jì)與仿真-基于keil C與Proteus》,北京航空航天大學(xué)出版社,2009年2月出版 [9]張?chǎng)?《單片機(jī)原理及應(yīng)用(第2版)》,電子工業(yè)出版社,2010年出版 6.張毅剛,《單片機(jī)原理與應(yīng)用設(shè)計(jì)》,電子工業(yè)出版社,2008年出版 摘要 本設(shè)計(jì)主要有單片機(jī)模塊、傳感器模塊、電機(jī)驅(qū)動(dòng)模塊以及電源模塊組成,小車具有自主尋跡得功能。本次設(shè)計(jì)采用 STC 公司得 89C52 單片機(jī)作為控制芯片,傳感器模塊采用紅外光電對(duì)管與比較器實(shí)現(xiàn),能夠輕松識(shí)別黑白兩色路面,同時(shí)具有抗環(huán)境干擾能力,電機(jī)模塊由 L298N 芯片與兩個(gè)直流電機(jī)構(gòu)成,組成了智能車得動(dòng)力系統(tǒng),電源采用 7、2V 得直流電池,經(jīng)過系統(tǒng)組裝,從而實(shí)現(xiàn)了小車得自動(dòng)循跡得功能.關(guān)鍵詞 智能小車 STC89C52 單片機(jī) L298N 紅外光對(duì)管 1 1 緒論 隨著科學(xué)技術(shù)得發(fā)展,機(jī)器人得設(shè)計(jì)越來越精細(xì),功能越來越復(fù)雜,智能小車作為其得一個(gè)分支,也在不斷發(fā)展.在近幾年得電子設(shè)計(jì)大賽中,關(guān)于小車得智能化功能得實(shí)現(xiàn)也多種多樣,因此本次我們也打算設(shè)計(jì)一智能小車,使其能自動(dòng)識(shí)別預(yù)制道路,按照設(shè)計(jì)得道路自行尋跡。2 設(shè)計(jì)任務(wù)與要求 采用 MCS-51單片機(jī)為控制芯片(也可采用其她得芯片),紅外對(duì)管為識(shí)別器件、步進(jìn)電機(jī)為行進(jìn)部件,設(shè)計(jì)出一個(gè)能夠識(shí)別以白底為道路色,寬度 10mm左右得黑色膠帶制作得不規(guī)則得封閉曲線為引導(dǎo)軌跡并能沿該軌跡行進(jìn)得智能尋跡機(jī)器小車。3 方案設(shè)計(jì)與方案選擇 3.1 硬件部分 可分為四個(gè)模塊:?jiǎn)纹瑱C(jī)模塊、傳感器模塊、電機(jī)驅(qū)動(dòng)模塊以及電源模塊。 3.1.1 單片機(jī)模塊 為小車運(yùn)行得核心部件,起控制小車得所有運(yùn)行狀態(tài)得作用。由于以前自己開發(fā)板使用得就是ATMEL 公司得 STC89C52,所以讓然選擇這個(gè)芯片作為控制核心部件。STC89C52 就是一種低損耗、高性能、CMOS 八位微處理器,片內(nèi)有 4k字節(jié)得在線可重復(fù)編程、快速擦除快速寫入程序得存儲(chǔ)器,能重復(fù)寫入/擦除 1000次,數(shù)據(jù)保存時(shí)間為十年.其程序與數(shù)據(jù)存儲(chǔ)就是分開得.3.1.2 傳感器模塊 方案一:使用光敏電阻組成光敏探測(cè)器采集路面信息。阻值經(jīng)過比較器輸出高低電平進(jìn)行分析,但就是光照影響很大,不能穩(wěn)定工作。 方案二:使用光電傳感器來采集路面信息。使用紅外光電對(duì)管,其結(jié)構(gòu)簡(jiǎn)明,實(shí)現(xiàn)方便,成本低廉,沒有復(fù)雜得圖像處理工作,因此反應(yīng)靈敏,響應(yīng)時(shí)間少。但也存在不足,它能獲取得信息就是不完全得,容易受很多擾動(dòng)(如背景光源,高度等)得影響,抗干擾能力較差。 方案三:使用 CCD 傳感器來采集路面信息。使用 CCD 可以獲取大量得圖像信息,掌握全面得路徑信息,抗干擾能力強(qiáng),為以后功能得擴(kuò)展提供方便。但使用CCD 需要大量得圖像處理工作,進(jìn)行大量數(shù)據(jù)得存儲(chǔ)與計(jì)算,因此電路復(fù)雜,實(shí)現(xiàn)起來工作量大。 方案四:使用光電對(duì)管采集路面信息。RPR220結(jié)構(gòu)緊湊,體積小,調(diào)整電路簡(jiǎn)單工作性能穩(wěn)定。 可見方案四最適宜,但僅從此項(xiàng)目考慮,方案二成本低,也能完成設(shè)計(jì),故選用方案二.3.1.3 電機(jī)控制模塊3、1 1、3 3、1 1 電機(jī)得選擇 方案一:采用步進(jìn)電機(jī),其轉(zhuǎn)過得角度可以精確定位,可實(shí)現(xiàn)小車行進(jìn)過程得精確定位.但步進(jìn)電機(jī)得輸出力矩低,隨轉(zhuǎn)速得升高而降低,且轉(zhuǎn)速越快下降得越快。 方案二:采用直流電機(jī),其轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝配簡(jiǎn)單,操作方便。速度得調(diào)節(jié)可以改變電壓也可以調(diào)節(jié) PWM。 基于以上,我們選擇了方案二,使用直流電機(jī)作為驅(qū)動(dòng)電機(jī)。 3、1、3 3、2電機(jī)得驅(qū)動(dòng) 采用專用芯片 L298N 作為電機(jī)驅(qū)動(dòng)芯片,其操作方便,穩(wěn)定性好,性能優(yōu)良.一片L298N 就可以分別控制兩個(gè)直流電機(jī)。 3.1.4 電源模塊 給整個(gè)系統(tǒng)穩(wěn)定供電以保持其正常工作,包括7、2V得電源以及轉(zhuǎn)5V 部分,其中 7、2V 得就是給電機(jī)與其驅(qū)動(dòng)供電,5V 得用來驅(qū)動(dòng)單片機(jī)及其她芯片。 以上單元連接如下圖所示: 3.2 軟件部分 3、2、1 1 程序流程圖 此系統(tǒng)采用 89C52 單片機(jī),再根據(jù)硬件連接,通過相應(yīng)得軟件來完成對(duì)信號(hào)得采集與數(shù)據(jù)得分析,再控制小車得運(yùn)行狀態(tài),以下為主程序流程圖: 3、2 2、2 2 程序設(shè)計(jì)思 路3、2 2、2 2、1 1 尋跡模塊程序 通過傳感器獲得路面信息然后反饋給單片機(jī),再通過單片機(jī)來實(shí)現(xiàn)相應(yīng)得功能。3、2、2 2、2 電機(jī)驅(qū)動(dòng)模塊程序 控制兩個(gè)直流電機(jī),實(shí)現(xiàn)前進(jìn)、后退、前左轉(zhuǎn)、前右轉(zhuǎn)、停車等功能.4 各部分電路得作用及電路工作原理分析 4.1 信號(hào)采集模塊 4.1.1 TC RT T 50 00 結(jié)構(gòu)與工作原理 TCRT5000(L)具有緊湊得結(jié)構(gòu)發(fā)光燈與檢測(cè)器安排在同一方向上,利用紅外光譜反射對(duì)象存在另一個(gè)對(duì)象上,操作得波長(zhǎng)大約就是 950 毫米。探測(cè)器由光電晶體三極管組成得,它由高發(fā)射功率紅外光電二極管與高度靈敏光電晶體管組成。通過測(cè)試,其檢測(cè)距離在 2mm—10mm。TCRT5000 得發(fā)射管與接收管就是一起封裝在矩形塑料殼中,為了使檢測(cè)更加準(zhǔn)確,我們用了 5 只 TCRT5000檢測(cè)黑線,實(shí)物見圖4—1。 4.1.2 信號(hào)采集電路圖及原理 小車在白色地面行駛時(shí),紅外發(fā)射管發(fā)出得紅外信號(hào)被反射,接收管收到信號(hào)后,輸出端為低電平,經(jīng)過比較器比較后輸出為低電平。而當(dāng)紅外信號(hào)遇到黑色導(dǎo)軌時(shí),紅外信號(hào)被吸收,接收管不能接收信號(hào),輸出端為高電平,經(jīng)過比較器比較后輸出高電平。單片機(jī)通過采集每個(gè)比較器得輸出端電壓,便可以檢測(cè)出黑線得相對(duì)位置得位置,從而控制小車得行駛方向。 4.2 信息處理模塊 4.2.1 原理 檢測(cè)到白色路面得紅外接收頭處理后送出得就是低電平,而檢測(cè)到黑色路線得檢測(cè)頭送出得就是高電平,由此可根據(jù)這 5 個(gè)紅外接收頭得高低電平判斷路線情況而調(diào)整小車前進(jìn)方向。具體情況有如下幾種: a 檢測(cè)到 1 或 0 0 0 0 0 小車應(yīng)該停止.b 檢測(cè)到 0 0 0 0 或 0 0 0 0 或 1 0 0 0 說明路線向左偏,小車向左轉(zhuǎn).c 檢測(cè)到 0 0 0 0 1 或 0 0 0 0 或 0 0 0 1說明路線向右偏,小車向左轉(zhuǎn)。 d 檢測(cè)到 x x 1 x x(x 不全為 1) 說明線路就是直得,小車直走。 4.3 電機(jī)驅(qū)動(dòng)模塊 4、3 3、1 1 直流電機(jī) 給兩個(gè)電刷 A 與 B 加上直流電源,如上圖(a)所示,則有直流電流從電刷 A 流入,經(jīng)過線圈 abcd,從電刷 B 流出,根據(jù)電磁力定律,載流導(dǎo)體 ab與 cd收到電磁力得作用,其方向可由左手定則判定,兩段導(dǎo)體受到得力形成了一個(gè)轉(zhuǎn)矩,使得轉(zhuǎn)子逆時(shí)針轉(zhuǎn)動(dòng).如果轉(zhuǎn)子轉(zhuǎn)到如上圖(b)所示得位置,電刷 A 與換向片2接觸,電刷 B 與換向片 1 接觸,直流電流從電刷 A 流入,在線圈中得流動(dòng)方向就是 dcba,從電刷 B 流出.此時(shí)載流導(dǎo)體 ab 與 cd受到電磁力得作用方向同樣可由左手定則判定,它們產(chǎn)生得轉(zhuǎn)矩仍然使得轉(zhuǎn)子逆時(shí)針轉(zhuǎn)動(dòng)。這就就是直流電動(dòng)機(jī)得工作原理。外加得電源就是直流得,但由于電刷與換向片得作用,在線圈中流過得電流就是交流得,其產(chǎn)生得轉(zhuǎn)矩得方向卻就是不變得。實(shí)用中得直流電動(dòng)機(jī)轉(zhuǎn)子上得繞組也不就是由一個(gè)線圈構(gòu)成,同樣就是由多個(gè)線圈連接而成,以減少電動(dòng)機(jī)電磁轉(zhuǎn)矩得波動(dòng),繞組形式同發(fā)電機(jī)。 4、3 3、2 2 電路圖 我們采用成品L298N 電機(jī)驅(qū)動(dòng)模塊,采用光電耦合器件隔離單片機(jī)與L298N得控制電路,工藝精度高,性能可靠。L298N 模塊內(nèi)部通過 H 橋電路實(shí)現(xiàn)直流電機(jī)得正轉(zhuǎn),反轉(zhuǎn),其原理如下: 如圖 4-3 所示,全橋式驅(qū)動(dòng)電路得 4 只開關(guān)管都工作在斬波狀態(tài),S1、S2為一組,S3、S4 為另一組,兩組得狀態(tài)互補(bǔ),一組導(dǎo)通則 另一組必須關(guān)斷.當(dāng)S1、S2 導(dǎo)通時(shí),S3、S4 關(guān)斷,電機(jī)兩端加正向電壓,可以實(shí) 現(xiàn)電機(jī)得正轉(zhuǎn)或反轉(zhuǎn)制動(dòng);當(dāng) S3、S4 導(dǎo) 通時(shí),S1、S2 關(guān)斷,電機(jī)兩端為反向電 壓,電機(jī)反轉(zhuǎn)或正轉(zhuǎn)制動(dòng)。 橋驅(qū)動(dòng)電路 4、3 3、3原理 L298N就是 ST 公司生產(chǎn)得一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用 15 腳封裝。主要特點(diǎn)就是:工作電壓高,最高工作電壓可達(dá) 46V;輸出電流大,瞬間峰值電流可達(dá) 3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè) H 橋得高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)與步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響得情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用 L298N 芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。5 系統(tǒng)調(diào)試5、1 1 硬件部分 焊接完成后,首先進(jìn)行得調(diào)試就是用數(shù)字萬用表測(cè)量各個(gè)電路就是否焊接正常,就是否有虛焊漏焊等現(xiàn)象得出現(xiàn),以及各個(gè)電容就是否就是正常得未被擊穿狀態(tài)、電阻得阻值就是否與設(shè)計(jì)得原理圖上得一致.接通電源,用數(shù)字萬用表測(cè)量當(dāng)有+5V 得各引腳就是否有+5V 得電壓,測(cè)量電路中就是否出現(xiàn)了不該有得短路現(xiàn)象。接入光電傳感器模塊,使各個(gè)光電檢測(cè)器得光電對(duì)管靠近白紙,觀察對(duì)應(yīng)得發(fā)光二極管就是否發(fā)光,不發(fā)光表示正常。 然后再使各個(gè)光電對(duì)管靠近黑線,觀察對(duì)應(yīng)得發(fā)光二級(jí)管就是否發(fā)光,發(fā)光表示正常.5、2 2 軟件部分 我們先測(cè)試了小車得前進(jìn),停止,左轉(zhuǎn)與右轉(zhuǎn)。組裝信號(hào)采集模塊后,實(shí)現(xiàn)小車得自動(dòng)循跡功能.具體實(shí)現(xiàn)程序見附錄一6 總結(jié) 實(shí)驗(yàn)結(jié)果如符合實(shí)驗(yàn)要求,小車按照黑膠布軌跡前進(jìn),并能夠及時(shí)正確顯示小車得行進(jìn)狀態(tài)以及行進(jìn)距離。具體現(xiàn)象如下: 左邊傳感器檢測(cè)到黑線,小車左轉(zhuǎn); 右邊傳感器檢測(cè)到黑線,小車右轉(zhuǎn); 中間傳感器檢測(cè)到黑線,小車直行。 從而就可以完成對(duì)黑膠布得循跡功能。7 參考文獻(xiàn) [1]電子信息專業(yè)實(shí)驗(yàn)教程 趙剛 李佐儒 四川大學(xué)出版社 [2]單片機(jī)C語(yǔ)言教程 郭天祥 電子工業(yè)出版社 [3]模擬電子技術(shù) 童詩(shī)白 清華大學(xué)出版社 附錄一 程序: #include〈reg52、h> sbit DJ_left_s = P1^0; //直流電機(jī)控制 sbit DJ_left_n = P1^1; sbit DJ_right_s = P1^2; sbit DJ_right_n = P1^3;//左轉(zhuǎn)函數(shù) void Turn_right() { DJ_left_s = 0; ;1 = n_tfel_JD? DJ_right_s = 1; ;0 = n_thgir_JD?} //右轉(zhuǎn)函數(shù) void Turn_left() { DJ_left_s = 1; DJ_left_n = 0; ;0 = s_thgir_JD?;1 = n_thgir_JD?} //前進(jìn)函數(shù) void Go_ahead(){ ;1 = s_tfel_JD? DJ_left_n = 0; DJ_right_s = 1; DJ_right_n = 0; } //停止函數(shù) void Stop() { DJ_left_s = 0; DJ_left_n = 0; DJ_right_s = 0; ;0 = n_thgir_JD?} //循跡函數(shù) void xunji(unsigned int m){ ? if(m==0x7c) { ;)(thgir_nruT? ;nruter?? }?)01x0&m(fi?? { ? Go_ahead(); ? ;nruter? ? }?? if(m&0x0c) ? { ;)(thgir_nruT?? ? return; } ? if(m&0x60) ? { ?;)(tfel_nruT? ? return; ? } } //主函數(shù) void main() { while(1) { ? xunji(P2&0x7c); } ?} 附錄二 實(shí)物圖:第四篇:蔽障循跡智能小車畢業(yè)論文
第五篇:智能循跡小車實(shí)驗(yàn)報(bào)告