版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)論文(設(shè)計(jì))</p><p><b> ?。ㄗ匀豢茖W(xué))</b></p><p> 題 目: 智能玩具小車的控制系統(tǒng)設(shè)計(jì) </p><p> 院(系、部): 機(jī)電工程學(xué)院 </p><p> 學(xué) 生 姓 名:
2、吳 博 強(qiáng) </p><p> 指 導(dǎo) 教 師: 王 楓 職 稱 講 師 </p><p> 2015年05月24日</p><p> 河北科技師范學(xué)院教務(wù)處制</p><p><b> 河北科技師范學(xué)院</b></p><p>
3、本科畢業(yè)論文(設(shè)計(jì))</p><p> 智能玩具小車的控制系統(tǒng)設(shè)計(jì)</p><p> 院(系、部)名 稱 : 機(jī)電工程學(xué)院 </p><p> 專 業(yè) 名 稱: 電子信息工程 </p><p> 學(xué) 生 姓 名: 吳 博 強(qiáng) </p>
4、<p> 學(xué) 生 學(xué) 號(hào): 0414110117 </p><p> 指 導(dǎo) 教 師: 王 楓 </p><p> 2015年05月24日</p><p> 河北科技師范學(xué)院教務(wù)處制</p><p><b> 學(xué) 術(shù) 聲
5、 明</b></p><p> 本人呈交的學(xué)位論文,是在導(dǎo)師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實(shí)可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本學(xué)位論文的研究成果不包含他人享有著作權(quán)的內(nèi)容。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確的方式標(biāo)明。本學(xué)位論文的知識(shí)產(chǎn)權(quán)歸屬于河北科技師范學(xué)院。</p><p> 本人簽名:
6、 日期: </p><p> 指導(dǎo)教師簽名: 日期: </p><p><b> 摘 要</b></p><p> 機(jī)器人的研究是一項(xiàng)具有良好前景的科研項(xiàng)目,而智能小車的研究可以說(shuō)是機(jī)器人研究的
7、一個(gè)小入門。智能小車雖然功能不如機(jī)器人的強(qiáng)大,但是其所具備的功能一方面是機(jī)器人的基本功能或基礎(chǔ)原理,另一方面又有很大的發(fā)展空間。通過(guò)對(duì)智能小車的深入研究,也能為機(jī)器人的發(fā)展助一臂之力。</p><p> 本次設(shè)計(jì)的智能小車主要是基于52單片機(jī)實(shí)現(xiàn)自動(dòng)循跡、避障和無(wú)線操控功能,這三個(gè)功能是一個(gè)智能小車應(yīng)具備的基本功能。對(duì)每個(gè)功能的實(shí)現(xiàn)分別依靠TCRT5000傳感器、超聲波傳感器和nRF24L01+無(wú)線模塊實(shí)現(xiàn)。這
8、些模塊收到的信號(hào),由單片機(jī)進(jìn)行處理后,控制驅(qū)動(dòng)模塊來(lái)實(shí)現(xiàn)對(duì)小車的控制。本次設(shè)計(jì)制作出的小車能夠很好地完成這些功能,達(dá)到了設(shè)計(jì)的要求。且可通過(guò)無(wú)線操控在小車的行進(jìn)過(guò)程中進(jìn)行不同工作模式的切換,這使小車的行動(dòng)更加靈活。更能在遇到突發(fā)狀況時(shí),能夠繼續(xù)正常工作或避免損壞,增強(qiáng)了小車的可靠性。</p><p> 關(guān)鍵詞:智能小車;單片機(jī);TCRT5000傳感器;超聲波傳感器;nRF24L01+</p>&l
9、t;p><b> Abstract</b></p><p> The research of robot is a promising research project. And the research of smart car can be side to be rudiments of robot. Through in-depth study of the smart ca
10、r, also can help we research the robot.</p><p> The design of intelligent car is mainly based on 52’s microcontroller to realize automatic tracking and obstacle avoidance and wireless control function, thes
11、e three functions is a smart car should have the basic functions. To achieve the functions of each are depended on the TCRT5000 sensor, ultrasonic sensor and nRF24L01+ wireless module. These modules receive signal, then
12、send to microcontroller. Microcontroller process the signal, to control drive module to realize the control of the car. Ma</p><p> Keywords: smart car; microcontroller; TCRT5000 sensor; ultrasonic sensor; n
13、RF24L01+</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractI</p><p><b> 目 錄II</b></p><p><b> 1 緒
14、論1</b></p><p> 1.1 研究背景及意義1</p><p> 1.2 研究目的和設(shè)計(jì)構(gòu)思1</p><p> 2 系統(tǒng)工作原理2</p><p> 3 硬件系統(tǒng)設(shè)計(jì)2</p><p> 3.1 供電模塊設(shè)計(jì)與介紹2</p><p> 3.1.1
15、LM2576和LM2596介紹與應(yīng)用方案2</p><p> 3.1.2 7805芯片介紹與應(yīng)用方案5</p><p> 3.2 驅(qū)動(dòng)模塊介紹6</p><p> 3.3 自動(dòng)循跡傳感器介紹8</p><p> 3.4 避障傳感器介紹和選擇10</p><p> 3.5 無(wú)線模塊介紹和選擇11&l
16、t;/p><p> 4 軟件系統(tǒng)設(shè)計(jì)12</p><p> 4.1 自動(dòng)循跡程序設(shè)計(jì)12</p><p> 4.2 自動(dòng)避障程序設(shè)計(jì)15</p><p> 4.3 無(wú)線操控程序設(shè)計(jì)17</p><p> 5 小車調(diào)試與制作21</p><p><b> 結(jié)論23&l
17、t;/b></p><p><b> 參考文獻(xiàn)24</b></p><p><b> 致謝24</b></p><p><b> 附錄24</b></p><p><b> 1 緒論</b></p><p>
18、1.1 研究背景及意義</p><p> 隨著科技的發(fā)展,尤其是計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,使得智能化開始與各種產(chǎn)品進(jìn)行融合,衍生出功能更加強(qiáng)大的新一代產(chǎn)品。其中無(wú)人駕駛成為了一項(xiàng)重要研究方向。目前,Apple已開始著手研究智能汽車iCar或Apple Car。其他公司也有相關(guān)方面的研究計(jì)劃。在軍事領(lǐng)域,無(wú)人機(jī)也一直是一項(xiàng)具有重要戰(zhàn)略意義的研究項(xiàng)目。無(wú)論是智能汽車,還是無(wú)人機(jī)都是移動(dòng)機(jī)器人中的一種[1]。而
19、智能小車則是移動(dòng)機(jī)器人研究的基礎(chǔ),所以智能小車的研究可以推動(dòng)智能汽車和無(wú)人機(jī)的發(fā)展。而且智能小車一直被各大高校重視,其中飛思卡爾智能小車競(jìng)賽是智能小車研究中的一項(xiàng)重要賽事,且對(duì)智能小車技術(shù)的進(jìn)步做出了巨大貢獻(xiàn)。</p><p> 之所以說(shuō)智能小車是移動(dòng)機(jī)器人中的基礎(chǔ),是因?yàn)橹悄苄≤囁軐?shí)現(xiàn)的功能是一個(gè)移動(dòng)機(jī)器人都能完成也都應(yīng)該具備的功能[2]。可以說(shuō)機(jī)器人的強(qiáng)大功能都是在小車功能的基礎(chǔ)上,進(jìn)行更深入研究后實(shí)現(xiàn)的
20、。而為機(jī)器人開發(fā)一個(gè)新的功能,也可以在小車上進(jìn)行一定的測(cè)試,并且成本要比直接在機(jī)器人上開發(fā)的低。因此,目前繼續(xù)深入研究智能小車,對(duì)于移動(dòng)機(jī)器人乃至所有機(jī)器人研究工作有著重要意義。除此之外,智能小車也是一名電子專業(yè)大學(xué)生有能力掌握的電子技術(shù)。其難度適中,設(shè)計(jì)思路靈活,很適合用來(lái)測(cè)試大學(xué)生的電子技術(shù)。通過(guò)制作智能小車有助于鞏固電子技術(shù)的基礎(chǔ)知識(shí),加強(qiáng)實(shí)踐能力。</p><p> 1.2 研究目的和設(shè)計(jì)構(gòu)思</
21、p><p> 此次設(shè)計(jì)的小車將要完成自動(dòng)循跡、自動(dòng)避障、無(wú)線操控功能,并能夠在小車行進(jìn)過(guò)程中進(jìn)行功能的切換,即能通過(guò)遙控器實(shí)現(xiàn)小車的工作模式。這些功能使小車能完成更復(fù)雜的工作,具有更大的容錯(cuò)率。比如在自動(dòng)循跡時(shí),如果因車速過(guò)快,導(dǎo)致小車離開軌跡且不能自動(dòng)重回軌跡時(shí)??梢允蛊淝袚Q到無(wú)線操控模式,通過(guò)人為操控使其重回軌道后,再切換為自動(dòng)循跡模式繼續(xù)循跡工作。再如當(dāng)小車在自動(dòng)避障過(guò)程中,如果突然在無(wú)效距離內(nèi)出現(xiàn)障礙,也可
22、同樣利用無(wú)線操控其避開障礙后,再繼續(xù)進(jìn)行自動(dòng)避障。這種人為操控方式加智能操控方式,在智能汽車和無(wú)人機(jī)上也采用如此方式,因此制作出的小車可以在一定的程度上模擬他們?cè)诠ぷ鲿r(shí)如何處理問(wèn)題[3]。如汽車遇到信號(hào)燈時(shí),需要一個(gè)交通網(wǎng)絡(luò)或車主來(lái)控制車輛的行駛。</p><p> 設(shè)計(jì)的核心便是利用不同功能的感測(cè)器和無(wú)線收發(fā)模塊,來(lái)提供信號(hào)或命令給單片機(jī),由單片機(jī)處理后控制小車的移動(dòng)或感測(cè)器的工作。通過(guò)利用不同的感測(cè)器可以使
23、小車具備不同的功能,也可以使小車的功能更強(qiáng)、精度更高。不同的無(wú)線模塊也可以使小車接收信號(hào)范圍更遠(yuǎn)、通道更多。本次設(shè)計(jì)中使用的TCRT5000傳感器、超聲波傳感器和nRF24L01+無(wú)線模塊,性能上滿足設(shè)計(jì)要求。且小車還留有一定的擴(kuò)展空間,能添加新的或更換更好的感測(cè)器,提升小車的性能。</p><p><b> 2 系統(tǒng)工作原理</b></p><p> 本設(shè)計(jì)使用
24、52單片機(jī)作為核心處理器,通過(guò)外接循跡傳感器、障礙感測(cè)器、無(wú)線收發(fā)模塊,來(lái)給單片機(jī)提供信號(hào)。單片機(jī)接收到信號(hào)后,按照其內(nèi)部程序進(jìn)行信號(hào)識(shí)別并處理各種信號(hào)。之后控制電機(jī)所接電壓的有無(wú)、大小和正負(fù),實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速和轉(zhuǎn)動(dòng)方向的控制,從而控制小車的移動(dòng)。</p><p> 通過(guò)編程使單片機(jī)知道應(yīng)如何處理各傳感器傳輸?shù)男盘?hào),以及何時(shí)處理。對(duì)無(wú)線操控功能,使用兩片單片機(jī)和兩個(gè)無(wú)線收發(fā)模塊。一片單片機(jī)和一個(gè)模塊組裝成遙控器,
25、進(jìn)行操控指令的發(fā)送。另一片單片機(jī)與無(wú)線模塊安裝在小車上,進(jìn)行操控指令的接收,和對(duì)小車的控制。循跡傳感器與障礙感測(cè)器,顧名思義是進(jìn)行軌跡檢測(cè)與障礙檢測(cè)。分別服務(wù)于自動(dòng)循跡功能和自動(dòng)避障功能。單片機(jī)識(shí)別其傳送的信號(hào),來(lái)控制小車實(shí)現(xiàn)這兩個(gè)功能。</p><p><b> 3 硬件系統(tǒng)設(shè)計(jì)</b></p><p> 3.1 供電模塊設(shè)計(jì)與介紹</p><
26、;p> 首先,電源的選擇有蓄電池和一般干電池。設(shè)計(jì)中用到的各種感測(cè)器、無(wú)線模塊與單片機(jī),均要求有4~5V的輸入電壓[4]。所以兩種電源提供的電壓,雖然大于電壓要求,但可以通過(guò)變壓后,得到符合電壓范圍的伏值。因此都可以使用。由于制作的無(wú)線操控時(shí),需要再制作一個(gè)遙控器,因此需要兩個(gè)電源。而在購(gòu)買小車底板時(shí),附帶一個(gè)4節(jié)5號(hào)電池盒,且已擁有一個(gè)12V蓄電池??紤]到小車上不僅要給單片機(jī)供電,還需給各感測(cè)器、無(wú)線模塊以及直流電機(jī)供電,因此
27、在小車上用蓄電池供電,遙控器用4節(jié)干電池供電。</p><p> 3.1.1 LM2576和LM2596介紹與應(yīng)用方案</p><p> 選好供電電源后,還需要考慮的就是變壓的問(wèn)題。蓄電池的額定輸出電壓最大為12V,所以使用LM2576或LM2596 芯片進(jìn)行變壓。LM2576可提供降壓穩(wěn)壓功能,可驅(qū)動(dòng)3A的負(fù)載,有優(yōu)異的線性和負(fù)載調(diào)整能力。其輸出電流可以為連續(xù)型或非連續(xù)型,這取決于選
28、取的電感的直流通流量。LM2596是LM2576的升級(jí)版,加大了待機(jī)電流,增加了自我保護(hù)電路[5]。</p><p> 設(shè)計(jì)中分別使用了一片LM2576和LM2596。如此選擇的原因有兩個(gè),第一、兩種芯片的使用原理和方法相同,皆是通過(guò)連接為反饋電路,達(dá)到降壓穩(wěn)壓效果。而且所使用的外接元件也相同且容易購(gòu)買。因此使用任意一種芯片,沒(méi)有太大的區(qū)別。第二、在使用之前,已有一片LM2576。而購(gòu)買另一片時(shí),價(jià)格低導(dǎo)致不能
29、單獨(dú)購(gòu)買,所以只好購(gòu)買做好的使用LM2596的降壓穩(wěn)壓模塊。</p><p> 使用的反饋電路原理相同,均是采用一個(gè)極性輸入電容,一個(gè)肖特基二極管,一個(gè)電感,一個(gè)極性輸出電容。構(gòu)成如下電路:</p><p><b> 圖1 反饋電路圖</b></p><p> 圖中的CIN、L1和COUT可以使用不同的參數(shù),但要根據(jù)情況進(jìn)行選擇。本次設(shè)計(jì)
30、中,LM2576需要自己進(jìn)行外接反饋電路。設(shè)計(jì)中,輸入電壓電壓源為4節(jié)5號(hào)干電池,最大6V直流電壓。輸出電壓要求為5V。所以CIN使用100μF,COUT使用470μF,L1使用100μH,R1使用1kΩ。其余元件參數(shù)與上圖一致。并增加了一只六角開關(guān)和RF16700保險(xiǎn)絲[6]。</p><p><b> ?。╝)正面</b></p><p><b> (
31、b)背面</b></p><p> 圖2 LM2576電路</p><p> 經(jīng)測(cè)試,該電路可實(shí)現(xiàn)1到5.8V范圍內(nèi)的電壓輸出。調(diào)節(jié)后穩(wěn)定在5V輸出。另一模塊如下圖:</p><p> 圖3 LM2596降壓模塊</p><p> 該模塊供電電源為蓄電池,使用時(shí)輸出電壓調(diào)節(jié)到6.2V。此電壓不能直接給單片機(jī)和感測(cè)器供電,但
32、可以給L298N驅(qū)動(dòng)模塊供電。給單片機(jī)供電還需經(jīng)下述的7805芯片穩(wěn)壓。這就同時(shí)解決了單片機(jī)與L298N驅(qū)動(dòng)模塊的供電問(wèn)題,7805芯片穩(wěn)壓后的電壓還能給L298N的邏輯電平供電[7]。</p><p> 3.1.2 7805芯片介紹與應(yīng)用方案</p><p> 7805內(nèi)部電路具有過(guò)壓保護(hù)、過(guò)流保護(hù)、過(guò)熱保護(hù)功能。能夠?qū)崿F(xiàn)1A以上的輸出電流,具有良好的溫度系數(shù),輸出電壓誤差精度分為&
33、#177;3%和±5%。使用時(shí)連接電路如下:</p><p> 圖4 7805電路圖</p><p> 實(shí)際連接時(shí),還應(yīng)該在兩片7805的和的端分別連接一個(gè)瓷片電容,如102,104等。這是此次設(shè)計(jì)的一個(gè)失誤。不過(guò)由于輸入電壓低——只有6.2V,所以經(jīng)實(shí)際測(cè)試后發(fā)現(xiàn)也可以使用,不會(huì)對(duì)小車產(chǎn)生影響。</p><p> VCC端接LM2596降壓模塊的輸
34、出電壓,該電壓值不能低于6V,不能高于36V。輸出端將自動(dòng)穩(wěn)壓到5V左右,實(shí)際檢測(cè)其輸出電壓為4.97V,滿足單片機(jī)與各模塊的供電要求。兩片7805中,一片單獨(dú)給單片機(jī)供電,一片給各模塊供電。這樣做是因?yàn)閱纹瑱C(jī)對(duì)電壓的穩(wěn)定性要求高,而所接模塊較多[8]。如果只用一片7805,會(huì)使7805的負(fù)載過(guò)重,熱量升高。進(jìn)而導(dǎo)致穩(wěn)壓性能變壞,甚至造成7805芯片的損壞。</p><p> 下圖為實(shí)際焊接電路,該圖拍攝時(shí)還未
35、添加電源開關(guān)。添加的開關(guān)位于兩片7805中間,沒(méi)有拍攝是因?yàn)橐呀?jīng)固定在小車上,不便于拍攝。電路板左上方左起第一根排針為左方7805的輸出端,單獨(dú)為單片機(jī)供電。第四根排針為電壓輸入端,第五和第六根排針為GND端。下方左起前四根排針為GND端,后八根排針為右方7805的輸出端,為各個(gè)感測(cè)器供電。剩余排針未接通,沒(méi)有使用意義。</p><p> 圖5 7805穩(wěn)壓電路板</p><p> 以
36、上便完成了電源供電設(shè)計(jì)。實(shí)際測(cè)試證明得到的電壓穩(wěn)定,能滿足單片機(jī)及其余元器件的電壓要求。</p><p> 3.2 驅(qū)動(dòng)模塊介紹</p><p> 小車車體的設(shè)計(jì)要求使用左右兩個(gè)電機(jī)驅(qū)動(dòng),外加一個(gè)后萬(wàn)向輪,形成三點(diǎn)結(jié)構(gòu),以穩(wěn)定小車的行駛。</p><p> 電機(jī)有直流電機(jī)與步進(jìn)電機(jī)兩種選擇。步進(jìn)電機(jī)是通過(guò)對(duì)各相繞組按合適的時(shí)序通電,控制電機(jī)步進(jìn)轉(zhuǎn)動(dòng)。可以利用單
37、片機(jī)的定時(shí)功能,或外接定時(shí)設(shè)備,對(duì)供電時(shí)序經(jīng)行控制,從而達(dá)到控制步進(jìn)電機(jī)的轉(zhuǎn)速。如此方法,能精確地控制小車的速度,以及轉(zhuǎn)彎時(shí)的角度。但是步進(jìn)電機(jī)比直流電機(jī)的價(jià)格昂貴,且編程難度大。此次設(shè)計(jì)中,對(duì)小車的行駛速度與轉(zhuǎn)彎角度沒(méi)有高精度要求,所以采用直流電機(jī)進(jìn)行驅(qū)動(dòng)。</p><p> 使用直流電機(jī)驅(qū)動(dòng)時(shí),需要利用減速齒輪按一定的減速比減速后,才可以作為小車的驅(qū)動(dòng)電機(jī)。否則,會(huì)因小車的速度過(guò)快,導(dǎo)致單片機(jī)來(lái)不及處理接收
38、到的信號(hào),失去對(duì)小車的控制。另外小車的運(yùn)動(dòng)方向,需要利用電機(jī)的不同轉(zhuǎn)速和轉(zhuǎn)向來(lái)實(shí)現(xiàn)。因此須利用L298N驅(qū)動(dòng)模塊來(lái)實(shí)現(xiàn)對(duì)電機(jī)的控制。</p><p> L298N驅(qū)動(dòng)模塊是依靠L298N芯片來(lái)實(shí)現(xiàn)對(duì)電機(jī)的控制。L298N芯片內(nèi)部核心是一個(gè)雙H橋,如下圖所示:</p><p> 圖6 H橋電路原理圖</p><p> 當(dāng)Q1和Q4導(dǎo)通時(shí),電機(jī)順時(shí)針轉(zhuǎn)動(dòng);當(dāng)Q2和
39、Q3導(dǎo)通時(shí),電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)。在L298N中,有兩個(gè)如此的H橋,分別控制兩個(gè)電機(jī)。其中每一個(gè)H橋的Q1和Q4的基極相連接,Q2和Q3的基極相連。發(fā)射極正極與驅(qū)動(dòng)電壓相連,負(fù)極與GND 相連。L298N中除須連接一個(gè)驅(qū)動(dòng)電壓外,還須連接一個(gè)邏輯電壓。單片機(jī)就是負(fù)責(zé)控制各基極的電平,來(lái)實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)動(dòng)的控制。</p><p> L298N還有兩個(gè)使能端,分別控制H橋的開啟。利用L298N控制電機(jī)轉(zhuǎn)速,就是利用PWM時(shí)序
40、脈沖控制使能端開啟的時(shí)間,達(dá)到控制電機(jī)導(dǎo)通的時(shí)間,進(jìn)而實(shí)現(xiàn)了控制電機(jī)的轉(zhuǎn)速。L298N在使用時(shí)會(huì)產(chǎn)生大量的熱量,因此還需要使用散熱片進(jìn)行散熱。</p><p> 將電機(jī)連接在驅(qū)動(dòng)模塊上后,便可以按照前述進(jìn)行對(duì)電機(jī)的控制。實(shí)際測(cè)試表明該模塊能及時(shí)地進(jìn)行H橋?qū)ǚ较虻那袚Q,對(duì)兩個(gè)使能端的PWM脈沖控制能明顯地控制電機(jī)轉(zhuǎn)速。下圖為所購(gòu)買的L298N驅(qū)動(dòng)模塊:</p><p> 圖7 L298
41、N驅(qū)動(dòng)模塊</p><p> 控制方式如下表所示:</p><p><b> 表1 驅(qū)動(dòng)控制表</b></p><p> 3.3 自動(dòng)循跡傳感器介紹</p><p> 自動(dòng)循跡功能的實(shí)現(xiàn)時(shí)依靠TCRT5000光電傳感器來(lái)實(shí)現(xiàn)。設(shè)計(jì)要求是小車能自行識(shí)別一個(gè)環(huán)形黑色軌跡并沿著軌跡移動(dòng),且能在循跡過(guò)程中進(jìn)行無(wú)線操控,切
42、換小車的運(yùn)行模式。關(guān)于無(wú)線操控部分,將在無(wú)線操控功能設(shè)計(jì)時(shí)進(jìn)行說(shuō)明,現(xiàn)在先說(shuō)明自動(dòng)循跡功能的設(shè)計(jì)方案。</p><p> 本人購(gòu)買的用于循跡功能的感測(cè)器為一路循跡傳感器,如下圖所示:</p><p><b> 圖8 循跡傳感器</b></p><p> 其三根引腳分別是OUT、VCC、GND。當(dāng)傳感器檢測(cè)到黑色軌跡時(shí),OUT端輸出低電平,
43、其余顏色軌跡,OUT端輸出高電平。如果傳感器因高度無(wú)法進(jìn)行檢測(cè)時(shí),OUT端輸出低電平。</p><p> 該模塊核心是利用TCRT5000實(shí)現(xiàn)對(duì)軌跡的檢測(cè)。TCRT5000工作原理是通過(guò)紅外發(fā)射二極管發(fā)射紅外線,當(dāng)紅外線遇到黑色軌跡時(shí),由于黑色會(huì)吸收所有光線。導(dǎo)致紅外線沒(méi)有返射足夠的強(qiáng)度給光敏三極管,光敏三極管便處于關(guān)閉狀態(tài),于是輸出為低電平[5]。而當(dāng)軌跡遠(yuǎn)離傳感器時(shí),也會(huì)導(dǎo)致紅外線無(wú)法反射回來(lái),使傳感器輸出
44、低電平。下圖為該模塊的電路原理圖:</p><p> 圖9 循跡模塊電路圖</p><p> 該模塊缺點(diǎn)是不能調(diào)節(jié)檢測(cè)距離,其固定檢測(cè)距離為1cm左右。設(shè)計(jì)一共使用4個(gè)該循跡模塊,分為前后兩排,一排兩個(gè)對(duì)稱安裝。前排靠?jī)?nèi),后排靠外。這是使前排確定軌跡的最大寬度——測(cè)量為5cm——并提前檢測(cè)到小車是否駛出軌跡。后排是預(yù)防因小車速度過(guò)快,導(dǎo)致前排來(lái)不及檢測(cè)小車駛出軌跡。是一種增加循跡可靠性
45、的方案。</p><p> 3.4 避障傳感器介紹和選擇</p><p> 對(duì)于自動(dòng)避障功能設(shè)計(jì),有紅外避障方案和超聲波避障方案兩種選擇。對(duì)于紅外避障方案,購(gòu)買到的YS-29紅外避障模塊,具有易編程、易調(diào)節(jié)檢測(cè)距離的特性。但是考慮到,紅外線在實(shí)際中容易受到環(huán)境光線強(qiáng)度的影響,且大多數(shù)障礙物表面不光滑,會(huì)產(chǎn)生漫反射現(xiàn)象。這些都將影響檢測(cè)的穩(wěn)定性和可靠性。最重要的是,該模塊不是利用編程來(lái)控
46、制避障距離,而是通過(guò)調(diào)節(jié)電位器來(lái)控制檢測(cè)距離。而其檢測(cè)距離就是避障距離。這也就意味著不能通過(guò)該模塊,來(lái)實(shí)時(shí)檢測(cè)距離,影響了小車功能的擴(kuò)展性。所以最終采用超聲波避障方案。</p><p> 超聲波避障方案與紅外避障方案相比較,其優(yōu)點(diǎn)是能進(jìn)行實(shí)時(shí)檢測(cè)障礙物到小車的距離,可將避障功能擴(kuò)展成測(cè)距功能和避障功能于一體,以滿足更多工作需求。但是考慮到負(fù)載過(guò)多,不能再外接1602或數(shù)碼管顯示所測(cè)距離,所以小車檢測(cè)到的距離數(shù)據(jù)
47、沒(méi)有顯示。測(cè)距功能只能為避障服務(wù),不能滿足其余工作需求。超聲波的反射也比紅外線穩(wěn)定,能增強(qiáng)自動(dòng)避障的穩(wěn)定性。而其缺點(diǎn)則是不能應(yīng)對(duì)在2cm內(nèi)突然出現(xiàn)的障礙,容易受到溫度的影響,導(dǎo)致檢測(cè)的距離不如紅外線的精確。障礙物受測(cè)面要盡量平整,否則會(huì)影響測(cè)距效果。下圖分別是所購(gòu)買的紅外模塊和超聲波模塊。</p><p> 圖11 紅外避障模塊</p><p><b> (a)正面</
48、b></p><p><b> (b)背面</b></p><p> 圖12 超聲波避障模塊</p><p> 超聲波避障模塊上有一個(gè)發(fā)射口和一個(gè)接收口,其檢測(cè)原理是通過(guò)按一定的時(shí)間間隔發(fā)送一個(gè)超聲波,當(dāng)超聲波遇到障礙物時(shí),便會(huì)反射回來(lái),由接收口接收返回的超聲波。這時(shí)接收端的輸出就會(huì)由高電平變?yōu)榈碗娖?。而從發(fā)送超聲波開始,到檢測(cè)到接
49、收端變?yōu)榈碗娖降倪@段時(shí)間,就是超聲波從小車開始,移動(dòng)到障礙物的并返回到小車的往返時(shí)間。也就是一次測(cè)距的時(shí)間。進(jìn)過(guò)如下公式計(jì)算,就可得到小車到障礙物的距離[9]。</p><p><b> ?。?)</b></p><p> 公式中的聲速,通常使用聲音在空氣中的傳播速度340來(lái)計(jì)算。實(shí)際上在超聲波往返于小車和障礙物間時(shí),小車處于移動(dòng)狀態(tài)的。所以為了避免因小車的移動(dòng)造成
50、的誤差,要控制小車保持低速行駛,使聲波的速度遠(yuǎn)大于車速,就可以忽略小車移動(dòng)的影響。而且低速行駛也能在前方障礙物,沒(méi)有被檢測(cè)到時(shí),減低碰撞時(shí)的沖擊力,避免小車的損壞。</p><p> 3.5 無(wú)線模塊介紹和選擇</p><p> 無(wú)線功能是本次設(shè)計(jì)的核心功能,其余的功能都需要利用無(wú)線來(lái)進(jìn)行切換。無(wú)線操控功能在設(shè)計(jì)時(shí),也有兩種方案。一種是使用網(wǎng)上已調(diào)制好的遙控設(shè)備,另一種是使用NRF24
51、L01+模塊。</p><p> 已做好的遙控設(shè)備,使用簡(jiǎn)單。但不可以對(duì)其按鍵進(jìn)行編程,也就是說(shuō)起按鍵功能固定,導(dǎo)致無(wú)線功能擴(kuò)展受限。而且此種方式接收端只能接收,發(fā)送端只能發(fā)送,兩者不能相互通信。所以決定采用NRF24L01+模塊設(shè)計(jì)無(wú)線功能。</p><p> NRF24L01+模塊具有功耗低、抗干擾性高的特點(diǎn)。且發(fā)送時(shí)會(huì)自動(dòng)添加CRC校驗(yàn)碼與字頭,接收時(shí)會(huì)自動(dòng)去掉。發(fā)送時(shí),先將數(shù)據(jù)
52、送人收發(fā)隊(duì)列,再高速發(fā)送。如此可以節(jié)能、降低系統(tǒng)費(fèi)用、增加抗干擾性[10]。</p><p> 在使用NRF24L0+時(shí),還購(gòu)買了一塊轉(zhuǎn)接模塊。該轉(zhuǎn)接模塊提供一個(gè)降壓穩(wěn)壓功能,將5V降壓到3.3V左右,再給NRF24L01+供電。對(duì)于無(wú)線模塊程序的設(shè)計(jì),主要是調(diào)用模塊配送的收發(fā)程序來(lái)實(shí)現(xiàn)設(shè)計(jì)要求,而不是設(shè)計(jì)全部程序。有關(guān)該模塊的配置程序與收發(fā)程序,購(gòu)買模塊時(shí)會(huì)由商家提供,網(wǎng)上也有不少現(xiàn)成程序,可以直接調(diào)用。在各
53、程序代碼中也有詳細(xì)的注釋說(shuō)明,因此不在論文中提及,相關(guān)內(nèi)容可見附錄中的小車整體代碼。而在本文中重點(diǎn)說(shuō)明設(shè)計(jì)的思路,和調(diào)用程序段的目的。下面是NRF24L01+與轉(zhuǎn)接模塊的實(shí)物圖。</p><p> 圖14 NRF24L01+模塊</p><p> 圖15 無(wú)線轉(zhuǎn)接模塊</p><p><b> 4 軟件系統(tǒng)設(shè)計(jì)</b></p>
54、<p> 4.1 自動(dòng)循跡程序設(shè)計(jì)</p><p> 程序設(shè)計(jì)流程圖如下:</p><p> 圖10 循跡程序流程圖</p><p> 循跡模式啟動(dòng)后,小車便會(huì)一直沿著軌跡行進(jìn),直到無(wú)線操控切換小車工作模式。對(duì)于特殊的十字交叉軌跡,小車將保持直行。如果軌跡上出現(xiàn)障礙,則可以切換小車為無(wú)線操控模式,避開障礙并回到軌跡后,再切換為循跡模式繼續(xù)工作。
55、</p><p> 小車自動(dòng)循跡功能的實(shí)現(xiàn)如上面的流程圖所示。當(dāng)左邊的傳感器輸出低電平時(shí),表明小車的左方過(guò)界,即小車如繼續(xù)行駛將駛離軌跡。而要避免此情況發(fā)生,此時(shí)需要進(jìn)行左轉(zhuǎn)。左轉(zhuǎn)時(shí),控制左輪減速行駛,右輪速度不變,便可完成左轉(zhuǎn)??刂谱筝啘p速是通過(guò)對(duì)左輪的H橋,進(jìn)行PWM脈沖控制實(shí)現(xiàn)。同理當(dāng)右傳感器輸出低電平時(shí),實(shí)現(xiàn)小車的右轉(zhuǎn)。對(duì)于十字交叉軌跡,會(huì)使小車的左右傳感器同時(shí)輸出低電平,此時(shí)保持小車行駛路線就可以通過(guò)
56、該軌跡。下面是自動(dòng)循跡的循跡部分代碼。</p><p> INA1=1;INA2=0;</p><p> INB1=1;INB2=0;</p><p> for(i=0;i<200;i++)</p><p><b> {</b></p><p> delay(15);</p&
57、gt;<p><b> ENA=~ENA;</b></p><p><b> ENB=~ENB;</b></p><p> if(!INTERTRAL&&!INTERTRAR&&!EXTERTRAL&&!EXTERTRAR)</p><p> {cont
58、inue;}</p><p> if(INTERTRAL==0||EXTERTRAL==0)</p><p><b> Left();</b></p><p> if(INTERTRAR==0||EXTERTRAR==0)</p><p><b> Right();</b></p>
59、;<p><b> }</b></p><p> 代碼中的INTERTRAL為左前方傳感器輸出端,INTERTRAR為右前方傳感器輸出端,EXTERTRAL為左后方傳感器輸出端,EXTERTRAR為右后方傳感器輸出端。第一個(gè)if檢測(cè)十字交叉軌跡,當(dāng)同時(shí)輸出低電平時(shí),保持小車的行進(jìn)方向。第二個(gè)if檢測(cè)左傳感器輸出,第三個(gè)if檢測(cè)右傳感器輸出。由于小車的速度較快,所以使用PWM
60、進(jìn)行減速控制。</p><p> 調(diào)用的Left函數(shù)和Right函數(shù)分別為左轉(zhuǎn)函數(shù)和右轉(zhuǎn)函數(shù)。由于左轉(zhuǎn)和右轉(zhuǎn)使用PWM控制,需要在一個(gè)死循環(huán)中執(zhí)行,所以對(duì)左轉(zhuǎn)函數(shù)和右轉(zhuǎn)函數(shù)分別添加了如下代碼:</p><p> if(Mode_Flag==2&&(INTERTRAR==0||EXTERTRAR==0))</p><p> { P2=0x00;d
61、elay(100);return;}</p><p> if(Mode_Flag==2&&(INTERTRAL==0||EXTERTRAL==0))</p><p> { P2=0x00;delay(100);return;}</p><p> 前兩行代碼是左轉(zhuǎn)函數(shù)的,后兩行是右轉(zhuǎn)函數(shù)的。Mode_Flag是工作模式標(biāo)志。Mode_Flag=2
62、表示工作模式為自動(dòng)循跡模式。第一個(gè)if語(yǔ)句判定工作模式為自動(dòng)循跡模式,并且檢測(cè)右傳感器輸出是否為0。如果是,則將P2口置零[11]。這是因?yàn)轵?qū)動(dòng)模塊的控制端與P2口相連,P2口置零后使小車停止運(yùn)動(dòng)。經(jīng)過(guò)延時(shí)后,返回到自動(dòng)循跡函數(shù),此時(shí)右傳感器依然輸出低電平,小車便會(huì)右轉(zhuǎn)。這一設(shè)置便避免了左轉(zhuǎn)過(guò)多,導(dǎo)致小車右邊出界,而原地停止一段時(shí)間,能讓小車有時(shí)間判斷下一步如何行駛。第二個(gè)if語(yǔ)句與第一個(gè)if語(yǔ)句相同,只是檢測(cè)的是左傳感器的輸出電平。&
63、lt;/p><p> 該方法的缺點(diǎn)是轉(zhuǎn)彎角度固定,當(dāng)軌跡的弧度與轉(zhuǎn)彎角度差別較大時(shí),小車的循跡會(huì)不太穩(wěn)定。行駛時(shí)容易搖擺不定。要解決該問(wèn)題,則應(yīng)使用步進(jìn)電機(jī),并添加測(cè)速模塊,形成一個(gè)閉環(huán)控速系統(tǒng)。但本次設(shè)計(jì)因成本和編程問(wèn)題沒(méi)有采取該方案,所以小車在循跡時(shí)有可能要根據(jù)不同弧度的軌跡,進(jìn)行重新編程來(lái)控制PWM脈沖的時(shí)序,進(jìn)而控制轉(zhuǎn)彎角度。以實(shí)現(xiàn)在任意軌跡上的穩(wěn)定循跡能力,這是設(shè)計(jì)中的一個(gè)缺陷[12]。</p>
64、;<p> 4.2 自動(dòng)避障程序設(shè)計(jì)</p><p> 下面是程序的設(shè)計(jì)流程圖:</p><p> 圖13 避障程序設(shè)計(jì)流程圖</p><p> 自動(dòng)避障與自動(dòng)循跡一樣,需要受到無(wú)線控制,能切換為其他工作模式。流程中檢測(cè)循跡傳感器輸出,是考慮到在避障過(guò)程中,除了要檢測(cè)前方是否有障礙外,還需要檢測(cè)路面的高低落差是否過(guò)大。由于購(gòu)買的循跡傳感器,檢測(cè)
65、距離固定為1cm左右,所以循跡傳感器離地面非常低。這也就意味著小車行進(jìn)時(shí),前方路面不能有高低落差。而當(dāng)出現(xiàn)高低落差時(shí),傳感器會(huì)因距離遠(yuǎn)而輸出低電平,因此可以用來(lái)檢測(cè)前方路面是否有高低落差[13]??紤]到小車的行駛速度,只要前排或后排的傳感器都輸出低電平,就停止小車的行進(jìn),并退出自動(dòng)避障模式,由人為手段處理該狀況。</p><p> 之所以沒(méi)有在檢測(cè)到該情況時(shí),讓小車自動(dòng)避開前方的高低落差路面。是因?yàn)榇藭r(shí)小車以處
66、于路面的邊緣,如果原地旋轉(zhuǎn)90度,雖然能夠避開,但也存在小車旋轉(zhuǎn)時(shí)產(chǎn)生位移,從而掉落的可能。有些情況不會(huì)有太大的影響,但有時(shí)會(huì)造成小車的損毀,而這是由前方高低落差大小決定的。但是小車的循跡傳感器不能調(diào)節(jié)檢測(cè)距離,所以不能區(qū)分前方的高低落差大小,因此只好在出現(xiàn)高低落差時(shí),強(qiáng)制停止小車并退出避障模式。</p><p> 在前兩中情形沒(méi)有發(fā)生時(shí),小車的避障模式采取簡(jiǎn)單的檢測(cè)前方是否有障礙,障礙物與小車的距離是否在避障
67、距離內(nèi)。如果是,則讓小車右轉(zhuǎn)90度來(lái)躲避障礙,并重新檢測(cè)新方向上的障礙。否則小車?yán)^續(xù)直行。下面是其部分代碼的說(shuō)明。if((INTERTRAL==0&&INTERTRAR==0)||(EXTERTRAL==0&&EXTERTRAR==0))</p><p> {P2=0X00;return;}</p><p> INA1=1;INA2=0;</p&g
68、t;<p> INB1=1;INB2=0;</p><p> for(i=0;i<200;i++)</p><p> {if((INTERTRAL==0&&INTERTRAR==0)||(EXTERTRAL==0&&EXTERTRAR==0))</p><p> {P2=0X00;return;}</
69、p><p> delay(20);</p><p><b> ENA=~ENA;</b></p><p><b> ENB=~ENB;</b></p><p> if(distance<=12&&distance>0)</p><p><
70、b> {P2=0x00;</b></p><p> Right90();</p><p> delay_ms(100);}}</p><p> 小車進(jìn)入避障模式后,用第一個(gè)if語(yǔ)句是檢測(cè)是否可以在當(dāng)前位置開啟自動(dòng)避障功能,不能則退出自動(dòng)避障模式。之后的for循環(huán)是PWM控制,并在其中進(jìn)行檢測(cè)前方高低落差檢測(cè)與障礙檢測(cè)。其中distance變
71、量?jī)?chǔ)存測(cè)量的距離,單位是厘米,當(dāng)其不大于12時(shí)。表明小車到障礙的距離小于12cm,此時(shí)進(jìn)行右轉(zhuǎn)90度處理。之后的延遲100ms,是由于超聲波的發(fā)送不能是連續(xù)的,需要一定的時(shí)間間隔。本模塊的推薦是每60ms發(fā)送一個(gè)10μs以上的超聲波,所以延遲100ms等待新方向的測(cè)距。而右轉(zhuǎn)90度后小車會(huì)進(jìn)入制動(dòng)狀態(tài),如此在等待新一輪測(cè)距時(shí),也不會(huì)因小車移動(dòng),使其與障礙的距離不足2cm——超聲波最小有效距離——而導(dǎo)致無(wú)法自動(dòng)避障。</p>
72、<p> 超聲波的發(fā)送與距離的測(cè)量,使用了單片機(jī)的定時(shí)器0和定時(shí)器1進(jìn)行時(shí)序控制。其中定時(shí)器0工作模式為方式1,用于測(cè)量超聲波的往返時(shí)間。定時(shí)器1工作模式也為方式1,用于定時(shí)60ms發(fā)送超聲波。下面是超聲波測(cè)距程序說(shuō)明:</p><p> void meter_distance()</p><p><b> {Trig=1;</b></p&
73、gt;<p> delay_ms(12);</p><p><b> Trig=0;</b></p><p> while(!Echo);</p><p> TR0=1; </p><p> while(Echo);</p><p><b> TR
74、0=0;</b></p><p> distance=TH0*256+TL0;</p><p> TH0=0;TL0=0;</p><p> distance=distance/53;}</p><p> 其中的Trig是超聲波發(fā)送端,通過(guò)給其高電平進(jìn)行發(fā)送。代碼中發(fā)送一個(gè)12μs的超聲波。發(fā)送完成后開始計(jì)時(shí),通過(guò)檢
75、測(cè)Echo端——超聲波接收端,當(dāng)超聲波發(fā)送完成后會(huì)自動(dòng)置為高電平——來(lái)判斷超聲波是否返回。返回后Echo將會(huì)變?yōu)榈碗娖剑藭r(shí)停止計(jì)時(shí),得到的就是超聲波的往返時(shí)間。將該時(shí)間除以53就能得到小車與障礙的距離。這里運(yùn)用了公式(1),計(jì)算過(guò)程如下:</p><p><b> (2)</b></p><p> 其中時(shí)間單位為s,長(zhǎng)度單位為m,速度單位為m/s。經(jīng)過(guò)公式2的換
76、算后得到時(shí)間t(s)=0.0053*s(m),即s(cm)=t(μs)/53。所以distance(μs)除以53后便得到距離(cm)。定時(shí)器0計(jì)時(shí)后清零,并當(dāng)計(jì)時(shí)溢出后,進(jìn)入定時(shí)中斷將Echo端置為低電平。這是防止距離過(guò)遠(yuǎn),導(dǎo)致Echo端一直處于高電平狀態(tài),影響后續(xù)的測(cè)量效果。</p><p> 4.3 無(wú)線操控程序設(shè)計(jì)</p><p><b> 程序設(shè)計(jì)流程圖:</
77、b></p><p> 圖16 無(wú)線接收流程圖</p><p> 圖17 發(fā)送程序流程圖</p><p> 設(shè)計(jì)中發(fā)送端采取自動(dòng)重發(fā)機(jī)制,當(dāng)接收端沒(méi)有按時(shí)傳回應(yīng)答信號(hào)時(shí),發(fā)送端便會(huì)重發(fā)之前的命令。發(fā)送端還外接一個(gè)44鍵盤,鍵盤掃描程序來(lái)自單片機(jī)100例。當(dāng)有按鍵按下,掃描出是第幾個(gè)按鍵,然后發(fā)送對(duì)應(yīng)的命令[14]。每次發(fā)送前,將會(huì)清空收發(fā)隊(duì)列,以免有以前
78、未發(fā)送命令還存在隊(duì)列中,干擾當(dāng)前命令的發(fā)送。</p><p> 接收函數(shù)在每一個(gè)功能函數(shù)中都要調(diào)用,以此來(lái)切換工作模式。特別地在左轉(zhuǎn)函數(shù)與右轉(zhuǎn)函數(shù)中也要調(diào)用。上文已說(shuō)明這兩個(gè)函數(shù)是如何實(shí)現(xiàn)左右轉(zhuǎn)的,而該實(shí)現(xiàn)使用了一個(gè)死循環(huán)。當(dāng)小車工作于無(wú)線操控模式時(shí),需要在左右轉(zhuǎn)時(shí)也能接受新的命令并執(zhí)行。這就必須在這兩個(gè)函數(shù)中調(diào)用接收函數(shù),以使其在收到新的命令時(shí),能夠退出函數(shù)并執(zhí)行當(dāng)前命令。下面將說(shuō)明部分代碼。</p&g
79、t;<p> int I = -1;</p><p> inerDelay_us(100);</p><p> init_io(); // 初始化NRF24L01+的IO</p><p> TX_Mode(); //配置發(fā)送模式</p><p> SPI_RW_Reg(WRITE_REG+STATUS,0xff);//
80、清空狀態(tài)為</p><p> SPI_RW_Reg(FLUSH_TX,0xff);// 清空收發(fā)隊(duì)列</p><p><b> while(1)</b></p><p> { i=Keys_Scan();//按鍵掃描,返回按鍵的編號(hào)</p><p> if(i!=-1&&i<10)<
81、;/p><p> {SPI_RW(FLUSH_TX);</p><p> nRF24L01_TxPacket(TX_BUF[i]);</p><p> while(IRQ);</p><p> sta=SPI_Read_Data(STATUS); //讀取狀態(tài)信息</p><p> while(!TX_DS)&
82、lt;/p><p> {if(MAX_RT)</p><p> {SPI_RW_Reg(FLUSH_TX,0xff);</p><p><b> break;}</b></p><p> sta=SPI_Read_Data(STATUS);}</p><p> SPI_RW_Reg(WRIT
83、E_REG+STATUS,sta); //清除TX_DS或MAX_RT標(biāo)志</p><p> SPI_RW_Reg(FLUSH_TX,0xff);</p><p><b> IRQ=1;</b></p><p> delay_ms(20000);</p><p> i = -1; }}</p>&l
84、t;p> 因?yàn)橐还苍O(shè)置了10個(gè)命令,按鍵編號(hào)重0開始,所以第一個(gè)if語(yǔ)句檢測(cè)i是否小于10。發(fā)送完一個(gè)命令后,IRQ會(huì)由高電平變?yōu)榈碗娖?,所以檢測(cè)IRQ就可以知道命令是否發(fā)送完畢。之后讀取芯片狀態(tài)信息,檢測(cè)TX_DS位,當(dāng)接收端發(fā)送回應(yīng)答信號(hào)后,該位會(huì)從低電平變?yōu)楦唠娖剑憧梢园l(fā)送下一條命令。在接收到應(yīng)答信號(hào)前,每隔4086μs重發(fā)一次該命令。最大重發(fā)5次,超過(guò)后,會(huì)產(chǎn)生MAX_RT中斷,即MAX_RT變?yōu)楦唠娖?。此時(shí)將清空收發(fā)
85、隊(duì)列,跳出應(yīng)答檢測(cè)循環(huán),清除TX_DS或MAX_RT標(biāo)志后,就可以發(fā)送新命令了。</p><p> UCHAR RX_BUF;</p><p> RX_Mode();</p><p><b> while(1)</b></p><p> {flag=nRF24L01_RxPacket(&RX_BUF);/
86、/接收命令至RX_BUF并返回1</p><p> sta = SPI_Read_Data(STATUS);</p><p> if(flag==1)</p><p> {switch(RX_BUF)</p><p> {case STOP: INA1=0;INA2=0;INB1=0;INB2=0;break;</p>
87、<p> case FRONT:INA1=1;INA2=0;INB1=1;INB2=0;ENA=1;ENB=1;break;</p><p> case BACK: INA1=0;INA2=1;INB1=0;INB2=1;ENA=1;ENB=1;break;</p><p> case LEFT: Left();break;</p><p> ca
88、se RIGHT:Right();break;</p><p> case LEFT_90: Left90();break;</p><p> case RIGHT_90:Right90();break;</p><p> case MODE2: P2=0x00;Mode_Flag=2;return;</p><p> case MO
89、DE3: P2=0x00;Mode_Flag=3;return;</p><p> default: P2=P2;} }</p><p> SPI_RW_Reg(WRITE_REG + STATUS, sta);</p><p> delay_ms(20);</p><p> RX_Mode();//配置接收模式}</p>
90、<p> 接收模式主要是接收命令后,識(shí)別該命令并根據(jù)命令控制小車移動(dòng)。其中各命令與發(fā)送端配置的命令內(nèi)容相同。接收端的主函數(shù)主要是進(jìn)行模式切換,如下是主函數(shù)的主要操作:</p><p> switch(RX_BUF)</p><p><b> {</b></p><p> case MODE1: Mode_Flag=1;Wi
91、fiControl(); break;</p><p> case MODE2: Mode_Flag=2;AutoTrace(); break;</p><p> case MODE3: Mode_Flag=3;AutoAvoidObstacle();break;</p><p> default: P2=P2;</p>
92、<p><b> }</b></p><p> MODE1為無(wú)線操控模式,MODE2為自動(dòng)循跡模式,MODE3為自動(dòng)避障模式。調(diào)用的函數(shù)便是個(gè)模式的功能函數(shù),如此實(shí)現(xiàn)工作模式的切換。代碼中相關(guān)的無(wú)線配置見附錄中的完整代碼[15]。</p><p><b> 5 小車調(diào)試與制作</b></p><p> 小
93、車的硬件制作簡(jiǎn)單,因?yàn)槭褂玫亩际琴?gòu)買的模塊,只需按照程序設(shè)定的接口進(jìn)行接線即可。接線完后利用小車底板上的螺紋孔,將單片機(jī)與各模塊固定在小車上就完成了小車實(shí)物的制作。下圖是做好的小車和遙控器。</p><p><b> 圖18 小車實(shí)物圖</b></p><p> 圖19 遙控器實(shí)物圖</p><p> 調(diào)試時(shí)主要調(diào)試PWM脈沖的控制,和左
94、右轉(zhuǎn)90度時(shí)的延時(shí)長(zhǎng)度。循跡傳感器和障礙感測(cè)器的調(diào)試,實(shí)際上也是調(diào)節(jié)轉(zhuǎn)動(dòng)的角度,而這就是由上述兩個(gè)主要調(diào)試項(xiàng)目來(lái)完成。雖然避障距離應(yīng)該也是重要調(diào)試項(xiàng),但因?yàn)闆](méi)有顯示模塊,使用時(shí)也不能知道當(dāng)前小車與障礙的距離。所以沒(méi)有進(jìn)行避障距離的調(diào)試,而是主要調(diào)試前述兩個(gè)項(xiàng)目。無(wú)線模塊由于使用軟件復(fù)用技術(shù),所以只需將代碼燒錄入單片機(jī),就可以使用無(wú)線收發(fā)功能,不用進(jìn)行調(diào)試。下面是調(diào)試好的PWM代碼。</p><p> for(i
95、=0;i<200;i++)</p><p> {delay(15);</p><p> ENA=~ENA;}</p><p> 調(diào)試時(shí),通過(guò)調(diào)節(jié)延時(shí)函數(shù)的輸入值就可以了。這是實(shí)現(xiàn)右轉(zhuǎn)的PWM,實(shí)現(xiàn)左轉(zhuǎn)的PWM代碼,只需將ENA改為ENB就可以了。減速是同時(shí)加上ENA和ENB 就可實(shí)現(xiàn)減速操作。由于小車沒(méi)有測(cè)速功能,無(wú)法得到速度值,只能憑借觀察小車的轉(zhuǎn)動(dòng)角
96、度來(lái)調(diào)節(jié),不是太精確。上述PWM控制小車的轉(zhuǎn)動(dòng)角度大致為45度。</p><p> 左右轉(zhuǎn)90度的調(diào)節(jié),是控制小車左右輪相互反向轉(zhuǎn)動(dòng)時(shí)間,來(lái)達(dá)到90度的旋轉(zhuǎn)。實(shí)際使用還要考慮地面與小車的摩擦力,對(duì)不同路面時(shí)間長(zhǎng)短不同,越光滑時(shí)間越短。調(diào)試時(shí)的地面為普通地板磚表面,下面是左轉(zhuǎn)90度代碼。</p><p> void Left90(void)</p><p><
97、;b> { ENA=1;</b></p><p><b> ENB=1;</b></p><p><b> INA1=1;</b></p><p><b> INA2=0;</b></p><p><b> INB1=0;</b&g
98、t;</p><p><b> INB2=1;</b></p><p> delay(150);</p><p><b> P2=0x00;}</b></p><p> 經(jīng)反復(fù)調(diào)試,觀察發(fā)現(xiàn)延時(shí)函數(shù)輸入150時(shí),能達(dá)到接近90度的轉(zhuǎn)動(dòng)角度。右轉(zhuǎn)時(shí)也同樣如此。</p><p
99、> 如此便完成對(duì)小車的調(diào)試。實(shí)際使用時(shí),對(duì)于不同弧度的軌跡,如需要小車穩(wěn)定地循跡,還須重新對(duì)PWM代碼內(nèi)的延時(shí)函數(shù)進(jìn)行時(shí)間調(diào)試。而不同的路面,因?yàn)槟Σ烈蛩氐牟煌残枰獙?duì)左右轉(zhuǎn)90度的函數(shù),進(jìn)行內(nèi)部延時(shí)的調(diào)試。</p><p> 不過(guò)由于都是直接憑觀察進(jìn)行調(diào)試,精度不能得到有效保證??梢钥紤]以后添加測(cè)速功能,再進(jìn)行精準(zhǔn)調(diào)試。目前則只能做到一個(gè)大致的調(diào)試結(jié)果,但也滿足了循跡與避障功能的需求。所以對(duì)小車的調(diào)
100、試就到此結(jié)束。</p><p> 遙控器上的調(diào)試也只有對(duì)44鍵盤按鍵掃描的調(diào)試,而該掃描函數(shù)代碼來(lái)自單片機(jī)100例,所能做的也只是調(diào)整接線順序,使單片機(jī)能正確識(shí)別按下的按鍵,發(fā)送正確的命令。下面先附上鍵盤實(shí)物圖:</p><p><b> 圖20 鍵盤實(shí)物圖</b></p><p> 經(jīng)調(diào)試得出,從左到右的接線順序?yàn)镻1.0、P1.1、P
101、1.2、P1.3、P1.4、P1.5、P1.6、P1.7。如此接線后,按鍵編號(hào)從左到右、從上到下依次增大,左上第一個(gè)按鍵編號(hào)為0。如此所有的調(diào)試均已完成。</p><p><b> 結(jié)論</b></p><p> 本次設(shè)計(jì)的小車,經(jīng)過(guò)測(cè)試能夠達(dá)到設(shè)計(jì)的基本要求。能進(jìn)行工作模式的切換、自動(dòng)循跡、自動(dòng)避障、無(wú)線操控。還使用了PWM控制小車的速度。不過(guò)也有一些不足之處。
102、比如,自動(dòng)避障時(shí)需要檢測(cè)前方路面的高低落差,以防止小車從高處落下。但該功能是通過(guò)檢測(cè)循跡傳感器的輸出電平,來(lái)判斷前方是否有高低落差。這使得小車無(wú)法判斷前方的高低落差究竟有多少,導(dǎo)致只要路面不平,小車就會(huì)停止。而且循跡傳感器離地面太近,當(dāng)路面有較低的障礙物時(shí),就會(huì)使傳感器與障礙碰撞,降低傳感器的使用壽命。而且,如果小車離路面邊緣稍遠(yuǎn)時(shí),就算檢測(cè)到前方有高低落差時(shí),也會(huì)因?yàn)閼T性使小車駛出路面,無(wú)法停下。</p><p&g
103、t; 無(wú)線操控沒(méi)有太大的問(wèn)題,能通過(guò)發(fā)送端完全實(shí)現(xiàn)對(duì)小車的實(shí)時(shí)控制。但由于小車車體的設(shè)計(jì)存在一些尺寸問(wèn)題,導(dǎo)致沒(méi)有一個(gè)可很好安放無(wú)線模塊的位置,使得接收能力有所下降,遙控距離只有2到3米。未能體現(xiàn)出NRF24L01+的收發(fā)能力。</p><p> 但是綜合而言,該小車已完整的體現(xiàn)設(shè)計(jì)的核心要求,即工作時(shí)進(jìn)行工作模式切換。而對(duì)與三種工作模式的主要部分,也表現(xiàn)良好。符合循跡、避障和無(wú)線操控的需求,達(dá)到三個(gè)功能的設(shè)
104、計(jì)要求。并且小車還留下了足夠的擴(kuò)展空間,比如還能再添加測(cè)速模塊、顯示模塊等。對(duì)于PWM脈沖控制車速,也還可以得到更好的利用。比如制作行駛時(shí)加減速??傊?,本次設(shè)計(jì)還是成功的制作出了一個(gè)滿足設(shè)計(jì)要求的智能小車。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 尹念東. 智能車輛的研究及前景[J]. 上海汽車, 2002.2.</p>
105、<p> [2] 華成英, 童詩(shī)白. 模擬電子技術(shù)基礎(chǔ)[M]. 北京: 高等教育出版社, 2006.</p><p> [3] 郭天祥. 51單片機(jī)c語(yǔ)言教程[M]. 北京: 電子工業(yè)出版社,2010.</p><p> [4] 趙家貴, 付小美, 董平. 新編傳感器電路設(shè)計(jì)手冊(cè)[M]. 北京: 中國(guó)計(jì)量出版社, 2002</p><p> [5
106、] 于連國(guó), 李偉, 王妍瑋. 基于單片機(jī)的智能小車設(shè)計(jì)[J]. 林業(yè)機(jī)械與木工設(shè)備, 2011, 4.</p><p> [6] 趙振德. 多功能遙控智能小車的制作[J]. 電子制作, 2011, 4.</p><p> [7] 何立民. 單片機(jī)技術(shù)的現(xiàn)狀與未來(lái)[N]. 中國(guó)計(jì)算機(jī)報(bào), 1995.</p><p> [8] 楊加國(guó). 單片機(jī)原理與應(yīng)用及C51
107、程序設(shè)計(jì)[M]. 北京: 清華大學(xué)出版社, 2006.</p><p> [9] 張毅剛. 單片機(jī)原理及應(yīng)用[M]. 北京: 高等教育出版社, 2010.</p><p> [10] 胡漢才. 單片機(jī)原理與接口技術(shù)[M]. 北京: 清華大學(xué)出版社, 1999.4.</p><p> [11] 趙海蘭. 基于單片機(jī)的紅外遙控智能小車的設(shè)計(jì)[J]. 無(wú)線互聯(lián)科技,
108、 2011, 3.</p><p> [12] 周淑娟. 基于單片機(jī)智能尋跡小車的設(shè)計(jì)方案[J]. 工業(yè)技術(shù)與職業(yè)教育, 2011, 9(2).</p><p> [13] 姚培. 基于單片機(jī)控制的智能循跡避障小車[J]. 機(jī)電信息, 2010, 12.</p><p> [14] Daniel Hunt V. Mechartronics-Japan’s Ne
109、west Threat[M]. New York: Chapman and Hall, 1987.</p><p> [15] Krishna C M, Shin G K. Real-Time System[M]. Columbus, OH: McCraw-Hill Companies, Inc.1997.</p><p><b> 致謝</b></p>
110、;<p> 在本次設(shè)計(jì)中,由衷感謝王楓導(dǎo)師對(duì)我的指導(dǎo)。感謝老師對(duì)設(shè)計(jì)提出的建議,和設(shè)計(jì)中錯(cuò)誤的指正。設(shè)計(jì)之所以能夠完成,沒(méi)有老師對(duì)我的督促是做不到的。而且在設(shè)計(jì)初期,老師給出的分步設(shè)計(jì)思路,也是設(shè)計(jì)時(shí)使用的方案。</p><p> 再就是感謝我的同學(xué)對(duì)我設(shè)計(jì)的幫助,多虧他們制作小車的經(jīng)驗(yàn),給了我很大的幫助。比如供電的設(shè)計(jì),沒(méi)有他們提供的元件和設(shè)計(jì)建議,是不能讓小車得到有效且穩(wěn)定的供電電源。而這將
111、影響小車的實(shí)際運(yùn)行。</p><p> 最后再次由衷的感謝你們的幫助。</p><p><b> 附錄</b></p><p><b> 發(fā)送端完整代碼。</b></p><p> #include<reg52.h></p><p> #include
112、<intrins.h></p><p> #include <api.h></p><p> typedef unsigned UINT;</p><p> typedef unsigned char UCHAR;</p><p> #define TX_ADR_WIDTH 5 // 5字節(jié)寬度的發(fā)送/接
113、收地址</p><p> #define TX_PLOAD_WIDTH 1 // 數(shù)據(jù)通道有效數(shù)據(jù)寬度</p><p> UCHAR code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定義一個(gè)靜態(tài)發(fā)送地址</p><p> UCHAR RX_BUF[TX_PLOAD_WIDTH];
114、</p><p> UCHAR TX_BUF[16] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,</p><p> 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};</p><p> UCHAR bdata sta;</p><p> sbit RX_DR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能小車畢業(yè)論文
- 智能小車設(shè)計(jì)畢業(yè)論文
- 智能小車設(shè)計(jì)畢業(yè)論文
- 電動(dòng)智能小車畢業(yè)論文
- 智能循跡小車設(shè)計(jì)【畢業(yè)論文】
- 蔽障循跡智能小車畢業(yè)論文
- 智能小車的設(shè)計(jì)【畢業(yè)論文】
- 智能小車畢業(yè)論文設(shè)計(jì)指導(dǎo)
- 智能小車的設(shè)計(jì)【畢業(yè)論文】
- 智能循跡避障小車畢業(yè)論文
- 畢業(yè)論文---智能循跡避障小車
- 電動(dòng)智能小車的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文外文翻譯-智能小車設(shè)計(jì)
- 自動(dòng)化畢業(yè)論文智能小車的設(shè)計(jì)
- 基于語(yǔ)音控制的智能小車設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文智能化軌道小車物流系統(tǒng)
- 藍(lán)牙小車畢業(yè)論文
- 智能循跡小車-職業(yè)學(xué)院畢業(yè)論文開題報(bào)告
- 畢業(yè)論文-開題報(bào)告-文獻(xiàn)綜述智能循跡小車設(shè)計(jì)
- 基于stm32的智能小車設(shè)計(jì)-畢業(yè)論文
評(píng)論
0/150
提交評(píng)論