技術(shù)報(bào)告添加程序_第1頁(yè)
技術(shù)報(bào)告添加程序_第2頁(yè)
技術(shù)報(bào)告添加程序_第3頁(yè)
技術(shù)報(bào)告添加程序_第4頁(yè)
技術(shù)報(bào)告添加程序_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

55/55第一章引言隨著汽車(chē)電子領(lǐng)域發(fā)展的如火如荼,以其為背景的全國(guó)大學(xué)生智能汽車(chē)競(jìng)賽于今年拉開(kāi)了第一屆的帷幕。這項(xiàng)賽事是與全國(guó)數(shù)學(xué)建模、電子設(shè)計(jì)、機(jī)械設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)等4大專(zhuān)業(yè)競(jìng)賽并列的第五項(xiàng)大學(xué)生設(shè)計(jì)競(jìng)賽。我們懷著濃厚的興趣,作為天津大學(xué)的代表隊(duì)之一參加了比賽。自信天英隊(duì)的隊(duì)員由在校的博士、碩士研究生和本科生組隊(duì),其中李飛主要負(fù)責(zé)硬件和結(jié)構(gòu)的設(shè)計(jì),李博和李景運(yùn)負(fù)責(zé)軟件的編寫(xiě)和調(diào)試。經(jīng)過(guò)幾個(gè)月的辛勤工作,在指導(dǎo)老師孟慶浩老師的悉心指導(dǎo)下圓滿(mǎn)完成了智能車(chē)的制作。我們隊(duì)的制作過(guò)程可分為以下三個(gè)階段:第一個(gè)階段,3月2號(hào)到4月初,準(zhǔn)備階段。這一階段主要進(jìn)行了資料查找、熟悉單片機(jī)和傳感器選型等前期工作。根據(jù)隊(duì)員的設(shè)計(jì)經(jīng)驗(yàn)和閱讀的大量參考文獻(xiàn),通過(guò)對(duì)比以后我們將目標(biāo)選定在了相對(duì)簡(jiǎn)單的光電傳感器上,放棄了復(fù)雜的CCD檢測(cè)方法?;诖舜伪荣惖臋z測(cè)要求,我們選定了傳感器型號(hào)為T(mén)CRT5000,并就其數(shù)字和模擬輸出分別進(jìn)行了相應(yīng)的電路設(shè)計(jì)。第二個(gè)階段,從4月初到6月底,設(shè)計(jì)調(diào)試階段。我們主要進(jìn)行了各部分電路的設(shè)計(jì)搭建與程序代碼編寫(xiě)調(diào)試。我們完全采用了組委會(huì)提供的MC9S12DG128開(kāi)發(fā)板和MC33886電機(jī)驅(qū)動(dòng)芯片,首先設(shè)計(jì)制作了線(xiàn)性穩(wěn)壓電路與電機(jī)驅(qū)動(dòng)電路,編寫(xiě)AD轉(zhuǎn)換與模糊路徑識(shí)別程序,對(duì)模糊算法和簡(jiǎn)單的邏輯判斷算法進(jìn)行了實(shí)驗(yàn)。根據(jù)其試驗(yàn)的實(shí)際效果,最后決定使用模糊算法。同時(shí)我們還就傳感器布局進(jìn)行了一系列的仿真,確定采用“W”型布局。第三個(gè)階段,從7月初到參加比賽,整車(chē)調(diào)試階段。在這個(gè)期間,我們所有隊(duì)員都全身心的投入到比賽中。根據(jù)智能車(chē)的實(shí)際情況對(duì)程序進(jìn)行了一遍一遍的修改與調(diào)試,并對(duì)硬件電路進(jìn)行了相應(yīng)的改進(jìn),取得了快速性與穩(wěn)定性的協(xié)調(diào)統(tǒng)一,最終完成了智能車(chē)的制作。本技術(shù)報(bào)告的正文包括以下幾部分內(nèi)容:第二章主要介紹了硬件方面的設(shè)計(jì),包括電路設(shè)計(jì)以及機(jī)械安裝等。其中包括兩個(gè)部分的內(nèi)容:第一部分是信息檢測(cè)相關(guān)模塊的設(shè)計(jì),如所采用黑帶檢測(cè)方法及傳感器布局。第二部分是開(kāi)發(fā)板外圍電路的設(shè)計(jì),例如電源管理模塊,單片機(jī)與傳感器電路的接口等等,主要介紹了自行制作的集成以上電路的電源驅(qū)動(dòng)電路板的設(shè)計(jì)及其安裝固定。第三章的主要內(nèi)容是我們采用的HCS12控制軟件主要理論、算法說(shuō)明及代碼設(shè)計(jì)介紹。第四章為報(bào)告總結(jié),概括說(shuō)明模型汽車(chē)制作過(guò)程中的整體情況和各項(xiàng)技術(shù)指標(biāo)。并指出了其中存在的問(wèn)題和未來(lái)進(jìn)一步改進(jìn)的方向。第二章硬件電路設(shè)計(jì)2.1路徑識(shí)別電路在本次比賽中采用一定寬度的白色紙作賽道,與白色有較大反差的黑色線(xiàn)條作引導(dǎo),這就需要我們使用傳感器感知此導(dǎo)引線(xiàn)以使車(chē)模實(shí)現(xiàn)自動(dòng)按路徑行進(jìn)。智能車(chē)要實(shí)現(xiàn)自動(dòng)導(dǎo)引功能就必須要感知導(dǎo)引線(xiàn),感知導(dǎo)引線(xiàn)相當(dāng)給機(jī)器人一個(gè)視覺(jué)功能。自動(dòng)尋跡是基于自動(dòng)導(dǎo)引小車(chē)(AGV—auto-guidedvehicle)系統(tǒng),實(shí)現(xiàn)小車(chē)自動(dòng)識(shí)別路線(xiàn),判斷選擇正確的行進(jìn)路線(xiàn)。2.1.1傳感器選擇一般來(lái)說(shuō)完成小車(chē)尋線(xiàn)前進(jìn)的任務(wù)可以選擇兩種傳感器:即CCD攝像頭和反射式光電傳感器。1)CCD攝像頭進(jìn)行圖像采集和識(shí)別方法,但是不適用在小體積系統(tǒng)使用,并且還涉及圖像采集、圖像識(shí)別等領(lǐng)域。此種方法分辨率比較高,對(duì)路面的信息處理準(zhǔn)確,但對(duì)硬件和軟件的要求都較嚴(yán)格,算法比較復(fù)雜,實(shí)時(shí)性欠佳。2)反射式光電傳感器,在智能識(shí)別技術(shù)中有著廣泛的應(yīng)用。它可以用來(lái)檢測(cè)地面明暗和顏色的變化,也可以探測(cè)有無(wú)接近的物體。這種光電傳感器的基本原理是,自帶一個(gè)光源和一個(gè)光接收裝置,光源發(fā)出的光經(jīng)過(guò)待測(cè)物體的反射被光敏元件接收,再經(jīng)過(guò)相關(guān)電路的處理得到所需要的信息。采用這種方法比較簡(jiǎn)單,響應(yīng)速度快,算法簡(jiǎn)單,實(shí)時(shí)性比較好。缺點(diǎn)也是顯而易見(jiàn)的,分辨率不高,易受外界環(huán)境光線(xiàn)影響,同時(shí)占用單片機(jī)端口比較多。經(jīng)過(guò)慎重分析選擇,我們最終選定了第二種識(shí)別方案,決定采用反射式傳感器進(jìn)行路徑識(shí)別。反射式光電傳感器的光源有多種,常用的有紅外發(fā)光二極管,普通發(fā)光二極管,以及激光二極管,其中普通發(fā)光二極管消耗功率比較大,而激光二極管發(fā)出的光的頻率雖然較集中,傳感器只接收很窄的頻率范圍信號(hào),不容易被干擾但成本過(guò)高。我們采用的是紅外發(fā)光二極管。紅外反射式傳感器可以采用紅外對(duì)管自行制作,由于自行制作的傳感器發(fā)射管與接收管位置難以保證在同一水平線(xiàn)上且固定安裝比較困難,容易造成傳感器性能不一致,我們放棄了自行制作,而直接采用了成品紅外光電傳感器。目前市場(chǎng)上的紅外反射式光電傳感器種類(lèi)很多且價(jià)格低廉,經(jīng)查閱大量產(chǎn)品資料,在對(duì)6個(gè)型號(hào)的傳感器測(cè)試后,我們選用了價(jià)格、性能基本適合的反射式紅外傳感器TCRT5000。在使用約40mA的發(fā)射電流,沒(méi)有強(qiáng)烈日光干擾(在有日光燈的房間里)探測(cè)距離能達(dá)3cm,完全能滿(mǎn)足探測(cè)距離要求。圖2.1紅外反射式光電傳感器TCRT50002.1.2傳感器電路設(shè)計(jì)紅外傳感器的電路有多種形式,這里我們采用模擬量輸出。這里需要傳感器輸出模擬量經(jīng)AD轉(zhuǎn)換后輸入單片機(jī),模擬量輸出的傳感器電路如圖2.2所示。圖2.2模擬量輸出光電傳感器電路經(jīng)過(guò)一系列實(shí)驗(yàn),我們發(fā)現(xiàn)運(yùn)放中的反饋電阻盡可能選擇高精度的電阻,這樣才可以保證各個(gè)傳感器的輸出特性是一致的。雖然模糊算法增加了程序的復(fù)雜性,但通過(guò)對(duì)程序的優(yōu)化,其實(shí)時(shí)性基本可以滿(mǎn)足控制的要求,并且硬件設(shè)計(jì)上相對(duì)簡(jiǎn)單。2.1.3傳感器布局光電傳感器陣列是智能車(chē)的眼睛,眼睛看的好壞直接影響到后續(xù)的認(rèn)路正確與否。由于這里我們采用了模擬式輸出的傳感器電路,傳感器數(shù)量過(guò)多會(huì)影響算法的實(shí)時(shí)性,所以傳感器數(shù)量需要一定的優(yōu)化設(shè)計(jì),經(jīng)多次仿真以及真實(shí)的實(shí)驗(yàn),我們最終確定了傳感器數(shù)量和布局。一共采用7個(gè)傳感器,分為兩排,第一排4個(gè),第二排3個(gè),前后兩排間距為3.5cm。因?qū)ほE黑線(xiàn)寬度為2.5cm,為保證傳感器能夾在黑線(xiàn)兩測(cè)用于檢測(cè)是否跑偏,我們?cè)O(shè)置同排傳感器間距為3cm,稍大于黑線(xiàn)寬度。傳感器排布如圖2.3所示。S2S0S5S2S0S5S3S1S4S6圖2.3光電傳感器排布為防止其他元器件對(duì)傳感器造成阻擋等不良影響,特將所有傳感器焊于電路板底面。在智能車(chē)前端原有兩安裝孔,間距為6cm,故在電路板后端設(shè)置間距為6cm的二固定孔,安裝時(shí)將電路板與車(chē)體用帶孔的長(zhǎng)鐵片連接,其上以螺母固定??赏ㄟ^(guò)調(diào)整鐵片傾向來(lái)調(diào)整傳感器與地面的夾角與距離,十分方便。2.2電機(jī)驅(qū)動(dòng)電路我們完全采用了組委會(huì)提供的MC33886芯片設(shè)計(jì)制作了電機(jī)驅(qū)動(dòng)電路。其電路如圖2.3所示,為提高對(duì)電機(jī)的驅(qū)動(dòng)能力,特將兩個(gè)OUT1、OUT2分別連接在一起接到電機(jī)的兩個(gè)輸入端上。圖2.4MC33886電機(jī)驅(qū)動(dòng)電路2.3電源管理電路智能車(chē)系統(tǒng)需要根據(jù)各部件正常工作的要求,對(duì)配發(fā)的標(biāo)準(zhǔn)車(chē)模用7.2V2000mAhNi-cd蓄電池進(jìn)行電壓調(diào)節(jié)。其中,單片機(jī)系統(tǒng)、路徑識(shí)別的光電傳感器和接收器電路、車(chē)速傳感器電路需要5V電壓,伺服電機(jī)工作電壓范圍6V,直流電機(jī)可以使用7.2V2000mAhNi-cd蓄電池直接供電。7.2V變5V電路如圖2.9所示,采用LM2940芯片輸出直流5V電壓。圖2.57.2V變5V電壓電路7.2V變6V電路如圖2.6所示,采用LM2575ADJ芯片通過(guò)調(diào)節(jié)可調(diào)電阻輸出6V電壓。圖2.67.2V變6V電壓電路2.4電源驅(qū)動(dòng)電路板設(shè)計(jì)與安裝在程序開(kāi)發(fā)過(guò)程中,我們完全采用了組委會(huì)提供的S12核心開(kāi)發(fā)板。為給S12核心開(kāi)發(fā)板供電,同時(shí)為了安裝調(diào)試方便,我們制作了一塊電源驅(qū)動(dòng)電路板,上面集成有S12核心開(kāi)發(fā)板與此板的插針式接口、單片機(jī)與光電傳感器舵機(jī)測(cè)速系統(tǒng)的信號(hào)接口、總電源接口和撥動(dòng)開(kāi)關(guān)、電源管理的兩個(gè)變壓電路和MC33886電機(jī)驅(qū)動(dòng)電路,如圖2.11所示:使用時(shí)將S12核心開(kāi)發(fā)板插于其上即可,方便可靠。圖2.7電源驅(qū)動(dòng)電路板為給電路板提供安裝場(chǎng)所,我們借助車(chē)模底部原有的孔與支架,用有機(jī)玻璃板搭設(shè)了一個(gè)平臺(tái)。有機(jī)玻璃板10cm×11.5cm,根據(jù)車(chē)模原有孔的位置打了三個(gè)孔,用螺釘和銅螺栓將玻璃板固定在車(chē)體上。然后將插于一起的電路板平放其上,用紅色絕緣膠帶將其固定在有機(jī)玻璃平臺(tái)上。平臺(tái)下的空間恰好可放置7.2VNi-cd蓄電池,同時(shí)用膠帶固定在車(chē)模底部的支架上。如圖2.8所示:圖2.8有機(jī)玻璃安裝平臺(tái)第三章軟件部分3.1設(shè)計(jì)思路概述本隊(duì)智能車(chē)的核心程序路徑識(shí)別模塊采用的是模糊控制算法,該算法將A/D采集得到的光電傳感器輸入信號(hào)經(jīng)過(guò)模糊化,模糊推理,反模糊化三個(gè)步驟,來(lái)確定該時(shí)刻舵機(jī)的轉(zhuǎn)角和驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速,從而實(shí)現(xiàn)小車(chē)的自主尋跡行駛。3.2模糊控制主要理論3.把熟練技術(shù)人員的實(shí)踐經(jīng)驗(yàn)進(jìn)行總結(jié)和形式化描述,用語(yǔ)言達(dá)成一組定性條件語(yǔ)句合不精確的決策規(guī)則,然后利用模糊集合作為工具使其定量化,用形式化的人的經(jīng)驗(yàn)法則模仿人的控制策略,再驅(qū)動(dòng)設(shè)備對(duì)復(fù)雜的工業(yè)過(guò)程進(jìn)行控制。3.1.模糊集合:模糊集合是在不同程度上具有某種特性的所有元素的總和。2.隸屬度函數(shù):模糊集合中某元素x屬于該模糊集合的程度稱(chēng)為隸屬度。3.模糊推理:模糊推理實(shí)際上是從模糊前提出發(fā)按照模糊規(guī)則及進(jìn)行推理,而后得出結(jié)論(也是模糊的)。三種模糊推理的基本形式:IFATHENB;IFATHENBELSEC;IFAANDBTHENC。本隊(duì)所采用的是最后一種模糊推理。3.3.2模糊化的輸入是精確的輸入值,模糊化的輸出是模糊量。模糊化的主要功能是根據(jù)輸入變量的隸屬度函數(shù),求出精確的輸入值相對(duì)于輸入變量個(gè)語(yǔ)言值的隸屬度。建立輸入變量隸屬度函數(shù)共以下四步:1.確定所有輸入變量的名稱(chēng)2.確定每個(gè)語(yǔ)言變量的變化范圍3.確定每個(gè)語(yǔ)言變量的語(yǔ)言值個(gè)數(shù)及名稱(chēng)4.確定每個(gè)語(yǔ)言變量的每個(gè)語(yǔ)言值的位置和形狀(一般采用三角形和梯形)模糊化求出精確輸入值相對(duì)于輸入語(yǔ)言變量各語(yǔ)言值的隸屬度。3.2模糊規(guī)則推理就是依據(jù)模糊規(guī)則進(jìn)行的推理,是模糊控制器的核心工作。模糊推理的輸入是所有輸入變量的輸入精確值相對(duì)于輸入變量所有語(yǔ)言值的隸屬度,模糊推理的輸出是輸出變量各語(yǔ)言值的隸屬度。建立輸出變量的隸屬度函數(shù)。輸出變量隸屬度函數(shù)的建立原則及過(guò)程類(lèi)似于輸入變量隸屬度函數(shù)的建立。(但常采用單值函數(shù)作為其隸屬度函數(shù))建立模糊規(guī)則庫(kù)。模糊控制規(guī)則是模糊推理的依據(jù),主要依據(jù)專(zhuān)家的經(jīng)驗(yàn)與對(duì)系統(tǒng)的觀(guān)察和測(cè)量的結(jié)果生成,這些規(guī)則是用語(yǔ)言描述的。規(guī)則庫(kù)中的數(shù)量取決于個(gè)輸入變量所含語(yǔ)言值的數(shù)量、專(zhuān)家的經(jīng)驗(yàn)及實(shí)際的需要。模糊推理(MIN-MAX法)共以下四步:建立規(guī)則庫(kù)尋找對(duì)推理起作用的規(guī)則確定規(guī)則強(qiáng)度:每一條規(guī)則強(qiáng)度等于前件中的最小值。確定模糊輸出:當(dāng)相同后件的規(guī)則強(qiáng)度不同時(shí),模糊輸出取其最大值。3.2.在要求較高的系統(tǒng)中,反模糊化一般采用重心法(COG),即求所有模糊輸出量的重心。計(jì)算公式如下:SKIPIF1<0COG=SKIPIF1<0Si:輸出隸屬度函數(shù)的值Fi:模糊推理最終求出的隸屬度3.3.本隊(duì)智能車(chē)模糊控制算法說(shuō)明3.3.本隊(duì)智能車(chē)采用7個(gè)反射式光電傳感器在車(chē)體前方呈W型排開(kāi),各傳感器會(huì)隨著對(duì)賽道的感光強(qiáng)度輸出連續(xù)的模擬信號(hào)。經(jīng)過(guò)放大器和單片機(jī)上的A/D轉(zhuǎn)換器處理輸入到單片機(jī)中作為控制程序的輸入變量。首先,構(gòu)造輸入變量的隸屬度函數(shù)并且將輸入變量模糊化。1.52.22.83.51.52.22.83.5LMG圖1輸入變量隸屬度函數(shù)圖該輸入變量隸屬度函數(shù)由三個(gè)模糊子集構(gòu)成,分別為L(zhǎng)ittle,Medium,Great。由圖1可知,一個(gè)輸入變量可最多屬于兩個(gè)模糊子集,通過(guò)對(duì)其在兩個(gè)模糊子集的隸屬度可較好的描述該時(shí)刻此傳感器所處狀態(tài)。將該圖的各條直線(xiàn)方程輸入到程序中即可實(shí)現(xiàn)隸屬度函數(shù)的載入,之后將采集到的各傳感器信號(hào)輸入到該隸屬函數(shù)中,就得到了每個(gè)傳感器對(duì)于三個(gè)模糊子集隸屬度。其次,構(gòu)造輸出變量的隸屬度函數(shù)。-40-25-100102540角度-40-25-100102540角度L3L2L圖2控制轉(zhuǎn)向伺服電機(jī)的輸出變量的隸屬度函數(shù)80%90%100%PWM占空比80%90%100%PWM占空比SNF圖3控制驅(qū)動(dòng)電機(jī)的輸出變量的隸屬度函數(shù)由圖2可知,控制轉(zhuǎn)向伺服電機(jī)的輸出變量隸屬度函數(shù)由七個(gè)模糊子集構(gòu)成,分別為L(zhǎng)3,L2,L1,C,R1,R2,R3。由圖3可知,控制驅(qū)動(dòng)電機(jī)的輸出變量隸屬度函數(shù)由三個(gè)模糊子集構(gòu)成,分別為S,N,F(xiàn)。由這兩個(gè)圖可知,我們的模糊程序的兩個(gè)變量的輸出變量隸屬度函數(shù)均采用單值函數(shù),因此在程序中并未單獨(dú)建立該函數(shù),只是在程序的最開(kāi)始給予了宏定義。然后,建立模糊推理規(guī)則庫(kù)。根據(jù)個(gè)人經(jīng)驗(yàn)、計(jì)算機(jī)模擬仿真的結(jié)果以及智能車(chē)在真實(shí)賽道上的不斷調(diào)試,最終得到一個(gè)效果較為理想的規(guī)則庫(kù),詳見(jiàn)表1。 傳感器整體布局如下圖所示。S3S1S4S6S3S1S4S6S2S0S5圖4傳感器整體布局示意圖表1NO.InputOutputS0S1S2S3S4S5S6AngleSpeed1[straight]LGGGGGGCF2[T-left]LMGGGGGL1F3LLGGGGGL1F4MMGGGGGL1F5MLGGGGGL1F6(fuse)MLMGGGGL2M7GLGGGGGL1F8GMGGGGGL1M9GMMGGGGL2M10(fuse)GMMMGGGL3S11GMLGGGGL2M12GGLGGGGL2M13GGLMGGGL2M14GGLLGGGL2M15GGMLGGGL2S16GGMMGGGL3S17GGGLGGGL3S18GGGMGGGL3S19(fuse)MMMGGGGL3S20(cross)GLGLLGLCF21(cross)LGLGGLGCF22(cross)MMMMMMMCF23[T-right]LGGGMGGR1F24LGGGLGGR1F25MGGGMGGR1F26MGGGLGGR1F27(fuse)MGGGLMGR2M28GGGGLGGR1F29GGGGMGGR1M30GGGGMMGR2M31(fuse)GGGGMMMR3S32GGGGMLGR2M33GGGGGLGR2M34GGGGGLMR2M35GGGGGLLR2M36GGGGGMLR3S37GGGGGMMR3S38GGGGGGLR3S39GGGGGGMR3S40(fuse)MGGGMMGR3S本程序共采用40條規(guī)則。雖然一共有2187條規(guī)則的排列組合,但為了提高程序的運(yùn)行速度,將一些不可能出現(xiàn)或者出現(xiàn)機(jī)率極小的規(guī)則略去。如表1中所示,第1條為直線(xiàn)規(guī)則,第2~19條為不同程度的向左轉(zhuǎn)規(guī)則,第20~22條為遇到交叉線(xiàn)路規(guī)則,第23~40為不同程度的向右轉(zhuǎn)規(guī)則。當(dāng)七個(gè)前件滿(mǎn)足規(guī)則庫(kù)中某條規(guī)則時(shí),則該條規(guī)則有效。本規(guī)則表以及上述的兩個(gè)輸出隸屬度函數(shù)都是為之后的模糊推理做準(zhǔn)備的,這幾個(gè)函數(shù)的具體調(diào)用將在下文敘述。下一步,進(jìn)行模糊推理。首先取出每個(gè)傳感器的隸屬度均不為零的所有排列組合,再到規(guī)則庫(kù)中查詢(xún)與每種排列組合相對(duì)應(yīng)的推理規(guī)則,將每條規(guī)則的七個(gè)前件的隸屬度的最小值作為該條規(guī)則的強(qiáng)度,也就是兩個(gè)后件的隸屬度。若查詢(xún)得到的規(guī)則的后件有相同的情況,那么取其中的最大值最為該條規(guī)則的最終強(qiáng)度。最后,進(jìn)行反模糊化。依據(jù)重心法反模糊化公式,將模糊推理最終求出的輸出變量隸屬度以及與之對(duì)應(yīng)的輸出變量函數(shù)值代入公式,求得最終的精確輸出。3.3為將原理說(shuō)明得更加清楚,現(xiàn)對(duì)小車(chē)在行使過(guò)程中某一時(shí)刻的情況進(jìn)行具體分析。假設(shè)該時(shí)刻各傳感器各輸入信號(hào)分別為S0=1.6V,S1=3.2V,S2~6=3.8V(小車(chē)前方跑道略微向左偏。首先,根據(jù)輸入隸屬度函數(shù)將這七個(gè)量進(jìn)行模糊化,得到模糊量(已將為零的隸屬度濾去)S0(L)=0.8,S0(M)=0.1;S1(M)=0.2,S1(G)=0.6;S2(G)~S6(G)=1。由此可見(jiàn),由該組輸入可組成四條規(guī)則,到規(guī)則庫(kù)中找出對(duì)推理起作用的規(guī)則,并將前件的最小值賦給后件:IfS0(L)=0.8,S1(M)=0.2thenANGLE(L1)=0.2,SPEED(F)=0.2;IfS0(L)=0.8,S1(G)=0.6thenANGLE(C)=0.6,SPEED(F)=0.6;IfS0(M)=0.1,S1(M)=0.2thenANGLE(L1)=0.1,SPEED(F)=0.1;IfS0(M)=0.1,S1(G)=0.6then此條規(guī)則對(duì)推理不起作用。再將相同后件的隸屬度取最大值,得到ANGLE(L1)=0.2,ANGLE(C)=0.6;SPEED(F)=0.6。最后由重心法反模糊化得最終結(jié)果:ANGLECOG=(0.2*186+0.6*185)/(0.2+0.6)=185.25;SPEEDCOG=200。由此可知,小車(chē)舵機(jī)略向左轉(zhuǎn),全速前進(jìn)。與實(shí)際路況基本相符。程序代碼設(shè)計(jì)介紹4.1整體程序流程圖開(kāi)始開(kāi)始傳感器輸入信號(hào)端口聲明系統(tǒng)總線(xiàn)初始化伺服電機(jī)初始化33886初始化精確輸入量模糊化輸入變量的隸屬度函數(shù)模糊輸入量規(guī)則推理規(guī)則庫(kù)模糊輸出量反模糊化輸出變量的隸屬度函數(shù)精確輸出量結(jié)束3.4.21.宏定義模塊(macro)定義了舵機(jī)轉(zhuǎn)角和驅(qū)動(dòng)電機(jī)轉(zhuǎn)速兩個(gè)輸出變量。舵機(jī)處于中心位置=PWM脈寬為1.5ms=程序中185;舵機(jī)處于極左位置=PWM脈寬為2ms=程序中190;舵機(jī)處于極右位置=PWM脈寬為1ms=程序中180。2.傳感器輸入信號(hào)端口定義模塊依據(jù)單片機(jī)手冊(cè),將7個(gè)A/D轉(zhuǎn)換端口分別定義。3.舵機(jī)初始化模塊(theinitialofturning)和驅(qū)動(dòng)電機(jī)初始化模塊(thecontrolof33886)均根據(jù)電機(jī)要求,對(duì)PWM端口進(jìn)行初始化。4.系統(tǒng)總線(xiàn)初始化(theinitialofbusclock)根據(jù)單片機(jī)手冊(cè),編程使內(nèi)部系統(tǒng)時(shí)鐘為48MHz,總線(xiàn)時(shí)鐘為24MHz。5.建立輸入變量的隸屬度函數(shù)(membershipfunctioninput)輸入圖1中各直線(xiàn)方程,根據(jù)輸入變量S[i]屬于不同的區(qū)間,求得隸屬度函數(shù)值。經(jīng)7次循環(huán)得到所有輸入變量的隸屬度函數(shù)值,并存入數(shù)組a[7][3]中。6.建立規(guī)則庫(kù)函數(shù)(therules)利用if語(yǔ)句將表1編程輸入,共40條,以查詢(xún)方式對(duì)規(guī)則進(jìn)行判斷。以7個(gè)前件所屬的隸屬子函數(shù)為輸入變量(0=L,1=M,2=G),以后件的隸屬子函數(shù)作為函數(shù)返回值。7.模糊推理(themainprogram)先將由模糊化得到的隸屬度函數(shù)數(shù)組a[7][3]取出;再通過(guò)8個(gè)for循環(huán)將7個(gè)傳感器的三個(gè)隸屬度子函數(shù)排列組合,并取出其中各項(xiàng)均不為零的所有排列。然后利用子函數(shù)min求出其中的最小值賦給minangle[i]和minspeed[i]數(shù)組,作為該組排列的強(qiáng)度。之后再到規(guī)則庫(kù)中查詢(xún)與該組排列相對(duì)應(yīng)的規(guī)則,將規(guī)則的后件賦給tangle[i]和tspeed[i]數(shù)組。此時(shí),minangle[i]和tangle[i]中分別存放了該時(shí)各傳感器刻轉(zhuǎn)角的隸屬度函數(shù)值和與之對(duì)應(yīng)隸屬子函數(shù);同理,minspeed[i]和tspeed[i]中分別存放了該時(shí)刻各傳感器速度的隸屬度函數(shù)值和與之對(duì)應(yīng)隸屬子函數(shù)。再對(duì)tangle[i]和tspeed[i]中的值進(jìn)行判斷,判斷是否有相同的項(xiàng),如果有則取其中的最大值賦給maxangle[m]和maxtangle[m],并將此時(shí)的tangle[i]和tspeed[i]賦給finalangle[i]和finalspeed[i];若沒(méi)有相同項(xiàng),則直接賦值。這樣就得到了該時(shí)刻每個(gè)輸出隸屬子函數(shù)的最終隸屬度,為之后的反模糊化做準(zhǔn)備。8.反模糊化將得到的每個(gè)輸出隸屬子函數(shù)與其隸屬度相乘再求和與各隸屬度的和做商,得到的就是該時(shí)刻的精確輸出量,用以對(duì)舵機(jī)和驅(qū)動(dòng)電機(jī)進(jìn)行控制。第四章總結(jié)4.1智能車(chē)的主要技術(shù)指標(biāo)物理外形指標(biāo):重量(kg)長(zhǎng)度(cm)寬度(cm)高度(cm)原來(lái)現(xiàn)在1351612其他指標(biāo):電路功耗電機(jī):W1=3.1A×4.9V=15.19J傳感器:W2=0.52A×5V=2.6J單片機(jī)系統(tǒng):W3=A×5V=J總功耗:W=W1+W2+W3=15.19+2.6+電容容量傳感器電路用0.01uF和33nF各一個(gè),測(cè)速電路用100uF一個(gè),7.2V變5V電路用47uF和22uF各一個(gè),7.2V變6V電路用100uF和330uF各一個(gè),電機(jī)驅(qū)動(dòng)電路用33nF和47uF各一個(gè),共用電容9個(gè),總?cè)萘繛?46uF。傳感器型號(hào)TCRT5000,數(shù)量7,共兩排,前4后3除車(chē)模原有的驅(qū)動(dòng)電機(jī)、舵機(jī)之外伺服電機(jī)個(gè)數(shù)0賽道信息檢測(cè)精度、頻率4.2問(wèn)題與解決在我們智能車(chē)的設(shè)計(jì)制作過(guò)程中,確實(shí)遇到了各種各樣的問(wèn)題,在問(wèn)題的解決過(guò)程中,也提高了我們的動(dòng)手動(dòng)腦能力,學(xué)到了許多在書(shū)本上學(xué)不到的知識(shí)。具體遇到的問(wèn)題以及解決方法如下:用PWM調(diào)節(jié)舵機(jī)的時(shí)候,發(fā)現(xiàn)運(yùn)行時(shí)單片機(jī)總是復(fù)位,不能正常運(yùn)行,后來(lái)經(jīng)過(guò)檢查發(fā)現(xiàn)是單片機(jī)和舵機(jī)沒(méi)有共地。調(diào)節(jié)舵機(jī)的時(shí)候,剛開(kāi)始發(fā)現(xiàn)程序運(yùn)行后舵機(jī)沒(méi)有反應(yīng),而通過(guò)示波器檢測(cè)單片機(jī)的信號(hào)輸出是正確的,后來(lái)給程序中加了延時(shí)子程序后,舵機(jī)可以正常動(dòng)作。調(diào)節(jié)AD模塊的時(shí)候,發(fā)現(xiàn)參考電壓端VRH總是低電平,導(dǎo)致AD輸出只有兩種信號(hào),不能正確轉(zhuǎn)換,后來(lái)經(jīng)過(guò)檢查發(fā)現(xiàn)沒(méi)有把單片機(jī)的S8開(kāi)關(guān)連接上。用BDM調(diào)試的時(shí)候,上電后發(fā)現(xiàn)智能車(chē)前輪始終左轉(zhuǎn)到極限,后輪速度一直不變,無(wú)論怎么修改程序都不會(huì)引起小車(chē)運(yùn)行狀態(tài)的變化,開(kāi)始我們認(rèn)為是BDM調(diào)試器或者是單片機(jī)出了問(wèn)題,更換之后仍然如此,請(qǐng)教卓晴老師后,才發(fā)現(xiàn)是沒(méi)有在主程序里面對(duì)系統(tǒng)時(shí)鐘進(jìn)行初始化,導(dǎo)致程序運(yùn)行不正常。用BDM下載程序的時(shí)候,點(diǎn)擊load后發(fā)現(xiàn)程序不能正常下載進(jìn)去,后來(lái)經(jīng)過(guò)檢查,發(fā)現(xiàn)目標(biāo)程序在中文目錄下,改到英文目錄后可以正常下載。為改變傳感器檢測(cè)的靈敏度,在調(diào)節(jié)傳感器電路板的電位計(jì)的時(shí)候,開(kāi)始正常,后來(lái)突然發(fā)現(xiàn)電路中各個(gè)焊點(diǎn)的電壓均接近5V,我們以為此電路已完全損壞,后經(jīng)檢查發(fā)現(xiàn)GND網(wǎng)絡(luò)的一根導(dǎo)線(xiàn)呈斷路狀態(tài),接好之后恢復(fù)正常。由于車(chē)模后輪的機(jī)械配合不好導(dǎo)致摩擦太大,大大影響了運(yùn)行速度,重新裝配后摩擦力大大降低,提高了運(yùn)行速度。由于電路板上給后輪電機(jī)供電的接口沒(méi)有焊接牢固,導(dǎo)致電機(jī)的運(yùn)行不正常,影響了車(chē)速,重新焊接后,電機(jī)運(yùn)行達(dá)到了正常。仿真時(shí),Plastid軟件中對(duì)于光電傳感器的尺寸沒(méi)有精確定義,仿真時(shí)只好根據(jù)實(shí)體車(chē)模的形狀比例進(jìn)行傳感器布局的定性分析。4.3現(xiàn)存的問(wèn)題與未來(lái)的改進(jìn)方向目前我們的車(chē)模最大的問(wèn)題就是動(dòng)力不足,電機(jī)在7.2V電壓時(shí),最大電流為3.2A,未達(dá)到所能承受最大電流3.5A,穩(wěn)定有余,速度稍嫌不足。同時(shí)對(duì)于路徑識(shí)別以及算法部分,想法比較多。如采用數(shù)字輸出式傳感器電路,可考慮在前端伸出兩個(gè)光電傳感器用以探測(cè)彎道,將其間距放大到6cm或者7cm,以防止直道時(shí)的轉(zhuǎn)向誤判為彎道,將此二傳感器盡量放前,以提早預(yù)警檢測(cè)到彎道,控制智能車(chē)提前拐彎,經(jīng)方法經(jīng)仿真,效果比較理想,未來(lái)要做的話(huà),可以做一下文章。致謝首先非常感謝清華大學(xué)和飛思卡爾公司組織的這次智能車(chē)大賽,能夠讓我們有機(jī)會(huì)親身參與其中,將自己的知識(shí)與能力展現(xiàn)出來(lái)。書(shū)本不是知識(shí)的全部空間,實(shí)踐才是任何知識(shí)的最終歸宿。在實(shí)踐中我們真正得到了鍛煉,真心感受到了自己的成長(zhǎng),這一切是無(wú)法用金錢(qián)所能衡量的。還要感謝我們的指導(dǎo)老師孟慶浩老師,在智能車(chē)的制作過(guò)程中,他悉心指導(dǎo)著我們,就每個(gè)問(wèn)題與我們討論,給予我們啟迪與鼓勵(lì)。在此,我們小組所有成員向孟老師致以深深的謝意!同時(shí)還要感謝學(xué)校以及學(xué)院給予我們的大力支持。感謝天津大學(xué)的另一支參賽隊(duì)伍給予我們的真誠(chéng)幫助。在智能車(chē)的制作過(guò)程中,我們小組每個(gè)成員都為之付出了很多的心血,也相互學(xué)到了很多東西,相互的鼓勵(lì)信任與支持讓我們成為了一個(gè)堅(jiān)強(qiáng)有力的團(tuán)隊(duì),感謝我們每一個(gè)人。最后也感謝評(píng)委老師的辛勤勞動(dòng),您們辛苦了!謝謝您們!程序見(jiàn)附錄。附錄:#include<hidef.h>/*commondefinesandmacros*/#include<mc9s12dg128.h>/*derivativeinformation*/#pragmaLINK_INFODERIVATIVE"mc9s12dg128b"http://***********************macro*****************************************#defineleft3190#defineleft2188#defineleft1186#definecenter185#defineright1184#defineright2182#defineright3180#defineslow50 #definenormal65#definefast80//*******************theinitialofA/D*********************************unsignedcharAD_wValue;//uintisinstdtypes.hunsignedcharAD_wData[7];//全局變量存放AD0,AD1,AD2的結(jié)果8字節(jié)voidAD_Init(void){//ATDCTL0,ATDCTL1reservedforfactorytestingandisnot//availableinnormalmodes.ATD0CTL2=(ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK);//允許ATD正常工作,將轉(zhuǎn)換結(jié)束標(biāo)志設(shè)為快速清除方式;ATD0CTL3=(ATD0CTL3_S4C_MASK|ATD0CTL3_S2C_MASK|ATD0CTL3_S1C_MASK);//7channels,非FIFO模式ATD0CTL4=(ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS2_MASK|ATD0CTL4_PRS0_MASK);//轉(zhuǎn)換精度8位//thehighestAD轉(zhuǎn)換時(shí)鐘為2MHz,即:24MHz/(5+1)*0.5=2MHzATD0CTL5=(ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK);//八位精度采用右對(duì)齊方式,結(jié)果數(shù)據(jù)無(wú)符號(hào)表示,選擇多路轉(zhuǎn)換,//通道選擇碼為000(cc,cb,ca)即從0通道開(kāi)始的7個(gè)通道被采樣;連續(xù)轉(zhuǎn)換ATD0DIEN=0x00;//禁止數(shù)字輸入緩沖} //**********************Theinitialofturning**************************voiddelay(inta) {intj=10000;for(;a>0;a--)for(;j>0;j--);}voidPWM0_Init(void){PWME_PWME0=0x00;PWMPOL_PPOL0=0;PWMPER0=200.0;PWMPRCLK=0x04;/*Setprescalerregister*/PWMSCLA=75;/*Setscaleregister*/PWMCLK_PCLK0=1;PWMCNT0=0;DDRP=0xff;//控制輸出PWME_PWME0=1;/*Runcounter*/}//********************Thecontrolof33886*******************voidPWM1_Init(void) {PWME_PWME1=0x00;PWMPOL_PPOL1=0;PWMPER1=200.0;PWMPRCLK=0x04;/*Setprescalerregister*/PWMSCLA=75;/*Setscaleregister*/PWMCLK_PCLK1=1;PWMCNT1=0;DDRP=0xff;//控制輸出/*Selectclocksource*/PWME_PWME1=1;/*Runcounter*/}//***************thecontrolofmotor***************************voidPWM0_Control(unsignedcharm){PWMDTY0=m;delay(1000); delay(1000);}voidPWM1_Control(unsignedcharm) {PWMDTY1=m;delay(1000);delay(1000);} /******************TheinitialofBUSCLOCK****************/voidInitial_pll(void){REFDV=0x01; //內(nèi)部系統(tǒng)時(shí)鐘為48MHZ,總線(xiàn)時(shí)鐘為24MHZ//根據(jù)書(shū)P103的公式給出SYNRREFDV的值SYNR=0x02;while(!(CRGFLG&0x08)){ //等待時(shí)鐘頻率已穩(wěn)定鎖相環(huán)頻率已鎖定}CLKSEL=0x80; //選定所相環(huán)時(shí)鐘FCLKDIV=0x49; //使FLASH和EEPROM的擦除操作工作頻率在200kHZ左右ECLKDIV=0x49;}/*************membershipfunctioninput****************************/voidinput(unsignedcharS[],unsignedcharb[7][3]){ unsignedchari;for(i=0;i<7;i++){if(S[i]<=76) //1.5=76b[i][0]=100;if(76<S[i]&&S[i]<=112) //2.2=112b[i][0]=-(100.0/36.0)*S[i]+11200.0/36.0;if(76<S[i]&&S[i]<=128) //2.5=128b[i][1]=(100.0/52.0)*S[i]-7600.0/52.0;if(128<S[i]&&S[i]<=178) //3.5=178b[i][1]=-(100/50)*S[i]+17800/50;if(143<S[i]&&S[i]<=178) //2.8=143b[i][2]=(100.0/35.0)*S[i]-14300.0/35.0;if(S[i]>178)b[i][2]=100;}}//*******************therules**********************************************unsignedchar*rules(unsignedchara0,unsignedchara1,unsignedchara2,unsignedchara3,unsignedchara4,unsignedchara5,unsignedchara6,unsignedcharb){unsignedchar*pt; unsignedchara[2]={0};if((a0==2)&&(a1==0)&&(a2==2)&&(a3==0)&&(a4==0)&&(a5==2)&&(a6==0)){a[0]=center;a[1]=fast;}elseif((a0==0)&&(a1==2)&&(a2==0)&&(a3==2)&&(a4==2)&&(a5==0)&&(a6==2)){a[0]=center;a[1]=fast;}elseif((a0==1)&&(a1==1)&&(a2==1)&&(a3==1)&&(a4==1)&&(a5==1)&&(a6==1)){a[0]=center;a[1]=fast;}elseif((a0==0)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=center;a[1]=fast;}elseif((a0==0)&&(a1==1)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=fast;}elseif((a0==0)&&(a1==0)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=fast;}elseif((a0==1)&&(a1==1)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=fast;}elseif((a0==1)&&(a1==0)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=fast;}elseif((a0==1)&&(a1==0)&&(a2==1)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==0)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=fast;}elseif((a0==2)&&(a1==1)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left1;a[1]=normal;}elseif((a0==2)&&(a1==1)&&(a2==1)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==1)&&(a2==1)&&(a3==1)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==2)&&(a1==1)&&(a2==0)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==0)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==0)&&(a3==1)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==0)&&(a3==0)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==1)&&(a3==0)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==1)&&(a3==1)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==1)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==1)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==1)&&(a1==1)&&(a2==1)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==2)){a[0]=left3;a[1]=slow;}elseif((a0==0)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=fast;}elseif((a0==0)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==0)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=fast;}elseif((a0==1)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=fast;}elseif((a0==1)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==0)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=fast;}elseif((a0==1)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==0)&&(a5==1)&&(a6==2)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==0)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=fast;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==2)&&(a6==2)){a[0]=right1;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==1)&&(a6==2)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==1)&&(a6==1)){a[0]=right3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==0)&&(a6==2)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==0)&&(a6==2)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==0)&&(a6==1)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==0)&&(a6==0)){a[0]=right2;a[1]=normal;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==1)&&(a6==0)){a[0]=right3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==1)&&(a6==1)){a[0]=right3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==0)){a[0]=right3;a[1]=slow;}elseif((a0==2)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==2)&&(a5==2)&&(a6==1)){a[0]=right3;a[1]=slow;}elseif((a0==1)&&(a1==2)&&(a2==2)&&(a3==2)&&(a4==1)&&(a5==1)&&(a6==2)){a[0]=right3;a[1]=slow;}pt=a+b; return(pt);}//子函數(shù)求最小值unsignedcharmin(unsignedchara0,unsignedchara1,unsignedchara2,unsignedchara3,unsignedchara4,unsignedchara5,unsignedchara6){unsignedchartemp1,temp2;temp1=(a0<a1)?a0:a1;temp2=(temp1<a2)?temp1:a2;temp1=(temp2<a3)?temp2:a3;temp2=(temp1<a4)?temp1:a4;temp1=(temp2<a5)?temp2:a5;temp2=(temp1<a6)?temp1:a6;return(temp2);}/******************THEMAINPROGRAM*************************/voidmain(void){/*unsignedchara[7][3]={0};unsignedcharminangle[128]={0};unsignedcharminspeed[128]={0};unsignedchartangle[128]={0};unsignedchartspeed[128]={0};unsignedcharmaxangle[16]={0};unsignedcharmaxspeed[16]={0};unsignedcharfinalangle[16]={0};unsignedcharfinalspeed[16]={0};unsignedintanglenumer=0;unsignedintangledeno=0;unsignedintanglecog=0;unsignedintspeedcog=0;unsignedintspeednumer=0;unsignedintspeeddeno=0;unsignedchar*w,*x,*u,*v;unsignedchari0,i1,i2,i3,i4,i5,i6,j,t,p,q,k,h;unsignedchari=0;unsignedcharm=0,n=0;*/unsignedcharh;Initial_pll();//單片機(jī)工作頻率初始化;//定義各端口的輸入與輸出?DDRT=0x00;DDRK=0x00;DDRA=0xff;//PTAasoutputPORTA=0x03;//D1,D2,IN1=011asm{nop}AD_Init();//AD初始化PWM0_Init();PWM1_Init();DDRB=0xFF;PORTB=0x55;for(h=0;h<7;h++)AD_wData[h]=0;//全局變量初始化for(;;){ unsignedchara[7][3]={0};unsignedcharminangle[128]={0};unsignedcharminspeed[128]={0};unsignedchartangle[128]={0};unsignedchartspeed[128]={0};unsignedcharmaxangle[16]={0};unsignedcharmaxspeed[16]={0};unsignedcharfinalangle[16]={0};unsignedcharfinalspeed[16]={0};unsignedintanglenumer=0;unsignedintangledeno=0;unsignedintanglecog=0;unsignedintspeedcog=0;unsignedintspeednumer=0;unsignedintspeeddeno=0;unsignedcharanglecogint=0;unsignedcharspeedcogint=0;unsignedchar*w,*x,*u,*v;unsignedchari0,i1,i2,i3,i4,i5,i6,j,t,p,q,k;unsignedchari=0;unsignedcharm=0,n=0;//7channelsADCwhile(!ATD0STAT1_CCF0);//等待通道0轉(zhuǎn)換結(jié)束 AD_wData[0]=ATD0DR0;//讀通道0的轉(zhuǎn)換結(jié)果 //In‘fastflags’mode(AFFC=1),readingdatafromtheassociatedresultregister while(!ATD0STAT1_CCF1);//等待通道1轉(zhuǎn)換結(jié)束 AD_wData[1]=ATD0DR1;//讀通道1的轉(zhuǎn)換結(jié)果 while(!ATD0STAT1_CCF2);//等待通道2轉(zhuǎn)換結(jié)束 AD_wData[2]=ATD0DR2;//讀通道2的轉(zhuǎn)換結(jié)果 while(!ATD0STAT1_CCF3); AD_wData[3]=ATD0DR3; while(!ATD0STAT1_CCF4); AD_wData[4]=ATD0DR4; while(!ATD0STAT1_CCF5); AD_wData[5]=ATD0DR5; while(!ATD0STAT1_CCF6); AD_wData[6]=ATD0DR6;for(k=0;k<7;k++) { AD_wData[k]=AD_wData[k]&0xFF; //AD_wData[k]=AD_wData[k]*5000/255; } //調(diào)用輸入變量隸屬度函數(shù),得到每個(gè)傳感器對(duì)于三個(gè)隸屬子函數(shù)的隸屬度input(AD_wData,a);//模糊推理for(i0=0;i0<=2;i0++)for(i1=0;i1<=2;i1++)for(i2=0;i2<=2;i2++)for(i3=0;i3<=2;i3++)for(i4=0;i4<=2;i4++)for(i5=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論