基于51單片機小車的循跡避障系統(tǒng).doc
《基于51單片機小車的循跡避障系統(tǒng).doc》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機小車的循跡避障系統(tǒng).doc(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
畢業(yè)論文(設(shè)計) 題目:基于51單片機的小車循跡避障系統(tǒng) 學 院: 電氣工程學院 學 號: 姓 名: 專業(yè)年級: 指導老師: 基于51單片機的小車循跡避障系統(tǒng) 專業(yè):電子信息工程 姓名: 指導教師: 摘 要 隨著社會的發(fā)展,智能化越來越受到人們的關(guān)注。本設(shè)計通過模擬汽車的自動行駛及避障功能,來實現(xiàn)智能化。在此設(shè)計中,用STC89C52單片機作為主控芯片,處理接收到的各種信號,并作出相應的反饋;用紅外對管來進行黑線檢測,從而達到循跡的目的;用超聲波傳感器來感知障礙物,實現(xiàn)避障功能;用L298N芯片來進行驅(qū)動,通過編寫的程序,保證了電機的左右轉(zhuǎn)動,從而達到小車設(shè)計時預定的目標。 在本小車的設(shè)計中,有著嚴格的設(shè)計過程,采用了模塊結(jié)構(gòu)框圖設(shè)計、程序流程圖設(shè)計、程序設(shè)計以及電路圖設(shè)計等多個設(shè)計步驟。這樣就可以保證在設(shè)計過程中的嚴密性,不會因為單一設(shè)計體系而使整個系統(tǒng)功能出現(xiàn)錯誤。 由于小車在設(shè)計過程中,采用了模塊化的設(shè)計思路,所以在進行調(diào)試時非常方便。我們可以分別對每一個功能部分來進行調(diào)試,驅(qū)動部分調(diào)試時,只要給電機向前或者向后的信號,就可以調(diào)試出其功能。循跡部分調(diào)試時,只要通過檢測到黑線,判斷是否沿黑線行駛,即可以調(diào)試出。在進行避障調(diào)試中,我們可以把障礙物放在小車前方,然后看小車兩個輪子的轉(zhuǎn)向。這種模塊化的設(shè)計思想不僅簡化了設(shè)計過程,而且對我們以后的設(shè)計也會有一定啟發(fā)。 關(guān)鍵詞 智能化,單片機,紅外對管,超聲波傳感器 ABSTRACT Along with the development of society, more and more intelligent attention. This design by simulating a car driving and automatic obstacle avoidance, to achieve intelligent. In this design, with STC89C52 SCM as the master chip, processing various signals received, and make corresponding feedback; using Infrared to tube to detect the black line, so as to achieve the purpose of tracking; using ultrasonic sensors to perceive obstacles thing to realize obstacle avoidance function; using L298N chip to be driven by written procedures to ensure that the motor is rotating around to achieve the desired goal when designing the car. In car design, a rigorous design process, using a block diagram of the module design, program flowchart design, programming and multiple design steps Schematic design. This ensures that the design process rigor, the error does not occur because of a single design system and make the entire system functions. As the car in the design process, using a modular design concept, so very convenient during debugging. We were part of each function for debugging, debugging driving part, as long as the motor forward or backward signal, you can debug the functionality. When debugging tracking part, simply by detecting the black line, to determine whether the black line running along, that you can debug a. Avoidance during commissioning, we can put an obstacle in front of the car, and then look at the car two steering wheels. This modular design not only simplifies the design, but also for our future designs also have some inspiration. Key Words : Intelligent,SCM,Infrared to tube,Ultrasonic sensors 目 錄 第1章 緒論 1 1.1 智能小車的研究意義 1 1.2 智能小車的現(xiàn)狀 1 1.3 論文研究內(nèi)容與主要結(jié)構(gòu) 2 第2章 方案選型 3 2.1車體設(shè)計 3 2.2 電機驅(qū)動選擇 3 2.3 PWM調(diào)速技術(shù) 4 2.4 循跡模塊技術(shù) 5 2.5 避障模塊技術(shù) 7 2.6 控制系統(tǒng)模塊 8 2.7 電源選擇 9 第3章 硬件電路設(shè)計 10 3.1總體設(shè)計 10 3.2電源電路設(shè)計 10 3.3驅(qū)動電路設(shè)計 11 3.4 循跡部分電路 13 3.5 避障部分電路 14 3.4主控電路設(shè)計 16 第4章 程序設(shè)計 17 4.1主程序設(shè)計概述 17 4.2主程序流程圖 17 4.3 驅(qū)動程序流程圖 18 4.4 循跡程序流程圖 18 4.5 避障程序流程圖 19 第5章 制作安裝與調(diào)試 20 5.1 小車的安裝 20 5.2小車運動模式調(diào)試 20 5.3小車循跡調(diào)試 21 5.4小車避障調(diào)試 23 5.3小車的功能 24 結(jié) 論 25 參考文獻 26 致 謝 27 第1章 緒論 1.1 智能小車的研究意義 隨著社會的發(fā)展,科技的發(fā)展日新月異。于是,智能一詞越來越受到人們的關(guān)注。而科技代替人工的說法,早已被提上人們的日常生活了。目前,由于私家車的普及,伴隨著的就是各種車禍的產(chǎn)生。如何避免此類情況,是人們需要深思的一個問題。在我所研究的自動循跡避障系統(tǒng)中,我們可以利用小車來模擬汽車自動避障功能,來避免現(xiàn)實中汽車因與障礙物碰撞而產(chǎn)生的車禍。因此,自動循跡避障小車對于在進行自動避障的時候,有著非常重要的現(xiàn)實意義。 1.2 智能小車的現(xiàn)狀 2013年年底,工業(yè)和信息化部頒布《關(guān)于推進工業(yè)機器人產(chǎn)業(yè)發(fā)展的指導意見》,將機器人產(chǎn)業(yè)推到了公眾的視線內(nèi)。隨著全球工業(yè)化進程的推進,機器人制造業(yè)正逐漸獲得長足發(fā)展。智能小車作為移動機器人的基礎(chǔ),在智能全球化的浪潮中,受到越來越大的沖擊,更多的高新技術(shù)和硬件設(shè)備被應用其中,使智能小車走出了只能用于比賽的模式,而更加廣泛的服務于大眾。 從20世紀80年代起,由于計算機、電子、通信等方面的技術(shù)飛速發(fā)展,使得越來越多的技術(shù)從理論走向?qū)嶋H。于是,在國外掀起了智能機器人研究浪潮,世界各國或者國際機構(gòu)都加大了對機器人的研究力度,并投入了巨大的經(jīng)費。其中,各種具有廣闊應用前景和軍事價值的移動式機器人都受到西方各國的普遍關(guān)注。 韓國科學技術(shù)部在20世紀末推出的“二十一世紀的尖端研究計劃”,其中包括服務機器人,可適應惡劣環(huán)境機器人,微型機器人和掃雷機器人項目。歐盟在信息社會技術(shù)計劃中,展開了探測火山情況的機器人、可以用來評價地震災害危險性的攀爬式機器人,以及利用機器人的交互式行為的博物館臨場感等項目研究。2013年Irobot公司新推出一款機器人名叫braava,它可以模仿人工跪地姿勢,利用室內(nèi)GPS導航系統(tǒng)——先進的北極星技術(shù)生成室地圖,確定方向,以及標記障礙物和記憶經(jīng)歷過的地區(qū)。 自2012以來,在政策層面上,國家大力支持發(fā)展工業(yè)機器人,用來提高我國的工業(yè)實力。從其中可以看出,由于國家層面的各種規(guī)劃和制度的出臺,讓我國機器人的發(fā)展得到更進一步的提升。并且提出要大力推動工業(yè)的自動化控制系統(tǒng)完善,工業(yè)機器人技術(shù)的研發(fā),關(guān)鍵材料和配件等裝置的研發(fā)和市場化,這對于中國國產(chǎn)機器人在將來的發(fā)展與應用有著明顯的積極作用。2005年11月,我國教育部自動化專業(yè)指導分委員會與飛思卡爾半導體公司簽署了雙方長期合作協(xié)議書,協(xié)助我國舉辦“飛思卡爾”智能小車大賽。于是,我國智能小車比賽才開始發(fā)展。而且,在我國自主舉辦的全國大學生電子設(shè)計大賽中,智能小車出現(xiàn)的頻率也居高不下。 1.3 論文研究內(nèi)容與主要結(jié)構(gòu) 論文主要研究的內(nèi)容就是小車的循跡與避障,因為在實現(xiàn)整個系統(tǒng)時,如何確保小車按照所設(shè)定的路線行進,是至關(guān)重要的。在進行避障循跡小車研究時,我們首先要確保電路圖的設(shè)計合理。這樣的話,在后面進行的硬件調(diào)試時,才可以避免因為電路原理的錯誤,而使得設(shè)計達不到預定要求。 論文主要由九部分組成,第一部分:主要介紹選題的目的意義,以及選題目前在國內(nèi)外的發(fā)展現(xiàn)狀。這樣我們在進行課題設(shè)計的時候,有很大的參考意義;第二部分:主要是在論證小車設(shè)計方案的優(yōu)劣,并根據(jù)實際情況,例如實現(xiàn)難易程度、生產(chǎn)成本以及后續(xù)的維護是否方便來進行篩選,得出最后本小車的設(shè)計方案;第三部分:小車的系統(tǒng)硬件電路設(shè)計,我們在實現(xiàn)小車功能時,必須通過構(gòu)建硬件電路;第四部分:系統(tǒng)軟件設(shè)計,這是一個很重要的部分,因為只有通過系統(tǒng)軟件的控制,小車才可以按照設(shè)定功能進行一系列動作,比如循跡以及避障;第五部分:小車的測試,這是對小車設(shè)計完成后,其功能是否達到最初的設(shè)計規(guī)劃,是設(shè)計工作是否準確完成的一個很重要的指標;第六部分:總結(jié),是對整個小車設(shè)計過程中所遇到的一些問題,所付出的努力,還有最后的結(jié)果進行一個大致總結(jié);第七部分:致謝,對于這幾個月中,老師以及領(lǐng)導在對本次論文設(shè)計編寫過程中所給予的幫助;第八部分:參考文獻:在小車設(shè)計及論文編寫過程中,所參考的一系列的資料,進行一個歸納整理;第九部分:附錄,最要用來展示小車的整體硬件電路情況以及小車的系統(tǒng)程序,這樣便于閱讀。 第2章 方案選型 2.1車體設(shè)計 在本次設(shè)計中,所采用的是兩輪驅(qū)動的車體。顧名思義,指的是用兩個電機來驅(qū)動小車的兩個輪子,能夠使得動力分布的更均勻,可以減少車體滑動。相對于四輪驅(qū)動的安全性、靈活性來說,兩輪驅(qū)動也比較高??梢园凑招旭偮访鏍顟B(tài)的不同而將發(fā)動機輸出扭矩分別分布在兩個輪子上,提高小車的行駛能力。而且,兩輪驅(qū)動在車體結(jié)構(gòu)及元器件分布上,也相較于四輪來說更加密集。兩輪驅(qū)動在控制上,相對于四輪驅(qū)動也比較容易,在設(shè)計時更加便于實現(xiàn)。 2.2 電機驅(qū)動選擇 小車要向前行駛,必須要有動力來驅(qū)動輪子,因為我們在控制小車的行進時,并不是每個輪子的轉(zhuǎn)向轉(zhuǎn)速都一樣。在轉(zhuǎn)彎的時候,就必須區(qū)別每個輪子的轉(zhuǎn)速快慢和轉(zhuǎn)向,所以就必須用到電機驅(qū)動模塊來對小車進行驅(qū)動。 直流電機在驅(qū)動時,只需要合適的直流電壓就可以進行驅(qū)動。而且,直流電機可以承受反復沖擊,對于小車在急速轉(zhuǎn)彎或者反復前后轉(zhuǎn)動時,有很好的容納性。在調(diào)速特性方面,直流電機可以很方便的進行調(diào)速,且調(diào)速范圍廣。在控制時只要加上合適的電壓就會轉(zhuǎn),我們并不需要精確的計算其所轉(zhuǎn)的圈數(shù)。步進電機則是靠脈沖信號來進行驅(qū)動,對于脈沖信號來說,我們不能直接使用直流電壓產(chǎn)生,必須借助于單片機的I/O來產(chǎn)生,這樣的話在進行設(shè)計時,就會增加I/O的使用數(shù)量,使得設(shè)計難度增加。我們在電機選擇時,可以選用直流電機。因為通過對兩種電機的綜合性能比較,直流電機在控制是更加方便,而步進電機在控制時,相較于直流電機來說,比較困難一點,因此我們不采用步進電機,選擇更加簡單的直流電機。 電機的驅(qū)動電路為“H橋式驅(qū)動電路”(如圖1所示),整個電路是由四個晶體管和一個電機組成。在電路中,四個晶體管分別表示H的四個角,分別接上“+”、“-”電壓,這樣通過四個腳的電壓輸入,就可以驅(qū)動電機。而電機在H型電路中,是表示中間的橫杠。在實際使用的時候,如果我們用單獨的元器件來實現(xiàn)H橋式電路的話,是比較困難的。因此,我們可以采用市面上的已有封裝的芯片。這樣的話,我們只要在進行電路設(shè)計時,考慮芯片的工作電壓范圍,功率以及所需的控制信號即可,就不用再通過自己來一個一個搭建電路。 圖1 H橋式驅(qū)動電路 2.3 PWM調(diào)速技術(shù) 由于小車在進行自動循跡和避障時,兩個驅(qū)動輪的速度并不是一樣的,這個時候我們要對小車各個輪子速度控制,就必須使用到一種調(diào)速技術(shù),即為脈沖寬帶調(diào)制技術(shù)(PWM),簡稱為脈寬調(diào)制。PWM調(diào)速主要是利用微處理器來控制,它可以使模擬電路中的信號進行數(shù)字化輸出,從而可以對電路進行有效的控制。而且,PWM技術(shù)在使用單片機等控制芯片的系統(tǒng)中,可以讓控制方面變得更加簡潔、高效。 PWM技術(shù)的實現(xiàn)主要有兩種方法,一種是硬件調(diào)制法,另外一種就是軟件生成法。硬件生成法(如圖2所示)是把所希望得到的波形作為調(diào)制信號,我們可以根據(jù)需要的波形來進行改變參數(shù)選擇。被調(diào)制信號作為載波信號,通過對載波信號的幅頻、相頻等進行調(diào)節(jié),可以得到所需要的PWM信號波形。由于三角在實現(xiàn)時比較容易,而且其各種參數(shù)的調(diào)制也方便,因此我們一般將其作為載波信號。由于各種復雜的信號都可以認為是許多不同的正弦信號疊加而成,我們可以把正弦波作為調(diào)制信號,這樣我們得到的信號波形就是PWM信號。軟件生成方法是利用計算機軟件技術(shù)來實現(xiàn)產(chǎn)生PWM波的調(diào)制,這種技術(shù)產(chǎn)生信號更加容易。而且在進行PWM波形變換時,只要在軟件程序里進行簡單的修改,即可以進行實現(xiàn)。 由于硬件調(diào)制法電路是屬于模擬電路,其結(jié)構(gòu)比較復雜,而且在實現(xiàn)電路設(shè)計和搭建時,相比較起來不方便,難以實現(xiàn)精確的控制。而軟件生成法就比較簡單,只要在控制程序里加上PWM調(diào)制就可以。因此,我采用軟件生成法來實現(xiàn)PWM波形。 圖2 PWM硬件電路 2.4 循跡模塊技術(shù) 在小車進行循跡時,我們要考慮小車對循跡黑線檢測的靈敏性。CCD圖像傳感器在實現(xiàn)的時候,有比較好的靈敏性,而且可以進行路徑成像。其通過將光信號轉(zhuǎn)變?yōu)槟M信號,在經(jīng)過信號放大和A/D轉(zhuǎn)換,可以產(chǎn)生便于單片機識別的數(shù)字信號。紅外對管則是由于紅外線接收二極管在光線下照明,通過調(diào)用產(chǎn)生的光電流。如果連接到外部電路上的負載,所需的電信號通過負載獲得,并且這個電信號會隨光的改變而發(fā)生相應的變化。這種獲得的信號相對比較模糊,而且受光強度影響較大。在本次設(shè)計中,由于我們只要考慮小車對黑線的檢測,并不需要有實際的成像效果,加上CCD圖像傳感器價格昂貴?;趯嵱?、成本等綜合因素,我考慮使用紅外對管進行循跡。小車上使用了五對紅外對管(如圖3所示),這樣可以很準確地檢測出黑線位置,并循跡行走。 圖3 紅外對管實物 紅外對管是將光信號轉(zhuǎn)換為電信號(如圖4所示)的光敏器件或者光電變換裝置??梢姽庑畔⒃?、紅外光信息源、紫外光信息源等都直接或者間接地輻射出一定功率的光能,包括含有一定信息量的光能量由紅外對管接收后,紅外對管能夠按一定的規(guī)律將光能中所包括的模擬或者數(shù)字信息轉(zhuǎn)化成相應的電信號,從而可以以電信號的形式還原出光能中所攜帶的信息。 圖4 紅外光電傳感器工作原理 2.5 避障模塊技術(shù) 小車進行避障時,我們需要提前探知其前方是否存在障礙物,這樣就可以在行進過程中,自動選擇遠離障礙物的路線。在避障模塊的選擇時,有兩種選擇,一種是使用紅外避障,還有一種是超聲波避障。紅外避障是通過發(fā)射和接收光信號,在通過一系列的轉(zhuǎn)換變?yōu)閿?shù)字信號,來判斷前方障礙物。這種方式容易受到其他光的干擾,使得檢測結(jié)果不準確。而且由于其光束比較集中,在探測時其探測的區(qū)間較小,可能會造成避障不成功。超聲波避障則是利用聲波信號遇到障礙物返回,測量其間隔時間來進行避障的。超聲波的測量范圍很廣,可以測量方向、距離等。測量距離可以采用主動測距法和被動測距法:被動測距法是傳感器只有接受信號的功能,包括方位法和視差法;主動測距法是傳感器既發(fā)射信號又接收信號,包括TOF法、脈沖回波法、FM-CW法等。聲波在傳遞過程中,是發(fā)散形式的,可以大角度的檢測,這樣就可以保證不會存在死角。而且聲波的使用也比較廣泛,像雷達探測,金屬探傷等。 本小車采用了HC-SR04超聲波避障模塊(如圖5所示),在其性能方面,有比較好的探測距離和角度。采用I/O口TRIG觸發(fā)測距,利用接收到信號后的電平差,來進行信號控制,從而選擇驅(qū)動小車兩個輪子來進行避障。模塊由5V電壓供電,接入端為VCC口,TRIG為觸發(fā)控制信號輸入口,回響信號則由端口ECHO進行輸出。 圖5 HC-SR04超聲波模塊 圖6 超聲波脈沖響應時序圖 表1 HC-SR電氣參數(shù) 電氣參數(shù) HC-SR04超聲波模塊 工作電壓 DC 5V 工作電流 15mA 工作頻率 40Hz 最遠射程 4m 最近射程 2cm 測量角度 15度 輸入觸發(fā)信號 10uS的TTL脈沖 輸出回響信號 輸出TTL電平信號,與射程成比例 規(guī)格尺寸 45*20*15mm 2.6 控制系統(tǒng)模塊 在本小車設(shè)計的控制系統(tǒng)中,我們采用STC公司生產(chǎn)的一款單片機STC89C52。由于在小車的整個運行過程中,其需要處理的數(shù)據(jù)比較多,在驅(qū)動電機時,就需要通過單片機的I/O口來輸出控制信號,使得小車實現(xiàn)前進、后退以及轉(zhuǎn)彎等功能。在小車運動過程中,還需要接收很多的控制信號,像循跡信號、超聲波信號等。這樣就可以實現(xiàn)小車的速度控制、循跡行駛以及躲避障礙物等功能。 STC89C52單片機(如圖7所示)有40個I/O口,其中P0、P1、P2、P3為并行I/O口。芯片時鐘的產(chǎn)生有兩種,內(nèi)部時鐘和外部時鐘,而內(nèi)部時鐘就是通過單片機引腳XTAL1和XTAL2外界晶振得到的。還有多個中斷源及優(yōu)先級等,可以對程序執(zhí)行功能的優(yōu)先進行區(qū)分,通過中斷來進行高優(yōu)先級的指令。52單片機是8位單片機,擁有8K字節(jié)Flash,512字節(jié)RAM,內(nèi)置4KB EEPROM,以及復位電路等。在單片機的4個并行I/O口中,P0與P3、P1與P2擁有相似的功能,除了P1口是單功能口外,其余都為雙功能口。 圖7 51單片機引腳圖 2.7 電源選擇 在小車電源選擇時,我們需要特別注意,因為系統(tǒng)單片機的額定工作電壓為5V。對于電機來說,用5V驅(qū)動又不能讓小車行駛,而過高的電壓可能會使系統(tǒng)芯片燒壞。因此,我們需要通過計算得到小車的可允許電壓電流范圍,一般采用9V~12V為好,本小車采用9V供電。這樣既可以保證電機驅(qū)動所需電壓,又不會因為電壓過大而造成元器件的燒壞。 第3章 硬件電路設(shè)計 3.1總體設(shè)計 圖8 小車總體框架圖 小車的整體系統(tǒng)(如圖8所示)是以51單片機為CPU,通過紅外對管來進行黑線檢測循跡行走,通過超聲波探測器進行障礙物感知,進行避障功能實現(xiàn),通過驅(qū)動模塊來實現(xiàn)電機的驅(qū)動,從而達到小車的運動。 系統(tǒng)電路圖見附錄1: 3.2電源電路設(shè)計 在小車的電源系統(tǒng),采用9V直流供電,為了防止在誤操作時接入過高的電流使整個電路燒毀,一般會在電路中接入防擊穿電容。 圖9 小車電源電路 3.3驅(qū)動電路設(shè)計 圖10 驅(qū)動電路框架圖 在驅(qū)動電路部分設(shè)計時,我們要考慮的是驅(qū)動芯片的選擇,一般是在L298N和L293D這兩款芯片中選擇。對于L298N芯片,是使用的15腳直插式封裝模式,具有四通道驅(qū)動邏輯電路,可以很方便的驅(qū)動兩個電機。而且它的工作電壓以及單通道輸出電流都比較高,一般可達到46V和2A。L293D在功能上和L298N基本一樣,但是它的工作電壓和通道電流都相比于L298N要小,其采用的是直插式16腳SOIC-20封裝模式。所以,在應用時,一般使用L298N而不采用L293D,從經(jīng)濟方面來考慮,L298N也更具有優(yōu)勢。L298N輸出電壓的方式有兩種,一種是直接通過電源的調(diào)節(jié)來進行電壓輸出;另一種就是直接使用單片機上的輸入輸出口提供電壓信號。 圖11 L298N引腳圖 小車采用兩輪驅(qū)動,使用L298N芯片組成的電路來驅(qū)動電機,驅(qū)動電路中,采用7805穩(wěn)壓芯片進行穩(wěn)壓。由于電機驅(qū)動所需要的電壓很大,因此使用9V電壓直接通過驅(qū)動芯片供電。通過八個LED燈來分別顯示每個車輪的轉(zhuǎn)動方向。 圖12 電機驅(qū)動電路 該驅(qū)動芯片可驅(qū)動2 路直流電機,使能端ENA、ENB 為高電平時有效,控制方式及直流電機狀態(tài)表如下所示。如果PWM直流電機的速度控制,需要設(shè)置IN1和IN2,確定電機的旋轉(zhuǎn)方向,并使輸出PWM脈沖,可以實現(xiàn)轉(zhuǎn)速控制。請注意,當使能信號是0,電動機自由停止狀態(tài);若使能ENA信號為1,并且IN1 和IN2 都為00 或11 時,電機處于制動狀態(tài)。 表2 L298N驅(qū)動狀態(tài)表 ENA IN1 IN2 直流電機狀態(tài) 0 X X 停止 1 0 0 制動 1 0 1 正轉(zhuǎn) 1 1 0 反轉(zhuǎn) 1 1 1 制動 7805(如圖13所示)作為穩(wěn)壓芯片,在我們?nèi)粘J褂弥校鞘褂米顝V泛的。并且使用起來很簡單、很方便,只要簡單的接入電路中,給它一個穩(wěn)定的直流電壓源即可。 7805一共有三個引腳,引腳1是INPUT即為整流器輸入電壓,引腳2為GND,公共接地端,引腳3是OUTPUT輸出穩(wěn)壓后的5V電壓. 圖13 LM7805引腳圖 3.4 循跡部分電路 圖14 循跡模塊框架 在進行小車循跡電路設(shè)計時,我們要考慮到當紅外對管檢測到黑線以后,如何進行下一步操作。首先將紅外對管接收的光信號轉(zhuǎn)化為電流信號,再將模擬電流信號轉(zhuǎn)化為數(shù)字信號。在這里我們就可以使用電壓比較器,進行電壓比較,來確定檢測到的黑線在哪一邊,再通過控制電機的轉(zhuǎn)動來驅(qū)動小車循著黑線行駛。一般常用的電壓比較器芯片為LM339和LM393,其中LM339為四電壓比較器,而LM393為雙電壓比較器。由于我們采用五個紅外對管進行黑線檢測,所以使用了一個LM339和一個LM393。 圖15 循跡模塊電路 3.5 避障部分電路 圖16 超聲波模塊框架圖 在小車避障時,我們選用超聲波避障模塊,主要是因為其在進行檢測時,受到外界干擾較少,檢測距離相對較遠,可以多角度多范圍的進行檢測,這樣可以減少避障失敗的可能。超聲波電路主要由一個聲波發(fā)射口,一個聲波接收口以及MAX232和EM78P153組成。其中MAX232該產(chǎn)品是一款兼容RS232標準的芯片,EM78P153是采用高速CMOS工藝制造的8位單片機芯片。 通過揚聲器T發(fā)出的超聲波,如果遇到障礙物返回后,被傳感器接收到。通過各級三極管放大電路,將所得信號放大。放大信號被傳送到EM89P153單片機,通過處理,得到所需要的數(shù)字信號。然后再通過通信接口芯片MAX232,與STC89C52單片機通信,將信號傳到52單片機。最后通過52單片機的處理,得到小車避障所需的控制信息。 圖17 超聲波檢測電路 MAX232為16腳直插式封裝芯片,其主要的作用是來進行電平轉(zhuǎn)換。其內(nèi)部主要結(jié)構(gòu)可分為三部分:由端口1—6以及四個電容構(gòu)成的電荷泵電路,由引腳7-14組成的數(shù)據(jù)轉(zhuǎn)換通道電路以及供電電路,一般可以產(chǎn)生-12V和+12V兩種電壓。 EM89P153單片機芯片,其內(nèi)部有512*13位一次性的ROM,程序代碼可以通過EM下載到EM89P153芯片中。工作電壓范圍為2.0V-6.0V;片內(nèi)有4MHz校準RC振蕩器;振蕩器起振時間預分頻系數(shù)可編程;片內(nèi)可按位編程;兩個雙向I/O口;5級堆棧;3個中斷源,外部中斷,輸出引腳狀態(tài)變化中斷,TCC溢出中斷;8位實時定時/計數(shù)器(TCC);每個指令周期為兩個時鐘周期。 3.4主控電路設(shè)計 小車的主控電路是以52單片機作為控制芯片,結(jié)合復位電路、晶振電路來控制整個系統(tǒng)的運行。在電路中,我們一般使用的晶振位12MHz,這樣的話,單片機的每一個機器周期為1uS,這樣在利用單片機時鐘進行計時時,比較方便。 圖18 最小單片機系統(tǒng) 第4章 程序設(shè)計 4.1主程序設(shè)計概述 在小車整體設(shè)計過程中,不僅有著大量的硬件電路設(shè)計,更多的是對于系統(tǒng)軟件的分析設(shè)計。因為在硬件電路搭建完以后,只有通過軟件程序的控制,才可以讓小車按照設(shè)想的運行路徑進行行駛,達到所需要的功能。由于小車整體功能比較多,如果在最開始程序設(shè)計時就進行整體設(shè)計的話,無疑會對整個設(shè)計工作帶來困難,而且在設(shè)計完成后進行運行調(diào)試時,也會造成困難。因此,我在設(shè)計程序時,采用了模塊化設(shè)計,即先對每一個部分子功能模塊進行設(shè)計,在驗證各個功能程序的完整性以及正確性以后,再把各個子程序組合成一個完整的程序。 4.2主程序流程圖 圖19 系統(tǒng)程序流程圖 4.3 驅(qū)動程序流程圖 圖20 驅(qū)動程序流程圖 4.4 循跡程序流程圖 圖21 循跡程序流程圖 4.5 避障程序流程圖 圖22 避障程序流程圖 第5章 制作安裝與調(diào)試 5.1 小車的安裝 在小車各個部分的電路焊接完成后,我們就開始對小車進行整體組裝。利用購買的高強度塑料制成的模型作為小車的車體,然后分別將各模塊按照功能安裝固定好。紅外循跡模塊固定在車體底部,因為其作用是來檢測地面黑線存在,而且其工作距離也有一定限制,所以不能放在離地面太高的地方。超聲波探測模塊則應該置于小車正前方,其目的主要是用來發(fā)現(xiàn)前方障礙物,其安裝高度要合適。對于驅(qū)動模塊和最小單片機系統(tǒng),安裝在小車正中間,因為其要與各模塊之間進行連接。供電電源則放在小車車尾,這樣有利于小車整體重量的均勻分布,也可以在進行充電時,更加方便拆裝。 5.2小車運動模式調(diào)試 對小車的左右轉(zhuǎn)彎進行調(diào)試時,可以在程序里給定每個電機引腳信號,看小車的轉(zhuǎn)動是否滿足所設(shè)定的方向。通過調(diào)試可知,小車的運動方向與初始設(shè)置相同,能夠?qū)崿F(xiàn)。 圖23 小車驅(qū)動調(diào)試圖 為了便于明確知道小車電機轉(zhuǎn)向的控制信號,表3給出了每個I/O的控制信號,通過對其進行不同的改變,可以選擇在不同情況下電機的各種運動狀態(tài),從而得到小車行駛的數(shù)據(jù)。 表3 運動調(diào)試結(jié)果 I/O口 P0.0 P0.1 P0.2 P0.3 結(jié)果 輸入電平 1 0 1 0 直線前進 1 0 0 1 右轉(zhuǎn)彎 0 1 1 0 左轉(zhuǎn)彎 0 1 0 1 后退 1 1 1 1 停止 5.3小車循跡調(diào)試 小車的循跡是通過五路紅外對管實現(xiàn),當左側(cè)檢測到有黑線時,左側(cè)LED指示燈會亮(圖24),當右側(cè)指示燈亮時,那么小車檢測到的黑線在右側(cè)(圖25),如果當小車在黑線中間是中間指示燈會亮(圖26),這時候,小車就會循著黑線一直行進。 圖24 左側(cè)檢測黑線 圖25 右側(cè)檢測黑線 圖26 中間檢測黑線 在進行循跡測試時,黑線的寬度對我們循跡成功也有一定的影響,因此,我還進行了黑線寬度的測試,其結(jié)果如表4: 表4 黑線寬度調(diào)試 循跡次數(shù) 黑線寬度 1 2 3 4 5 0.5cm 失敗 失敗 成功 失敗 失敗 1cm 成功 失敗 成功 成功 成功 1.5cm 成功 成功 成功 成功 成功 2cm 成功 成功 成功 成功 成功 5.4小車避障調(diào)試 在進行小車避障調(diào)試時,當把障礙物放置在小車的行駛路線上時,如果被檢測到,那么小車會在安全距離內(nèi)旋轉(zhuǎn)180度進行避障處理。 圖27 小車避障調(diào)試 在進行避障功能測試時,還需要對障礙物大小進測試,因為這樣可以更加準確的得到調(diào)試結(jié)果。結(jié)果如表5: 表5 障礙物大小調(diào)試結(jié)果 避障次數(shù) 障礙物大小 1 2 3 4 5 0.0025㎡ 失敗 失敗 失敗 失敗 失敗 0.01㎡ 成功 失敗 成功 成功 成功 0.04㎡ 成功 成功 成功 成功 成功 5.3小車的功能 通過對小車的各項功能進行測試,可以發(fā)現(xiàn),在合適的工作條件下,小車基本可以達到設(shè)計要求。因此,本設(shè)計完成了預先的設(shè)計任務,實現(xiàn)了所有功能。小車可以進行循跡功能,檢測到黑線以后,會沿著黑線進行行進??梢赃M行避障功能,在檢測到障礙物以后,小車會原地旋轉(zhuǎn)180度進行避障處理,然后繼續(xù)行駛。 結(jié) 論 經(jīng)過幾個月的辛苦努力,本設(shè)計循跡避障小車通過驗證,基本實現(xiàn)了最初的設(shè)計目標。 在最開始進行選題時,覺得這個課題比較簡單,可是在課題設(shè)計過程中,我發(fā)現(xiàn)其實并沒有想的那么簡單。首先是在硬件電路方面的設(shè)計,對于硬件電路設(shè)計,并不是說只要把元器件選好了,把線一連接就可以了,我們在進行電路設(shè)計時,還要考慮諸多因素,比如元器件使用難易,價格如何,還有就是電路中各個元器件的工作電流電壓,所消耗的功率,這些都是要考慮的。所以在進行電路設(shè)計時,我查閱了大量的資料,結(jié)合前人的研究成果,通過分析電路中電流電壓的關(guān)系,最終選擇出合適的元器件,完成了整個硬件電路的設(shè)計。 在程序方面,這是一個占工作量比較大的部分,因為小車的各種功能是靠程序的選擇控制的,只有保證程序的正確性,才能保證小車功能的實現(xiàn)。程序設(shè)計時,我對于以前的各種相關(guān)的設(shè)計進行了參考比較,覺得使用模塊化設(shè)計更加方便于我們的編寫。在進行各功能驗證時可以很簡單,而且還可以在以后繼續(xù)使用某一需要的功能程序,而不必要重新編寫。 在進行實物焊接以及組裝時,可以考驗我們的動手能力,并對我們的生產(chǎn)工藝進行了解。焊接時的虛焊、錯焊,還有組裝時的結(jié)構(gòu)不合理等等,都在此次設(shè)計過程中體現(xiàn)出來了。 參考文獻 [1] 于金霞 王璐 蔡自興 《未知環(huán)境中移動機器人自定位技術(shù)》北京:電子工業(yè)出版社 2011 [2] 李仁定 《電機的微機控制》 北京:機械工業(yè)出版社 2004 [3] 趙虎 葉朝斌 無刷直流電機無傳感器PWM 智能控制器ML 4428及其應用 載《國外電子元器件》 1998年第5期 [4] 蘇震 《現(xiàn)代傳感技術(shù)—原理、方法與接口電路》北京:電子工業(yè)出版社 2011 [5] 于金霞 王璐 蔡自興 《未知環(huán)境中移動機器人自定位技術(shù)》北京:電子工業(yè)出版社 2011 [6] 趙建領(lǐng) 弓雷 《51系列單片機開發(fā)寶典》北京:電子工業(yè)出版社 2012 第2版 [7] 王允上 《學用單片機制作機器人》 北京:科學出版社 2011 [8] 徐德 鄒偉 《室內(nèi)移動式服務機器人的感知、定位與控制》 北京:科學出版社 2008 [9] 陳永真 寧武 藍和慧 《新編全國大學生電子設(shè)計競賽試題精解選》 北京:電子工業(yè)出版社 2009 [10] 馬廣云 潘琢金 彭甫陽譯 《英漢雙解嵌入式系統(tǒng)字典》北京:北京航空航天大學出版社 2006 [11] 陳賾 鄒道勝 《電子創(chuàng)新設(shè)計技術(shù)》 北京:科學出版社 2008 [12] 吳國慶 王格芳 郭陽寬 《現(xiàn)代測控技術(shù)及應用》 北京:電子工業(yè)出版社 2007 [13] 譚民 徐德 侯增廣 王碩 曹志強 《先進機器人控制》 北京:高等教育出版社 2007 [14] 何社成 袁躍進 《電機光電顯示改進應用電路》濟南:山東科學技術(shù)出版社 2007 [15] R西格沃特 IR諾巴克什 《自主移動機器人導論》 西安:西安交通大學出版社 2006 [16] 陳繼榮 《智能電子創(chuàng)新制作——機器人制作入門》 北京:科學出版社 2007 [17] 李全利 《單片機原理及接口技術(shù)》 北京:高等教育出版社 2009 第2版 [18] 求是科技 《8051系列單片機C程序設(shè)計完全手冊》 北京:人民郵電出版社 2006 [19] 沈紅衛(wèi) 《基于單片機的智能系統(tǒng)設(shè)計與實現(xiàn)》 北京:電子工業(yè)出版社 2005 [20]YamatoI,etal1NewconversionsystemforUPSusinghighfre2quencylink[J]1IEEEPESC,1988 [21]YamatoI,etal1HighfrequencylinkDC/ACconverterforUPSwithanewvoltageclamper[J]1IEEEPESC,1990 [22] http://www.pdf.la [23] http://www.elecfans.com [24] http://home.eeworld.com.cn/?fromuid=541401 [25] http://www.21ic.com 致 謝 經(jīng)過幾個月的忙碌,我的畢業(yè)設(shè)計課題也終于告一段落。在本次設(shè)計中,我很感謝我的指導老師,感謝她在我設(shè)計過程中給予我的一系列幫助和指導,感謝她對我的嚴格要求,才讓我的設(shè)計順利完成。我也要感謝電氣工程學院的各位領(lǐng)導和老師,感謝他們四年來對我的關(guān)心和培養(yǎng),感謝他們對于我學習生活上給予的幫助。還要感謝我班級同學和舍友,感謝他們四年來對我提供的幫助、支持和鼓勵。 大學即將過去了,在這四年里,我們有過歡樂,有過悲傷,我們付出過,也收獲過。在即將離去之際,我可以對我的大學生活自豪的說一句,我來過,我無悔。 附 錄1: 系統(tǒng)電路圖 附 錄2: 源程序 #include= 10) //10次之后就確定尋跡模塊的中間傳感器到黑線上了 { if(dat == L) //如果是左轉(zhuǎn)90度就讓右轉(zhuǎn)的方法制動 right_s(); else left_s(); //如果是右轉(zhuǎn)90度就讓左轉(zhuǎn)的方法制動 delay_10ms(5); go(); break; //break退出while(1)這個死循環(huán) } } else //沒有在黑錢上就給i_z變量清零 { i_z = 0; } } } /***********************小車左轉(zhuǎn)90度************************/ void left_s_90_while() //小車向左轉(zhuǎn)90度 { go(); //前進一小會讓小車轉(zhuǎn)90度時剛好讓黑線在小車的中間 delay_10ms(12); left_s(); //左轉(zhuǎn)90度注意這個延時不能太長 只要能讓尋跡模塊中間的傳感離開黑線就好 delay_10ms(18); che_90_180_break(L); } /***********************小車向右轉(zhuǎn)90度************************/ void right_s_90_while() // { go(); //前進一小會讓小車轉(zhuǎn)90度時剛好讓黑線在小車的中間 delay_10ms(12); right_s(); //左轉(zhuǎn)90度注意這個延時不能太長 只要能讓尋跡模塊中間的傳感離開黑線就好 delay_10ms(18); che_90_180_break(R); } // 白線為 1 黑線為 0 void xunji() { if((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_r==1) && (xun_rr==1)) { go(); //小車前進 } if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun_r==0) && (xun_rr==0)) { stop(); } if(((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_r==0) && (xun_rr==1)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_r==0) && (xun_rr==1)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_r==0) && (xun_rr==0)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_r==1) && (xun_rr==0))) { right(); //小車右轉(zhuǎn) } if(((xun_ll==1) && (xun_l==0) && (xun_z==0) && (xun_r==1) && (xun_rr==1)) || ((xun_ll==1) && (xun_l==0) && (xun_z==1) && (xun_r==1) && (xun_rr==1)) || ((xun_ll==0) && (xun_l==0) && (xun_z==1) && (xun_r==1) && (xun_rr==1)) || ((xun_ll==0) && (xun_l==1) && (xun_z==1) && (xun_r==1) && (xun_rr==1))) { left(); //小車左轉(zhuǎn) } if((xun_ll==1) && (xun_z==0) && (xun_r==0) && (xun_rr==0)) { go(); delay_10ms(1); if((xun_ll==1) && (xun_z==0) && (xun_r==0) && (xun_rr==0)) { right_s_90_while(); //小車右轉(zhuǎn)90度 } } if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun_rr==1)) { go(); delay_10ms(1); if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun_rr==1)) { left_s_90_while(); //小車左轉(zhuǎn)90度 } } } /*********************小延時函數(shù)*****************************/ void delay() { _nop_(); //執(zhí)行一條 _nop_()指令就是1us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } /*********************超聲波測距程序*****************************/ void send_wave() { c_send = 1; //10us的高電平觸發(fā) delay(); c_send = 0; TH0 = 0; //給定時器0清零 TL0 = 0; TR0 = 0; //關(guān)定時器0定時 flag_hc_value = 0; while(!c_recive); //當c_recive為零時等待 TR0=1; while(c_recive) //當c_recive為1計數(shù)并等待 { flag_time0 = TH0 * 256 + TL0; if((flag_hc_value > 1) || (flag_time0 > 65000)) //當超聲波超過測量范圍時,顯示3個888 { TR0 = 0; flag_csb_juli = 2; distance = 888; flag_hc_value = 0; return ; } else { flag_csb_juli = 1; } } if(flag_csb_juli == 1) { TR0=0; //關(guān)定時器0定時 distance = TH0; //讀出定時器0的時間 distance = distance * 256 + TL0; distance += ( flag_hc_value * 65536);//算出超聲波測距的時間 得到單位是ms distance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出來是米 if(distance > 350) //距離 = 速度 * 時間 { distance = 888; //如果大于3.8m就超出超聲波的量程 } } } /***********************處理距離函數(shù)****************************/ void smg_display() { if(flag_1s == 1) { flag_1s = 0; shudu_ll = shudu_ll * (float)2.55; // 2.55 = 20.4 / 8 = 2.55 算出每一個脈沖的輪子走了多少距離 juli += shudu_ll; //計路程 // write_sfm_jl(1,11,juli / 100); //顯示路程 write_sfm2(1,3,shudu_ll); //顯示速度 write_sfm2(2,4,shi); write_sfm2(2,7,fen); write_sfm2(2,10,miao); } } /*********************定時器0、定時器1初始化******************/ void time_init() { EA = 1; //開總中斷 TMOD = 0X11; //定時器0、定時器1工作方式1 ET0
- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 51 單片機 小車 循跡避障 系統(tǒng)
鏈接地址:http://www.3dchina-expo.com/p-6718934.html