久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
基于單片機(jī)智能小車設(shè)計論文
[打印本頁]
作者:
huxichao
時間:
2018-4-22 22:18
標(biāo)題:
基于單片機(jī)智能小車設(shè)計論文
摘要
隨著計算機(jī)、微電子、材料、機(jī)械、通信等技術(shù)的快速發(fā)展,智能化的小車和機(jī)器人的發(fā)展速度也越來越快,作為21世紀(jì)自動化領(lǐng)域內(nèi)非常偉大的成就它已經(jīng)和人們的生產(chǎn)生活緊密的聯(lián)系在了一起。根據(jù)題目的要求,本設(shè)計的智能遙控小車主要由兩大部分構(gòu)成:一個紅外遙控部分,一個智能小車部分。其中紅外遙控部分采用專用編碼芯片HT6221作為發(fā)射端,一體化紅外接收頭作為接收端;智能小車部分采用微控制器AT89C52單片機(jī)作為其控制核心,用紅外反射式光電傳感器進(jìn)行障礙物和路線的檢測,用步進(jìn)電機(jī)控制小車的啟停、速度快慢以及轉(zhuǎn)向,用直射式光電檢測器、施密特觸發(fā)器等元件組成的電路來檢測小車車輪轉(zhuǎn)速,用LCD1602液晶顯示屏來實時顯示小車運(yùn)行的速度、時間和路程。
經(jīng)過硬件和軟件的綜合設(shè)計,本設(shè)計的智能遙控小車基本上實現(xiàn)了遙控控制、自動躲避障礙、自動沿著特定的路線行駛、實時顯示速度、路程等功能。
目錄
第一章 緒論.................................................................................................................. 1
1.1 課題背景和意義.............................................................................................. 1
1.2 課題研究現(xiàn)狀和發(fā)展趨勢.............................................................................. 1
1.2.1 研究現(xiàn)狀................................................................................................ 1
1.2.2 發(fā)展趨勢................................................................................................ 2
1.3 課題內(nèi)容和要求.............................................................................................. 2
第二章總體方案設(shè)計與論證...................................................................................... 4
2.1 遙控控制模塊設(shè)計與論證.............................................................................. 4
2.2 電機(jī)驅(qū)動模塊設(shè)計與論證.............................................................................. 5
2.3 避障循跡模塊設(shè)計與論證.............................................................................. 6
2.4 數(shù)據(jù)顯示模塊設(shè)計與論證.............................................................................. 6
2.5 轉(zhuǎn)速測量模塊設(shè)計與論證.............................................................................. 7
2.6 電源模塊設(shè)計與論證...................................................................................... 7
第三章各模塊硬件電路設(shè)計...................................................................................... 9
3.1 紅外遙控發(fā)射器模塊...................................................................................... 9
3.1.1 紅外遙控模塊的工作原理.................................................................... 9
3.1.2 HT6221編碼芯片簡介........................................................................ 10
3.1.3 紅外遙控發(fā)射器.................................................................................. 11
3.2 單片機(jī)控制模塊............................................................................................ 12
3.2.1 單片機(jī)模塊電路.................................................................................. 12
3.2.2 復(fù)位電路.............................................................................................. 13
3.2.3 振蕩電路.............................................................................................. 14
3.3 紅外接收器及解碼........................................................................................ 14
3.4 電機(jī)驅(qū)動模塊................................................................................................. 16
3.4.1 步進(jìn)電機(jī)的工作原理.......................................................................... 16
3.4.2 ULN2003芯片簡介.............................................................................. 17
3.4.3 步進(jìn)電機(jī)驅(qū)動電路設(shè)計...................................................................... 18
3.5 避障循跡模塊................................................................................................ 19
3.6 轉(zhuǎn)速檢測模塊................................................................................................ 21
3.7 數(shù)據(jù)顯示模塊................................................................................................ 22
3.8 電源模塊........................................................................................................ 23
第四章 系統(tǒng)軟件設(shè)計................................................................................................ 24
4.1 系統(tǒng)總體程序流程圖.................................................................................... 24
4.2 避障循跡模塊程序設(shè)計................................................................................ 25
4.2.1 避障程序流程圖.................................................................................. 25
4.2.2 循跡程序流程圖.................................................................................. 26
4.3 數(shù)據(jù)顯示模塊程序設(shè)計................................................................................ 27
第五章 總結(jié)與展望.................................................................................................... 28
5.1 總結(jié)................................................................................................................ 28
5.2 改進(jìn)與展望.................................................................................................... 28
參考文獻(xiàn)...................................................................................................................... 29
致謝.............................................................................................................................. 30
附錄A 各模塊電路圖................................................................................................ 31
附錄B 程序................................................................................................................ 39
第一章 緒論
1.1 課題背景和意義
隨著計算機(jī)、微電子、信息技術(shù)的快速發(fā)展,智能化技術(shù)的發(fā)展速度越來越快,智能化與人們生活的聯(lián)系也越來越緊密,智能化是未來社會發(fā)展的必然趨勢。智能小車實際上就是一個可以自由移動的智能機(jī)器人,比較適合在人們無法工作的地方工作,也可取代人們完成一些復(fù)雜、危險性質(zhì)的工作。作為現(xiàn)代自動控制領(lǐng)域內(nèi)十分偉大的一項發(fā)明智能小車、機(jī)器人已經(jīng)和人們的生產(chǎn)生活緊密的聯(lián)系在了一起。
智能小車,是一個包含周圍環(huán)境探測、識別反應(yīng)、自動控制等功能于一體的綜合系統(tǒng),它綜合地運(yùn)用了微控制器、傳感、遙控、機(jī)械結(jié)構(gòu)、電子基礎(chǔ)、自動控制等多學(xué)科的知識。智能小車是一個復(fù)雜而又龐大的系統(tǒng),其內(nèi)部有許多塊控制芯片作為其控制核心,多種傳感器來采集外部環(huán)境信息并將接收到的信息傳給主控制器,然后由控制器來控制其各個模塊執(zhí)行相應(yīng)的動作。智能小車由于成本較低,甚至還能夠勝任一些人們都無法勝任的工作,它已逐步深入到工業(yè)、農(nóng)業(yè)以及社會生活的各個方面。本課題設(shè)計的智能小車中用到的遙控技術(shù)、顯示技術(shù)、單片機(jī)控制系統(tǒng)、傳感技術(shù)、自動避障技術(shù)已廣泛應(yīng)用于工農(nóng)業(yè)生產(chǎn)、國防軍事、醫(yī)療衛(wèi)生、宇宙探測等諸多領(lǐng)域,特別是其在軍事偵察、反恐、防暴、防核化及污染等危險和惡劣環(huán)境中有著廣闊的應(yīng)用前景,由此可見其有著及其重要的研究意義。
1.2 課題研究現(xiàn)狀和發(fā)展趨勢
1.2.1 研究現(xiàn)狀
智能小車、機(jī)器人的發(fā)展研究從上世紀(jì)60年代至今已有幾十年的歷史,自從上世紀(jì)60年代末期,第一臺能夠自主移動機(jī)器人問世以后,經(jīng)過幾十年的發(fā)展智能機(jī)器人已經(jīng)從最初的示教模仿機(jī)器人發(fā)展到現(xiàn)在的具有感知功能的智能機(jī)器人,在技術(shù)上取得了很大的進(jìn)步許多國家都對智能機(jī)器人進(jìn)行了大量的研究。由于各國的科研實力不同,其水平也有高低,其中美國和日本在該項技術(shù)的研究處于領(lǐng)先地位。
法國提出了讓智能機(jī)器人具有自動認(rèn)知功能的一項科技計劃,使其能夠在復(fù)雜的環(huán)境中通過自主感知判斷來自動執(zhí)行各種動作。美國發(fā)明的智能機(jī)器人,可以幫助人們送信件、食品等生活用品,還可以牽引吸塵器來打掃衛(wèi)生。日本目前已經(jīng)研制成功的人形機(jī)器人,其可以模仿人們的各種面部表情而且非常逼真。近年來發(fā)明的的手術(shù)機(jī)器人已經(jīng)廣泛的應(yīng)用在實際醫(yī)療手術(shù)中而且穩(wěn)定性好,安全性高。我國的智能小車、機(jī)器人的研究已經(jīng)有三十多年的歷史,特別是在軍事領(lǐng)域的應(yīng)用方面已經(jīng)取得了較大的成果,已經(jīng)相繼研制出了復(fù)雜的智能機(jī)器人,危險作業(yè)機(jī)器人、仿人機(jī)器人、復(fù)合結(jié)構(gòu)移動機(jī)器人等。國內(nèi)的許多高校也都在不停的進(jìn)行著這方面的研究而且也有了層出不窮的成果,例如中科院研制的能夠和人對話的機(jī)器人、上海交大研制的具有較強(qiáng)越障能力的仿人關(guān)節(jié)結(jié)構(gòu)的機(jī)器人等。與此同時,我國也開展了智能移動機(jī)器人基礎(chǔ)理論研究,在某些方面取得了世界領(lǐng)先的成果,正在逐漸縮小與發(fā)達(dá)國家的差距。
1.2.2 發(fā)展趨勢
隨著各方面技術(shù)的不斷進(jìn)步與完善,各個國家對于智能小車、機(jī)器人的科研能力都再逐步的加強(qiáng),未來的智能機(jī)器人可能會朝著以下幾個方面發(fā)展:使用高強(qiáng)度的輕質(zhì)材料讓機(jī)器人的結(jié)構(gòu)越來越靈巧動作執(zhí)行也更加靈活;應(yīng)用網(wǎng)絡(luò)化技術(shù)來遠(yuǎn)距離操作控制機(jī)器人群體為人們工作;通過復(fù)雜生物機(jī)電系統(tǒng)和人機(jī)耦合系統(tǒng)來研究出具有仿生感知、生物神經(jīng)的仿人機(jī)器人。相信未來會有具有更高智能化的、更加生動有趣的智能機(jī)器人出現(xiàn)在我們的周圍,而且會極大的改變和方便人們的生產(chǎn)生活。
1.3 課題內(nèi)容和要求
本設(shè)計的智能小車用微處理器(即單片機(jī))作為整個系統(tǒng)的控制核心部分,主要包括單片機(jī)控制模塊、遙控模塊、避障模塊、循跡模塊、數(shù)據(jù)顯示模塊等模塊。要求能夠?qū)崿F(xiàn)以下幾種功能:
(1)遙控功能,即通過遙控器來控制小車的啟動、停止、左轉(zhuǎn)、右轉(zhuǎn)、后退等動作。
(2)自動避障功能,即小車在前方遇到障礙時可以立即做出反應(yīng),自動左轉(zhuǎn)或右轉(zhuǎn)躲避障礙。
(3)自動循跡功能,即小車可以自動沿著規(guī)定的路線行駛。
(4)能夠?qū)崟r顯示小車行駛的速度、路程等數(shù)據(jù)。
要求通過此次的實際動手設(shè)計掌握以下基本技能:
(1)學(xué)會電子產(chǎn)品的設(shè)計開發(fā)過程;
(2)掌握單片機(jī)原理、遙控原理、顯示原理等;
(3)能夠熟練進(jìn)行系統(tǒng)的硬件電路設(shè)計以及軟件設(shè)計;
(4)熟練使用相關(guān)的電子設(shè)計和仿真軟件;
(5)查閱國內(nèi)外相關(guān)文獻(xiàn),掌握智能小車的最新研究動態(tài)和未來發(fā)展趨勢。
第二章 總體方案設(shè)計與論證
本設(shè)計方案采用微處理器(AT89C52單片機(jī))作為整個系統(tǒng)控制的中心,主要由兩個部分構(gòu)成,紅外遙控發(fā)射部分和智能小車部分。其中智能小車部分主要由以下子模塊構(gòu)成:單片機(jī)控制模塊、電源模塊、電機(jī)驅(qū)動模塊、循跡避障模塊、轉(zhuǎn)速檢測模塊、紅外接收器和數(shù)據(jù)顯示模塊組成;紅外遙控發(fā)射部分主要由遙控按鍵、編碼芯片、紅外發(fā)射三個部分構(gòu)成。其總體設(shè)計框圖包括兩個部分,如圖2.1所示:
a 遙控部分框圖 b 小車部分框圖
圖2.1 系統(tǒng)總體設(shè)計框圖
2.1 遙控控制模塊設(shè)計與論證
目前比較常用的遙控控制方式有兩種,紅外遙控控制系統(tǒng)和無線遙控控制系統(tǒng)。
方案一:選擇紅外遙控裝置作為小車的遙控控制器。紅外遙控是通過遙控發(fā)射器內(nèi)的編碼芯片將按鍵信息調(diào)制成一串0和1的二進(jìn)制代碼,然后通過紅外線發(fā)出,最后被紅外接收裝置接收進(jìn)行解碼,再運(yùn)用單片機(jī)對解碼后的碼信息進(jìn)行識別,然后再根據(jù)不同的碼信息進(jìn)行不同的控制操作[9]。
方案二:選擇無線電遙控裝置作為小車的遙控控制器。無線電遙控是利用不同頻率的無線電波對遠(yuǎn)方的各種機(jī)構(gòu)進(jìn)行控制的遙控設(shè)備。這些信號被遠(yuǎn)方的接收設(shè)備接收后,可以驅(qū)動其他各種相應(yīng)的機(jī)械或者電子設(shè)備去完成各種操作[6]。
紅外遙控和無線遙控是對不同的載波來說的,紅外遙控器是用紅外線來傳送控制信號的,它的特點是有方向性中間不能被阻擋,在室內(nèi)使用時大概在7m的范圍內(nèi)有效;無線遙控器是用無線電波來傳送控制的信號的,它的特點是無方向性,可以不面對面控制,距離遠(yuǎn),有效距離可達(dá)數(shù)十米甚至數(shù)公里。
以上兩種方案均可作為本設(shè)計的遙控控制器,雖然無線遙控控制的距離更遠(yuǎn)也更加靈敏,但對于本設(shè)計來說使用紅外遙控已經(jīng)足夠了,而且紅外遙控的原理更加簡單易懂,所以本設(shè)計采用方案一即紅外遙控作為小車的遙控控制系統(tǒng)。
2.2 電機(jī)驅(qū)動模塊設(shè)計與論證
目前比較常用的小車驅(qū)動電機(jī)主要有兩種選擇:
方案一:選擇直流電機(jī)作為小車的動力驅(qū)動。直流電機(jī)是將直流電能轉(zhuǎn)換為機(jī)械能的一種裝置,因其轉(zhuǎn)動力矩大、體積較小、重量很輕、使用方便,所以其在一些小型的電動裝置中的應(yīng)用較多。直流電機(jī)的運(yùn)行方式是這樣的:在它里面有圓形的磁體會產(chǎn)生磁場,當(dāng)給它轉(zhuǎn)子上的繞組通電時,通電線圈在磁場中便會產(chǎn)生洛倫茲力帶著線圈即轉(zhuǎn)子轉(zhuǎn)動,當(dāng)轉(zhuǎn)子轉(zhuǎn)動時通電線圈內(nèi)的磁場方向?qū)淖,所以繞組上的電流也要變換流向,在方向一直不變的洛倫茲力控制下電機(jī)將向順時針或逆時針持續(xù)轉(zhuǎn)動。由H型橋式電路直接驅(qū)動直流電機(jī)控制電機(jī)的正反轉(zhuǎn),通過軟件編程使單片機(jī)輸出不同占空比的PWM(脈寬調(diào)制信號)來控制直流電機(jī)的轉(zhuǎn)速進(jìn)而控制小車的行駛速度[6]。
方案二:選擇步進(jìn)電機(jī)作為小車的動力驅(qū)動。步進(jìn)電機(jī)是將輸入端輸入的電脈沖信號轉(zhuǎn)變?yōu)檗D(zhuǎn)子的角位移的可以實現(xiàn)精確定位的電機(jī)。電機(jī)轉(zhuǎn)動的快慢取決于脈沖信號的頻率、轉(zhuǎn)動的圈數(shù)取決于脈沖的個數(shù),在不超載的情況下其轉(zhuǎn)動速度不受負(fù)載的影響,即給步進(jìn)電機(jī)輸入一個脈沖信號,電機(jī)的轉(zhuǎn)子則轉(zhuǎn)過一個角度,給其加上連接不斷的脈沖波形則步進(jìn)電機(jī)就能持續(xù)轉(zhuǎn)動下去[5]。
相比直流電機(jī),步進(jìn)電機(jī)轉(zhuǎn)過的角度是由脈沖信號控制的其可以實現(xiàn)小車的精確定位停車,步進(jìn)電機(jī)調(diào)速也更加容易,只要輸入不同頻率的脈沖信號就能控制小車的行駛速度,而且它還有很好的止動能力。所以在本設(shè)計中我們選用了步進(jìn)電機(jī)作為小車的驅(qū)動電機(jī)。
2.3 避障循跡模塊設(shè)計與論證
目前主要有兩種方案來實現(xiàn)小車的自動避障功能:
方案一:采用紅外反射式光電傳感器、電壓比較器及一些電阻構(gòu)成的障礙物檢測電路來檢測小車前方的障礙。障礙物檢測電路安裝在小車前部的中間及左右兩邊,來檢測小車前方的障礙物。其障礙檢測過程如下:紅外發(fā)光二極管發(fā)出紅外光,如果遇到小車前面的障礙物,紅外線就會被物體反射回來,被光敏三極管吸收此時光敏三極管導(dǎo)通,并在輸出端輸出低電平信號至單片機(jī),然后單片機(jī)調(diào)用尋跡避障子程序控制小車做出相應(yīng)的避障反應(yīng),當(dāng)左邊遇到障礙物時單片機(jī)會自動調(diào)用右轉(zhuǎn)子程序控制其右轉(zhuǎn),當(dāng)右邊遇到障礙物時單片機(jī)會自動調(diào)用左轉(zhuǎn)子程序控制其左轉(zhuǎn)。當(dāng)無障礙物時,發(fā)出的紅外線不被反射,光敏三極管截止,輸出高電平信號,小車?yán)^續(xù)向前行駛[8]。
方案二:采用超聲波原理來檢測小車前方的障礙。其檢測障礙的原理如下:先由超聲波發(fā)射器向小車前方發(fā)射超聲波,超聲波在向前傳播過程中,若遇到障礙物則會被反射回去,反射波被超聲波回收裝置接收后會產(chǎn)生一個電信號然后被轉(zhuǎn)化為高低電平信號反饋給單片機(jī),若為高電平則說明前方遇到障礙,然后由單片機(jī)調(diào)用避障子程來控制小車做出相應(yīng)的躲避障礙的動作[7]。
在本設(shè)計我們采用了第一種方案實現(xiàn)小車的自動避障功能。
2.4 數(shù)據(jù)顯示模塊設(shè)計與論證
根據(jù)題目的要求小車可以實時顯示其運(yùn)動的速度、距離等數(shù)據(jù)。主要有兩種方案來實現(xiàn):
方案一:用共陽極數(shù)碼管和可編程的鍵盤接口芯片組成數(shù)據(jù)顯示電路,接口芯片直接與單片機(jī)的I/O口相連,由單片機(jī)精確控制實現(xiàn)LED動態(tài)顯示。
方案二:用LCD液晶顯示屏直接與單片機(jī)相連組成數(shù)據(jù)顯示電路。LCD液晶顯示屏是一種專門用來顯示字符和數(shù)字的點陣型液晶模塊,它是由若干個5X7或5X11點陣字符位組成的,一個字符占據(jù)一個點陣字符位,每位之間有一個點距的間隔將字符隔開,行與行之間也有間隔[8]。
由于本設(shè)計需要顯示的數(shù)據(jù)較多,若用LED數(shù)碼管來顯示需多個數(shù)碼管才能滿足要求,這樣電路設(shè)計過于復(fù)雜,相反只用一個LCD液晶顯示屏即可顯示要求數(shù)據(jù),所以本設(shè)計我們采用方案二即LCD顯示屏來顯示實時數(shù)據(jù)。
2.5 轉(zhuǎn)速測量模塊設(shè)計與論證
方案一:選擇霍爾開關(guān)型傳感器測量小車車輪轉(zhuǎn)速。具體做法是:在非磁性材料制作的轉(zhuǎn)子上,固定好一片鋼性磁體,將霍爾開關(guān)型傳感器的感知接收面和磁體的磁極相對, 并在安裝架上安裝好(注意磁場方向不要弄錯),輪子轉(zhuǎn)動時磁體會跟著轉(zhuǎn)動,在磁體轉(zhuǎn)到和傳感器的接收面相對時, 霍爾傳感器便輸出一個脈沖信號, 由兩個脈沖間的時間間隔,便可算出轉(zhuǎn)速,然后再根據(jù)車輪半徑編程便可算出小汽車運(yùn)行的速度[10]。
方案二:選擇直射式光電檢測器測量小車車輪轉(zhuǎn)速。具體做法是: 在小車的驅(qū)動輪的主軸上安裝一個開有十個透光槽的圓形葉片,保持葉片和驅(qū)動輪能夠同步轉(zhuǎn)動,然后在驅(qū)動輪旁安裝好直射式光電檢測器,葉片隨著車輪的轉(zhuǎn)動不斷切割紅外發(fā)射管與紅外接受管之間的紅外線通路,當(dāng)葉片轉(zhuǎn)動至透光槽與紅外線通路重合時,檢測器導(dǎo)通,紅外接受管通過電流,當(dāng)葉片轉(zhuǎn)動至使透光槽遮住時,光通路斷開。隨著車輪不斷的轉(zhuǎn)動,便會輸出連續(xù)的脈沖序列,測出脈沖的個數(shù)便可知葉片轉(zhuǎn)過的孔數(shù),從而可計算出車輪轉(zhuǎn)動的轉(zhuǎn)角和轉(zhuǎn)速,然后再根據(jù)車輪半徑由軟件編程便可算出小車運(yùn)行的速度[11]。
以上兩種方案都能夠測出小車車輪的轉(zhuǎn)速。但是在本設(shè)計中,對于方案一來說,要想在很小的小車車輪上密集安裝磁片比較困難,而且彼此之間也容易產(chǎn)生干擾。因此本設(shè)計擬采用方案二測量小車的轉(zhuǎn)速。
2.6 電源模塊設(shè)計與論證
電源是整個小車系統(tǒng)運(yùn)行的基本條件,它的性能的好壞直接決定整個系統(tǒng)運(yùn)行的穩(wěn)定性和性能。小車的供電電源包含兩部分,單片機(jī)控制模塊電源和電機(jī)驅(qū)動模塊電源,我們將單片機(jī)及其外圍電路和步進(jìn)電機(jī)分開供電,兩者互相不影響,實現(xiàn)穩(wěn)定供電。由于步進(jìn)電機(jī)需較高的供電電壓而單片機(jī)和其邏輯單元最大供電電壓不能超過5V,因此需設(shè)計穩(wěn)壓電路。
方案一:采用8節(jié)1.5V干電池串聯(lián)共12V直接給步進(jìn)電機(jī)供電,然后經(jīng)過由LM7805穩(wěn)壓芯片構(gòu)成的穩(wěn)壓電路將電壓降至5V后給電片機(jī)及其外圍邏輯電路供電。但是本方案由于電池電量有限,而且數(shù)量較多的干電池重量較大會給驅(qū)動電機(jī)帶來太大負(fù)擔(dān),也占用了太大的空間在體積較小的小車上使用太不方便,所以放棄了該方案。
方案二:采用12V蓄電池直接給步進(jìn)電機(jī)供電,將電壓降至5V后給單片機(jī)及其外圍電路供電。蓄電池具有較長的續(xù)航能力以及電壓輸出的值基本不怎么變化,但是因為蓄電池的體積和質(zhì)量過大,并不適合本設(shè)計的使用,所以我們并沒有使用蓄電池來供電。
方案三:采用3節(jié)4.2V鋰電池串聯(lián)的方式共直接給步進(jìn)電機(jī)供電,然后經(jīng)過由穩(wěn)壓芯片構(gòu)成的穩(wěn)壓電路將電壓降至5V后給單片機(jī)及其外圍邏輯電路供電。本方案鋰電池的電量較足并且可以充電重復(fù)利用,3節(jié)鋰電池重量和占用的空間都較小,因此該方案比較可行,最終我們選擇了該方案作為小車的驅(qū)動電源[14]。
第三章 各模塊硬件電路設(shè)計
本設(shè)計的遙控智能小車的硬件部分共分為兩大模塊:紅外遙控發(fā)射器硬件模塊和智能小車部分硬件模塊。其中紅外遙控發(fā)射硬件模塊包含遙控按鍵、編碼芯片、紅外發(fā)射三個子模塊;智能小車部分硬件模塊包含單片機(jī)控制模塊、電機(jī)驅(qū)動模塊、避障循跡模塊、顯示模塊、紅外接收器模塊、電源模塊6個子模塊。
首先介紹紅外遙控發(fā)射器部分即遙控按鍵、編碼芯片、紅外發(fā)射三個子模塊的硬件設(shè)計。
3.1 紅外遙控發(fā)射器模塊
3.1.1 紅外遙控模塊的工作原理
紅外線遙控是比較常見的一種遙控設(shè)備,它是利用波長為0.76~1.5μm之間的紅外線來傳送控制信號的遙控設(shè)備。其占據(jù)空間小、價格便宜、使用方便,在我們常用的家用電器比如電視、DVD,錄音機(jī)、空凋等和一些小型電動玩具裝置上均已應(yīng)用了紅外線遙控設(shè)備。但是紅外遙控也有缺點比如容易受到空間和距離的限制,一般在7m的范圍內(nèi)有效且發(fā)射和接收之間不能被物體隔擋,但對于本設(shè)計的智能小車來說已經(jīng)能夠滿足要求。
紅外遙控系統(tǒng)一般由兩大部分組成:一個紅外發(fā)射部分,一個紅外接收部分。其中發(fā)射部分主要由按鍵鍵盤、編碼調(diào)制、LED紅外發(fā)送器構(gòu)成,它最重要的部分就是應(yīng)用編碼芯片對按鍵信息進(jìn)行編碼和發(fā)送;接收部分由光電轉(zhuǎn)換放大器、解調(diào)、解碼電路構(gòu)成,其最重要的部分是對接收到的編碼進(jìn)行解調(diào)。其原理如圖3.1所示:
圖3.1 紅外遙控系統(tǒng)原理框圖
按下遙控器的一個按鍵,遙控器的編碼芯片會對按鍵信息進(jìn)行編碼,然后通過LED紅外發(fā)射器發(fā)出脈沖編碼,被紅外接收頭接收后將編碼解出并輸入到單片機(jī)的外部中斷,對接收到的脈沖編碼進(jìn)行位“0”和位“1”的識別,再根據(jù)不同的碼信息調(diào)用相應(yīng)的子程序來對小車進(jìn)行不同的控制操作。
3.1.2 HT6221編碼芯片簡介
HT6221是合泰公司生產(chǎn)的多功能遙控編碼芯片,工作電壓在1.8V-3.5V,其采用PPM(Pulse Position Modulation)進(jìn)行編碼,周期能編碼16位地址碼和8位數(shù)據(jù)碼,最多能同時支持32個活動鍵。其引腳結(jié)構(gòu)如圖3.2所示:
圖3.2 HT6221引腳圖
其各引腳說明如下表3-1所示:
表3-1 HT6221芯片引腳說明
引腳號
引腳名稱
描述
0
AIN
低8位地址碼輸入
1-8
C1-C8
鍵盤列控制
9
LED
按鍵指示燈
10-13
R1-R4
鍵盤行控制, 高電平有效
14
DOUT
串行數(shù)據(jù)輸出引腳, 38KHz發(fā)射頻率
15
VDD
1.8V- 3.5V
16
DT
最重要數(shù)據(jù)位(DT)代碼設(shè)置
17、18
X2、X1
455KHz振蕩器輸出,455KHz振蕩器輸入
19
VSS
接地
遙控編碼有兩種:位0和位1,其低電平脈寬相同但高電平脈寬不一樣。采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的脈沖表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的脈沖表示二進(jìn)制的“1”。其波形如圖3.3所示:
圖3.3 遙控碼的“0”和“1”(注:接收端的波形與發(fā)射斷相反)
3.1.3 紅外遙控發(fā)射器
遙控發(fā)射器專用芯片很多,在本設(shè)計中我們運(yùn)用了HT6221芯片來實現(xiàn)紅外編碼的發(fā)射。其電路如圖3.4所示:
圖3.4 遙控發(fā)射器電路原理圖
圖3.4中當(dāng)有任意一個按鍵按下后,按鍵指示燈(D1)發(fā)光,HT6221編碼芯片能夠產(chǎn)生脈沖編碼,該脈沖編碼會被調(diào)制成38KHz的脈沖信號然后通過圖中的紅外發(fā)射二極管(D2)發(fā)射出去[8]。
所按的按鍵不同其發(fā)出的編碼脈沖也不同,按鍵所代表的功能也就不同,其各按鍵的功能分配如下表3-2所示:
表3-2 按鍵功能分配表
按鍵
功能
K1
控制小車的啟動
K2
控制小車的停止
K3
控制小車的加速
K4
控制小車的左轉(zhuǎn)
K5
控制小車的右轉(zhuǎn)
K6
控制小車的倒退
下面是智能小車部分即單片機(jī)控制模塊、紅外接收器模塊、電機(jī)驅(qū)動模塊、避障循跡模塊、顯示模塊、電源模塊6個子模塊的硬件設(shè)計介紹。
3.2 單片機(jī)控制模塊
3.2.1 單片機(jī)模塊電路
本設(shè)計我們采用AT89C52單片機(jī)作為智能小車部分的控制核心,AT89C52單片機(jī)是AT89系列的標(biāo)準(zhǔn)型8位單片機(jī),其與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)和8052產(chǎn)品引腳兼容,功耗低、性能強(qiáng)大、價格便宜適用于許多較為復(fù)雜控制的場合。AT89C52單片機(jī)的內(nèi)部結(jié)構(gòu)如下:一個以ALU為中心的8位中央處理器,256字節(jié)內(nèi)部數(shù)據(jù)存儲器(RAM),8K字節(jié)用來存儲程序的Flash內(nèi)部程序存儲器即片內(nèi)ROM(可反復(fù)擦寫1000次),4個8位可編程I/O口(P0、P1、P2、P3),3個16位定時/計數(shù)器,8個中斷源,兩個中斷優(yōu)先級的中斷控制系統(tǒng),一個全雙工串行通信口,一個片內(nèi)振蕩器和時鐘電路[1]。AT89C52單片機(jī)最小應(yīng)用系統(tǒng)主要由單片機(jī)、復(fù)位電路、振蕩電路等部分組成。本設(shè)計的單片機(jī)控制模塊原理圖如圖3.5所示:
圖3.5 單片機(jī)控制模塊
本設(shè)計中我們使用了AT89C52單片機(jī)的大部分引腳,其具體的引腳功能分配如下表3-3所示:
表3-3 單片機(jī)引功能分配表
引腳
功能分配
P0.0-P0.7
接LCD1602的D0-D7引腳,作為數(shù)據(jù)信息的輸出引腳
P1.0-P1.2
接LCD1602的RS、RW、E引腳,作為數(shù)據(jù)信息的控制端
P1.3-P1.5、P1.7
連接避障循跡電路的輸出端
P1.6
連接轉(zhuǎn)速測量電路的脈沖輸出端
P2.4-P2.7
連接電機(jī)驅(qū)動芯片的脈沖信號輸入端
P3.2
外部中斷,連接紅外接收器的輸出端
VCC
接+5V電源
GND
接地
3.2.2 復(fù)位電路
單片機(jī)的復(fù)位,是為了初始化單片機(jī)的工作狀態(tài),有時當(dāng)程序運(yùn)行出錯或因操作錯誤而使系統(tǒng)處于鎖死狀態(tài),為了擺脫困境,也可按復(fù)位鍵重新初始化單片機(jī)。RST引腳是復(fù)位信號的輸入端,要實現(xiàn)復(fù)位操作必須使RST引腳上至少保持兩個機(jī)器周期的高電平,再從高電平變?yōu)榈碗娖酵瓿蓮?fù)位。復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩種方式,本設(shè)計采用按鍵復(fù)位實現(xiàn)復(fù)位操作。單片機(jī)按鍵復(fù)位電路如圖3.6所示:
圖3.6 復(fù)位電路
按鍵復(fù)位是通過按鍵使復(fù)位引腳經(jīng)電阻R0與VCC電源接通來實現(xiàn)的,按下復(fù)位鍵時,RST引腳為高電平;松開復(fù)位按鍵后,RST引腳逐漸將為低電平,復(fù)位結(jié)束。
3.2.3 振蕩電路
AT89C52單片機(jī)內(nèi)有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為芯片引腳XTAL2。只要在片外通過XTAL1和XTAL2引腳跨接振蕩元件(如晶體振蕩器),則可構(gòu)成一個穩(wěn)定的自激振蕩器,單片機(jī)通電后即可工作。其外部振蕩電路如圖3.7所示:
圖3.7 振蕩電路
AT89C52單片機(jī)內(nèi)部RAM容量很小,當(dāng)單片機(jī)需要存放大量數(shù)據(jù)時就必須擴(kuò)展外部數(shù)據(jù)存儲器。此外AT89C52單片機(jī)的I/O口數(shù)量和功能很有限,也常常要擴(kuò)展外部接口芯片。由于本設(shè)計不需要太多的I/O口,內(nèi)部程序存儲器也夠用,所以不用擴(kuò)展外部數(shù)據(jù)存儲器和外部接口芯片。
3.3 紅外接收器及解碼
紅外接收器也叫做一體化紅外接收頭,其內(nèi)部是由紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等構(gòu)成的。紅外監(jiān)測二極管接收到紅外信號后,會把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平。交流信號進(jìn)入帶通濾波器,帶通濾波器只允許30khz到60khz的負(fù)載波通過,然后脈沖信號再通過解調(diào)電路和積分電路進(jìn)入比較器,由比較器輸出高低電平信號,還原出發(fā)射端的信號波形。但為了提高接收的靈敏度輸出的高低電平和發(fā)射端是反相的。紅外接收頭有很多的種類,一般都有電源引腳、信號輸出引腳和接地引腳。根據(jù)發(fā)射端調(diào)制載波的不同應(yīng)選用相應(yīng)解調(diào)頻率的接收頭,本設(shè)計我們采用一體化紅外接收頭1838來解調(diào)HT6221編碼芯片的編碼。其實物圖如圖3.8所示:
圖3.81838紅外接收頭
由于紅外接收頭內(nèi)部放大器也很大的增益,這樣很會容易引起干擾,因此在接收頭的電源引腳上須加上大小在22uf以上的濾波電容。本設(shè)計的紅外接收電路如圖3.9所示:
圖3.9 紅外接收電路圖
其中U6為1838紅外接收頭,電容C4為濾波電容,DOUT 是解調(diào)信號的輸出端,直接與單片機(jī)的P3.2引腳即INT0中斷相連[8]。
解碼的重點是怎樣識別位0和位1,由于位0和位1的低電平脈寬相同但高電平脈寬不一樣。所以需要根據(jù)高電平的寬度區(qū)別位0和位1,如果從0.56ms低電平信號過后延時了0.56ms以后如果能讀到低電平信號說明該位為0反之則為1,為了可靠起見延時必須介于0.56ms和1.12ms之間,否則如果該位為0讀到的已是下一位的高電平,因此我們?nèi)∑渲虚g值即(1.12ms+0.56ms)/2=0.84ms。
當(dāng)按下遙控器的按鍵后,便有紅外脈沖編碼信號發(fā)出,經(jīng)紅外接收頭接收解碼后在其輸出端輸出檢波整形后的方波信號,然后直接輸入至單片機(jī)外部中斷進(jìn)行碼信息的識別,單片機(jī)再調(diào)用相應(yīng)子程序執(zhí)行對應(yīng)的操作。具體解碼操作流程圖如圖3.10所示:
圖3.10 紅外接收解碼流程圖
3.4 電機(jī)驅(qū)動模塊
3.4.1 步進(jìn)電機(jī)的工作原理
步進(jìn)電機(jī)是一種將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓位移的電機(jī)。電機(jī)轉(zhuǎn)動的快慢取決于脈沖信號的頻率、轉(zhuǎn)動的圈數(shù)取決于脈沖的個數(shù),在不超載的情況下其轉(zhuǎn)動速度不受負(fù)載的影響,即給步進(jìn)電機(jī)輸入一個脈沖信號,電機(jī)的轉(zhuǎn)子就轉(zhuǎn)過一個固定角度(步距角),給其輸入連續(xù)的脈沖信號步進(jìn)電機(jī)就能連續(xù)轉(zhuǎn)動[5]。
在本設(shè)計中我們采用步距角為1.8度的四相步進(jìn)電機(jī)作為小車的驅(qū)動電機(jī),其內(nèi)部結(jié)構(gòu)及元件圖如圖3.11所示:
圖3.11 步進(jìn)電機(jī)結(jié)構(gòu)和元件圖
四相步進(jìn)電機(jī)有著比較小的體積和轉(zhuǎn)矩,該電機(jī)共有5根引出線,分別是內(nèi)部四組繞組線圈A、B、C、D的四根引出線,一根電源引出線,其采用單極性直流電源供電,使A、B、C、D四相繞組輪流供電,轉(zhuǎn)子就會沿著A、B、C、D方向轉(zhuǎn)動。其旋轉(zhuǎn)角度與脈沖數(shù)成正比,旋轉(zhuǎn)頻率與脈沖頻率成正比。
本設(shè)計的步進(jìn)電機(jī)采用四相八拍的工作方式,即A-AB-B-BC-C-CD-D-DA-A
的通電順序工作。當(dāng)通電順序為A-AB-B-BC-C-CD-D-DA時電機(jī)正轉(zhuǎn),當(dāng)通電順序為DA-D-CD-C-BC-B-AB-A時電機(jī)反轉(zhuǎn)。步進(jìn)電機(jī)工作時的時序波形圖如圖3.12所示:
圖3.12 步進(jìn)電機(jī)工作時序波形圖
3.4.2 ULN2003芯片簡介
ULN2003驅(qū)動芯片可以直接用來驅(qū)動電流小于0.5A的步進(jìn)電機(jī)。ULN2003芯片是美國TI公司和Sprague公司開發(fā)的高壓大電流達(dá)林頓晶體管陣列電路具有較高的電流增益和工作電壓、較寬的溫度范圍、較強(qiáng)的驅(qū)動負(fù)載能力等特點,適和應(yīng)用于各種高速大功率的驅(qū)動系統(tǒng)中。其內(nèi)部結(jié)構(gòu)及引腳如圖3.13所示:
圖3.13 ULN2003芯片引腳圖
其引腳說明如表3-4所示:
表3-4 ULN2003芯片引腳說明
引腳
功能說明
IN1-IN7
脈沖信號輸入端(接單片機(jī))
GND
接地
OUT1-OUT7
驅(qū)動信號輸出端(接步進(jìn)電機(jī))
COM
接+5V電源
ULN2003驅(qū)動芯片的輸出結(jié)構(gòu)是集電極開路的,所以要在輸出端接一個上拉電阻,通常單片機(jī)驅(qū)動ULN2003時,上拉2K的電阻較為合適。
3.4.3 步進(jìn)電機(jī)驅(qū)動電路設(shè)計
由于單片機(jī)的輸出電流太小,而步進(jìn)電機(jī)需要較大的驅(qū)動電流,所以需要驅(qū)動電路來連接單片機(jī)和步進(jìn)電機(jī)。本設(shè)計中我們采用四相步進(jìn)電機(jī)作為小車的驅(qū)動電機(jī),用單極性直流電源供電。采用ULN2003芯片直接驅(qū)動步進(jìn)電機(jī),步進(jìn)電機(jī)驅(qū)動電路如圖3.14所示:
圖3.14 步進(jìn)電機(jī)驅(qū)動電路
ULN2003的輸入端直接與單片機(jī)的P2.4-P2.7引腳相連,單片機(jī)輸出不同的脈沖信號,這些脈沖信號經(jīng)ULN2003驅(qū)動芯片放大后分別控制步進(jìn)電機(jī)的啟動、停止、正轉(zhuǎn)、反轉(zhuǎn)、加速和減速。本設(shè)計中只要對步進(jìn)電機(jī)的各相繞組按合適的時序通電,就能使步進(jìn)電機(jī)轉(zhuǎn)動。正、反轉(zhuǎn)可由輸入不同順序的脈沖信號來控制以實現(xiàn)小車的前進(jìn)和后退;我們使用兩個步進(jìn)電機(jī)分別控制小車的左輪和右輪,通過單片機(jī)輸出不同頻率的脈沖使左右兩個車輪具備不同的轉(zhuǎn)速,由轉(zhuǎn)速差實現(xiàn)小車的轉(zhuǎn)向,當(dāng)左側(cè)車輪轉(zhuǎn)速大于右側(cè)車輪時小車右轉(zhuǎn),當(dāng)右側(cè)車輪轉(zhuǎn)速大于左側(cè)時小車左轉(zhuǎn)。
3.5 避障循跡模塊
本設(shè)計我們采用了紅外反射式光電傳感器、電壓比較器及一些電阻來構(gòu)成障礙物檢測電路,并直接與單片機(jī)的P1.4引腳相連,其可將檢測到的模擬信號轉(zhuǎn)化為高低電平信號然后輸入到單片機(jī),單片機(jī)根據(jù)輸入的高低電平信號來判斷是否有障礙物,若有則調(diào)用自動避障子程序控制小車做出相應(yīng)的避障動作。障礙物檢測電路如圖3.15所示:
圖3.15 障礙物檢測電路
圖中U3紅外反射式光電傳感器是由紅外發(fā)光二級管和光敏三極管組成的,紅外發(fā)光二級管用來發(fā)射紅外線,光敏三極管用來接收被反射回來的紅外線。紅外接收/檢測器有一個內(nèi)置的只允許紅外光線通過的光濾波器和一個只允許38.5 kHz左右電信號通過的電子濾波器,這樣就防止了外來光源對紅外接收器的干涉。
U4是電壓比較器,它能夠?qū)⑤斎氲哪M電壓信號轉(zhuǎn)化為高低電平信號,當(dāng)3腳電平大于4腳時,輸出端1腳輸出為高電平,反之輸出為低電平。障礙物檢測電路安裝在小車前部的中間及左右兩邊,來檢測小車前方的障礙物。其障礙檢測過程如下:紅外二極管發(fā)出紅外光,如果遇到小車前面的障礙物,紅外線就會被物體反射回來并被光敏三極管吸收,此時光敏三極管導(dǎo)通并在輸出端輸出低電平信號至單片機(jī),然后單片機(jī)調(diào)用尋跡避障子程序控制步進(jìn)電機(jī)做出相應(yīng)的避障反應(yīng),當(dāng)左邊遇到障礙物時小車右轉(zhuǎn),當(dāng)右邊遇到障礙物時小車左轉(zhuǎn)。當(dāng)無障礙物時,發(fā)出的紅外線不被反射,光敏三極管截止,輸出高電平信號,小車?yán)^續(xù)向前行駛[9]。
循跡的原理和避障的原理是相同的,循跡電路安裝在小車底部,循跡是通過辨別黑白色來行走。工作過程如下:紅外發(fā)光二極管發(fā)出紅外光,當(dāng)遇到黑色,不反射紅外光,比較器輸出為高電平;當(dāng)遇到白線,紅外光被反射回來,比較器輸出為低電平。單片機(jī)根據(jù)輸入電平的變化判斷小車的行駛路線是否偏離,然后調(diào)用自動避障子程序?qū)崿F(xiàn)小車的自動循跡,當(dāng)左邊檢測到白色時小車右轉(zhuǎn),當(dāng)右邊檢測到白色時小車左轉(zhuǎn);當(dāng)兩邊檢測到的都是黑色時小車前進(jìn),當(dāng)兩邊檢測到的都是白色時小車停止。
3.6 轉(zhuǎn)速檢測模塊
施密特觸發(fā)器是具有特殊功能的非門,當(dāng)它的輸入端的電壓上升到某個值時,輸出端會立即從高電平跳變?yōu)榈碗娖?而當(dāng)輸入端的電壓下降到某一個值時,輸出端會立即從低電平跳變?yōu)楦唠娖健1驹O(shè)計采用直射式光電檢測器、施密特觸發(fā)器、三極管和若干電阻構(gòu)成的電路與單片機(jī)的P1.6引腳相連來測量小車車輪的轉(zhuǎn)速,其實物圖和電路圖如圖3.16所示:
圖3.16 透射式光電測速實物和電路圖
具體的轉(zhuǎn)速檢測方法是:在小車的驅(qū)動輪的主軸上安裝一個開有十個透光槽的圓形葉片,保持葉片和驅(qū)動輪能夠同步轉(zhuǎn)動,然后在驅(qū)動輪旁安裝好直射式光電檢測器,葉片隨著車輪的轉(zhuǎn)動不斷切割紅外發(fā)射管與紅外接受管之間的光通路,當(dāng)葉片轉(zhuǎn)動至透光槽與光通路重合時,光通路導(dǎo)通,光敏三極管通過電流,輸出端會輸出一個低電平信號,當(dāng)葉片轉(zhuǎn)動至使透光槽遮住時,光通路斷開,輸出端會輸出一個高電平信號。隨著車輪不斷的轉(zhuǎn)動,光通路不斷的導(dǎo)通和斷開,輸出端便會輸出連續(xù)的脈沖序列,測出脈沖的個數(shù)便可知葉片轉(zhuǎn)過的孔數(shù),由葉片轉(zhuǎn)過的孔數(shù)可以知道車輪轉(zhuǎn)過的圈數(shù),從而可計算出車輪轉(zhuǎn)動的轉(zhuǎn)速,然后再根據(jù)車輪半徑便可算出小車運(yùn)行的速度和路程[11]。
3.7 數(shù)據(jù)顯示模塊
本設(shè)計中小車的數(shù)據(jù)顯示電路采用液晶顯示屏LCD1602,LCD1602具有8位并行2線或者3線串行兩種接口方式。LCD1602液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點。具體的液晶顯示電路如圖3.17所示:
圖3.17 LCD液晶顯示電路
電路中LCD1602與AT89C52單片機(jī)使用并行數(shù)據(jù)通信。引腳1接電源電壓正極,引腳0、14、15分別接電源電壓負(fù)極,為LCD1602提供電源與背光電源;2腳接一個10K電位器用于調(diào)節(jié)背光燈光度;3、4、5腳分別接P1.0、P1.1、P1.2腳作為單片機(jī)控制信號輸入與輸出端;6—13腳接單片機(jī)的P0.0—P0.7腳作為單片機(jī)數(shù)據(jù)信息輸入端。數(shù)據(jù)顯示的原理為:首先通過數(shù)據(jù)顯示子程序?qū)⑿≤嚨乃俣取⒙烦痰葦?shù)據(jù)信息計算出來,然后再將這些數(shù)據(jù)信息通過單片機(jī)的P0.0-P0.7引腳直接輸出至LCD1602的DO-D7引腳[8]。
3.8 電源模塊
電源是整個小車系統(tǒng)運(yùn)行的基本條件,它的性能的好壞直接決定整個系統(tǒng)運(yùn)行的穩(wěn)定性和性能。小車的供電電源包含兩部分,單片機(jī)控制模塊電源和電機(jī)驅(qū)動模塊電源,我們將單片機(jī)及其外圍電路和步進(jìn)電機(jī)分開供電,兩者互相不影響,實現(xiàn)穩(wěn)定供電。
本設(shè)計中我們采用3節(jié)4.2V鋰電池串聯(lián)共12.6V直接給步進(jìn)電機(jī)供電,用于驅(qū)動小車電機(jī),也可降至5V后給單片機(jī)及其他邏輯單元供電。這三節(jié)電池的體積和重量都比較小,便于安裝在小車底座,不會造成電機(jī)負(fù)載過大,而且價格低、電流驅(qū)動能力強(qiáng)。為了給單片機(jī)及其他邏輯單元供電,必須將鋰電池組的電壓降至5V,這里我們采用LM7805穩(wěn)壓芯片進(jìn)行降壓,穩(wěn)壓電路如圖3.18所示:
圖3.18 5V穩(wěn)壓電路
第四章 系統(tǒng)軟件設(shè)計
在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個對象的實際需要設(shè)計應(yīng)用程序,小車能否實現(xiàn)要求功能取決于軟件的編程是否合理。本設(shè)計采用模塊化程序設(shè)計法進(jìn)行系統(tǒng)軟件的設(shè)計,主要包含主程序、避障循跡子程序、數(shù)據(jù)顯示子程序等程序模塊。由于本人水平和能力有限只完成了部分模塊的程序設(shè)計。
4.1 系統(tǒng)總體程序流程圖
系統(tǒng)的總體程序流程圖如圖4.1所示:
圖4.1 系統(tǒng)程序流程圖
在圖4.1系統(tǒng)程序流程圖中,開始時先是系統(tǒng)的初始化,包括定時器初始化,外部中斷的初始化,液晶顯示器的初始化。其中避障循跡子程序用于控制小車自動躲避障礙和自動沿著特定的黑線行駛;數(shù)據(jù)顯示子程序主要是將測得的車輪轉(zhuǎn)速換算成小車的行駛的速度、路程等數(shù)據(jù)進(jìn)而在LCD1602液晶顯示屏顯示。
4.2 避障循跡模塊程序設(shè)計
4.2.1 避障程序流程圖
圖4.2避障程序流程圖
圖4.2所示為小車避障程序流程圖,小車在行駛過程中由位于小車前部的四個障礙物檢測電路不斷檢測小車周圍環(huán)境,若遇到障礙物則將低電平信號輸入至單片機(jī),然后由單片機(jī)調(diào)用避障子程序控制小車作出相應(yīng)的避障動作。如果左邊遇到障礙則調(diào)用右轉(zhuǎn)子程序,右邊遇到障礙則調(diào)用左轉(zhuǎn)子程序,前方遇到障礙則調(diào)用左轉(zhuǎn)或右轉(zhuǎn)子程序,沒有遇到障礙則調(diào)用直行子程序。具體的程序請見附錄B避障子程序。
4.2.2 循跡程序流程圖
圖4.3 循跡程序流程圖
圖4.3所示為循跡程序流程圖,小車在循跡行駛過程中安裝在小車底部的四個紅外反射式光電開關(guān)不斷檢測小車的行駛路線,若小車偏離黑線則將檢測到的低電平信號輸入至單片機(jī),單片機(jī)再調(diào)用循跡子程序控制小車使其沿著黑線行駛,如果小車偏向黑線左邊則調(diào)用右轉(zhuǎn)子程序,偏向黑線右邊則調(diào)用左轉(zhuǎn)子程序,在黑線上則調(diào)用直走子程序,完全偏離黑線則調(diào)用后退子程序。具體的程序請見附錄B循跡子程序。
4.3數(shù)據(jù)顯示模塊程序設(shè)計
圖4.4 數(shù)據(jù)顯示程序流程圖
在圖4.4數(shù)據(jù)顯示程序流程圖中,首先初始化LCD1602,然后在液晶的第一行顯示“路程: cm”,液晶第二行顯示“速度: cm/s”然后由主程序不斷調(diào)用數(shù)據(jù)顯示程序不斷刷新cm或者cm/s前面的數(shù)字實現(xiàn)實時顯示的目的。具體的程序請見附錄B數(shù)據(jù)顯示子程序。
第五章 總結(jié)與展望
5.1 總結(jié)
本設(shè)計的智能小車基本上實現(xiàn)了題目要求的各項功能,可以用遙控來控制小車的啟停、左轉(zhuǎn)、右轉(zhuǎn)、前進(jìn)、倒退,小車能自動沿著黑線行駛,遇到障礙時能夠自動躲避障礙,而且可以實時顯示運(yùn)行的速度、路程等數(shù)據(jù)。通過本次設(shè)計讓我學(xué)會了電子產(chǎn)品的設(shè)計開發(fā)過程,掌握了紅外遙控原理、步進(jìn)電機(jī)的驅(qū)動原理、采用紅外反射式光電開關(guān)檢測障礙的原理、顯示原理等自己以前并不了解的新知識,對單片機(jī)的結(jié)構(gòu)和其控制系統(tǒng)也有了更深的理解和認(rèn)識,對于AltiumDesigner、Proteus等電路設(shè)計和仿真軟件的操作也更加熟練,特別是在、自己最不擅長的軟件編程方面也有了一定的提高。
但是由于本人水平和能力有限,本設(shè)計中還存在一些不足之處。例如由于安裝在小車上面的紅外傳感器檢測范圍有限,存在一些檢測盲區(qū),光電檢測也容易收到外界環(huán)境和太陽光的干擾,有時可能會導(dǎo)致小車的循跡避障功能失效;小車是利用轉(zhuǎn)速差來轉(zhuǎn)彎的但是這種方法轉(zhuǎn)彎不夠順暢也不能持續(xù)轉(zhuǎn)彎并且對電機(jī)的損耗也較大,這些都有待進(jìn)一步的改進(jìn)和完善。
5.2 改進(jìn)與展望
在本設(shè)計中我們可以采用超聲波避障來代替紅外避障以減少外界干擾;多安裝幾個尋跡電路,在小車的車頭底部左右兩邊各一個,中間底部左右兩邊各一個,車尾底部左右兩邊各一個,這樣可提高小車尋跡功能的可靠性和靈敏性;通過多組速度(不同脈沖所對應(yīng)的速度)的實際測試,尋找更合適的轉(zhuǎn)向速度,以提高轉(zhuǎn)向的精確度。
我們還可以為小車添加語音控制模塊,用語音來控制小車的一些狀態(tài),這樣將大大增加其人機(jī)交互控制的趣味性。
參考文獻(xiàn)
[1]張靖武,周靈彬,方曙光.單片機(jī)原理及應(yīng)用[M].第2版.電子工業(yè)出版社,2011:17-32.
[2]李群芳.單片機(jī)原理接口與應(yīng)用[M].北京清華大學(xué)出版社,2005:12-30.
[3]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].第2版.北京航空航天大學(xué)出版社,2008:2-14.
[4]鄒 彥.DSP原理及應(yīng)用[M].電子工業(yè)出版社,2012:10-15.
[5]張 明.步進(jìn)電機(jī)的基本原理[J].機(jī)械與電子, 2007(9):83-84.
[6]朱淑偵,侯 軒,李利民.基于89C2051的無線遙控小汽車的設(shè)計[J].電腦開發(fā)與應(yīng)用,2012(12):73-78.
[7]姚陪,張李堅.基于單片機(jī)控制的智能尋跡避障小車[J].機(jī)電信息,2010(12):192-193.
[8]王 艷.基于51單片機(jī)的紅外遙控小車設(shè)計和制作[J].電子制作,2010(6):11-13.
[9]趙海蘭.基于單片機(jī)的紅外遙控智能小車的設(shè)計[J].電子世界,2013(2):31-32.
[10]宋新兵.自動控制電動小汽車的設(shè)計[J],2001年全國大學(xué)生電子設(shè)計競賽一等獎.電子世界,2002(4):55-56.
[11]尚林勇.自動往返電動小汽車的設(shè)計[J],咸寧師專學(xué)報,2002(6):39-43.
[12]Wang Shaokun,Xiao Xiao,ZhaoHongwei.The Wireless Remote Control CarSystem Based On ARM9[J].2011 IEEE:887-890.
[13]Gang Wang.Wireless Remote Control Technology in Intelligent BuildingsSystem [J].2010 Conference onDependable Computing :231-233.
[14]張化勛.智能小汽車的設(shè)計[J].長春大學(xué)學(xué)報,2005年12月第六期:13-15.
[15]苑毅,張志超等.智能避障小車設(shè)計[J].自動化與儀器儀表,2011(3):36-37.
致謝
不知不覺三個月的時間過去了,從開始的搜集查找相關(guān)文獻(xiàn)資料確定一個大體的設(shè)計思路到后來一步步的進(jìn)行各個模塊的具體設(shè)計再到現(xiàn)在最終設(shè)計的完成,特別感謝我的指導(dǎo)老師楊安平老師在設(shè)計過程中給予我的極大幫助,雖然老師平時很忙,但每周仍會抽出兩次時間來對我不懂的地方進(jìn)行耐心的指導(dǎo),并對我的設(shè)計方案提出一些改進(jìn)的意見,教會了我解決相關(guān)問題的具體思路和方法,并且在我不擅長的硬件設(shè)計和軟件設(shè)計方面給予了我細(xì)心的講解。本設(shè)計能夠順利完成設(shè)計任務(wù),除了楊老師外還有很多同學(xué)也對我的設(shè)計進(jìn)行了一些指導(dǎo)和幫助,在此對你們表示最誠摯的感謝!
最后還要感謝各位評閱老師在百忙之中抽出時間對本論文進(jìn)行評閱,謝謝!
附錄A 各模塊電路圖
單片機(jī)控制模塊電路
紅外遙控發(fā)射器電路
紅外接收器電路
電機(jī)驅(qū)動模塊電路
避障循跡模塊電路
轉(zhuǎn)速測量模塊電路
數(shù)據(jù)顯示模塊電路
5V穩(wěn)壓電路
附錄B 程序
避障子程序
#include<uart.h>
#define LeftIR P1_2 //左邊紅外接收連接到P1_2
#define RightIR P3_5 //右邊紅外接收連接到P3_5
#define LeftLaunch P1_3 //左邊紅外發(fā)射連接到P1_3
#define RightLaunch P3_6 //右邊紅外發(fā)射連接到P3_6
void delay_nus(unsigned int i)
{
i=i*10/12;
while(--i);
}
void Hardware_delay_1ms(void)
{
TMOD &=0xF0;
TMOD |=0x01; //T0——16位定時器器模
TH0 = 0xFC;
TL0 =0x18; //64536
TF0=0; //清除定時器溢出標(biāo)志
TR0=1; //啟動定時器
while(TF0==0); //等待計數(shù)完成
TR0=0; //停止定時器
}
void delay_nms(int n) //延時ms
{
int j;
for(j=n;j>0;j--)
Hardware_delay_1ms();
}
void IRLaunch(unsigned char IR)
{
int counter;
if(IR==‘L’) //左邊發(fā)射
for(counter=0;counter<38;counter++)
{
LeftLaunch=1;
delay_nus(13);
LeftLaunch=0;
delay_nus(13);
}
if(IR=='R') //右邊發(fā)射
for(counter=0;counter<38;counter++)
{
RightLaunch=1;
delay_nus(13);
RightLaunch=0;
delay_nus(13);
}
}
void Forward(void) //直行子程序
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
void Left_Turn(void) //左轉(zhuǎn)子程序
{
int i;
for( i=1;i<=23;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
void Right_Turn(void) //右轉(zhuǎn)子程序
{
int i;
for( i=1;i<=23;i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
void Backward(void) //后退子程序
{
int i;
for( i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
int main(void)
{
int irDetectLeft,irDetectRight;
uart_Init();
printf("Program Running!\n");
while(1)
{
IRLaunch('R'); //右邊發(fā)射
irDetectRight = RightIR; //右邊接收
IRLaunch('L'); //左邊發(fā)射
irDetectLeft = LeftIR; //左邊接收
if((irDetectLeft==0)&&(irDetectRight==0))//同時接到紅外線
{
Backward();
Left_Turn();
Left_Turn();
}
else if(irDetectLeft==0) //只有左邊接收到紅外線
{
Backward();
Right_Turn();
}
else if(irDetectRight==0) //只有右邊接收到紅外線
{
Backward();
Left_Turn();
}
else
Forward();
}
}
循跡子程序
#include <uart.h>
#define LD1 P1_2; //左左檢測燈
#define LD2 P1_3; //中左檢測燈
#define RD1 P3_5; //中右檢測燈
#define RD2 P3_6; //右右檢測燈
void delay_nus(unsigned int i)
{
i=i*10/12;
while(--i);
}
void Hardware_delay_1ms(void)
{
TMOD &=0xF0;
TMOD |=0x01; //T0——16位定時器器模
TH0 = 0xFC;
TL0 =0x18; //64536
TF0=0; //清除定時器溢出標(biāo)志
TR0=1; //啟動定時器
while(TF0==0);//等待計數(shù)完成
TR0=0; //停止定時器
}
void delay_nms(int n)
{
int j;
for(j=n;j>0;j--)
Hardware_delay_1ms();
}
void Forward(void) //直行子程序
{
P1_1=1;
delay_nus(1440);
P1_1=0;
P1_0=1;
delay_nus(1400);
P1_0=0;
delay_nms(20);
}
void Left_Turn(void) //左轉(zhuǎn)子程序
{
int i;
for( i=1;i<=15;i++)
{
P1_1=1;
delay_nus(1420);
P1_1=0;
P1_0=1;
delay_nus(1400);
P1_0=0;
delay_nms(20);
}
}
void Right_Turn(void) //右轉(zhuǎn)子程序
{
int i;
for( i=1;i<=15;i++)
{
P1_1=1;
delay_nus(1440);
P1_1=0;
P1_0=1;
delay_nus(1420);
P1_0=0;
delay_nms(20);
}
}
void Backward(void) //后退子程序
{
int i;
for( i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1400);
P1_1=0;
P1_0=1;
delay_nus(1440);
P1_0=0;
delay_nms(20);
}
}
int main ()
{
int L1,L2,R1,R2;
uart_Init();
printf("ProgramRunning!\n");
while(1)
{
L1=LD1;
L2=LD2;
R1=RD1;
R2=RD2;
if((L1==1)&&(R2==0)) //左燈檢測到黑色右燈檢測到白色 左轉(zhuǎn)
{
Left_Turn();
}
else if((L1==0)&&(R2==1)) //左燈檢測到白色右燈檢測到黑色 右轉(zhuǎn)
{
Right_Turn();
}
else if((L1==0)&&(L2==0)&&(R1==0)&&(R2==0)) //四個燈都檢測到白色 后退
{
Backward();
}
else if((L1==1)&&(L2==1)&&(R1==1)&&(R2==1))//四個燈都檢測到黑色 后退
{
Backward();
}
else //前進(jìn)
{
Forward();
}
}
}
數(shù)據(jù)顯示子程序
bit lcd_busy() //判忙函數(shù)
{
bit result;
RS=0;
RW=1;
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0&0x80);
E=0;
return result;
}
void lcd_write_cmd(uchar cmd) //液晶寫指令
{
while(lcd_busy());
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void lcd_write_dat(uchar dat) //液晶寫數(shù)據(jù)指令
{
while(lcd_busy());
RS=1;
RW=0;
E=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void LCD_Init() ///液晶初始化指令
{
delayXms(12);
lcd_write_cmd(0x38);
delayXms(4);
lcd_write_cmd(0x0c);
delayXms(4);
lcd_write_cmd(0x06);
delayXms(4);
lcd_write_cmd(0x01);
delayXms(4);
lcd_write_cmd(0x80);
for(i=0;i<16;i++) //液晶第一列顯示"路程: cm"
lcd_write_dat(display1);
lcd_write_cmd(0x80+0x40); //液晶第二列顯示"速度: cm/s"
for(i=0;i<16;i++)
lcd_write_dat(display2);
}
作者:
1194783151
時間:
2019-7-12 12:55
感謝分享,學(xué)到了很多
作者:
把愛收緊胸口
時間:
2020-9-22 17:42
沒有圖么
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品一区二区在线播放
|
国产成人综合在线
|
国产高清在线精品
|
日韩二三区
|
91一区二区在线观看
|
天天操精品视频
|
美国黄色毛片
|
二区三区在线观看
|
日韩在线视频一区二区三区
|
欧美区日韩区
|
91黄在线观看
|
日韩在线免费视频
|
99re在线播放
|
亚洲人成一区二区三区性色
|
日韩毛片
|
jizz中国日本
|
天天精品综合
|
亚洲欧美激情四射
|
婷婷在线网站
|
福利视频亚洲
|
久久综合狠狠综合久久综合88
|
久久99精品久久
|
欧美日韩国产在线观看
|
成人特级毛片
|
久久视频免费看
|
日日操操操
|
国产一区二区美女
|
91大神在线资源观看无广告
|
av毛片在线播放
|
a级片在线观看
|
av看片
|
成人福利在线
|
欧美一级片在线看
|
日日天天
|
韩国理论电影在线
|
国产视频二区在线观看
|
欧美国产精品一区二区三区
|
国产一区二区三区高清
|
久久99网
|
欧美精品福利
|
三区在线观看
|