基于51單片機小車的循跡避障系統(tǒng).doc
《基于51單片機小車的循跡避障系統(tǒng).doc》由會員分享,可在線閱讀,更多相關《基于51單片機小車的循跡避障系統(tǒng).doc(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
畢業(yè)論文(設計) 題目:基于51單片機的小車循跡避障系統(tǒng) 學 院: 電氣工程學院 學 號: 姓 名: 專業(yè)年級: 指導老師: 基于51單片機的小車循跡避障系統(tǒng) 專業(yè):電子信息工程 姓名: 指導教師: 摘 要 隨著社會的發(fā)展,智能化越來越受到人們的關注。本設計通過模擬汽車的自動行駛及避障功能,來實現(xiàn)智能化。在此設計中,用STC89C52單片機作為主控芯片,處理接收到的各種信號,并作出相應的反饋;用紅外對管來進行黑線檢測,從而達到循跡的目的;用超聲波傳感器來感知障礙物,實現(xiàn)避障功能;用L298N芯片來進行驅動,通過編寫的程序,保證了電機的左右轉動,從而達到小車設計時預定的目標。 在本小車的設計中,有著嚴格的設計過程,采用了模塊結構框圖設計、程序流程圖設計、程序設計以及電路圖設計等多個設計步驟。這樣就可以保證在設計過程中的嚴密性,不會因為單一設計體系而使整個系統(tǒng)功能出現(xiàn)錯誤。 由于小車在設計過程中,采用了模塊化的設計思路,所以在進行調試時非常方便。我們可以分別對每一個功能部分來進行調試,驅動部分調試時,只要給電機向前或者向后的信號,就可以調試出其功能。循跡部分調試時,只要通過檢測到黑線,判斷是否沿黑線行駛,即可以調試出。在進行避障調試中,我們可以把障礙物放在小車前方,然后看小車兩個輪子的轉向。這種模塊化的設計思想不僅簡化了設計過程,而且對我們以后的設計也會有一定啟發(fā)。 關鍵詞 智能化,單片機,紅外對管,超聲波傳感器 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 論文研究內容與主要結構 2 第2章 方案選型 3 2.1車體設計 3 2.2 電機驅動選擇 3 2.3 PWM調速技術 4 2.4 循跡模塊技術 5 2.5 避障模塊技術 7 2.6 控制系統(tǒng)模塊 8 2.7 電源選擇 9 第3章 硬件電路設計 10 3.1總體設計 10 3.2電源電路設計 10 3.3驅動電路設計 11 3.4 循跡部分電路 13 3.5 避障部分電路 14 3.4主控電路設計 16 第4章 程序設計 17 4.1主程序設計概述 17 4.2主程序流程圖 17 4.3 驅動程序流程圖 18 4.4 循跡程序流程圖 18 4.5 避障程序流程圖 19 第5章 制作安裝與調試 20 5.1 小車的安裝 20 5.2小車運動模式調試 20 5.3小車循跡調試 21 5.4小車避障調試 23 5.3小車的功能 24 結 論 25 參考文獻 26 致 謝 27 第1章 緒論 1.1 智能小車的研究意義 隨著社會的發(fā)展,科技的發(fā)展日新月異。于是,智能一詞越來越受到人們的關注。而科技代替人工的說法,早已被提上人們的日常生活了。目前,由于私家車的普及,伴隨著的就是各種車禍的產生。如何避免此類情況,是人們需要深思的一個問題。在我所研究的自動循跡避障系統(tǒng)中,我們可以利用小車來模擬汽車自動避障功能,來避免現(xiàn)實中汽車因與障礙物碰撞而產生的車禍。因此,自動循跡避障小車對于在進行自動避障的時候,有著非常重要的現(xiàn)實意義。 1.2 智能小車的現(xiàn)狀 2013年年底,工業(yè)和信息化部頒布《關于推進工業(yè)機器人產業(yè)發(fā)展的指導意見》,將機器人產業(yè)推到了公眾的視線內。隨著全球工業(yè)化進程的推進,機器人制造業(yè)正逐漸獲得長足發(fā)展。智能小車作為移動機器人的基礎,在智能全球化的浪潮中,受到越來越大的沖擊,更多的高新技術和硬件設備被應用其中,使智能小車走出了只能用于比賽的模式,而更加廣泛的服務于大眾。 從20世紀80年代起,由于計算機、電子、通信等方面的技術飛速發(fā)展,使得越來越多的技術從理論走向實際。于是,在國外掀起了智能機器人研究浪潮,世界各國或者國際機構都加大了對機器人的研究力度,并投入了巨大的經費。其中,各種具有廣闊應用前景和軍事價值的移動式機器人都受到西方各國的普遍關注。 韓國科學技術部在20世紀末推出的“二十一世紀的尖端研究計劃”,其中包括服務機器人,可適應惡劣環(huán)境機器人,微型機器人和掃雷機器人項目。歐盟在信息社會技術計劃中,展開了探測火山情況的機器人、可以用來評價地震災害危險性的攀爬式機器人,以及利用機器人的交互式行為的博物館臨場感等項目研究。2013年Irobot公司新推出一款機器人名叫braava,它可以模仿人工跪地姿勢,利用室內GPS導航系統(tǒng)——先進的北極星技術生成室地圖,確定方向,以及標記障礙物和記憶經歷過的地區(qū)。 自2012以來,在政策層面上,國家大力支持發(fā)展工業(yè)機器人,用來提高我國的工業(yè)實力。從其中可以看出,由于國家層面的各種規(guī)劃和制度的出臺,讓我國機器人的發(fā)展得到更進一步的提升。并且提出要大力推動工業(yè)的自動化控制系統(tǒng)完善,工業(yè)機器人技術的研發(fā),關鍵材料和配件等裝置的研發(fā)和市場化,這對于中國國產機器人在將來的發(fā)展與應用有著明顯的積極作用。2005年11月,我國教育部自動化專業(yè)指導分委員會與飛思卡爾半導體公司簽署了雙方長期合作協(xié)議書,協(xié)助我國舉辦“飛思卡爾”智能小車大賽。于是,我國智能小車比賽才開始發(fā)展。而且,在我國自主舉辦的全國大學生電子設計大賽中,智能小車出現(xiàn)的頻率也居高不下。 1.3 論文研究內容與主要結構 論文主要研究的內容就是小車的循跡與避障,因為在實現(xiàn)整個系統(tǒng)時,如何確保小車按照所設定的路線行進,是至關重要的。在進行避障循跡小車研究時,我們首先要確保電路圖的設計合理。這樣的話,在后面進行的硬件調試時,才可以避免因為電路原理的錯誤,而使得設計達不到預定要求。 論文主要由九部分組成,第一部分:主要介紹選題的目的意義,以及選題目前在國內外的發(fā)展現(xiàn)狀。這樣我們在進行課題設計的時候,有很大的參考意義;第二部分:主要是在論證小車設計方案的優(yōu)劣,并根據(jù)實際情況,例如實現(xiàn)難易程度、生產成本以及后續(xù)的維護是否方便來進行篩選,得出最后本小車的設計方案;第三部分:小車的系統(tǒng)硬件電路設計,我們在實現(xiàn)小車功能時,必須通過構建硬件電路;第四部分:系統(tǒng)軟件設計,這是一個很重要的部分,因為只有通過系統(tǒng)軟件的控制,小車才可以按照設定功能進行一系列動作,比如循跡以及避障;第五部分:小車的測試,這是對小車設計完成后,其功能是否達到最初的設計規(guī)劃,是設計工作是否準確完成的一個很重要的指標;第六部分:總結,是對整個小車設計過程中所遇到的一些問題,所付出的努力,還有最后的結果進行一個大致總結;第七部分:致謝,對于這幾個月中,老師以及領導在對本次論文設計編寫過程中所給予的幫助;第八部分:參考文獻:在小車設計及論文編寫過程中,所參考的一系列的資料,進行一個歸納整理;第九部分:附錄,最要用來展示小車的整體硬件電路情況以及小車的系統(tǒng)程序,這樣便于閱讀。 第2章 方案選型 2.1車體設計 在本次設計中,所采用的是兩輪驅動的車體。顧名思義,指的是用兩個電機來驅動小車的兩個輪子,能夠使得動力分布的更均勻,可以減少車體滑動。相對于四輪驅動的安全性、靈活性來說,兩輪驅動也比較高??梢园凑招旭偮访鏍顟B(tài)的不同而將發(fā)動機輸出扭矩分別分布在兩個輪子上,提高小車的行駛能力。而且,兩輪驅動在車體結構及元器件分布上,也相較于四輪來說更加密集。兩輪驅動在控制上,相對于四輪驅動也比較容易,在設計時更加便于實現(xiàn)。 2.2 電機驅動選擇 小車要向前行駛,必須要有動力來驅動輪子,因為我們在控制小車的行進時,并不是每個輪子的轉向轉速都一樣。在轉彎的時候,就必須區(qū)別每個輪子的轉速快慢和轉向,所以就必須用到電機驅動模塊來對小車進行驅動。 直流電機在驅動時,只需要合適的直流電壓就可以進行驅動。而且,直流電機可以承受反復沖擊,對于小車在急速轉彎或者反復前后轉動時,有很好的容納性。在調速特性方面,直流電機可以很方便的進行調速,且調速范圍廣。在控制時只要加上合適的電壓就會轉,我們并不需要精確的計算其所轉的圈數(shù)。步進電機則是靠脈沖信號來進行驅動,對于脈沖信號來說,我們不能直接使用直流電壓產生,必須借助于單片機的I/O來產生,這樣的話在進行設計時,就會增加I/O的使用數(shù)量,使得設計難度增加。我們在電機選擇時,可以選用直流電機。因為通過對兩種電機的綜合性能比較,直流電機在控制是更加方便,而步進電機在控制時,相較于直流電機來說,比較困難一點,因此我們不采用步進電機,選擇更加簡單的直流電機。 電機的驅動電路為“H橋式驅動電路”(如圖1所示),整個電路是由四個晶體管和一個電機組成。在電路中,四個晶體管分別表示H的四個角,分別接上“+”、“-”電壓,這樣通過四個腳的電壓輸入,就可以驅動電機。而電機在H型電路中,是表示中間的橫杠。在實際使用的時候,如果我們用單獨的元器件來實現(xiàn)H橋式電路的話,是比較困難的。因此,我們可以采用市面上的已有封裝的芯片。這樣的話,我們只要在進行電路設計時,考慮芯片的工作電壓范圍,功率以及所需的控制信號即可,就不用再通過自己來一個一個搭建電路。 圖1 H橋式驅動電路 2.3 PWM調速技術 由于小車在進行自動循跡和避障時,兩個驅動輪的速度并不是一樣的,這個時候我們要對小車各個輪子速度控制,就必須使用到一種調速技術,即為脈沖寬帶調制技術(PWM),簡稱為脈寬調制。PWM調速主要是利用微處理器來控制,它可以使模擬電路中的信號進行數(shù)字化輸出,從而可以對電路進行有效的控制。而且,PWM技術在使用單片機等控制芯片的系統(tǒng)中,可以讓控制方面變得更加簡潔、高效。 PWM技術的實現(xiàn)主要有兩種方法,一種是硬件調制法,另外一種就是軟件生成法。硬件生成法(如圖2所示)是把所希望得到的波形作為調制信號,我們可以根據(jù)需要的波形來進行改變參數(shù)選擇。被調制信號作為載波信號,通過對載波信號的幅頻、相頻等進行調節(jié),可以得到所需要的PWM信號波形。由于三角在實現(xiàn)時比較容易,而且其各種參數(shù)的調制也方便,因此我們一般將其作為載波信號。由于各種復雜的信號都可以認為是許多不同的正弦信號疊加而成,我們可以把正弦波作為調制信號,這樣我們得到的信號波形就是PWM信號。軟件生成方法是利用計算機軟件技術來實現(xiàn)產生PWM波的調制,這種技術產生信號更加容易。而且在進行PWM波形變換時,只要在軟件程序里進行簡單的修改,即可以進行實現(xiàn)。 由于硬件調制法電路是屬于模擬電路,其結構比較復雜,而且在實現(xiàn)電路設計和搭建時,相比較起來不方便,難以實現(xiàn)精確的控制。而軟件生成法就比較簡單,只要在控制程序里加上PWM調制就可以。因此,我采用軟件生成法來實現(xiàn)PWM波形。 圖2 PWM硬件電路 2.4 循跡模塊技術 在小車進行循跡時,我們要考慮小車對循跡黑線檢測的靈敏性。CCD圖像傳感器在實現(xiàn)的時候,有比較好的靈敏性,而且可以進行路徑成像。其通過將光信號轉變?yōu)槟M信號,在經過信號放大和A/D轉換,可以產生便于單片機識別的數(shù)字信號。紅外對管則是由于紅外線接收二極管在光線下照明,通過調用產生的光電流。如果連接到外部電路上的負載,所需的電信號通過負載獲得,并且這個電信號會隨光的改變而發(fā)生相應的變化。這種獲得的信號相對比較模糊,而且受光強度影響較大。在本次設計中,由于我們只要考慮小車對黑線的檢測,并不需要有實際的成像效果,加上CCD圖像傳感器價格昂貴。基于實用、成本等綜合因素,我考慮使用紅外對管進行循跡。小車上使用了五對紅外對管(如圖3所示),這樣可以很準確地檢測出黑線位置,并循跡行走。 圖3 紅外對管實物 紅外對管是將光信號轉換為電信號(如圖4所示)的光敏器件或者光電變換裝置。可見光信息源、紅外光信息源、紫外光信息源等都直接或者間接地輻射出一定功率的光能,包括含有一定信息量的光能量由紅外對管接收后,紅外對管能夠按一定的規(guī)律將光能中所包括的模擬或者數(shù)字信息轉化成相應的電信號,從而可以以電信號的形式還原出光能中所攜帶的信息。 圖4 紅外光電傳感器工作原理 2.5 避障模塊技術 小車進行避障時,我們需要提前探知其前方是否存在障礙物,這樣就可以在行進過程中,自動選擇遠離障礙物的路線。在避障模塊的選擇時,有兩種選擇,一種是使用紅外避障,還有一種是超聲波避障。紅外避障是通過發(fā)射和接收光信號,在通過一系列的轉換變?yōu)閿?shù)字信號,來判斷前方障礙物。這種方式容易受到其他光的干擾,使得檢測結果不準確。而且由于其光束比較集中,在探測時其探測的區(qū)間較小,可能會造成避障不成功。超聲波避障則是利用聲波信號遇到障礙物返回,測量其間隔時間來進行避障的。超聲波的測量范圍很廣,可以測量方向、距離等。測量距離可以采用主動測距法和被動測距法:被動測距法是傳感器只有接受信號的功能,包括方位法和視差法;主動測距法是傳感器既發(fā)射信號又接收信號,包括TOF法、脈沖回波法、FM-CW法等。聲波在傳遞過程中,是發(fā)散形式的,可以大角度的檢測,這樣就可以保證不會存在死角。而且聲波的使用也比較廣泛,像雷達探測,金屬探傷等。 本小車采用了HC-SR04超聲波避障模塊(如圖5所示),在其性能方面,有比較好的探測距離和角度。采用I/O口TRIG觸發(fā)測距,利用接收到信號后的電平差,來進行信號控制,從而選擇驅動小車兩個輪子來進行避障。模塊由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)模塊 在本小車設計的控制系統(tǒng)中,我們采用STC公司生產的一款單片機STC89C52。由于在小車的整個運行過程中,其需要處理的數(shù)據(jù)比較多,在驅動電機時,就需要通過單片機的I/O口來輸出控制信號,使得小車實現(xiàn)前進、后退以及轉彎等功能。在小車運動過程中,還需要接收很多的控制信號,像循跡信號、超聲波信號等。這樣就可以實現(xiàn)小車的速度控制、循跡行駛以及躲避障礙物等功能。 STC89C52單片機(如圖7所示)有40個I/O口,其中P0、P1、P2、P3為并行I/O口。芯片時鐘的產生有兩種,內部時鐘和外部時鐘,而內部時鐘就是通過單片機引腳XTAL1和XTAL2外界晶振得到的。還有多個中斷源及優(yōu)先級等,可以對程序執(zhí)行功能的優(yōu)先進行區(qū)分,通過中斷來進行高優(yōu)先級的指令。52單片機是8位單片機,擁有8K字節(jié)Flash,512字節(jié)RAM,內置4KB EEPROM,以及復位電路等。在單片機的4個并行I/O口中,P0與P3、P1與P2擁有相似的功能,除了P1口是單功能口外,其余都為雙功能口。 圖7 51單片機引腳圖 2.7 電源選擇 在小車電源選擇時,我們需要特別注意,因為系統(tǒng)單片機的額定工作電壓為5V。對于電機來說,用5V驅動又不能讓小車行駛,而過高的電壓可能會使系統(tǒng)芯片燒壞。因此,我們需要通過計算得到小車的可允許電壓電流范圍,一般采用9V~12V為好,本小車采用9V供電。這樣既可以保證電機驅動所需電壓,又不會因為電壓過大而造成元器件的燒壞。 第3章 硬件電路設計 3.1總體設計 圖8 小車總體框架圖 小車的整體系統(tǒng)(如圖8所示)是以51單片機為CPU,通過紅外對管來進行黑線檢測循跡行走,通過超聲波探測器進行障礙物感知,進行避障功能實現(xiàn),通過驅動模塊來實現(xiàn)電機的驅動,從而達到小車的運動。 系統(tǒng)電路圖見附錄1: 3.2電源電路設計 在小車的電源系統(tǒng),采用9V直流供電,為了防止在誤操作時接入過高的電流使整個電路燒毀,一般會在電路中接入防擊穿電容。 圖9 小車電源電路 3.3驅動電路設計 圖10 驅動電路框架圖 在驅動電路部分設計時,我們要考慮的是驅動芯片的選擇,一般是在L298N和L293D這兩款芯片中選擇。對于L298N芯片,是使用的15腳直插式封裝模式,具有四通道驅動邏輯電路,可以很方便的驅動兩個電機。而且它的工作電壓以及單通道輸出電流都比較高,一般可達到46V和2A。L293D在功能上和L298N基本一樣,但是它的工作電壓和通道電流都相比于L298N要小,其采用的是直插式16腳SOIC-20封裝模式。所以,在應用時,一般使用L298N而不采用L293D,從經濟方面來考慮,L298N也更具有優(yōu)勢。L298N輸出電壓的方式有兩種,一種是直接通過電源的調節(jié)來進行電壓輸出;另一種就是直接使用單片機上的輸入輸出口提供電壓信號。 圖11 L298N引腳圖 小車采用兩輪驅動,使用L298N芯片組成的電路來驅動電機,驅動電路中,采用7805穩(wěn)壓芯片進行穩(wěn)壓。由于電機驅動所需要的電壓很大,因此使用9V電壓直接通過驅動芯片供電。通過八個LED燈來分別顯示每個車輪的轉動方向。 圖12 電機驅動電路 該驅動芯片可驅動2 路直流電機,使能端ENA、ENB 為高電平時有效,控制方式及直流電機狀態(tài)表如下所示。如果PWM直流電機的速度控制,需要設置IN1和IN2,確定電機的旋轉方向,并使輸出PWM脈沖,可以實現(xiàn)轉速控制。請注意,當使能信號是0,電動機自由停止狀態(tài);若使能ENA信號為1,并且IN1 和IN2 都為00 或11 時,電機處于制動狀態(tài)。 表2 L298N驅動狀態(tài)表 ENA IN1 IN2 直流電機狀態(tài) 0 X X 停止 1 0 0 制動 1 0 1 正轉 1 1 0 反轉 1 1 1 制動 7805(如圖13所示)作為穩(wěn)壓芯片,在我們日常使用中,是使用最廣泛的。并且使用起來很簡單、很方便,只要簡單的接入電路中,給它一個穩(wěn)定的直流電壓源即可。 7805一共有三個引腳,引腳1是INPUT即為整流器輸入電壓,引腳2為GND,公共接地端,引腳3是OUTPUT輸出穩(wěn)壓后的5V電壓. 圖13 LM7805引腳圖 3.4 循跡部分電路 圖14 循跡模塊框架 在進行小車循跡電路設計時,我們要考慮到當紅外對管檢測到黑線以后,如何進行下一步操作。首先將紅外對管接收的光信號轉化為電流信號,再將模擬電流信號轉化為數(shù)字信號。在這里我們就可以使用電壓比較器,進行電壓比較,來確定檢測到的黑線在哪一邊,再通過控制電機的轉動來驅動小車循著黑線行駛。一般常用的電壓比較器芯片為LM339和LM393,其中LM339為四電壓比較器,而LM393為雙電壓比較器。由于我們采用五個紅外對管進行黑線檢測,所以使用了一個LM339和一個LM393。 圖15 循跡模塊電路 3.5 避障部分電路 圖16 超聲波模塊框架圖 在小車避障時,我們選用超聲波避障模塊,主要是因為其在進行檢測時,受到外界干擾較少,檢測距離相對較遠,可以多角度多范圍的進行檢測,這樣可以減少避障失敗的可能。超聲波電路主要由一個聲波發(fā)射口,一個聲波接收口以及MAX232和EM78P153組成。其中MAX232該產品是一款兼容RS232標準的芯片,EM78P153是采用高速CMOS工藝制造的8位單片機芯片。 通過揚聲器T發(fā)出的超聲波,如果遇到障礙物返回后,被傳感器接收到。通過各級三極管放大電路,將所得信號放大。放大信號被傳送到EM89P153單片機,通過處理,得到所需要的數(shù)字信號。然后再通過通信接口芯片MAX232,與STC89C52單片機通信,將信號傳到52單片機。最后通過52單片機的處理,得到小車避障所需的控制信息。 圖17 超聲波檢測電路 MAX232為16腳直插式封裝芯片,其主要的作用是來進行電平轉換。其內部主要結構可分為三部分:由端口1—6以及四個電容構成的電荷泵電路,由引腳7-14組成的數(shù)據(jù)轉換通道電路以及供電電路,一般可以產生-12V和+12V兩種電壓。 EM89P153單片機芯片,其內部有512*13位一次性的ROM,程序代碼可以通過EM下載到EM89P153芯片中。工作電壓范圍為2.0V-6.0V;片內有4MHz校準RC振蕩器;振蕩器起振時間預分頻系數(shù)可編程;片內可按位編程;兩個雙向I/O口;5級堆棧;3個中斷源,外部中斷,輸出引腳狀態(tài)變化中斷,TCC溢出中斷;8位實時定時/計數(shù)器(TCC);每個指令周期為兩個時鐘周期。 3.4主控電路設計 小車的主控電路是以52單片機作為控制芯片,結合復位電路、晶振電路來控制整個系統(tǒng)的運行。在電路中,我們一般使用的晶振位12MHz,這樣的話,單片機的每一個機器周期為1uS,這樣在利用單片機時鐘進行計時時,比較方便。 圖18 最小單片機系統(tǒng) 第4章 程序設計 4.1主程序設計概述 在小車整體設計過程中,不僅有著大量的硬件電路設計,更多的是對于系統(tǒng)軟件的分析設計。因為在硬件電路搭建完以后,只有通過軟件程序的控制,才可以讓小車按照設想的運行路徑進行行駛,達到所需要的功能。由于小車整體功能比較多,如果在最開始程序設計時就進行整體設計的話,無疑會對整個設計工作帶來困難,而且在設計完成后進行運行調試時,也會造成困難。因此,我在設計程序時,采用了模塊化設計,即先對每一個部分子功能模塊進行設計,在驗證各個功能程序的完整性以及正確性以后,再把各個子程序組合成一個完整的程序。 4.2主程序流程圖 圖19 系統(tǒng)程序流程圖 4.3 驅動程序流程圖 圖20 驅動程序流程圖 4.4 循跡程序流程圖 圖21 循跡程序流程圖 4.5 避障程序流程圖 圖22 避障程序流程圖 第5章 制作安裝與調試 5.1 小車的安裝 在小車各個部分的電路焊接完成后,我們就開始對小車進行整體組裝。利用購買的高強度塑料制成的模型作為小車的車體,然后分別將各模塊按照功能安裝固定好。紅外循跡模塊固定在車體底部,因為其作用是來檢測地面黑線存在,而且其工作距離也有一定限制,所以不能放在離地面太高的地方。超聲波探測模塊則應該置于小車正前方,其目的主要是用來發(fā)現(xiàn)前方障礙物,其安裝高度要合適。對于驅動模塊和最小單片機系統(tǒng),安裝在小車正中間,因為其要與各模塊之間進行連接。供電電源則放在小車車尾,這樣有利于小車整體重量的均勻分布,也可以在進行充電時,更加方便拆裝。 5.2小車運動模式調試 對小車的左右轉彎進行調試時,可以在程序里給定每個電機引腳信號,看小車的轉動是否滿足所設定的方向。通過調試可知,小車的運動方向與初始設置相同,能夠實現(xiàn)。 圖23 小車驅動調試圖 為了便于明確知道小車電機轉向的控制信號,表3給出了每個I/O的控制信號,通過對其進行不同的改變,可以選擇在不同情況下電機的各種運動狀態(tài),從而得到小車行駛的數(shù)據(jù)。 表3 運動調試結果 I/O口 P0.0 P0.1 P0.2 P0.3 結果 輸入電平 1 0 1 0 直線前進 1 0 0 1 右轉彎 0 1 1 0 左轉彎 0 1 0 1 后退 1 1 1 1 停止 5.3小車循跡調試 小車的循跡是通過五路紅外對管實現(xiàn),當左側檢測到有黑線時,左側LED指示燈會亮(圖24),當右側指示燈亮時,那么小車檢測到的黑線在右側(圖25),如果當小車在黑線中間是中間指示燈會亮(圖26),這時候,小車就會循著黑線一直行進。 圖24 左側檢測黑線 圖25 右側檢測黑線 圖26 中間檢測黑線 在進行循跡測試時,黑線的寬度對我們循跡成功也有一定的影響,因此,我還進行了黑線寬度的測試,其結果如表4: 表4 黑線寬度調試 循跡次數(shù) 黑線寬度 1 2 3 4 5 0.5cm 失敗 失敗 成功 失敗 失敗 1cm 成功 失敗 成功 成功 成功 1.5cm 成功 成功 成功 成功 成功 2cm 成功 成功 成功 成功 成功 5.4小車避障調試 在進行小車避障調試時,當把障礙物放置在小車的行駛路線上時,如果被檢測到,那么小車會在安全距離內旋轉180度進行避障處理。 圖27 小車避障調試 在進行避障功能測試時,還需要對障礙物大小進測試,因為這樣可以更加準確的得到調試結果。結果如表5: 表5 障礙物大小調試結果 避障次數(shù) 障礙物大小 1 2 3 4 5 0.0025㎡ 失敗 失敗 失敗 失敗 失敗 0.01㎡ 成功 失敗 成功 成功 成功 0.04㎡ 成功 成功 成功 成功 成功 5.3小車的功能 通過對小車的各項功能進行測試,可以發(fā)現(xiàn),在合適的工作條件下,小車基本可以達到設計要求。因此,本設計完成了預先的設計任務,實現(xiàn)了所有功能。小車可以進行循跡功能,檢測到黑線以后,會沿著黑線進行行進??梢赃M行避障功能,在檢測到障礙物以后,小車會原地旋轉180度進行避障處理,然后繼續(xù)行駛。 結 論 經過幾個月的辛苦努力,本設計循跡避障小車通過驗證,基本實現(xiàn)了最初的設計目標。 在最開始進行選題時,覺得這個課題比較簡單,可是在課題設計過程中,我發(fā)現(xiàn)其實并沒有想的那么簡單。首先是在硬件電路方面的設計,對于硬件電路設計,并不是說只要把元器件選好了,把線一連接就可以了,我們在進行電路設計時,還要考慮諸多因素,比如元器件使用難易,價格如何,還有就是電路中各個元器件的工作電流電壓,所消耗的功率,這些都是要考慮的。所以在進行電路設計時,我查閱了大量的資料,結合前人的研究成果,通過分析電路中電流電壓的關系,最終選擇出合適的元器件,完成了整個硬件電路的設計。 在程序方面,這是一個占工作量比較大的部分,因為小車的各種功能是靠程序的選擇控制的,只有保證程序的正確性,才能保證小車功能的實現(xiàn)。程序設計時,我對于以前的各種相關的設計進行了參考比較,覺得使用模塊化設計更加方便于我們的編寫。在進行各功能驗證時可以很簡單,而且還可以在以后繼續(xù)使用某一需要的功能程序,而不必要重新編寫。 在進行實物焊接以及組裝時,可以考驗我們的動手能力,并對我們的生產工藝進行了解。焊接時的虛焊、錯焊,還有組裝時的結構不合理等等,都在此次設計過程中體現(xiàn)出來了。 參考文獻 [1] 于金霞 王璐 蔡自興 《未知環(huán)境中移動機器人自定位技術》北京:電子工業(yè)出版社 2011 [2] 李仁定 《電機的微機控制》 北京:機械工業(yè)出版社 2004 [3] 趙虎 葉朝斌 無刷直流電機無傳感器PWM 智能控制器ML 4428及其應用 載《國外電子元器件》 1998年第5期 [4] 蘇震 《現(xiàn)代傳感技術—原理、方法與接口電路》北京:電子工業(yè)出版社 2011 [5] 于金霞 王璐 蔡自興 《未知環(huán)境中移動機器人自定位技術》北京:電子工業(yè)出版社 2011 [6] 趙建領 弓雷 《51系列單片機開發(fā)寶典》北京:電子工業(yè)出版社 2012 第2版 [7] 王允上 《學用單片機制作機器人》 北京:科學出版社 2011 [8] 徐德 鄒偉 《室內移動式服務機器人的感知、定位與控制》 北京:科學出版社 2008 [9] 陳永真 寧武 藍和慧 《新編全國大學生電子設計競賽試題精解選》 北京:電子工業(yè)出版社 2009 [10] 馬廣云 潘琢金 彭甫陽譯 《英漢雙解嵌入式系統(tǒng)字典》北京:北京航空航天大學出版社 2006 [11] 陳賾 鄒道勝 《電子創(chuàng)新設計技術》 北京:科學出版社 2008 [12] 吳國慶 王格芳 郭陽寬 《現(xiàn)代測控技術及應用》 北京:電子工業(yè)出版社 2007 [13] 譚民 徐德 侯增廣 王碩 曹志強 《先進機器人控制》 北京:高等教育出版社 2007 [14] 何社成 袁躍進 《電機光電顯示改進應用電路》濟南:山東科學技術出版社 2007 [15] R西格沃特 IR諾巴克什 《自主移動機器人導論》 西安:西安交通大學出版社 2006 [16] 陳繼榮 《智能電子創(chuàng)新制作——機器人制作入門》 北京:科學出版社 2007 [17] 李全利 《單片機原理及接口技術》 北京:高等教育出版社 2009 第2版 [18] 求是科技 《8051系列單片機C程序設計完全手冊》 北京:人民郵電出版社 2006 [19] 沈紅衛(wèi) 《基于單片機的智能系統(tǒng)設計與實現(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 致 謝 經過幾個月的忙碌,我的畢業(yè)設計課題也終于告一段落。在本次設計中,我很感謝我的指導老師,感謝她在我設計過程中給予我的一系列幫助和指導,感謝她對我的嚴格要求,才讓我的設計順利完成。我也要感謝電氣工程學院的各位領導和老師,感謝他們四年來對我的關心和培養(yǎng),感謝他們對于我學習生活上給予的幫助。還要感謝我班級同學和舍友,感謝他們四年來對我提供的幫助、支持和鼓勵。 大學即將過去了,在這四年里,我們有過歡樂,有過悲傷,我們付出過,也收獲過。在即將離去之際,我可以對我的大學生活自豪的說一句,我來過,我無悔。 附 錄1: 系統(tǒng)電路圖 附 錄2: 源程序 #include= 10) //10次之后就確定尋跡模塊的中間傳感器到黑線上了 { if(dat == L) //如果是左轉90度就讓右轉的方法制動 right_s(); else left_s(); //如果是右轉90度就讓左轉的方法制動 delay_10ms(5); go(); break; //break退出while(1)這個死循環(huán) } } else //沒有在黑錢上就給i_z變量清零 { i_z = 0; } } } /***********************小車左轉90度************************/ void left_s_90_while() //小車向左轉90度 { go(); //前進一小會讓小車轉90度時剛好讓黑線在小車的中間 delay_10ms(12); left_s(); //左轉90度注意這個延時不能太長 只要能讓尋跡模塊中間的傳感離開黑線就好 delay_10ms(18); che_90_180_break(L); } /***********************小車向右轉90度************************/ void right_s_90_while() // { go(); //前進一小會讓小車轉90度時剛好讓黑線在小車的中間 delay_10ms(12); right_s(); //左轉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(); //小車右轉 } 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(); //小車左轉 } 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(); //小車右轉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(); //小車左轉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; //關定時器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; //關定時器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
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 51 單片機 小車 循跡避障 系統(tǒng)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://appdesigncorp.com/p-6718934.html