智能循跡避障小車控制系統(tǒng)設(shè)計(jì)最終版_第1頁
智能循跡避障小車控制系統(tǒng)設(shè)計(jì)最終版_第2頁
智能循跡避障小車控制系統(tǒng)設(shè)計(jì)最終版_第3頁
智能循跡避障小車控制系統(tǒng)設(shè)計(jì)最終版_第4頁
智能循跡避障小車控制系統(tǒng)設(shè)計(jì)最終版_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

上海大學(xué)2016~2017學(xué)年秋季學(xué)期研究生課程考試課程名稱:微機(jī)接口技術(shù)與數(shù)字控制課程編號(hào):09Z077005論文題目:基于STC89C52單片機(jī)自動(dòng)避障循跡小車控制系統(tǒng)的設(shè)計(jì)研究生姓名:肖青峰、徐鵬、付頂峰學(xué)號(hào):16721678論文評(píng)語:成績(jī):任課教師:沈林勇評(píng)閱日期:基于STC89C52單片機(jī)自動(dòng)避障循跡小車控制系統(tǒng)設(shè)計(jì)肖青峰、徐鵬、付頂峰上海大學(xué)機(jī)電工程與自動(dòng)化學(xué)院,上海200072摘要:本設(shè)計(jì)是基于STC89C52單片機(jī)的自動(dòng)循跡避障小車的控制系統(tǒng)設(shè)計(jì)。利用紅外對(duì)管檢測(cè)黑線與障礙物,并以STC89C52單片機(jī)為控制芯片控制電動(dòng)小汽車的速度及轉(zhuǎn)向,從而實(shí)現(xiàn)自動(dòng)循跡避障的功能。其中小車驅(qū)動(dòng)由L298N驅(qū)動(dòng)電路完成,速度由單片機(jī)輸出的PWM波控制。關(guān)鍵詞:循跡避障小車;STC89C52單片機(jī);紅外對(duì)管;pwm調(diào)速1設(shè)計(jì)目標(biāo)和任務(wù)制定隨著社會(huì)水平提高與電子商務(wù)的快速開展,大型化集成化商品多元化的倉儲(chǔ)集散中心應(yīng)運(yùn)而生。這些倉庫通常面積巨大,〔有的可達(dá)上萬平方米,〕并且物品種類繁多,倉儲(chǔ)流量大,可是當(dāng)前大多數(shù)倉儲(chǔ)中心依舊采用傳統(tǒng)的人工管理,工人管理工作繁瑣且工作效率低下,綜上所述,現(xiàn)代倉儲(chǔ)業(yè)正面臨著開展瓶頸,制約著倉儲(chǔ)行業(yè)的進(jìn)一步開展。如果有一種智能倉儲(chǔ),使得我們能夠在實(shí)際的物流活動(dòng)中提高倉儲(chǔ)的效率,減少倉儲(chǔ)的人力資源本錢和倉庫的直接本錢,解決絕對(duì)人力不能滿足大型物流中心運(yùn)作的情況,那么我們的倉儲(chǔ)行業(yè)又能向前邁進(jìn)一個(gè)新階。因此,基于上訴當(dāng)前倉管配貨工作的任務(wù)繁忙,減小倉管員工作量,提高倉儲(chǔ)管理工作效率,我們決定制作一智能避障循跡小車,用于倉庫不同貨架間貨物的自動(dòng)配送。我們的小車能實(shí)現(xiàn)循跡移動(dòng),在不同工作點(diǎn)之間穿梭。借助我們的小車,倉管員只需輕松輸入目標(biāo)代碼,就可以實(shí)現(xiàn)將貨物自動(dòng)送達(dá)目標(biāo)貨架或者將不同貨架的貨物收集到配送點(diǎn)。同時(shí)為了防止小車在行進(jìn)過程中撞擊到人員、貨物或者貨架等障礙物,我們的小車具有自動(dòng)避障和自動(dòng)停車功能。2設(shè)計(jì)方案的擬定2.1整體系統(tǒng)設(shè)計(jì)該整個(gè)系統(tǒng)由控制模塊、光電傳感器檢測(cè)模塊、電源模塊、電機(jī)及驅(qū)動(dòng)模塊等子模塊組成。如框圖所示:復(fù)位電路復(fù)位電路電機(jī)驅(qū)動(dòng)模塊電機(jī)電機(jī)驅(qū)動(dòng)模塊電機(jī)控制模塊STC89C52單片機(jī)循跡檢測(cè)模塊兩個(gè)光電傳感器循跡檢測(cè)模塊兩個(gè)光電傳感器障礙物檢測(cè)模塊兩個(gè)光電傳感器電源模塊7805穩(wěn)壓管障礙物檢測(cè)模塊兩個(gè)光電傳感器電源模塊7805穩(wěn)壓管時(shí)鐘電路時(shí)鐘電路2.2控制模塊設(shè)計(jì)針對(duì)本設(shè)計(jì)特點(diǎn)——多開關(guān)量輸入的復(fù)雜程序控制系統(tǒng),需要擅長(zhǎng)處理多開關(guān)量的標(biāo)準(zhǔn)單片機(jī),而不能用精簡(jiǎn)I/O口和程序存儲(chǔ)器的小體積單片機(jī),D/A、A/D功能也不必選用。根據(jù)這些分析,我選定了STC89C52單片機(jī)作為本設(shè)計(jì)的主控裝置,52單片機(jī)具有功能強(qiáng)大的位操作指令,I/O口均可按位尋址,并具有如下性能優(yōu)點(diǎn):〔1〕微處理器該單片機(jī)中有一個(gè)8位的微處理器,與通用的微處理器根本相同,同樣包括了運(yùn)算器和控制器兩大局部,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理?!?〕數(shù)據(jù)存儲(chǔ)器片內(nèi)為128個(gè)字節(jié),片外最多可外擴(kuò)至64k字節(jié),用來存儲(chǔ)程序在運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,所以稱為數(shù)據(jù)存儲(chǔ)器?!?〕程序存儲(chǔ)器由于受集成度限制,片內(nèi)只讀存儲(chǔ)器一般容量較小,如果片內(nèi)的只讀存儲(chǔ)器的容量不夠,那么需用擴(kuò)展片外的只讀存儲(chǔ)器,片外最多可外擴(kuò)至64k字節(jié)。〔4〕中斷系統(tǒng)具有5個(gè)中斷源,2級(jí)中斷優(yōu)先權(quán)?!?〕定時(shí)器/計(jì)數(shù)器片內(nèi)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器,具有四種工作方式?!?〕串行口1個(gè)全雙工的串行口,具有四種工作方式??捎脕磉M(jìn)行串行通訊,擴(kuò)展并行I/O口,甚至與多個(gè)單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。(7)P0口、P1口、P2口、P3口為4個(gè)并行8位I/O口。(8)特殊功能存放器共有21個(gè),用于對(duì)片內(nèi)的個(gè)功能的部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制存放器和狀態(tài)存放器,是一個(gè)具有特殊功能的RAM區(qū)。由上可見,STC89C52單片機(jī)的硬件結(jié)構(gòu)具有功能部件種類全,功能強(qiáng)等特點(diǎn)。特別值得一提的是該單片機(jī)CPU中的位處理器,它實(shí)際上是一個(gè)完整的1位微計(jì)算機(jī),這個(gè)一位微計(jì)算機(jī)有自己的CPU、位存放器、I/O口和指令集。1位機(jī)在開關(guān)決策、邏輯電路仿真、過程控制方面非常有效;而8位機(jī)在數(shù)據(jù)采集,運(yùn)算處理方面有明顯的長(zhǎng)處。對(duì)于本設(shè)計(jì)該單片機(jī)綽綽有余,更可貴的是52單片機(jī)價(jià)格非常低廉。STC89C52引腳圖2.3光電傳感檢測(cè)模塊循跡方案設(shè)計(jì):方案一:采用攝像頭循跡法:利用攝像頭對(duì)賽道提取信息,分有數(shù)字式和模擬式。方案二:紅外對(duì)管循跡法:利用黑白色對(duì)紅外線的吸收作用不同,其由發(fā)射管和接收管配對(duì)組成,發(fā)射管發(fā)射出紅外線,當(dāng)發(fā)射到黑色軌道時(shí),被黑色軌道所吸收,當(dāng)發(fā)射到白色跑道外時(shí),會(huì)發(fā)射回來,接收管接收到光線信號(hào),產(chǎn)生一電壓信號(hào)給單片機(jī),從而實(shí)現(xiàn)對(duì)軌跡信息的讀取。方案三:激光管循跡法:其循跡原理與紅外對(duì)管相同,不同的是其測(cè)距比擬遠(yuǎn)。綜上所述,又考慮到本錢的原因,本次設(shè)計(jì)采用紅外對(duì)管循跡法。采用脈沖調(diào)制的反射式紅外發(fā)射接收器。由于采用帶有交流分量的調(diào)制信號(hào),那么可大幅度減少外界的干擾;此外紅外發(fā)射接收管的工作電流取決于平均電流,如果采用占空比小的調(diào)制信號(hào),在平均電流不變的情況下,瞬時(shí)電流很大〔50~100mA〕〔ST-188允許的最大輸入電流為50mA〕,那么大大提高了信噪比。避障方案設(shè)計(jì):方案一:紅外線避障。方案二:超聲波避障。本次設(shè)計(jì)本打算利用兩種方案混合使用,但是由于后期制作過程中,超聲波模塊損壞,只能使用紅外線避障。其也是由發(fā)射管和接收管組成,工作原理與循跡的相同,發(fā)射管發(fā)出紅外線,當(dāng)遇到障礙物時(shí)就會(huì)反射回來,接收管接收到反射的信號(hào)就會(huì)產(chǎn)生一電壓信號(hào)給單片機(jī),從而實(shí)現(xiàn)對(duì)障礙物的檢測(cè)。紅外線傳感器模塊實(shí)物圖2.4電源模塊電源模塊,用9V的鋅電源給前、后輪電機(jī)供電,然后使用7805穩(wěn)壓管來把高電壓穩(wěn)成5V分別給單片機(jī)和電機(jī)驅(qū)動(dòng)芯片供電。7805電源模塊2.4電機(jī)及電機(jī)驅(qū)動(dòng)模塊電機(jī)方案的選擇:方案一:采用直流電機(jī),優(yōu)點(diǎn)在于硬件電路設(shè)計(jì)簡(jiǎn)單。當(dāng)外加額定直流電壓時(shí),轉(zhuǎn)速幾乎相等,調(diào)速性能較好,且性價(jià)比高。對(duì)于小車的行駛,能夠很好的控制。方案二:采用步進(jìn)電機(jī),步進(jìn)電機(jī)可以實(shí)現(xiàn)精確的轉(zhuǎn)角輸出,只要施加適宜的脈沖序列,電機(jī)可以按照人們的預(yù)定的速度或方向進(jìn)行連續(xù)的轉(zhuǎn)動(dòng),便于控速,但是軟件程序的編寫較直流電機(jī)稍顯復(fù)雜。表2.1電機(jī)性能比照表比照項(xiàng)直流電機(jī)步進(jìn)電機(jī)調(diào)速性能較好較差位置控制精度較差好控制難易程度簡(jiǎn)單較難價(jià)格低中綜合考慮,本智能車決定采用直流電機(jī)作為只能車的動(dòng)力電機(jī)。電機(jī)采用直流減速電機(jī),直流減速電機(jī)轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝配簡(jiǎn)單,使用方便。由于其內(nèi)部由高速電動(dòng)機(jī)提供原始動(dòng)力,帶動(dòng)變速〔減速〕齒輪組,可以產(chǎn)生較大扭力。可選用減速比為1:74的直流電機(jī),減速后電機(jī)的轉(zhuǎn)速為100r/min。假設(shè)車輪直徑為6cm,那么小車的最大速度可以到達(dá)0.314m/s能夠較好的滿足系統(tǒng)的要求。以下圖為電機(jī)的實(shí)物圖直流減速電機(jī)電機(jī)驅(qū)動(dòng)方案的選擇:方案一:采用繼電器對(duì)電動(dòng)機(jī)的開或關(guān)進(jìn)行控制,通過開關(guān)的切換對(duì)小車的速度進(jìn)行調(diào)整.此方案的優(yōu)點(diǎn)是電路較為簡(jiǎn)單,缺點(diǎn)是繼電器的響應(yīng)時(shí)間慢,易損壞,壽命較短,可靠性不高。方案二:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)節(jié)電動(dòng)機(jī)的分壓,從而到達(dá)分壓的目的。但電阻網(wǎng)絡(luò)只能實(shí)現(xiàn)有級(jí)調(diào)速,而數(shù)字電阻的元器件價(jià)格比擬昂貴。更主要的問題在于一般的電動(dòng)機(jī)電阻很小,但電流很大,分壓不僅回降低效率,而且實(shí)現(xiàn)很困難。方案三:采用功率三極管作為功率放大器的輸出控制直流電機(jī)。線性型驅(qū)動(dòng)的電路結(jié)構(gòu)和原理簡(jiǎn)單,加速能力強(qiáng),采用由達(dá)林頓管組成的H型橋式電路(如圖2.1)。用單片機(jī)控制達(dá)林頓管使之工作在占空比可調(diào)的開關(guān)狀態(tài)下,精確調(diào)整電動(dòng)機(jī)轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,效率非常高,H型橋式電路保證了簡(jiǎn)單的實(shí)現(xiàn)轉(zhuǎn)速和方向的控制,電子管的開關(guān)速度很快,穩(wěn)定性也極強(qiáng),是一種廣泛采用的PWM調(diào)速技術(shù)?,F(xiàn)市面上有很多此種芯片,我選用了L293專用驅(qū)動(dòng)器。所用芯片L293屬于H橋集成電路,其輸出電流為1000mA,最高電流2A,最高工作電壓36V,可以驅(qū)動(dòng)感性負(fù)載,特別是其輸入端可以與單片機(jī)直接相聯(lián),從而很方便地受單片機(jī)控制。當(dāng)驅(qū)動(dòng)小型直流電機(jī)時(shí),可以直接控制兩路電機(jī),并可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),實(shí)現(xiàn)此功能只需改變輸入端的邏輯電平。本模塊具有體積小,控制方便的特點(diǎn)。采用此模塊定會(huì)使您的電機(jī)控制自如,應(yīng)對(duì)小車題目輕松自如。L293D電機(jī)驅(qū)動(dòng)模塊電機(jī)調(diào)速系統(tǒng)的設(shè)計(jì):方案一:串電阻調(diào)速系統(tǒng)。方案二:靜止可控整流器。簡(jiǎn)稱V-M系統(tǒng)。方案三:脈寬調(diào)速系統(tǒng)。旋轉(zhuǎn)變流系統(tǒng)由交流發(fā)電機(jī)拖動(dòng)直流電動(dòng)機(jī)實(shí)現(xiàn)變流,由發(fā)電機(jī)給需要調(diào)速的直流電動(dòng)機(jī)供電,調(diào)節(jié)發(fā)電機(jī)的勵(lì)磁電流即可改變其輸出電壓,從而調(diào)節(jié)電動(dòng)機(jī)的轉(zhuǎn)速。改變勵(lì)磁電流的方向那么輸出電壓的極性和電動(dòng)機(jī)的轉(zhuǎn)向都隨著改變,所以G-M系統(tǒng)的可逆運(yùn)行是很容易實(shí)現(xiàn)的。該系統(tǒng)需要旋轉(zhuǎn)變流機(jī)組,至少包含兩臺(tái)與調(diào)速電動(dòng)機(jī)容量相當(dāng)?shù)男D(zhuǎn)電機(jī),還要一臺(tái)勵(lì)磁發(fā)電機(jī),設(shè)備多、體積大、費(fèi)用高、效率低、維護(hù)不方便等缺點(diǎn)。且技術(shù)落后,因此擱置不用。V-M系統(tǒng)是當(dāng)今直流調(diào)速系統(tǒng)的主要形式。它可以是單相、三相或更多相數(shù),半波、全波、半控、全控等類型,可實(shí)現(xiàn)平滑調(diào)速。V-M系統(tǒng)的缺點(diǎn)是晶閘管的單向?qū)щ娦?,它不允許電流反向,給系統(tǒng)的可逆運(yùn)行造成困難。它的另一個(gè)缺點(diǎn)是運(yùn)行條件要求高,維護(hù)運(yùn)行麻煩。最后,當(dāng)系統(tǒng)處于低速運(yùn)行時(shí),系統(tǒng)的功率因數(shù)很低,并產(chǎn)生較大的諧波電流危害附近的用電設(shè)備。PWM調(diào)速系統(tǒng):其實(shí)現(xiàn)方式有兩種,一是采用晶閘管的直流斬波器根本原理,將晶閘管處在開關(guān)狀態(tài),當(dāng)晶閘管被觸發(fā)導(dǎo)通時(shí),電源電壓加到電機(jī)上,當(dāng)晶閘管關(guān)斷時(shí),直流電源與電機(jī)斷開,電動(dòng)機(jī)經(jīng)二極管續(xù)流,兩端電壓接近于零,脈沖周期不變,只改變晶閘管的導(dǎo)通時(shí)間,即通過改變脈沖寬度來進(jìn)行直流調(diào)速;二是利用軟件方式實(shí)現(xiàn),采用兩個(gè)定時(shí)器,其中一個(gè)用來控制脈沖頻率,另一個(gè)控制占空比,這種實(shí)現(xiàn)方式快捷且有效。與V-M系統(tǒng)相比,PWM調(diào)速系統(tǒng)有以下優(yōu)點(diǎn):〔1〕由于PWM調(diào)速系統(tǒng)的開關(guān)頻率較高,僅靠電樞電感的濾波作用就可以獲得脈動(dòng)很小的直流電流,電樞電流容易連續(xù),系統(tǒng)的低速運(yùn)行平穩(wěn),調(diào)速范圍較寬,可達(dá)1:10000左右。由于電流波形比V-M系統(tǒng)好,在相同的平均電流下,電動(dòng)機(jī)的損耗和發(fā)熱都比擬小。〔2〕同樣由于開關(guān)頻率高,假設(shè)與快速響應(yīng)的電機(jī)相配合,系統(tǒng)可以獲得很寬的頻帶,因此快速響應(yīng)性能好,動(dòng)態(tài)抗擾能力強(qiáng)。〔3〕由于電力電子器件只工作在開關(guān)狀態(tài),主電路損耗較小,裝置效率較高。根據(jù)以上綜合比擬,以及本設(shè)計(jì)中受控電機(jī)的容量和直流電機(jī)調(diào)速的開展方向,本設(shè)計(jì)采用了采用了程序的方法實(shí)現(xiàn)PWM脈沖寬度調(diào)試。3硬件系統(tǒng)的設(shè)計(jì)3.1總體設(shè)計(jì)智能小車采用前輪驅(qū)動(dòng),前輪左右兩邊各用一個(gè)電機(jī)驅(qū)動(dòng),調(diào)制前面兩個(gè)輪子的轉(zhuǎn)速起停從而到達(dá)控制轉(zhuǎn)向的目的,后輪是萬象輪,起支撐的作用。將循跡光電對(duì)管分別裝在車體下的左右。當(dāng)車身下左邊的傳感器檢測(cè)到黑線時(shí),主控芯片控制左輪電機(jī)停止,車向左修正,當(dāng)車身下右邊傳感器檢測(cè)到黑線時(shí),主控芯片控制右輪電機(jī)停止,車向右修正。避障的原理和循線一樣,在車身右邊裝一個(gè)光電對(duì)管,當(dāng)其檢測(cè)到障礙物時(shí),主控芯片給出信號(hào)報(bào)警并控制車子倒退,轉(zhuǎn)向,從而避開障礙物。表3.1元件清單元件數(shù)量元件數(shù)量元件數(shù)量直流電機(jī)2只電阻假設(shè)干集成電路芯片假設(shè)干單片機(jī)1塊二極管假設(shè)干電容假設(shè)干紅外對(duì)管3只蜂鳴器1只電位器假設(shè)干12M晶振1只杜邦線假設(shè)干玩具小車1個(gè)排針假設(shè)干3.2光電傳感檢測(cè)模塊采用四路紅外對(duì)管傳感器,其中兩路置于小車中間,用于循跡檢測(cè),另外兩路用于避障信號(hào)檢測(cè),置于小車兩側(cè)。其工作原理如下:小車循跡原理是小車在畫有黑線的白紙“路面”上行駛,由于黑線和白紙對(duì)光線的反射系數(shù)不同,可根據(jù)接收到的反射光的強(qiáng)弱來判斷“道路”—黑線。筆者在該模塊中利用了簡(jiǎn)單、應(yīng)用也比擬普遍的檢測(cè)方法——紅外探測(cè)法。紅外探測(cè)法,即利用紅外線在不同顏色的物理外表具有不同的反射性質(zhì)的特點(diǎn)。在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色地面時(shí)發(fā)生漫發(fā)射,反射光被裝在小車上的接收管接收;如果遇到黑線那么紅外光被吸收,那么小車上的接收管接收不到信號(hào),再通過LM324作比擬器來采集上下電平,從而實(shí)現(xiàn)信號(hào)的檢測(cè)。避障亦是此原理。電路圖如圖,我們將其接于單片機(jī)P3口。3.3電源模塊電路設(shè)計(jì)采用7805穩(wěn)壓模塊為系統(tǒng)提供5V的穩(wěn)定電壓,并設(shè)計(jì)有電源指示二極管,用以提示電源是否供電正常。3.4電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)電機(jī)驅(qū)動(dòng)模塊采用專用驅(qū)動(dòng)器L293D,所用芯片L293屬于H橋集成電路,其輸出電流為1000mA,最高電流2A,最高工作電壓36V,可以驅(qū)動(dòng)感性負(fù)載,特別是其輸入端可以與單片機(jī)直接相聯(lián),從而很方便地受單片機(jī)控制。其工作電路如以下圖所示,其中EN1、EN2為左右電機(jī)使能端,IN1、IN2、IN3、IN4為電機(jī)正反轉(zhuǎn)引腳端,它們分別與P1口各引腳相連。3.5主控電路主控電路復(fù)位電路的設(shè)計(jì),采用上拉電復(fù)位,設(shè)計(jì)有按鈕,按下即可實(shí)現(xiàn)復(fù)位。復(fù)位電路時(shí)鐘電路的設(shè)計(jì),采用DS1302時(shí)鐘模塊,接于單片機(jī)P2.0和P2.1口。蜂鳴器電路,接于單片機(jī)P2.3口4軟件系統(tǒng)的設(shè)計(jì)4.1A主程序的設(shè)計(jì)A開始開始蜂鳴器嘀的一聲初始化SP、標(biāo)志位、內(nèi)部蜂鳴器嘀的一聲初始化SP、標(biāo)志位、內(nèi)部RAM啟動(dòng)定時(shí)器T0啟動(dòng)定時(shí)器T0定時(shí)器初始化定時(shí)器初始化初始化電機(jī)顯示初始化顯示子程序顯示子程序LOOPi=0LOOPi=0是否啟動(dòng)小車否是否啟動(dòng)小車i<50i<50否是判斷左側(cè)是否有障礙物否判斷左側(cè)是否有障礙物判斷右側(cè)是否有障礙物判斷P3.7是否按下是是判斷右側(cè)是否有障礙物判斷P3.7是否按下停車、報(bào)警、降速、后退否是停車、報(bào)警、降速、后退停車、報(bào)警降速、后退是停車、報(bào)警降速、后退是右轉(zhuǎn)、直行i++右轉(zhuǎn)、直行i++左轉(zhuǎn)、直行左轉(zhuǎn)、直行判斷是否有障礙物判斷是否有障礙物是是判斷是否有障礙物判斷是否有障礙物A否A左轉(zhuǎn)、直行否左轉(zhuǎn)、直行右轉(zhuǎn)、直行否右轉(zhuǎn)、直行是否有軌跡否否是否有軌跡是否有軌跡是否有軌跡是B是BBB循跡子程序循跡子程序是否有停車信號(hào)是否有停車信號(hào)否LOOPLOOP停車是停車主程序流程圖如主程序流程框圖所示,主程序主包括了系統(tǒng)的初始化,小車的啟動(dòng),和循跡避障動(dòng)作實(shí)現(xiàn)程序。這里需要說明一點(diǎn):之所以將避障程序放在主程序內(nèi)而將循跡作為一子程序這樣設(shè)計(jì),一是為了方便實(shí)現(xiàn)小車在自動(dòng)循跡的根底上實(shí)現(xiàn)自動(dòng)避障并能夠在避障后自動(dòng)找回軌跡繼續(xù)循跡移動(dòng);二是實(shí)現(xiàn)程序模塊化,以便以后再開發(fā)。具體算法思路是小車啟動(dòng)后,首先判斷軌跡前方有無障礙物。無障礙物時(shí)直接執(zhí)行循跡移動(dòng)。有障礙物時(shí),判斷是那一側(cè)有障礙物,然后根據(jù)傳感器采集的障礙物信息作出指令,比方右側(cè)有障礙物時(shí),先執(zhí)行停止、報(bào)警、降速、后退等指令,其次先左轉(zhuǎn)再直行···左轉(zhuǎn)、直行直至繞開障礙物,然后右轉(zhuǎn)、直行再右轉(zhuǎn)、直行直至重新回到軌跡上,循跡移動(dòng)。左側(cè)或者前方有障礙物時(shí)程序算法類似于前者,不同在于執(zhí)行的動(dòng)作順序不同。在程序的最后又補(bǔ)充添加了一紅外遙控控制,以方便人為地控制隨時(shí)停車。詳細(xì)程序設(shè)計(jì)如下:#include<AT89X52.H>#defineucharunsignedchar#defineuintunsignedintsbitIN1=P1^2;//定義電機(jī)驅(qū)動(dòng)控制引腳sbitIN2=P1^3;sbitIN3=P1^6;sbitIN4=P1^7;sbitEN1=P1^4;sbitEN2=P1^5;sbitBUZZ=P2^3;//定義蜂鳴器接線sbitDU=P2^6; //定義顯示控制引腳sbitWE=P2^7;#defineleft_xP3_4//傳感器引腳 #defineright_xP3_3 #defineleft_bP3_6#defineright_bP3_5#defineleft_moto_pwm P1_4 //PWM信號(hào)端#defineright_moto_pwm P1_5 unsignedintpwmsd;//定義pwm轉(zhuǎn)速變量unsignedintcount;unsignedinti;unsignedchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fvoiddelay_nms(unsignedintn)//延時(shí)nms{unsignedinti,j;for(i=0;i<n;i++){for(j=0;j<125;j++){}}}voidmingdi(void)//蜂鳴器嘀的一聲響{BUZZ=0;delay_nms(50);BUZZ=1;}voiddisp(unsignedintj)voidqianjin(void)//前進(jìn)voidturnleft(void)//左轉(zhuǎn)voidturnright(void)//右轉(zhuǎn)voidhoutui(void)//后退voidstop(void)//停止voidtimer0_Int()interrupt1//定時(shí)器中斷voidTimer1_Int()interrupt2voidxunji(void)voidmain(void){ P0=0X00;//關(guān)數(shù)碼管P1=0XF0;//關(guān)電機(jī) B:for(i=0;i<50;i++)//判斷啟動(dòng)開關(guān)是否按下{ delay_nms(1); if(P3_7!=1) gotoB; }mingdi();//啟動(dòng)小車,鳴笛 pwmsd=6; //設(shè)置初速度TMOD=0X11;TH0=0Xfc; //1ms定時(shí)TL0=0X18;TR0=1;ET0=1;EA=1; //開總中斷TH1=0xff;//0.5ms定時(shí)TL1=0xce;ET1=0;TR1=0;while(1) //無限循環(huán) { disp(pwmsd);//調(diào)顯示 if(left_b==1)//判斷左面是否有障礙物{ if(right_b==1)//判斷右面是否有障礙物 { xunji();//兩面都沒有障礙物,繼續(xù)循跡移動(dòng) } else { stop();//右面有障礙物,先停車delay_nms(1000);mingdi();//再報(bào)警delay_nms(50);mingdi();houtui();//其次后退 delay_nms(500) ; pwmsd=3;//降速do//左轉(zhuǎn)、直行、左轉(zhuǎn)、直行····直到?jīng)]有障礙物;{turnleft(); delay_nms(100); qianjin();delay_nms(500); }while(left_b&&right_b==1);do//繞開障礙物后,右轉(zhuǎn)、直行、右轉(zhuǎn)、直行··· {//直到找到軌道;turnright(); delay_nms(100); qianjin();delay_nms(500); }while(left_x==0||right_x==0); xunji();//繼續(xù)循跡移動(dòng); } } else//左側(cè)有障礙物; { stop();//先停車,delay_nms(1000);mingdi();//再報(bào)警;delay_nms(50);mingdi();houtui();//其次后退; delay_nms(500) ; pwmsd=3;//降速, do//右轉(zhuǎn)、直行···直到繞開障礙物, {turnright(); delay_nms(100); qianjin();delay_nms(500); }while(left_b||right_b==1); do//繞開障礙物后,左轉(zhuǎn)、直行···直到找到軌跡; {turnleft(); delay_nms(100) ; qianjin();delay_nms(500); }while(left_x||right_x==0); xunji(); //繼續(xù)循跡移動(dòng); } }} 4.2循跡子程序的設(shè)計(jì)循跡子程序流程圖:開始開始判斷傳感器狀態(tài)判斷傳感器狀態(tài)L:1;R:0L:1;R:1L:0;R:1L:1;R:0L:1;R:1L:0;R:1左轉(zhuǎn)右轉(zhuǎn)直行左轉(zhuǎn)右轉(zhuǎn)直行循跡子程序流程圖根據(jù)前一節(jié)介紹的紅外對(duì)管循跡原理,設(shè)計(jì)了如上圖所示的循跡算法,首先判斷兩路循跡傳感器的狀態(tài),根據(jù)傳感器狀態(tài)做出相應(yīng)的指令,驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),以實(shí)現(xiàn)小車循跡移動(dòng)。根本設(shè)計(jì)如下:當(dāng)左右循跡傳感器狀態(tài)為1、1時(shí),即未偏出軌跡,直行移動(dòng);當(dāng)傳感器狀態(tài)為0、1時(shí),左側(cè)偏出,微右轉(zhuǎn);當(dāng)傳感器狀態(tài)為1、0時(shí),右側(cè)偏出,微左轉(zhuǎn);當(dāng)傳感器狀態(tài)為0、0時(shí),兩側(cè)均偏出,但是為了保障主程序能夠自我找回軌跡,而不對(duì)其運(yùn)行造成指令干擾,這里就將這一狀態(tài)給屏蔽,不將其視為控制狀態(tài)信息。詳細(xì)程序設(shè)計(jì)如下:voidxunji(void){ if(left_x==1&&right_x==1){ qianjin();//調(diào)用前進(jìn)函數(shù) delay_nms(20);}if(left_x==0&&right_x==1) //左邊檢測(cè)到黑線{ turnright(); //調(diào)用小車右轉(zhuǎn)函數(shù) delay_nms(20);}if(right_x==0&&left_x==1) //右邊檢測(cè)到黑線{ turnleft(); //調(diào)用小車左轉(zhuǎn)函數(shù) delay_nms(20);}}4.3電機(jī)驅(qū)動(dòng)子程序的設(shè)計(jì)電機(jī)動(dòng)作實(shí)現(xiàn),前進(jìn):左電機(jī)往前轉(zhuǎn),右電機(jī)往前轉(zhuǎn);左轉(zhuǎn):左電機(jī)往后轉(zhuǎn),右電機(jī)往前轉(zhuǎn);右轉(zhuǎn):左電機(jī)往前轉(zhuǎn),右電機(jī)往后轉(zhuǎn);后退:左右電機(jī)都往后轉(zhuǎn);停止:電機(jī)使能端為零。具體程序設(shè)計(jì)如下:voidqianjin(void)//前進(jìn){IN1=1;IN2=0;IN3=1;IN4=0;}voidturnleft(void)//左轉(zhuǎn){IN1=0;IN2=1;IN3=1;IN4=0;}voidturnright(void)//右轉(zhuǎn){IN1=1;IN2=0;IN3=0;IN4=1;}voidhoutui(void)//后退{(lán)IN1=0;IN2=1;IN3=0;IN4=1;}voidstop(void)//停止{EN1=0;EN2=0;}4.4中斷子程序的設(shè)計(jì)設(shè)有兩個(gè)定時(shí)器中斷T0、T1,用來實(shí)現(xiàn)電機(jī)的PWM調(diào)速,其中定時(shí)器T0用于控制頻率,定時(shí)器T1用于控制占空比。具體思路是T0中斷讓一個(gè)IO口輸出高電平,并在這個(gè)T0中斷中啟動(dòng)定時(shí)器T1,T1中斷讓這個(gè)IO口輸出低電平,這樣改變定時(shí)器T0的初值就可以改變頻率,改變定時(shí)器T1的初值就可以改變占空比。詳見如下流程圖:開始開始開始開始T1重置初值T0重置初值T1重置初值T0重置初值清零count清零countcount++count++count<number啟動(dòng)定時(shí)器T1是count<number啟動(dòng)定時(shí)器T1PWM=0PWM=1否PWM=0PWM=1返回返回返回返回T0中斷流程圖T1中斷流程圖根據(jù)上述流程圖設(shè)計(jì)程序如下voidtimer0_Int()interrupt1{TH0=0xfc;//定時(shí)1msTL0=0x18;count=0; //清零脈沖計(jì)數(shù)ET1=1; //啟動(dòng)定時(shí)器T1TR1=1;left_moto_pwm=1; //電機(jī)使能端置1right_moto_pwm=1;}voidTimer1_Int()interrupt2{TH1=0xff;//定時(shí)0.05msTL1=0xce;count++;if(count>=pwmsd) //與設(shè)定轉(zhuǎn)速〔占空比〕比擬{left_moto_pwm=0; //電機(jī)使能端清0right_moto_pwm=0;}}4.5顯示子程序的設(shè)計(jì)這里只使用一個(gè)數(shù)碼管,用以顯示轉(zhuǎn)速,子程序設(shè)計(jì)如下:unsignedchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fvoiddisp(unsignedintj){DU=1;:P0=table[j];DU=0;WE=1;P0=0xff;WE=0;}5制作安裝與調(diào)試5.1小車的制作與安裝采用DXP2004繪制原理圖與PCB板,布線的過程中必須注意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論