基于Arduino單片機避障小車機器人畢業(yè)論文.docx
《基于Arduino單片機避障小車機器人畢業(yè)論文.docx》由會員分享,可在線閱讀,更多相關《基于Arduino單片機避障小車機器人畢業(yè)論文.docx(45頁珍藏版)》請在裝配圖網上搜索。
. —-可編輯修改,可打印—— 別找了你想要的都有! 精品教育資料 ——全冊教案,,試卷,教學課件,教學設計等一站式服務—— 全力滿足教學需求,真實規(guī)劃教學環(huán)節(jié) 最新全面教學資源,打造完美教學模式 論文編碼:TP39 首都師范大學本科畢業(yè)設計論文 基于行為設計的移動機器人設計與實現(xiàn) ——機器人機械設計模塊 Design?and?Implementation?of?Mobile?Robot? Based?on?Behavior?Design ——?Robot?Mechanical?Solutions 論文作者: 張倩穎 院 系: 信息工程學院 專 業(yè): 計算機科學與技術 學 號: 1111000055 指導老師: 徐敏 完成日期: 2015年 4月 25日 1 . 摘要 本文簡要介紹了基于行為設計的移動機器人設計與實現(xiàn)----一種基于Arduino新型集成開發(fā)環(huán)境的超聲波避障小車的工作原理。其中包括對小車的執(zhí)行組件、搭建結構、傳感器、Arduino單片機軟件編程及試驗結果的介紹。 本方案以Arduino單片機為控制核心,基于蝙蝠超聲波測距的原理,利用超聲波傳感器,檢測小車前方障礙物的距離,然后把數(shù)據(jù)傳送給單片機。當超聲波檢測到距離小車前方25CM有障礙物時單片機就發(fā)出指令讓小車左轉一定角度,然后停止行進繼續(xù)探測.如果前方25CM沒有障礙物則直行,否則繼續(xù)左轉一定角度。如此通過超聲波不斷的循環(huán)檢測周邊環(huán)境的情況進行自動避障。 本系統(tǒng)在硬件設計方面,以Arduino單片機為控制核心,以超聲波傳感器檢測前方障礙物,從而自動避障。在軟件方面,利用Arduino語言進行編程,通過軟件編程來控制小車運轉。該系統(tǒng)在驅動方面采用L298N驅動2個直流電機帶動小車運行。并且,用PWM系統(tǒng)調速,控制小車前進的速度。實現(xiàn)小車根據(jù)外部環(huán)境,做出前進、后退和轉向等動作,從而完成避障的功能,本設計具有有一定的實用價值。 關鍵詞:Arduino單片機;超聲波傳感器;避障 ABSTRACT This paper describes the design of mobile robot behavior-based design and implement ---- A new ultrasound-based integrated development environment Arduino obstacle avoidance car works. These include the implementation of car components, building structures, sensors, Arduino microcontroller software programming and test results presentation. The program to Arduino microcontroller core, based on the principle of ultrasonic distance measurement bats using ultrasonic sensors to detect obstacles in front from the car, and then transmits the data to the microcontroller. When the ultrasonic distance in front of the car detects obstacles 25CM SCM issued a directive to make the car turn left on an angle, then continue probing stop traveling. If there is no obstacle in front of the 25CM straight, turn left or continue certain angle. So the case of the ultrasonic continuous loop through the surrounding environment to automatically detect avoidance. The system hardware design to Arduino microcontroller core, with ultrasonic sensors detect obstacles in front, so that automatic obstacle avoidance. On the software side, the use of Arduino programming language to control the car running through software programming. The system uses the driver side L298N drive two DC motors drive the car running. And, with the PWM system speed, speed control car forward. Realize the car according to the external environment, made forward, backward, and steering movements, thus completing the obstacle avoidance function, the design has a certain practical value. Key words: Arduino; ultrasonic sensors;obstacle avoidance 第一章 緒論 1 1.1 論文的選題背景 1 1.2 Arduino單片機概述 2 1.3 Arduino機器人發(fā)展現(xiàn)狀 3 1.4 Arduino智能避障機器人研究意義和目的 4 1.5項目主要研究內容 5 第二章?避障小車機器人的總體設計 6 2.1設計原理與方法 6 2.2硬件設計 6 2.3 軟件設計 7 2.3.1 Arduino語言 7 2.3.2 Arduino IDE 8 2.4 實驗前期準備 10 第三章 硬件模塊 12 3.1 各模塊的的基本性能 12 3.1.1 單片機模塊 12 3.1.2 電機、電機驅動模塊 12 3.1.3避障模塊 14 3.1.4電源模塊 15 3.2 小車的基本搭建 15 3.3連線 17 3.3.1電機的連線 17 3.3.2舵機的連線 18 3.3.3超聲波的連線 19 3.3.4 Arduino超聲波小車總體連線圖: 20 第四章 軟件模塊 21 4.1 軟件設計思路 21 4.2 電機前進模塊 22 4.2 電機后退模塊 22 4.3 電機停止工作模塊 23 4.4 電機左轉模塊 23 4.5 電機右轉模塊 24 4.6 防卡死模塊 25 第五章 實驗及結果分析 26 5.1預期目標 26 5.2遇到的問題和解決方法 26 5.3 硬件的調試與整合 27 5.3.1調試思路 27 5.3.2調試超聲波模塊 27 5.3.3電機調試 28 5.4 心得體會 28 第六章 設想與展望 30 參考文獻 31 致謝 32 附錄 33 超聲波智能避障車程序(ARDUINO) 33 39 . 第一章 緒論 1.1 論文的選題背景 隨著現(xiàn)代計算機技術的不斷發(fā)展和普及,機器人的發(fā)展已經遍及近年來機器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。小到智能玩具,大到機械、電子、冶金、交通、宇航、國防等各個領域。人們將計算機技術更加廣闊的運用的人類生活中,制造能替代人勞動的機器一直是人類的夢想,并一直在為之努力。 在我們的生活里,有很多的機器人,如圖1.1所示,這兩種機器人分別是掃地機器人和滅火機器人。他們在我們的生活中非常常見也很實用,他們的特點就是無需人們的控制,能夠自行運動完成他們的任務。那么這就需要一個非常必要的基礎功能,那就是能夠感知并躲避前方的障礙物。 因此,在本次的設計中,我們將設計出一個能夠避障機器人,在具有這個基本功能的基礎上,我們就可以為他附加更多的功能,賦予它更多的實用價值。選用Arduino單片機作為控制核心,使用仿生超聲波技術傳感器進行避障的實現(xiàn)?!爸悄鼙苷蠙C器人”作為現(xiàn)代社會的新產物,也是以后的發(fā)展方向,他可以按照預先設定的模式在一個特定的環(huán)境里自動的運作,無需人為管理,便可以完成預期所要達到的或是更高的目標。 圖1.1 1.2 Arduino單片機概述 Arduino,是一個基于開放原始碼的軟硬件平臺,構建于開放原始碼simple I/O介面版,并且具有使用類似Java,C語言的Processing/Wiring開發(fā)環(huán)境。它包含兩個主要的部分:硬件部分是可以用來做電路連接和Arduino電路板;另外一個則是Arduino IDE,你的計算機中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會告訴Arduino電路板要做些什么了。? Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進制文件,收錄進微控制器。對Arduino的編程是利用Arduino編程語言 (基于 Wiring)和Arduino開發(fā)環(huán)境(based on Processing)來實現(xiàn)的?;贏rduino的項目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,他們之間進行通信 (比如 Flash, Processing, MaxMSP)來實現(xiàn)。可以自己動手制作,也可以購買成品套裝;Arduino所使用到的軟件都可以免費下載. 硬件參考設計 (CAD 文件)也是遵循availableopen-source協(xié)議, 你可以非常自由地根據(jù)你自己的要求去修改他們. Arduino可以使用開發(fā)完成的電子元件例如Switch或sensors或其他控制器、LED、步進馬達或其他輸出裝置。Arduino也可以獨立運作成為一個可以跟軟件溝通的接口,例如說:flash、processing、Max/MSP、VVVV或其他互動軟件…。Arduino開發(fā)IDE接口基于開放源代碼原,可以讓您免費下載使用開發(fā)出更多令人驚艷的互動作品。 其主要特點如下: 1)開放源代碼的電路圖設計,程序開發(fā)接口免費下載,也可依個人需求自己修改。 2)使用低價格的微處理控制器(AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。 3)Arduino支持ISP在線燒,可以將新的“bootloader”固件燒入AVR芯片。有了bootloader之后,可以通過串口或者USB to Rs232線更新固件。 4)可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡化Arduino模組,完成獨立運作的微處理控制;可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達,…等) 5)支持多種互動程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。 6)應用方面,利用Arduino,突破以往只能使用鼠標、鍵盤、CCD等輸入的裝置的互動內容,可以更簡單地達成單人或多人游戲互動。 我們?yōu)槭裁匆褂肁rduino?有很多的單片機和單片機平臺都適合用做交互式系統(tǒng)的設計。例如:Parallax Basic Stamp,Netmedia’s BX-24,Phidgets,MIT’s Handyboard和其它等等提供類似功能的。所有這些工具,你都不需要去關心單片機編程繁瑣的細節(jié),提供給你的是一套容易使用的工具包。Arduino同樣也簡化了同單片機工作的流程,但同其它系統(tǒng)相比Arduino在很多地方更具有優(yōu)越性,特別適合老師,學生和一些業(yè)余愛好者們使用:和其它平臺相比,Arduino板算是相當便宜了。最便宜的Arduino版本可以自己動手制作,即使是組裝好的成品,其價格也不會超過200元。而且Arduino軟件可以跨平臺運行在Windows,Macintosh OSX,和Linux操作系統(tǒng)。而大部分其它的單片機系統(tǒng)都只能運行在Windows上。另外,它具有簡易的編程環(huán)境。初學者很容易就能學會使用Arduino編程環(huán)境,同時它又能為高級用戶提供足夠多的高級應用。對于老師們來說,一般都能很方便的使用Processing 編程環(huán)境,所以如果學生學習過使用Processing 編程環(huán)境的話,那他們在使用Arduino開發(fā)環(huán)境的時候就會覺得很相似很熟悉。 軟件開源并可擴展-Arduino軟件是開源的,對于有經驗的程序員可以對其進行擴展。Arduino編程語言可以通過C++庫進行擴展,如果有人想去了解技術上的細節(jié),可以跳過Arduino語言而直接使用AVR C 編程語言(因為Arduino語言實際上是基于AVR C的)。類似的,如果你需要的話,你也可以直接往你的Arduino程序中添加AVR-C 代碼。 Arduino基于AVR平臺,對AVR庫進行了二次編譯封裝,把端口都打包好了,寄存器啦、地址指針之類的基本不用管。大大降低了軟件開發(fā)難度,適宜非專業(yè)愛好者使用。優(yōu)點和缺點并存,因為是二次編譯封裝,代碼不如直接使用AVR代碼編寫精練,代碼執(zhí)行效率與代碼體積都弱于AVR直接編譯。 1.3 Arduino機器人發(fā)展現(xiàn)狀 我國目前的發(fā)展現(xiàn)狀是研制中的智能移動機器人智能水平并不高,只能說是智能移動機器人的初級階段。智能移動機器人研究中當前的核心問題有兩方面:一方面是,提高智能移動機器人的自主性,這是就智能移動機器人與人的關系而言,即希望智能移動機器人進一步獨立于人,具有更為友善的人機界面。從長遠來說,希望操作人員只要給出要完成的任務,而機器能自動形成完成該任務的步驟,并自動完成它。另一方面是,提高智能移動機器人的適應性,提高智能移動機器人適應環(huán)境變化的能力,這是就智能移動機器人與環(huán)境的關系而言,希望加強它們之間的交互關系。 智能移動機器人涉及到許多關鍵技術,這些技術關系到智能移動機器人的智能性的高低。這些關鍵技術主要有以下幾個方面:多傳感信息耦合技術,多傳感器信息融合就是指綜合來自多個傳感器的感知數(shù)據(jù),以產生更可靠、更準確或更全面的信息,經過融合的多傳感器系統(tǒng)能夠更加完善、精確地反映檢測對象的特性,消除信息的不確定性,提高信息的可靠性;導航和定位技術,在自主移動機器人導航中,無論是局部實時避障還是全局規(guī)劃,都需要精確知道機器人或障礙物的當前狀態(tài)及位置,以完成導航、避障及路徑規(guī)劃等任務;路徑規(guī)劃技術,最優(yōu)路徑規(guī)劃就是依據(jù)某個或某些優(yōu)化準則,在機器人工作空間中找到一條從起始狀態(tài)到目標狀態(tài)、可以避開障礙物的最優(yōu)路徑;機器人視覺技術,機器人視覺系統(tǒng)的工作包括圖像的獲取、圖像的處理和分析、輸出和顯示,核心任務是特征提取、圖像分割和圖像辨識;智能控制技術,智能控制方法提高了機器人的速度及精度;人機接口技術,人機接口技術是研究如何使人方便自然地與計算機交流。 在各國的智能移動機器人發(fā)展中,美國的智能移動機器人技術在國際上一直處于領先地位,其技術全面、先進,適應性也很強,性能可靠、功能全面、精確度高,其視覺、觸覺等人工智能技術已在航天、汽車工業(yè)中廣泛應用。日本由于一系列扶植政策,各類機器人包括智能移動機器人的發(fā)展迅速。歐洲各國在智能移動機器人的研究和應用方面在世界上處于公認的領先地位。中國起步較晚,而后進入了大力發(fā)展的時期,以期以機器人為媒介物推動整個制造業(yè)的改變,推動整個高技術產業(yè)的壯大 1.4 Arduino智能避障機器人研究意義和目的 機器人的感覺傳感器種類非常多,其中視覺傳感器成為研制自動行走和駕駛機器人的重要部件。機器人要實現(xiàn)自動導引功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。本設計以超聲波作為智能車避障的一種重要手段,以其避障實現(xiàn)方便,計算簡單,易于做到實時控制,測量精度也能達到實用的要求,在未來汽車智能化進程中必將得到廣泛應用。我國作為一個世界大國,在高科技領域也必須占據(jù)一席之地,未來汽車的智能化是汽車產業(yè)發(fā)展必然的,在這種情況下研究超聲波在智能車避障上的應用具有深遠意義,這將對我國未來智能汽車的研究在世界高科技領域占據(jù)領先地位具有重要作用。 本設計主要體現(xiàn)多功能小車的智能避障功能,本設計中的理論方案、分析方法及特色與創(chuàng)新點等可以為自動運輸機器人、采礦勘探機器人、家用自動清潔機器人等自動半自動機器人的設計與普及有一定的參考意義。同時小車可以作為玩具的發(fā)展對象,為中國玩具市場技術含量的缺乏進行一定的彌補,實現(xiàn)經濟收益,形成商業(yè)價值。我們所設計的智能移動機器人利用超聲波能夠在路面上順利躲避障礙物,從而在導盲和輔助人類行動方面也有著重要意義。 1.5項目主要研究內容 本設計題目為《基于行為設計的移動機器人設計與實現(xiàn)》是以Arduino單片機為控制核心,主要研究小車的避障功能。利用超聲波傳感器檢測道路上的障礙,然后把數(shù)據(jù)傳送給單片機,當超聲波檢測到距離小車前方有障礙物時單片機就發(fā)出指令讓小車左轉一定角度,然后停止運行繼續(xù)探測.如果前方沒有障礙物就直走,否則繼續(xù)左轉一定角度。如此通過超聲波不斷的循環(huán)檢測周邊環(huán)境的情況進行自動避障。該功能的小車能夠實現(xiàn)在無人操作的情況下在比較寬闊平坦的環(huán)境中避開障礙物。當機器人在行走過程中遇到前方障礙時,能夠根據(jù)有效范圍內的距離作出相應處理,由單片機軟件發(fā)出轉彎、直行、后退指令,避免機器與障礙物相撞。 第二章?避障小車機器人的總體設計 2.1設計原理與方法 本設計中直流電機PWM控制系統(tǒng)的主要功能包括實現(xiàn)對直流電機的加速、減速,并且可以調整電機的轉速,能夠很方便的實現(xiàn)電機的智能控制。主體電路:即直流電機PWM 控制模塊。這部分電路主要由AT89S52 單片機的 I/O 端口、定時計數(shù)器、外部中斷擴展等控制直流電機的加速、減速以及電機的正轉和反轉,并且可以調整電機的轉速,能夠很方便的實現(xiàn)電機的智能控制。其間是通過 AT89S52 單片機產生脈寬可調的脈沖信號并輸入到L298 驅動芯片來控制直流電機工作的。該直流電機PWM 控制系統(tǒng)由以下電路模塊組成:設計控制部分:主要由AT89S52 單片機的外部中斷擴展電路組成。直流電機PWM控制實現(xiàn)部分主要由一些二極管、電機和L298 直流電機驅動模塊組成。智能小車采用后輪驅動,兩個后輪各用一個電機,前輪是萬象輪,起到支撐和轉向的作用。 2.2硬件設計 本小車的硬件部分分為幾個模塊:超聲波傳感器、Arduino單片機、電源、兩個直流電動機、電機驅動板、車身。電源連接在Arduino單片機上給整個小車供電。小車以Arduino單片機為核心,連接電機驅動板控制兩個直流電動機的運轉,從而實現(xiàn)小車的前進。將超聲波傳感器安置在車身的最前端,用于探測前方是否有障礙物。當超聲波傳感器遇到障礙物,將反饋提供到單片機里從而做出向左旋轉的反應,再次檢測前方是否有障礙物,若有障礙物則繼續(xù)旋轉,沒有障礙物則電機驅動器驅動電機前進,從而實現(xiàn)整個小車的避障功能。硬件框架圖如圖2.1。 圖2.1 硬件設計框架 2.3 軟件設計 2.3.1 Arduino語言 Arduino語言具有如下特點: 1、開放源代碼的電路圖設計,程序開發(fā)接口免費下載,也可依需求自己修改。 2、使用低價格的微處理控制器(AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。 3、Arduino支持ISP在線燒,可以將新的“bootloader”固件燒入AVR芯片。有了bootloader之后,可以通過串口或者USB to Rs232線更新固件。 4、可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡化Arduino模組,完成獨立運作的微處理控制;可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達,…等) 5、支持多種互動程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。 6、應用方面,利用Arduino,突破以往只能使用鼠標、鍵盤、CCD等輸入的裝置的互動內容,可以更簡單地達成單人或多人游戲互動。 Arduino的功能: Arduino可以讓我們快速使用與Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider等軟件結合,作出互動作品。Arduino可以使用現(xiàn)有的電子元件例如開關或者傳感器或者其他控制器件、LED、步進馬達或其他輸出裝置。Arduino也可以獨立運行,并與軟件進行交互,例如:Macromedia Flash, Processing,Max/MSP, Pure Data,VVVV或其他互動軟件,Arduino的IDE界面基于開放源代碼,可以讓我們免費下載使用,開發(fā)出更多令人驚艷的互動作品。 Arduino可使用ICSP線上燒入器,將「bootloader」燒入新的IC晶片;可依據(jù)官方電路圖,簡化Arduino模組,完成獨立運作的微處理控制;可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超聲波,熱敏電阻,光敏電阻,伺服馬達等);支援多樣的互動程序例如: Macromedia Flash、Max/Msp、VVVV、PD、C、Processing等;使用低價格的微處理控制器(ATMEGA 8-168);USB接口,不需外接電源。另外有提供9V直流電源輸入;在應用方面,利用Arduino,突破以往只能使用鼠標,鍵盤,CCD等輸入的裝置進行互動內容的設計,可以更簡單地達成單人或多人游戲互動。 2.3.2 Arduino IDE 如圖2.3這是運行界面。Arduino語言是一種類c的語言。在這個界面里有我們編程時最常用的東西。當我們把鼠標放在上面就會在右側出現(xiàn)按鍵的功能。 圖2.3 Arduino IDE運行界面 圖2.4就是upload上傳功能。最右邊的圖標是我們需要熟知的串口監(jiān)視器,快捷鍵是:Ctrl+Shift+M。點這個圖標有用的前提是插上了串口設備,當然Arduino插在USB上也可以,因為板上的Atmega16U2就是USB轉串口的功能。 圖2.4 upload上傳功能 如圖2.5這就是串口監(jiān)視器的運行畫面相對于網上流傳的眾多串口調試軟件,它的功能可以說較為簡單。右下角是波特率,波特率接收端和發(fā)射端要相同,要不然收到的會是亂碼。 圖2.5 串口監(jiān)視器 如果電腦沒找到串口或者驅動沒裝好,就會有如圖2.6的提示。serial port的意思是串行通訊接口。 圖2.6 Arduino IDE的菜單欄中有很多選項,例如“文件”“編輯”等英文界面。其中Sketch是草圖的意思,在Arduino IDE中,每個Arduino程序都稱為sketch,他是一個可以上傳進Arduino Board中的程序包,當然經過編譯以后他就不是代碼包了。Tools里面第一項,自動格式,當你把一段從網上下載的源代碼放到sketch里面,會有一些縮進的亂碼,這時,Auto Format就起到了很好的作用。 當我們編寫好程序后,點擊Update, IDE會自動編譯,上傳。如果程序有錯誤,就會有如圖2.7的顯示,標出了行號。修改程序后就可以繼續(xù)編譯上傳了。 圖2.7 2.4 實驗前期準備 搭建小車的零件清單如下: 1.減速電機 2個 2.優(yōu)質輪胎2個 3.電機固定件2個 4.萬向輪1個 5.100*150*2.6MM有機玻璃板 2片 6.L298N電機驅動板1個 7.ARDUINO 328給力板 1個 8.云臺 1個 9.舵機 1個 10.超聲波模塊1個 11.迷你面包板1個 12.6節(jié)5號電池盒一個 13.杜邦線 12條 14.1米長USB線1條 15.銅柱 35MM長 3個 12MM 4個 16.3MM螺絲螺母若干 第三章 硬件模塊 3.1 各模塊的的基本性能 3.1.1 單片機模塊 本設計采用Atmel Atmega328微處理控制器。其性能為:Digital I/O 數(shù)字輸入/輸出端共 0~13。Analog I/O 模擬輸入/輸出端共 0~5。支持ISP下載功能。輸入電壓:接上電腦USB時無須外部供電,外部供電7V~12V 直流電壓輸入。輸出電壓:5V 直流電壓輸出和3.3V 直流電壓輸出。 圖3.1 Arduino單片機實物圖 3.1.2 電機、電機驅動模塊 本設計采用由雙極性管組成的H橋電路(L298N)。用單片機控制晶體管使之工作在占空比可調的開關狀態(tài),精確調整電機轉速。這種電路由于工作在管子的飽和截止模式下,則效率非常高;H橋電路保證了可以簡單地實現(xiàn)轉速和方向的控制,電子開關的速度很快,穩(wěn)定性也很高。而且它有更強的驅動能力。而且L298N有過電流保護功能,當出現(xiàn)電機卡死時,可以保護電路和電機。這種調速方式有調速特性優(yōu)良、調整平滑、調速范圍廣、過載能力大,能承受頻繁的負載沖擊,還可以實現(xiàn)頻繁的無級快速啟動、制動和反轉等優(yōu)點。因此決定采用使用功率三極管作為功率放大器的輸出控制直流電機。 圖 3.2 L298N引腳圖 圖3.3 L298N電路原理圖 圖3.4 L298N實物圖 3.1.3避障模塊 本設計采用HC-SR04超聲波測距模塊,該原件可提供2CM-400CM的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發(fā)射器,接收器和控制電路。 基本工作原理:(1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;(3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2; 圖3.5避障模塊實物圖 3.1.4電源模塊 本設計采用的電源為車載電源。為保證電源工作可靠,單片機系統(tǒng)與動力伺服系統(tǒng)的電源采用了大功率、大容量的蓄電池;而傳感器的工作電源則采用了小巧輕便的干電池。 圖3.6 電源模塊實物圖 3.2 小車的基本搭建 舵機,云臺和超聲波的連接步驟如下圖: 1.如圖3.7準備好云臺舵機超聲波安裝所需配件。 圖3.7 2.圖3.8取出舵機配件之一“十字膠體”將十字剪成四邊對等的長度,打磨成寬度一樣。 圖3.8 3.將2*8mm的和1.2*5mm的螺絲安裝到十字的第二個孔,裝到云臺底座上。在云臺底部的螺絲位套上螺母,并用熱熔膠固定如圖3.9。 圖3.9 4.將舵機裝上云臺的兩個邊翼,并用螺絲緊固如圖3.10。 圖3.10 5.將裝好的舵機放進固定好的十字膠體調整好方向后,從舵機組件包里取出2*6mm的螺絲安裝到舵機固定孔中。完成云臺安裝后用扎帶將超聲波模塊固定在云臺前端如圖3.11。 圖3.11 6.將6mm銅柱裝在云臺底座安裝孔并將裝好的云臺組件直接安裝到小車底盤上,小車搭建成品如圖3.12。 圖3.12 小車搭建成品 3.3連線 3.3.1電機的連線 L298N的供電處理: 用6節(jié)5號電池盒取一路電源給L298N電機驅動模塊供電,另一路給ARDUINO主板供電給L298N電機驅動模塊供電的電源+極接L298N的VMS接口,電源的-接L298N的GND接口,L298N板上的+5V接口放空不接。電機一接L298N的MOTOA,電機二接L298N的MOTOB。 圖3.13 電機的連線 3.3.2舵機的連線 首先設置函數(shù):myservo.attach(5); // 定義伺服馬達輸出第5腳位。 舵機需要連接的有三條線,分別是+,-,信號。三條線均直接連接到Arduino板上。 接線方法:將+5V接到J5位,-位接到J6位,信號位接到J4位PWM口的第五腳。 連線方式如圖3.14所示: 圖3.14舵機的連線 3.3.3超聲波的連線 超聲波傳感器有四個腳,如圖3.15所示: 四個引腳的功能分別是: 1:VCC 接+5V。 2:TRIQ 信號輸入。 3:ECHO信號輸出。 4:GND 接地。 圖3.15超聲波的引腳示意圖 超聲波模塊四個引腳直接與Arduino單片機連接,接線方法如圖3.16所示: 圖3.16超聲波與Arduino單片機接線 3.3.4 Arduino超聲波小車總體連線圖: 電機A和電機B將正負兩端接在L298N電機驅動板上,若正負兩級接反則車輪反轉。電機驅動板、舵機、超聲波模塊直接與Arduino核心控制板相連,電源模塊分別給電機驅動板和Arduino板供電。 圖3.17 Arduino超聲波小車總體連線圖 第四章 軟件模塊 4.1 軟件設計思路 在軟件設計方面,采用Arduino語言編程,編寫程序流程圖4.1 圖4.1 軟件編譯流程圖 4.2 電機前進模塊 在定義好各個引腳之后,進入主程序的編寫部分。我在程序控制模塊里主要編寫的是電機的控制函數(shù)。本程序中提及的digitalWrite函數(shù)的作用是設置引腳的輸出的電壓為高電平或低電平。該函數(shù)也是一個無返回值的函數(shù),函數(shù)有兩個參數(shù)pin和value,pin參數(shù)表示所要設置的引腳,value參數(shù)表示輸出的電壓HIGH(高電平)或LOW(低電平)。 首先定義為advance前進函數(shù): void advance(int a) { 編寫模擬信號,定義馬達右后動作為低電平,即不給電: digitalWrite(pinRB,LOW); 編寫模擬信號,定義馬達右前動作為高電平: digitalWrite(pinRF,HIGH); 編寫模擬信號,定義馬達左后動作為低電平: digitalWrite(pinLB,LOW); 編寫模擬信號,定義馬達左前動作為高電平: digitalWrite(pinLF,HIGH); 定義延時,即將前進動作保持一段時間,直到開始執(zhí)行下一程序。 delay(a * 100); 延時 } 4.2 電機后退模塊 將函數(shù)定義為back后退函數(shù) void back(int g) //后退 { 編寫模擬信號,定義馬達右后動作為高電平: digitalWrite(pinRB,HIGH); 編寫模擬信號,定義馬達右前動作為低電平: digitalWrite(pinRF,LOW); 編寫模擬信號,定義馬達左后動作為高電平: digitalWrite(pinLB,HIGH); 編寫模擬信號,定義馬達左前動作為低電平: digitalWrite(pinLF,LOW); 定義延時,即將電機的后退動作保持一段時間,直到開始執(zhí)行下一程序。 delay(g * 100); } 4.3 電機停止工作模塊 將函數(shù)定義為stopp停止函數(shù) void stopp(int f) { 編寫模擬信號,定義馬達右后動作為高電平: digitalWrite(pinRB,HIGH); 編寫模擬信號,定義馬達右前動作為高電平 digitalWrite(pinRF,HIGH); 編寫模擬信號,定義馬達左后動作為高電平 digitalWrite(pinLB,HIGH); 編寫模擬信號,定義馬達左前動作為高電平 digitalWrite(pinLF,HIGH); 定義延時,即將電機的停止動作保持一段時間,直到開始執(zhí)行下一程序。 delay(f * 100); } 4.4 電機左轉模塊 將函數(shù)定義為left左轉函數(shù) void left(int c) { 編寫模擬信號,定義馬達右后動作為高電平 digitalWrite(pinRB,HIGH); 編寫模擬信號,定義馬達右前動作為高電平 digitalWrite(pinRF,HIGH); 編寫模擬信號,定義馬達左后動作為低電平 digitalWrite(pinLB,LOW); 編寫模擬信號,定義馬達左前動作為高電平 digitalWrite(pinLF,HIGH); 定義延時,即將電機的左轉動作保持一段時間,直到開始執(zhí)行下一程序。 delay(c * 100); } 4.5 電機右轉模塊 將函數(shù)定義為right右轉函數(shù) void right(int b) { 編寫模擬信號,定義馬達右后動作為低電平 digitalWrite(pinRB,LOW); 編寫模擬信號,定義馬達右前動作為高電平 digitalWrite(pinRF,HIGH); 編寫模擬信號,定義馬達左后動作為高電平 digitalWrite(pinLB,HIGH); 編寫模擬信號,定義馬達左前動作為高電平 digitalWrite(pinLF,HIGH); 定義延時,即將電機的右轉動作保持一段時間,直到開始執(zhí)行下一程序。 delay(b * 100); } 4.6 防卡死模塊 該模塊為防止避障小車卡死的編譯,即當小車發(fā)生與障礙物距離過近的情況而無法轉彎時,該程序會指引小車向后倒退,倒退一定距離后左轉前進,若仍有障礙物則繼續(xù)倒退,若無障礙物則左轉后直行。即可防止車在行進途中卡在死巷里。 if(directionn == 2) //假如directionn(方向) = 2(倒車) { back(8); // 倒退(車) turnL(2); //些微向左方移動(防止卡在死巷里) Serial.print(" Reverse "); //顯示方向(倒退) } 第五章 實驗及結果分析 5.1預期目標 總體來說本次試驗達到預期目標。 (1)在車前方沒有障礙物時,小車沿直線向前走。 (2)在車前方有障礙物時,小車能避開障礙物,避障方法如下:超聲波檢測到障礙物后,先向左邊旋轉,檢測。如果旋轉后前面沒有檢測障礙物,則沿直線向前走;如果旋轉后檢測到前方仍有障礙物,則繼續(xù)旋轉,如果前面沒有障礙物,則沿直線向前行走; 但是該超聲波避障小車還存在著許多的不足,比如說只能對正前方一定角度內進行探測,使用的是一路超聲波而不是多路超聲波探測,并且為了簡化,默認的只是向同一個方向轉彎等,這些都是有待進一步發(fā)展和提高的。 5.2遇到的問題和解決方法 在此之前我們并沒有制作過任何智能的機器人。初定避障小車這個題目時,最初我們采用樂高機器人搭建了一個循跡避障的機器人,由于操作較為簡單,后來我們決定嘗試采用Arduino芯片,利用超聲波傳感器搭建出一臺智能的避障小車。最初我們對硬件的原理不夠明白,不知道采用哪些原件,課程設計指導書上介紹的也并不詳細,因此我們利用大量時間去圖書館查閱了許多資料,對其電機驅動、Arduino控制板以及超聲波傳感器的引腳、電路設計等各方面都做了近一步的了解之后才開始進行小車的搭建。 在選擇硬件設施上,我們也花了很大功夫。在最初我們設計了兩個驅動方案的選擇。一個是采用ULN2003驅動,它是由7組達林頓晶體管陣列和相應的電阻網絡以及鉗位二極管網絡構成,具有同時驅動7組負載的能力,一般用于高速大功率驅動電路。另個一就是采用由雙極性管組成的H橋電路(L298N)。用單片機控制晶體管使之工作在占空比可調的開關狀態(tài),精確調整電機轉速。這種電路由于工作在管子的飽和截止模式下,則效率非常高;H橋電路保證了可以簡單地實現(xiàn)轉速和方向的控制,電子開關的速度很快,穩(wěn)定性也很高。而且它有更強的驅動能力。此驅動板體積小,重量輕,而且它有一個外加的續(xù)流二極管,可以防止電機線圈在斷電時的方向電勢損壞芯片,同時也也安裝有散熱片能使芯片溫度降低,盡量防止他自動斷電,讓驅動性能更加穩(wěn)定。板子設有兩個電流反饋檢測接口、內邏輯取電選擇端、4個上拉電阻選擇端、2路直流電機接口、控制電機方向指向燈等等。這個板子不僅適用于智能程控小車、輪式機器人等,還可以配合各種控制器使用。因此經過一番對比和考慮,最終我們選擇了L298N電機驅動板。在超聲波的選擇上我們也出現(xiàn)了分期,本設計最終采用的是HC-SR04超聲波測距模塊。而最初我們選擇的事紅外傳感裝置。之所以最終沒有選擇紅外線傳感,是因為紅外線對使用環(huán)境有較高的要求,當遇上淺色或是深色的家居物品它無法反射回來,會造成機器人無法正常避障。而這款HC-SR04則采用仿生超聲波技術,類似鯨魚,蝙蝠采用聲波來偵測判斷障礙物以及及空間方位,該超聲波避障模塊包括超聲波發(fā)射器,接收器和控制電路,靈敏度較高,但技術成本也較高。 在搭建方面,我們完成程序的編譯通電之后,小車發(fā)生了原地旋轉的現(xiàn)象,經過觀察,我們發(fā)現(xiàn)小車在感應障礙物方面并沒有問題。問題出現(xiàn)在左側輪前轉,而右側輪后轉。所以我們將控制右側車輪的電機的接線進行改接,這個問題便得以解決。 在軟硬件調試方面,我們也遇到了一些問題。首先是避障小車的旋轉角度不夠,也許是因為地面摩擦力的關系,小車的旋轉角度并達不到我們所設定的左轉九十度。后來我們又將程序進行改進,設置的旋轉角度比九十度多一些,小車就可正常避障了。還有一個問題就是小車在遇到障礙物之后的反應速度并不是很快,需要障礙物在前面平行持續(xù)1,2秒才可以做出轉向的判斷,這個延遲反應也經常造成小車和障礙物發(fā)生碰撞,這也是我們遇到的最大問題,在這個問題上我們做了很多程序上的調試,但終究達不到很理想的效果,在后續(xù)的試驗中,我們準備嘗試換一個感測避障模塊進行嘗試改進。 5.3 硬件的調試與整合 5.3.1調試思路 本設計的智能避障小車,難點重點有兩大模塊。分別是:L298驅動模塊和超聲波測距模塊。我們在調試的時候我們把兩大模塊分別調試,最后再把所有模塊和硬件組合起來再進行最后的整機調試這樣一個調試的思路。 5.3.2調試超聲波模塊 超聲波模塊一共有四個腳,一個是VCC,一個是GND,還有兩個分別是超聲波的發(fā)射和接收引腳。連接電路時候只需引出四根插線,分別連接到89S52的對應引腳,燒制好測試程序,測試結果圖如5.2.2。本設計四根插線分別連接到VCC,GND,還有發(fā)射和接收引腳分別為:P3.0和P3.2。 5.3.3電機調試 在電機驅動板上。有EA,I1,I2,EB,I3,I4六個端子用于控制電機。EA,EB為兩路電機的控制使能,通過PWM可以控制電機轉速,高電平有效。我們完成程序的編譯通電之后,小車發(fā)生了不停地旋轉的現(xiàn)象,我們觀察到小車在感應障礙物方面并沒有問題。問題出現(xiàn)在左側輪前轉,而右側輪后轉。所以我們將控制右側車輪的電機的接線進行修改,這個問題便得以解決。 圖5.1電機驅動板的引腳及其功能 5.4 心得體會 通過這次的項目實訓,我學習到了很多的電子知識,提高了我對于陌生硬件的學習能力。超聲波傳感器在此之前我沒有接觸過,對我來說非常的陌生,從一無所知慢慢查資料到能夠熟練應用,讓我知道了面對新的硬件應該怎么學習,在以后的工作學習中,我一定會遇到非常多的不熟悉的硬件,我相信,通過不斷地鍛煉積累,學習能力會進一步提高。這次實訓同時還加強了我實踐動手能力,特別培養(yǎng)了出現(xiàn)問題、分析問題、解決問題的能力,我相信這些能力的提高對我以后在從事任何工作都將會有極大的幫助。 這次的項目實訓讓我感觸最深的是:作為電子愛好者,電子制作中不管遇到什么問題和困境都要有一顆平靜的心和堅持不懈的精神,一顆浮躁的心是不會到達成功的彼岸。這次課程設計,給我更多的是一種模塊化的思想,將系統(tǒng)按我們所需的功能和系統(tǒng)所能提供的功能進行模塊化的分類,將會使我們的工作變得一目了然,非常清晰。比如說這次我選的避障小車,可以分成超聲波測速模塊,電機驅動模塊,單片機核心模塊三個,三個部分各司其職,無論從硬件上還是軟件上,都能夠比較清晰地將他們的功能區(qū)分開,從而有利于硬件的連接和程序的編寫。 從以后工作來看,這種模塊化處理問題的方式將會更加的有用,在公司和以后得科研項目中,系統(tǒng)一定是越來越復雜,不可能一個人完成所有的任務,一定是一個團隊來做這些系統(tǒng)的設計,所以模塊化之后,能夠將任務分配給每個人,最后大家還能夠很好的綜合到一起,大大的縮短了開發(fā)周期。這次的畢設實踐學習讓我受益匪淺。 第六章 設想與展望 隨著科技的迅猛發(fā)展,智能已經成為了現(xiàn)在的高科技的熱詞,智能機器人可以解決無數(shù)人類無法或者是很難解決的難題。本智能小車系統(tǒng)最誘人的前景就是可用于未來的智能汽車上了,當駕駛員因疏忽或打瞌睡時這樣的智能汽車的設計就能體現(xiàn)出它的作用。如果汽車偏離車道或距障礙物小于安全距離時,汽車就會發(fā)出警報,提醒駕駛員注意,如果駕駛員沒有及時作出反應,汽車就會自動減速或停靠于路邊,這樣就大大增大了駕車的安全系數(shù),想的再長遠一點,這個避障功能可以作為無人駕駛機動的一個基本功能。無人駕駛的機動車行駛在路上,擁有定位和導航的功能后就可以將人或物品送到我們所需要送到的位置。這樣智能機器人的應用,就大大的減少了人力和物力,并且方便了更多不會駕駛機動車的市民。 這樣的避障小車還可以用于月球探測等的無人探月車,幫助我們傳達月球上更多的信息,讓我們更加的了解月球,為將來登月做好充分準備。這樣的小車在科學考察探測車上也有廣闊的應用前景,在科學考察中,有很多危險且人們無法涉足的地方,這時,智能科學考察車就能夠派上用場,在它上面裝上攝像機,代替人們進行許多無法進行的工作。智能車的應用減少了人們的工作危險系數(shù),解決了惡劣環(huán)境下勘探的需求,實現(xiàn)了即是沒有人操作應用機器也能很好的完成工作,這項研發(fā)可謂是一舉多得。 在未來的社會中智能也是大勢所趨,而智能車作為智能機器人中一類必不可少的組成部分。最近幾年發(fā)展更是迅速,各個國家更是投入大量資金。它廣泛涉及人工智能、計算機視覺、自動控制、精密儀器、傳感和信息等一系列學科的創(chuàng)新研究,其研究成果可廣泛應用于工業(yè)、農業(yè)、醫(yī)藥、軍事、航空、信息技術等實際領域,智能機器人的發(fā)展水平可反映出一個國家的高科技水平和綜合國力,是國家綜合國力強大的標志,也是人類文明進步的標志。在我們未來的工作與生活中,會越來越多的需要機器人代替人力來工作和完成一些難度較大或較為費力的任務,對這些實用的機器人的需求也會越來越大。因此,機器人研發(fā)的前景是不可估量的。 參考文獻 [1] 袁新娜,與紅英編著.超聲波傳感器在智能小車避障系統(tǒng)中的應用.[A]中北大學 (2009)08-0085-04 [2] 邵貝貝. 單片機嵌入式應用的在線開發(fā)方法[M].北京.清華大學出社.2004 [3] 王曉明. 電動機的單片機控制[M].北京. 北京航空航天大學出版社.2002 [4] 臧杰,閻巖. 汽車構造[M]. 北京. 機械工業(yè)出版社.2005 哈爾濱工業(yè)大學課程設計說明書 [5] 安鵬,馬偉.S12單片機模塊應用及程序調試[J]. 電子產品世界. 2006.第211期. 162-163 [6] 童詩白,華成英.模擬電子技術基礎[M].北京. 高等教育出版社.2000 [7] 沈長生.常用電子元器件使用一讀通[M].北京. 人民郵電出版社.2004 [8] 宗光華.機器人的創(chuàng)意設計與實踐[M].北京. 北京航空航天大學出社.2004 [9] 張偉等.Protel DXP高級應用[M].北京. 人民郵電出版社.2002 [10] 張文春. 汽車理論[M].北京.機械工業(yè)出版社.2005 [11] 江海波,王卓然,耿德根編著.深入淺出AVR單片機.中國電力出版社,2008. 致謝 歷時三個月的畢業(yè)設計已經告一段落。在我和我組成員張碩的共同努力下,本避障小車的任務已經基本完成。在這段時間里,非常感謝在遇到困難時我的同學們所給予的支持和鼓勵,給我提供專業(yè)的意見和建議。還有和我同組的同學張碩,我們共同查閱資料,克服許多在選擇小車部件、小車搭建和編程上的種種困難。也正是這次畢業(yè)設計使我深刻地認識到學好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學四年的學習成果。我更明白了團隊合作的重要性。兩個人不僅有兩個大腦和更多的主意和知識,最重要的事能夠在遇到困難時可以相互鼓勵學習,互相分擔。也正是這種團結合作的精神促使了我們這次畢設任務的圓滿成功。 這三個月的設計是對過去所學知識的系統(tǒng)提高和擴充的過程,為今后的發(fā)展打下了良好的基礎。也非常感謝指導老師徐老師的支持和指導,每次我給徐老師發(fā)郵件她都會認真的給我批改,指出我的不足。也正是因為在老師的指導下我的論文進行不斷的改正,才有機會變得越來越好。 由于自身水平有限,設計中一定存在很多不足之處。雖然這次的畢業(yè)設計對于知識的運用和銜接還不夠熟練,但是我將在以后的工作和學習中繼續(xù)努力、不斷完善。敬請各位老師批評指正。 附錄 超聲波智能避障車程序(ARDUINO) L = 左 R = 右 F = 前 B = 后 */ #include- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 Arduino 單片機 小車 機器人 畢業(yè)論文
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://zhongcaozhi.com.cn/p-1171757.html