智能小車設(shè)計(jì)方案報(bào)告_第1頁(yè)
智能小車設(shè)計(jì)方案報(bào)告_第2頁(yè)
智能小車設(shè)計(jì)方案報(bào)告_第3頁(yè)
智能小車設(shè)計(jì)方案報(bào)告_第4頁(yè)
智能小車設(shè)計(jì)方案報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要自主反響式智能系統(tǒng)是一種應(yīng)用廣泛的控制系統(tǒng)。對(duì)電路的分析和驗(yàn)證工作依靠智能化來(lái)完成,效率高。因此它的研究與開發(fā)是一項(xiàng)非常有意義的工作。本小車以MSP430超低功耗單片機(jī)為核心,在SHARK二型小車的根底上研究小車避障尋跡的設(shè)計(jì)和實(shí)現(xiàn)方法,完成障礙檢測(cè)、避障、尋跡功能。充分運(yùn)用了430單片機(jī)的功能。本論文介紹了智能小車的機(jī)械結(jié)構(gòu)及相應(yīng)的硬件電路和實(shí)現(xiàn)算法。在機(jī)械結(jié)構(gòu)上,對(duì)普通的小車作了改良,即用一個(gè)萬(wàn)用輪來(lái)代替兩個(gè)前輪,使小車的轉(zhuǎn)向更加靈敏。利用反射式紅外傳感器來(lái)尋跡、紅外一體化接收頭來(lái)檢測(cè)障礙物的位置,通過改變單片機(jī)產(chǎn)生的PWM方波的占空比,使其能在設(shè)計(jì)范圍內(nèi)可實(shí)現(xiàn)任意角度黑線和任意角度移動(dòng),還可以實(shí)現(xiàn)避障的功能。在算法上,利用矢量分解法、PID算法等對(duì)小車的運(yùn)行進(jìn)行控制并能有效的改善其運(yùn)行軌跡。關(guān)鍵字:MSP430尋跡避障PWMAbstractIndependence’srespondingtypeintelligencesystemisakindofappliedextensivecontrolsystem.Analyzingelectriccircuitandverifyingaworkdependsontheintelligencetocomplete,itsefficiencyishigh.Soitsresearchanddevelopmentisaverymeaningfulworks.Withthecoreof430microcomputerandatthefoundationofSHARK,theNo.3smallcarcancompleteanobstacleexamination,avoidingstumblingblockandlookingforvestigefunction,makingfulluseof430microcomputer.Thisthesisintroducedmachinestructure,homologoushardwareelectriccircuitandthecalculatewayoftheintelligencesmallcar.Makingimprovementtothecommoncaronthemachinestructure,weuseaperfectwheeltomakethecarturningmoreeasily.Andweusesomesensorstolookforvestigeandavoidstumblingblock.BychangetheemptyratioofPWM,thecarcanarbitrarilymovewithanyangleoftheblacklinewithinthescopeofthedesign.Onthecalculateway,weusevectordecompositionmethod、PIDtocontrolthecarandimproveitstrack.Keyword:MSP430lookingforvestigeavoidingstumblingblockPWMPID目錄TOC\o"1-3"\u第一章緒論1第二章各部件的工作原理32.1前輪〔導(dǎo)向輪〕3電機(jī)4反射式紅外傳感器5紅外一體化接收頭6第三章硬件電路11電機(jī)驅(qū)動(dòng)電路11反射式紅外傳感器電路13紅外一體化接收頭電路143.4處理器電路16第四章電路原理圖19第五章控制算法21黑線位置判別215.2巡線算法21搜線算法23障礙物位置判別23轉(zhuǎn)彎控制255.6迷宮探路控制26第六章相關(guān)軟件29第七章總結(jié)357.1本文總結(jié)357.2進(jìn)一步的工作35致謝37參考文獻(xiàn)39附錄一41附錄二42第一章緒論當(dāng)今社會(huì),科學(xué)技術(shù)日新月異,時(shí)代前進(jìn)的步伐越邁越寬,應(yīng)用自動(dòng)化設(shè)備,計(jì)算機(jī)處理,現(xiàn)代化通訊,數(shù)字化信息,現(xiàn)代化顯示設(shè)備等高新技術(shù)而建立的現(xiàn)代化智能,監(jiān)控等系統(tǒng)已經(jīng)得到充分的開展與應(yīng)用,智能機(jī)器人也就應(yīng)運(yùn)而生。同時(shí),在建設(shè)以人為本的和諧社會(huì)的過程中,智能效勞機(jī)器人能夠完成考古開掘,海底揭密,宇宙探索等危險(xiǎn)作業(yè),以保證人身平安?!秶?guó)家中長(zhǎng)期科學(xué)和技術(shù)開展規(guī)劃綱要》一文指出:智能效勞機(jī)器人是在非結(jié)構(gòu)環(huán)境下為人類提供必要效勞的多種高技術(shù)集成的智能化裝備。以效勞機(jī)器人和危險(xiǎn)作業(yè)機(jī)器人應(yīng)用需求為重點(diǎn),研究設(shè)計(jì)方法、制造工藝、智能控制和應(yīng)用系統(tǒng)集成等共性根底技術(shù)。重點(diǎn)研究低本錢的自組織網(wǎng)絡(luò),個(gè)性化的智能機(jī)器人。2006━2020年,既是國(guó)家中長(zhǎng)期技術(shù)開展方案實(shí)現(xiàn)階段,也是我們最具有活力和最激情洋溢的時(shí)段。該智能小車模型是一輛由PCB和車體拼裝的小車。所有的機(jī)械結(jié)構(gòu)和零部件都安裝固定在電路板上。因此完全不需要機(jī)械加工,非常適合實(shí)驗(yàn)階段機(jī)器人的研制。本文簡(jiǎn)述了智能巡線避障小車自主走迷宮的設(shè)計(jì)思路和實(shí)現(xiàn)過程。包括小車的機(jī)械結(jié)構(gòu)、電路、軟件、控制算法、調(diào)試方法等??勺鳛橐话愕脑O(shè)計(jì)參考。小車的左右輪分別由2只舵機(jī)提供動(dòng)力,作為驅(qū)動(dòng)輪和導(dǎo)向輪使。430單片機(jī)的PWM發(fā)生器產(chǎn)生2路〔分為兩組〕占空比可變的方波,經(jīng)三極管進(jìn)行擴(kuò)流后分別驅(qū)動(dòng)左右舵機(jī)。控制2路PWM的比例,不僅可以調(diào)節(jié)小車向前運(yùn)動(dòng)的速度,還可通過2路PWM占空比的差異,改變小車運(yùn)動(dòng)方向。5只反射式紅外傳感器位于小車前下方,用于查找黑線位置并且實(shí)現(xiàn)尋跡。小車前端還分布有3個(gè)紅外一體化接收頭,實(shí)現(xiàn)避障并完成走迷宮。第二章各部件的工作原理2.1驅(qū)動(dòng)輪〔導(dǎo)向輪〕前輪亦為驅(qū)動(dòng)輪,其決定小車能否靈活拐彎的關(guān)鍵局部。這輛小車和汽車不同,不是靠擺舵來(lái)控制轉(zhuǎn)彎,而是靠左右后輪速度差來(lái)實(shí)現(xiàn)轉(zhuǎn)彎控制。圖為小車的仰視圖(未畫出傳感器)。小車的兩前輪是靠舵機(jī)進(jìn)行驅(qū)動(dòng)的。通過兩路PWM波實(shí)現(xiàn)對(duì)其的控制。只要調(diào)整PWM波的占空比即可控制舵機(jī)的轉(zhuǎn)速。當(dāng)小車左輪的速度高于右輪時(shí),小車右轉(zhuǎn)彎;反之,當(dāng)小車右輪的速度高于左輪時(shí),小車左轉(zhuǎn)彎。小車后輪屬?gòu)膭?dòng)輪,質(zhì)地較硬,其與地面磨擦力較小,與其動(dòng)力相比可以忽略不記。所以它可以自由偏移,而不影響小車的轉(zhuǎn)向.舵機(jī)舵機(jī)是一種位置伺服的驅(qū)動(dòng)器。它接收一定的控制信號(hào),輸出一定的角度,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。在微機(jī)電系統(tǒng)和航模中,它是一個(gè)根本的輸出執(zhí)行機(jī)構(gòu)。準(zhǔn)的舵機(jī)有3條導(dǎo)線,分別是:電源線、地線、控制線,如下圖。電源線和地線用于提供舵機(jī)內(nèi)部的直流電機(jī)和控制線路所需的能源.電壓通常介于4~6V,一般取5V。注意,給舵機(jī)供電電源應(yīng)能提供足夠的功率??刂凭€的輸入是一個(gè)寬度可調(diào)的周期性方波脈沖信號(hào),方波脈沖信號(hào)的周期為20ms(即頻率為50Hz)。當(dāng)方波的脈沖寬度改變時(shí),舵機(jī)轉(zhuǎn)軸的角度發(fā)生改變,角度變化與脈沖寬度的變化成正比。2.3反射式紅外傳感器反射式紅外傳感器ST188采用高發(fā)射功率紅外廣電二極管和高靈敏度光電晶體管組成。檢測(cè)距離可調(diào)整范圍為4-15mm;采用非接觸檢測(cè)方式??捎糜贗C卡電度表脈沖數(shù)據(jù)采集、集中抄表系統(tǒng)數(shù)據(jù)采集和機(jī)紙張檢測(cè)等。圖2.4反射式紅外傳感器工作原理反射式紅外傳感器中包含一個(gè)發(fā)射器LED和一個(gè)光探測(cè)器〔光敏二極管/光敏三極管〕。著兩個(gè)元件被封裝在同一個(gè)塑料殼體中,并且排列成適合他們工作的理想位置。LED發(fā)出的一束光被一個(gè)外表反射后又回到探測(cè)器中。圖1.4是反射式紅外傳感器的工作原理圖。封裝在矩形殼體中的是發(fā)射器LED〔由左側(cè)的白色方塊表示〕和探測(cè)器裝置〔在右側(cè)〕。虛線表示光線從發(fā)射器LED中發(fā)出并反射回探測(cè)器;探測(cè)器檢測(cè)到的光強(qiáng)大小取決于物體外表的反射率,而這一光強(qiáng)就是傳感器的輸出值。如下圖,選通信號(hào)〔高電平〕經(jīng)過三極管擴(kuò)流后送到傳感器的K腳,如果檢測(cè)到黑線,傳感器C腳輸出高電平;否那么輸出為低電平。圖2.5反射式紅外傳感器及其檢測(cè)距離與轉(zhuǎn)換效率的關(guān)系圖反射式傳感器在高度受控的理想環(huán)境下的工作性能更好,因?yàn)橛绊懰敵龅耐饨缫蛩赜泻芏啵绛h(huán)境光的變動(dòng)、傳感器與被探測(cè)物體之間的距離,以及被探測(cè)物體的反射率等。為了減少環(huán)境光的干擾,首先需要調(diào)整傳感器的方位使環(huán)境光不能直接射到探測(cè)器。反射式紅外傳感器ST188的最正確探測(cè)距離為6-14mm。所以將傳感器垂直于地面并且調(diào)整傳感器與地面的距離,大約在10mm左右。2.4紅外一體化接收頭電視機(jī)、唱機(jī)等家電中廣泛使用紅外線遙控器。紅外遙控器發(fā)出38KHz調(diào)制的紅外線,在接收端,被一體化紅外接收頭接收,解調(diào)出原始鍵碼值。因?yàn)榧t外遙控使用廣泛、成熟、大批量,所以相關(guān)紅外接收、發(fā)射元件價(jià)格很低。本方案使用通用遙控器的一體化紅外接收頭作為檢測(cè)元件。圖2.7一體化紅外接收頭工作原理一體化接收頭內(nèi)部集成有帶通濾波器,它只允許大約38kHz的紅外信號(hào)通過。這種僅對(duì)38KHz敏感的特性,有助于消除環(huán)境光對(duì)遙控器接收的影響。如圖,當(dāng)紅外線發(fā)射管IRLED〕發(fā)出的38KHz的紅外線被一體化接收頭接收時(shí),接收頭輸出“0”。當(dāng)沒有偵測(cè)到紅外線,或非38KHz紅外線〔如日光燈干擾〕,輸出“1”。第三章硬件電路3.1舵機(jī)驅(qū)動(dòng)電路此局部是整個(gè)小車的大腦,是整個(gè)小車運(yùn)行的核心部件,起著控制小車所有運(yùn)行狀態(tài)的作用。通常選用單片機(jī)作為小車的核心控制單元。這里選用MSP430F425單片機(jī).考慮到小車必須能夠前進(jìn)、倒退、停止,并能靈活專性,在左右兩輪各裝一個(gè)舵機(jī)分別進(jìn)行驅(qū)動(dòng)。當(dāng)左輪電機(jī)轉(zhuǎn)速高于右輪電機(jī)轉(zhuǎn)速時(shí)小車向右轉(zhuǎn),反之那么向左轉(zhuǎn)。為了能控制車輪的轉(zhuǎn)速,左右兩輪的轉(zhuǎn)速,可以采取PWM調(diào)速法,即由單片機(jī)的TA1和TA2輸出一系列頻率固定的方波,再通過功率放大來(lái)驅(qū)動(dòng)舵機(jī),在單片機(jī)中編程改變輸出方波的占空比,從而可以改變電機(jī)的轉(zhuǎn)速。左右兩輪兩個(gè)電機(jī)轉(zhuǎn)速的配合就可以實(shí)現(xiàn)小車的前進(jìn)、倒退、轉(zhuǎn)彎等功能。驅(qū)動(dòng)電路如圖:需要注意的是:被二極管分流到電源兩端的電力將造成主板電壓的瞬變或噪聲。更嚴(yán)重的是當(dāng)采用PWM信號(hào)控制電機(jī)時(shí),每次關(guān)斷都會(huì)產(chǎn)生這種影響。如果導(dǎo)通三極管又重新開啟,同時(shí)反向電動(dòng)勢(shì)電流仍然存在,結(jié)果三極管將直接導(dǎo)通電源正極和地。這一現(xiàn)象時(shí)間的長(zhǎng)短取決于續(xù)流二極管的關(guān)斷時(shí)間。這一電流稱作過沖電流,它同樣會(huì)產(chǎn)生噪聲。因此需在離接口慢近的地方加一旁路電容來(lái)消噪。旁路電容的作用是平滑電流脈動(dòng)和電源電壓的瞬變。當(dāng)電壓出現(xiàn)尖峰時(shí),電容將迅速地吸收這一能量,從而使電壓保持恒定。當(dāng)電壓降低時(shí),電容將向電路中回饋能量,從而使電壓有所上升。經(jīng)試驗(yàn)驗(yàn)證,從單片機(jī)出來(lái)的PWM電壓大約在3.5V左右,加到舵機(jī)兩邊最多只有3V,這遠(yuǎn)遠(yuǎn)低于其耐壓,因此轉(zhuǎn)速也很慢,稍有摩擦就轉(zhuǎn)不動(dòng)了。因此需要再增加兩個(gè)三極管來(lái)進(jìn)行擴(kuò)流,還可以起保護(hù)單片機(jī)的作用。3.2反射式紅外傳感器電路這里的尋跡是指小車在白色地板上尋黑線行走,通常采用的方法是紅外探測(cè)法。即利用紅外線在不同顏色的物體外表具有不同的反射性質(zhì)的特點(diǎn),在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)生漫反射,反射光被安裝在小車上的接收管接收;如果遇到黑線那么紅外光被吸收,小車上的接收管接收不倒紅外光。單片機(jī)就是否反射回來(lái)的紅外光為依據(jù)來(lái)確定黑線的位置和小車的行走路線。紅外探測(cè)器探測(cè)的距離有限,一般最大不應(yīng)超過15cm。這里用反射式紅外傳感器ST188。當(dāng)小車在白色地面行駛時(shí),裝在車下的紅外發(fā)射管發(fā)射紅外線信號(hào),經(jīng)白色反射后,被接收管接收,一旦接收管接收到信號(hào),輸出端將輸出低電平;當(dāng)小車行駛到黑線時(shí),紅外線信號(hào)被黑色吸收后,將輸出高電平,從而實(shí)現(xiàn)了通過紅線檢測(cè)信號(hào)的功能。將檢測(cè)到的信號(hào)送到單片機(jī)的I/O口,當(dāng)I/O口檢測(cè)到的信號(hào)為高電平時(shí),說(shuō)明紅外光被地上的黑線吸收了,說(shuō)明小車處在黑色的引線上;同理,當(dāng)I/O口檢測(cè)到的信號(hào)為低電平時(shí),說(shuō)明小車行駛在白色地面上。傳感器采取脈沖掃描式讀。例如某時(shí)刻P_SEN1高電平,其余P_SEN2至5低,這樣1、4號(hào)傳感器的紅外發(fā)射管亮,其余傳感器不發(fā)射紅外線。等待數(shù)據(jù)穩(wěn)定后,讀取1、4號(hào)傳感器的數(shù)據(jù)。然后關(guān)閉1、4號(hào)傳感器,翻開2、5號(hào)傳感器電源,依次類推,讀取5個(gè)傳感器的數(shù)據(jù)。這樣可以保證任何時(shí)刻都不會(huì)有臨近的傳感器同時(shí)工作。從而保證了相鄰傳感器之間不會(huì)互相干擾。同時(shí),紅外發(fā)射管是除了電機(jī)之外耗電最大的器件,脈沖工作方式可以大大減少耗電量。紅外一體化接收頭電路傳感器排布采用如下結(jié)構(gòu):每個(gè)傳感器組由一只紅外發(fā)射管、一只一體化紅外接收頭,和一只電容構(gòu)成??梢詼y(cè)量該方向是否存在障礙物和判斷障礙物的距離。電容用來(lái)穩(wěn)定電路,防止電源和地發(fā)生短路。硬件原理:采用一片MSP430F245作為控制器。利用BasicTimer的定時(shí)中斷,產(chǎn)生38KHz附近的假設(shè)干頻率,從P輸出方波。該方波經(jīng)過三極管擴(kuò)流來(lái)增加驅(qū)動(dòng)能力,給3個(gè)紅外LED供電。為防止互相干擾,3只LED輪流點(diǎn)亮,每次只亮一只LED,由IRE選擇哪支紅外LED被點(diǎn)亮。因?yàn)橐惑w化接收頭只對(duì)38kHz的方波敏感,而且它內(nèi)部帶有帶通濾波器,所以需要在發(fā)送38kHz的時(shí)候發(fā)送一段時(shí)間關(guān)閉一段時(shí)間,否那么傳感器會(huì)認(rèn)為它是外界光而將返回的信號(hào)當(dāng)作干擾信號(hào)而忽略掉。為了防止各個(gè)傳感器之間的相互干擾,需要輪流翻開接收器。另外,因?yàn)榘l(fā)光管發(fā)出的光是沿四面八方發(fā)送的,而且只要翻開電源發(fā)射管就會(huì)工作,所以也為了防止因別的發(fā)光管帶來(lái)的干擾,需要將發(fā)光管包的嚴(yán)嚴(yán)實(shí)實(shí)的這三個(gè)傳感器所起的作用是不同的。這三個(gè)傳感器用來(lái)檢測(cè)前方、左邊還有右邊是否有障礙物。通過對(duì)三方向的障礙物完成走迷宮的路線尋找。3.4處理器電路小車采用一片MSP430F245作為控制器。MSP430F425的特點(diǎn)是:有五種節(jié)電模式;2個(gè)8位,1個(gè)6位并行端口,全部端口均具有中斷能力;保密熔絲的程序代碼保護(hù);具有1個(gè)捕獲/比擬存放器的16位定時(shí)器TIMER_A;多達(dá)16KBFLASHROM和系統(tǒng)采用32.768KHz晶振作為定時(shí)采樣用。另外留有JTAG口可以現(xiàn)場(chǎng)編程。并且還有液晶引腳未用到,將來(lái)還可以擴(kuò)展其功能。在做PCB板時(shí)已將這些引腳引出,可以直接使用。TIMERA共有4種計(jì)數(shù)模式:停止模式、增計(jì)數(shù)模式、連續(xù)計(jì)數(shù)模式和增/減計(jì)數(shù)模式。我們用TIMERA的增計(jì)數(shù)模式來(lái)產(chǎn)生38KHZ的方波。具體原理為:捕獲/比擬存放器TACCR0用作TIMERA增計(jì)數(shù)模式的周期存放器,因?yàn)門ACCR0為16位存放器,所以該模式適用于定時(shí)周期小于65536的連續(xù)計(jì)數(shù)情況。計(jì)數(shù)器TAR可以增加計(jì)數(shù)到TACCR0的值,當(dāng)計(jì)數(shù)值與TACCR0的值相等〔或定時(shí)器值大于TACCR0的值〕時(shí),定時(shí)器復(fù)位并從0開始重新計(jì)數(shù)。圖2.8說(shuō)明了增計(jì)數(shù)模式的計(jì)數(shù)過程。當(dāng)定時(shí)器的值等于TACCR0的值時(shí),設(shè)置標(biāo)志位CCIFG0(捕獲比擬中斷標(biāo)志)為1,而當(dāng)定時(shí)器從TACCR0計(jì)數(shù)到0時(shí),設(shè)置標(biāo)志位TAIFG〔定時(shí)器溢出標(biāo)志〕為1。計(jì)數(shù)過程中還可以通過改變TACCR0的值來(lái)重置技術(shù)周期。當(dāng)新周期大于舊周期時(shí),定時(shí)器會(huì)直接增計(jì)數(shù)到新周期;當(dāng)新周期小于舊周期時(shí),改變TATACCR0時(shí)的定值器時(shí)鐘相位會(huì)影響定時(shí)器響應(yīng)新周期的情況。時(shí)鐘為高時(shí)改變TACCR0的值,那么定值器會(huì)在下一個(gè)時(shí)鐘上升沿返回到0,如果時(shí)鐘為低時(shí)改變TACCR0的值,那么定時(shí)器接受新周期并在返回到0之前,繼續(xù)增加一個(gè)時(shí)鐘周期??梢噪S時(shí)間變化任意改變PWM信號(hào)的占空比,具體的做法是:●保持TACCR0的值不變〔周期不變〕●改變TACCRx值〔改變占空比〕增計(jì)數(shù)模式時(shí)的輸出實(shí)例TIMERA的輸出模式由模式控制位OUTMODEx決定,共有8種輸出模式。除模式0外,其他的輸出都在定時(shí)器時(shí)鐘上升沿時(shí)發(fā)生變化。這里我們將輸出模式選為輸出模式7。用該方式產(chǎn)生占空比為50%的38KHZ的方波;也可以通過改變TACCRx的值來(lái)改變電機(jī)的轉(zhuǎn)速,使其實(shí)現(xiàn)轉(zhuǎn)彎、后退等動(dòng)作。第五章控制算法5.1黑線位置判別Posit=(i+j)*10/2-20Position=0地面的黑線是導(dǎo)引線,位置讀取和計(jì)算的準(zhǔn)確度、穩(wěn)定性將直接影響小車的控制和運(yùn)行。下列圖是實(shí)際運(yùn)行中出現(xiàn)的情況,黑塊表示感應(yīng)到黑線的傳感器。傳感器的排列比擬密,可能1~2個(gè)傳感器都能踩到黑線;轉(zhuǎn)彎處車身傾斜甚至2~3個(gè)傳感器都能踩到黑線。應(yīng)該求黑線的中心位置作為結(jié)果。Posit=(i+j)*10/2-20Position=0Position=-15Position=-15圖5.1反射式紅外傳感器的運(yùn)算圖計(jì)算的方法是從左數(shù),找到第一個(gè)黑色傳感器編i,再?gòu)挠覕?shù),找到第一個(gè)黑色傳感器編j。(i+j)*10/2-20就是黑線中心位置。這樣算出來(lái)的結(jié)果中有小數(shù)局部,用起來(lái)不太方便,因此我們將結(jié)果放大10倍,再減去之間位置時(shí)算出來(lái)的值。巡線算法小車是一個(gè)非常典型的慣性系統(tǒng)。對(duì)于這一類被控對(duì)象,PID算法能簡(jiǎn)單有效的進(jìn)行控制。對(duì)PID算法做個(gè)簡(jiǎn)單的說(shuō)明:假設(shè)小車中心線在黑線中心線上,偏差為0,小車正常行駛。如果某時(shí)刻檢測(cè)到黑線偏左,就要向左轉(zhuǎn)彎;如果檢測(cè)到黑線偏右,就要向右轉(zhuǎn)。偏得越多,就要向黑線方向打越大的舵角。這就是比例控制〔P〕遺憾的是,這種方法并不能將小車穩(wěn)定在線上,因?yàn)樾≤囉袘T性。假設(shè)黑線偏左,說(shuō)明小車偏右了,需要左傳舵,等到小車回到中心的時(shí)候,停止轉(zhuǎn)舵,可是小車的慣性會(huì)使車身繼續(xù)左轉(zhuǎn),直到?jīng)_過黑線,黑線又偏右。然后控制過程反復(fù),車身是在左右搖擺中向前行走的。這種搖擺叫做“超調(diào)”,超調(diào)越大,控制越不穩(wěn)定,容易出軌。為了克服慣性,最簡(jiǎn)單的方法是任何控制動(dòng)作都提前一點(diǎn)。適當(dāng)調(diào)整提前量可以抵消慣性;另外,即使偏移量相同的情況下,在不同半徑的彎道,也需要不同的舵角。這些都是比例控制不能實(shí)現(xiàn)的。我們除了位置信息之外,還需要知道軌跡的變化趨勢(shì)。為了實(shí)現(xiàn)提前控制,在時(shí)間上,除非延長(zhǎng)傳感器,否那么沒有方法提前獲知轉(zhuǎn)彎。那么我們只能在控制量上想方法。一個(gè)函數(shù)的導(dǎo)數(shù),反映了該函數(shù)的變化趨勢(shì)。同樣我們可以用黑線位置的微分值來(lái)提前得到變化趨勢(shì)。用本次位置減去前次位置求出差值,就大致知道偏移量的變化趨勢(shì)。將該差值和比例相加后一起作為控制量,即可實(shí)現(xiàn)提前控制。這就叫做比例微分控制〔PD控制〕下列圖是小車的控制系統(tǒng)框圖:圖5.2PID控制算法傳感器位置求出后,減去中心值,得到和中心的偏差量。該偏差量乘以比例系數(shù)得到比例控制量。并且計(jì)算相鄰假設(shè)干次偏差量之間的差值,乘以微分系數(shù),得到微分控制量。將比例控制量和微分控制量相加,作為最終的舵角控制量。積分控制在此系統(tǒng)中沒有使用,原因是舵角到位置之間本身就是積分關(guān)系的,另外積分控制有相當(dāng)大的滯后,對(duì)控制穩(wěn)定性不利。一般在調(diào)節(jié)P和D時(shí)需要先調(diào)節(jié)P的值,因?yàn)楸壤禂?shù)較微分系數(shù)對(duì)小車的影響更大。在調(diào)節(jié)P的值時(shí)可以先將D的值置為0。當(dāng)發(fā)現(xiàn)小車在偏離黑線卻可以很快的轉(zhuǎn)回來(lái)時(shí),P就調(diào)的差不多了;D的調(diào)節(jié)相對(duì)簡(jiǎn)單。5.6迷宮探路控制對(duì)于迷宮尋路程序,如果迷宮不太復(fù)雜,且主要為縱橫方向的直線,我們采用讓小車在路口始終左轉(zhuǎn)或者始終右轉(zhuǎn)的方法走迷宮,也就是讓小車沿迷宮的邊沿走。利用小車前面三個(gè)傳感器來(lái)檢測(cè)障礙,設(shè)置向前,向左,向右三個(gè)轉(zhuǎn)向優(yōu)先級(jí)的上下,來(lái)進(jìn)行自主搜索。左轉(zhuǎn)優(yōu)先級(jí)最高,其次是向前,最后是右轉(zhuǎn)。通過延時(shí)使得小車每隔一段時(shí)間尋找左邊界。在找到左邊界的地方直行。倘假設(shè)未找到邊界,那么再向左偏移一定的角度,繼續(xù)尋找,直至找到為止。對(duì)于不太復(fù)雜的迷宮,使用該方法,一直沿著左邊就可以走出迷宮了。相關(guān)軟件軟件局部我分為兩步來(lái)單獨(dú)實(shí)現(xiàn)尋跡和避障功能。尋跡局部使用了前面的五個(gè)反射式紅外傳感器,對(duì)于單獨(dú)進(jìn)行尋跡功能來(lái)說(shuō)這已經(jīng)足夠了。紅外一體化接收頭用到前面的三個(gè),用來(lái)執(zhí)行走簡(jiǎn)單迷宮的功能。關(guān)于硬件的調(diào)試:一〕用萬(wàn)用表進(jìn)行一些簡(jiǎn)單的測(cè)試,可以檢測(cè)出是否有短路,斷路,以及一些元器件的好壞。二〕用示波器檢測(cè)傳感器的好壞,以及能否正常工作,對(duì)于傳感器的正常工作與否,還要通過軟件的調(diào)試與檢測(cè),以便知道CPU能控制傳感器的工作和接受傳感器的信號(hào),對(duì)整個(gè)系統(tǒng)進(jìn)行控制關(guān)于軟件的調(diào)試:一〕對(duì)電機(jī)的控制運(yùn)行調(diào)試;二〕對(duì)尋跡傳感器的檢測(cè);附:#d#defineP_SEN14_LP1OUT&=~(BIT5)//開啟或關(guān)閉1,4號(hào)傳感器#defineP_SEN25_LP1OUT&=~(BIT6)//開啟或關(guān)閉2,5號(hào)傳感器#defineP_SEN3_HP1OUT#defineP_SEN3_LP1OUT&=~(BIT7)//開啟,關(guān)閉三號(hào)傳感器#defineSEN1_IN(P2IN&BIT1)//P2.1#defineSEN2_IN(P2IN#defineSEN3_IN(P2IN#defineSEN4_IN(P2IN#defineSEN5_IN(P2IN&BIT5)//P2.51至5號(hào)傳感器的輸入的值#defineP_coefficient100#defineI_coefficient0#defineD_coefficient25signedcharLast_Position[5]={0,0,0,0,0};//聲明數(shù)組,用于依次存放前5次的黑線位置。/*******************************************************名稱:Sensor_Init()*功能:對(duì)反射式紅外傳感器進(jìn)行初始化設(shè)置*入口參數(shù):無(wú)*出口參數(shù):無(wú)*******************************************************/voidSensor_Init(){P1DIR|=(BIT5+BIT6+BIT7);P1OUT&=~(BIT5+BIT6+BIT7);_DINT();//將IO設(shè)為輸出,其它默認(rèn)為輸入}/*******************************************************名稱:DELAY()*功能:程序延時(shí)*入口參數(shù):無(wú)*出口參數(shù):無(wú)*******************************************************/voidDelay(unsignedintj){for(unsignedintk=0;k<j;k++);}/*******************************************************名稱:Caculate_Position()*功能:計(jì)算黑線位置*入口參數(shù):SensData,5個(gè)傳感器的返回值*出口參數(shù):SensorPosition*說(shuō)明:通過計(jì)算黑線與中心位置的偏差來(lái)控制小車*******************************************************/signedcharCaculate_Position(unsignedchar*SensData){signedchari,j,SensorPosition;//存儲(chǔ)5個(gè)的傳感器的值for(i=0;i<5;i++)//從左往右數(shù),第一個(gè)讀到黑線的傳感器編號(hào)i{if(SensData[i]!=0)break;}for(j=4;j>=0;j--)//從右往左數(shù),找第一個(gè)讀到黑線的傳感器編號(hào)j{if(SensData[j]!=0)break;}if(i==5)return(0x80);SensorPosition=(i+j)*10/2-20;//黑線中心位置就是(i+j)/2//黑線位置值域就是0~40。為便于表示偏差,零值應(yīng)該在中間//所以再減20,變成-20~0~+20表示黑線最左~中間~最右//如果全白(找不到黑線),就返回-128,作為出錯(cuò)標(biāo)志。return(SensorPosition);//將計(jì)算結(jié)果返回}/*******************************************************名稱:ReadSensor()*功能:讀取黑線位置*入口參數(shù):無(wú)*出口參數(shù):Position,小車偏移量*******************************************************/signedcharReadSensor()//從傳感器讀取小車當(dāng)前位置{signedcharposition;unsignedchari;unsignedcharSensorData[5];P_SEN14_H;//翻開1、6號(hào)傳感器電源Delay(400);//略延遲,等待數(shù)據(jù)穩(wěn)定SensorData[0]=SEN1_IN;//讀1號(hào)傳感器SensorData[3]=SEN4_IN;//讀6號(hào)傳感器(注意數(shù)組下標(biāo)從0開始,編號(hào)少1)P_SEN14_L;//關(guān)閉1、6號(hào)傳感器電源P_SEN25_H;//翻開2、7號(hào)傳感器電源Delay(400);//略延遲,等待數(shù)據(jù)穩(wěn)定SensorData[1]=SEN2_IN;//讀2號(hào)傳感器SensorData[4]=SEN5_IN;//讀7號(hào)傳感器P_SEN25_L;//關(guān)閉2、7號(hào)傳感器電源P_SEN3_H;Delay(100);SensorData[2]=0;P_SEN3_H;//讀取的5個(gè)傳感器的狀態(tài),存入了SensorData[5]里面for(i=0;i<5;i++)//這樣讀回的數(shù)據(jù),0表示白線,不為0的其他數(shù)據(jù)表示黑線{//為表示方便,將不為0的其他數(shù)據(jù)統(tǒng)統(tǒng)變成1if(SensorData[i]==0)SensorData[i]=0;elseSensorData[i]=1;//黑線對(duì)應(yīng)的數(shù)組單元存1;白線存0。}position=Caculate_Position(SensorData);//調(diào)用Caculate_Position()函數(shù),計(jì)算黑線位置return(position);//將黑線位置的計(jì)算結(jié)果返回}/*******************************************************名稱:SetRotation()*功能:設(shè)置小車轉(zhuǎn)彎量*入口參數(shù):無(wú)*出口參數(shù):Position,小車偏移量*******************************************************/voidSetRotation(intRotation){if(Rotation>0)//Rotation大于0是右轉(zhuǎn){//1是左輪,2是右輪if(Rotation>5)Rotation=5;TACCR1=601;//左輪全速前進(jìn)TACCR2=611-Rotation;//右輪減速}else//Rotation小于0是左轉(zhuǎn){if(Rotation<-5)Rotation=-5;TACCR1=601-Rotation;//左輪減速TACCR2=611;//右輪全速前進(jìn)}}/*******************************************************名稱:PID_Control()*功能:對(duì)小車進(jìn)行PID控制*入口參數(shù):Position,小車偏移量*出口參數(shù):*******************************************************/voidPID_Control(signedcharPosition){intTemp_P,Temp_D,Temp_PID;if(Position==-128)return;Last_Position[4]=Last_Position[3];Last_Position[3]=Last_Position[2];Last_Position[2]=Last_Position[1];Last_Position[1]=Last_Position[0];Last_Position[0]=Position;Temp_P=P_coefficient*Position;Temp_D=D_coefficient*(Position-Last_Position[4]);Temp_PID=Temp_P+Temp_D;if(Temp_PID>4000)Temp_PID=4000;if(Temp_PID<-4000)Temp_PID=-4000;Temp_PID=Temp_PID/500;//-4~4SetRotation(Temp_PID);}voidPWM_Init(void){P1SEL|=BIT2;//占空比為7.5%即1.5ms時(shí),舵機(jī)停轉(zhuǎn)P2SEL|=BIT0;P1DIR|=BIT2;P2DIR|=BIT0;TACTL|=TASSEL_1+TACLR;//TIMER_A時(shí)鐘源設(shè)為ACLK,并清TARTACCTL1=OUTMOD_7;TACCTL2=OUTMOD_7;TACCR0=655;//TACCR0中斷周期約為20msTACCR1=601;TACCR2=611;TACTL|=MC_1;//TIMER_A工作于增計(jì)數(shù)方式}//75時(shí)占空比是7.5%voidStart_Wait()//加電源后延遲幾秒{unsignedinti;for(i=0;i<32000;i++);}voidmain(){WDTCTL=WDTPW+WDTHOLD;//系統(tǒng)初始化FLL_CTL0|=XCAP18PF;Start_Wait();Sensor_Init();PWM_Init();signedcharPosition;while(1){Position=ReadSensor();PID_Control(Position);Delay(1000);}}三〕對(duì)于避障傳感器的檢測(cè)。附:#include"msp430x42x.h"#defineIRE1(P1OUT&=~BIT5)//翻開紅外發(fā)射#defineIRE2(P1OUT&=~BIT6)#defineIRE3(P1OUT&=~BIT7)#defineIREG1(P1OUT|=BIT5)//關(guān)紅外發(fā)射#defineIREG2(P1OUT|=BIT6)#defineIREG3(P1OUT|=BIT7)#defineIRD1(P2IN&BIT1)//紅外接收#defineIRD2(P2IN&BIT2)#defineIRD3(P2IN&BIT3)unsignedchardata[3];unsignedcharn,Flag=0;voidDelay1(unsignedintj){for(unsignedinti=0;i<j;i++);}voidPWM_Init(void){P1SEL|=BIT2;//占空比為7.5%即1.5ms時(shí),舵機(jī)停轉(zhuǎn)P2SEL|=BIT0;P1DIR|=BIT2;P2DIR|=BIT0;TACTL|=TASSEL_1+TACLR;//TIMER_B時(shí)鐘源設(shè)為ACLK,并清TARTACCTL1=OUTMOD_7;TACCTL2=OUTMOD_7;TACCR0=655;//TACCR0中斷周期約為20msTACCR1=604;//小于606正轉(zhuǎn)TACCR2=608;//大于606正轉(zhuǎn)TACTL|=MC_1;//TIMER_B工作于增計(jì)數(shù)方式}voidStart_Wait()//加電源后延遲幾秒{unsignedinti;for(i=0;i<32000;i++);}unsignedcharRead_Infrared2(){IRE2;Delay1(700);IREG2;data[1]=IRD2;returndata[1];}unsignedcharRead_Infrared1(){IRE1;Delay1(700);data[0]=IRD1;IREG1;returndata[0];}unsignedcharRead_Infrared3(){IRE3;Delay1(700);data[2]=IRD3;IREG3;returndata[2];}voidInfrared_Init(){P1DIR|=(BIT5+BIT6+BIT7+BIT1);SCFQCTL=SCFQ_1M;BTCTL=BT_fCLK2_MCLK+BTHOLD;BTCNT2=243;BTCTL&=~BTHOLD;IE2|=BTIE;_EINT();}/*******************************************************功能:小車轉(zhuǎn)向*入口參數(shù):無(wú)*出口參數(shù):無(wú)*******************************************************/voidStop(){TACCR1=606;TACCR2=606;Delay1(8000);}voidTurn_left(){TACCR2=608;TACCR1=608;Delay1(10000);}voidTurn_right(){TACCR1=604;TACCR2=604;Delay1(13000);}voidForward(){TACCR1=604;TACCR2=608;}voidBackward(){TACCR1=608;TACCR2=604;Delay1(6000);}voidT45L(){TACCR2=608;TACCR1=608;Delay1(5000);}voidT45R(){TACCR1=604;TACCR2=604;Delay1(6000);}voidmain(){WDTCTL=WDTPW+WDTHOLD;//系統(tǒng)初始化FLL_CTL0|=XCAP18PF;Start_Wait();PWM_Init();Infrared_Init();while(1){Read_Infrared1();Read_Infrared2();Read_Infrared3();switch(Flag){case0:{//直走情況if(!data[1]){Backward();Turn_right();Forward();Delay1(8000);}if(data[0]){T45L();Forward();Flag=1;}break;}case1:{//斜走情況if(!data[0]){T45R();Forward();

溫馨提示

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