2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  創(chuàng)新設(shè)計(jì)與實(shí)踐</b></p><p>  實(shí)訓(xùn)題目: 基于S08單片機(jī)的自動(dòng)尋跡小車設(shè)計(jì) </p><p>  專業(yè)班級(jí): 自動(dòng)化 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào):

2、 </p><p>  指導(dǎo)教師: </p><p>  設(shè)計(jì)地點(diǎn): </p><p>  2010年 12 月 20 日</p><p>  創(chuàng)新設(shè)計(jì)與實(shí)訓(xùn)任務(wù)書</p><p>&l

3、t;b>  緒論</b></p><p><b>  1.1 設(shè)計(jì)背景</b></p><p>  為加強(qiáng)大學(xué)生實(shí)踐、創(chuàng)新能力和團(tuán)隊(duì)精神的培養(yǎng),促進(jìn)高等教育教學(xué)改革,</p><p>  受教育部高等教育司委托(教高司函[2005]201 號(hào)文,附件1),由教育部高等學(xué)校自動(dòng)化專業(yè)教學(xué)指導(dǎo)分委員會(huì)(以下簡稱自動(dòng)化分教指委)主

4、辦全國大學(xué)生智能汽車競賽。該競賽以“立足培養(yǎng)、重在參與、鼓勵(lì)探索、追求卓越”為指導(dǎo)思想,是以智能汽車為競賽平臺(tái)的多學(xué)科專業(yè)交叉的創(chuàng)意性科技競賽,是面向全國大學(xué)生的一種具有探索性的工程實(shí)踐活動(dòng),旨在促進(jìn)高等學(xué)校素質(zhì)教育,培養(yǎng)大學(xué)生的綜合知識(shí)運(yùn)用能力、基本工程實(shí)踐能力和創(chuàng)新意識(shí),激發(fā)大學(xué)生從事科學(xué)研究與探索的興趣和潛能,倡導(dǎo)理論聯(lián)系實(shí)際、求真務(wù)實(shí)的學(xué)風(fēng)和團(tuán)隊(duì)協(xié)作的人文精神。</p><p>  該競賽分競速賽與創(chuàng)意賽

5、兩類比賽。競速賽是在規(guī)定的模型汽車平臺(tái)上,使</p><p>  用飛思卡爾半導(dǎo)體公司的8 位、16 位微控制器作為核心控制模塊,通過增加道</p><p>  路傳感器、電機(jī)驅(qū)動(dòng)電路以及編寫相應(yīng)軟件,制作一部能夠自主識(shí)別道路的模型</p><p>  汽車,按照規(guī)定路線行進(jìn),以完成時(shí)間最短者為優(yōu)勝。創(chuàng)意賽在統(tǒng)一比賽平臺(tái)上,</p><p>

6、  充分發(fā)揮參賽隊(duì)伍想象力,以特定任務(wù)為創(chuàng)意目標(biāo),完成研制作品,由競賽專家</p><p>  組觀摩作品現(xiàn)場展示、質(zhì)疑、現(xiàn)場觀眾投票等環(huán)節(jié),最終決定比賽名次。該競賽</p><p>  涵蓋了控制、模式識(shí)別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科知識(shí)。</p><p>  該競賽以飛思卡爾半導(dǎo)體公司為協(xié)辦方,已成功舉辦了五屆,曾得到了原教</p>

7、<p>  育部副部長吳啟迪教授、原高教司張堯?qū)W司長及理工處領(lǐng)導(dǎo)、飛思卡爾公司與各</p><p>  高校師生的高度評(píng)價(jià),已發(fā)展成全國26 個(gè)省(自治區(qū))、直轄市的300 余所高校廣泛參與的全國大學(xué)生智能汽車競賽。第三、四、五屆連續(xù)被教育部批準(zhǔn)列入國家教學(xué)質(zhì)量與教學(xué)改革工程資助項(xiàng)目之一(附件2,教高函[2010]13 號(hào))。飛思卡爾公司在2010 年8 月26 與國家教育部國際合作交流司簽署了關(guān)于

8、“高等學(xué)校人才培養(yǎng)戰(zhàn)略合作協(xié)議”,此協(xié)議將繼續(xù)贊助全國大學(xué)生“飛思卡爾” 杯智能汽車競賽。</p><p>  1.2 設(shè)計(jì)的意義</p><p>  智能車競賽與教育部已舉辦的數(shù)學(xué)建模、電子設(shè)計(jì)、機(jī)械設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)4大專業(yè)競賽不同,是以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識(shí)別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科交叉的科技創(chuàng)意性比賽。 引導(dǎo)和激勵(lì)學(xué)生實(shí)事求是、刻苦鉆研、勇

9、于創(chuàng)新、多出成果、提高素質(zhì),發(fā)現(xiàn)和培養(yǎng)一批在學(xué)術(shù)科技上有作為、有潛力的優(yōu)秀人才。 </p><p>  1.3 設(shè)計(jì)所需的設(shè)備</p><p>  采用組委會(huì)提供的標(biāo)準(zhǔn)賽車底盤(賽車MATIZ,配備標(biāo)準(zhǔn)驅(qū)動(dòng)電機(jī)RS-380SH、轉(zhuǎn)向舵機(jī)和可充電蓄電池);單片機(jī)FREESCALE的8位單片機(jī)MC9S08AW60開發(fā)評(píng)估板;傳感器采用紅外反射式對管及觸發(fā)電路;電機(jī)驅(qū)動(dòng)采用基于33886芯片的

10、H-Bridge驅(qū)動(dòng)電路。</p><p><b>  車模介紹</b></p><p><b>  ◆車模:G768</b></p><p>  ◆電機(jī):RS380-ST/3545,</p><p>  ◆舵機(jī):FUTABA3010</p><p><b>  2

11、 總體設(shè)計(jì)</b></p><p>  2.1 小車系統(tǒng)可分為6個(gè)部分:</p><p>  ◆電源管理:穩(wěn)定電壓,使系統(tǒng)電壓穩(wěn)定在要求的電壓范圍</p><p>  ◆光電傳感器:檢測路徑,校正小車在跑道上的位置</p><p>  ◆車速傳感:實(shí)時(shí)檢測小車當(dāng)前的速度</p><p>  ◆參數(shù)選擇:

12、根據(jù)小車當(dāng)前的狀態(tài),確定算法的參數(shù)</p><p>  ◆驅(qū)動(dòng)電機(jī):根據(jù)小車的速度、位置,增減速度</p><p>  ◆轉(zhuǎn)向電機(jī):控制小車的方向</p><p><b>  2.2 跑道</b></p><p>  小車跑道寬度50CM,中間黑線20mm,小車從出發(fā)去出發(fā),跑完一圈后,在起始線后1米范圍內(nèi)自動(dòng)停下來。

13、</p><p><b>  3 硬件電路設(shè)計(jì)</b></p><p>  3.1 傳感器的選擇</p><p>  光電式傳感器是利用光電器件把光信號(hào)轉(zhuǎn)換成電信號(hào)的裝置。光電式傳感器工作時(shí),先將被測量轉(zhuǎn)換為光量的變化,然后通過光電器件再把光量的變化轉(zhuǎn)換為相應(yīng)的電量變化,從而實(shí)現(xiàn)非電量的測量。光電式傳感器的核心(敏感元件)是光電器件,光電器

14、件的基礎(chǔ)是光電效應(yīng)。本設(shè)計(jì)采用采用A/D轉(zhuǎn)換的光電對管紅外光耦傳感器,當(dāng)發(fā)光二極管由A→B導(dǎo)通時(shí),會(huì)發(fā)出紅外線,經(jīng)小車跑道散射,紅外接收二極管在接收到紅外線時(shí)會(huì)由C→D導(dǎo)通,從而使OUT1的電壓由+5V變?yōu)?0.7。 </p><p><b>  3.2 車速檢測</b></p><p>  電動(dòng)機(jī)的測速有很多方法,常見的有測速發(fā)電機(jī)測速、霍爾傳感器測速、編碼器測速

15、、光電碼盤測速等。測速發(fā)電機(jī)測速適合大型電機(jī)的測速。霍爾傳感器測速的方法具有抗干擾能力強(qiáng),準(zhǔn)確可靠地特點(diǎn),但是測速分度較低,結(jié)構(gòu)也比較復(fù)雜。編碼器測速,不但使用方便,運(yùn)行可靠穩(wěn)定而且分辨率高,也是目前智能車大賽中普遍使用的測速裝置,但是價(jià)格有點(diǎn)高。我們將著重介紹光電碼盤測速,這種測速方法比較簡單、容易操作,而且編碼器也是基于光電碼盤測速的原理。</p><p>  接下來的是電路部分,需要用到槽型光耦,槽型光耦的

16、外形成一個(gè)“凹”字型,一邊是個(gè)紅外發(fā)射管另一邊是接收管,它們都被塑料殼包起來,中間留了一條很細(xì)的窄縫,沒有障礙物時(shí)接收管能接受到紅外線,有東西擋住中間時(shí)接收管就接收不到了。在選擇槽型光耦時(shí)中間縫越細(xì)小說明管子性能越好。</p><p>  從右圖電路中可以看出沒有遮擋時(shí),發(fā)射管發(fā)出的光線直接被接收管接收,接收管導(dǎo)通集電極電位為低電平,當(dāng)光線被遮擋時(shí),接收管接受不到光線,處于截止?fàn)顟B(tài),集電極為高電平,后面串了個(gè)CD

17、40106BC施密特觸發(fā)器的作用是對信號(hào)整形,遮光物體進(jìn)入和離開時(shí)都有一個(gè)過程,這就使得信號(hào)變化也有一個(gè)過程,不是規(guī)則的方波,不能直接提供給MCU,加上施密特觸發(fā)器以后,通過閥值觸發(fā),就變成規(guī)則的電平信號(hào)了。將方波信號(hào)送入測速芯片CD4040BC,可在Q0—Q11管腳輸出小車的速度。鏈接電路圖、CD4040BC封裝圖如下:</p><p><b>  3.3 電源管理</b></p&

18、gt;<p>  通過穩(wěn)壓芯片LM2940將電池電壓7.2V將為5V供單片機(jī)和光電傳感器,使用一個(gè)普通二極管將另一路輸出電壓鉗制到5.7V向舵機(jī)供電。電路圖如下:</p><p><b>  3.4 轉(zhuǎn)向電機(jī)</b></p><p>  1、舵機(jī)內(nèi)部結(jié)構(gòu):由舵盤、齒輪組、位置反饋電位計(jì)、直流電機(jī)、控制電路板等組成</p><p>

19、;  2、工作原理:脈寬信號(hào)給定參考位置,舵機(jī)內(nèi)部電路通過反饋控制調(diào)節(jié)舵盤角位。舵盤角位由PWM控制信號(hào)的脈寬決定。 </p><p><b>  3、舵機(jī)基本參數(shù):</b></p><p>  型 號(hào): S3010 </p><p>  電 壓: 4.0 ~ 6.0 [V]</p><p>  角度控制:1

20、76;/ 400us</p><p>  工作速度: 0.16 + 0.02 </p><p>  堵轉(zhuǎn)力矩: 6.5 + 1.3 [ Kg.cm] </p><p><b>  3.5 驅(qū)動(dòng)電機(jī)</b></p><p>  電機(jī)驅(qū)動(dòng)電路,我們在此使用MC33886芯片直接驅(qū)動(dòng)。</p><p&g

21、t;  ◆MC33886特性:工作電壓:5-40V</p><p>  ◆導(dǎo)通電阻: 120毫歐姆</p><p>  ◆輸入信號(hào):TTL/CMOS</p><p>  ◆PWM頻率:< 10KHz</p><p>  ◆短路保護(hù)、欠壓保護(hù)、過溫保護(hù)等</p><p><b>  4 系統(tǒng)軟件設(shè)計(jì)&l

22、t;/b></p><p>  在智能車系統(tǒng)的設(shè)計(jì)中,硬件是基礎(chǔ),沒有一個(gè)好的硬件平臺(tái),軟件就無法運(yùn)行。對于智能車系統(tǒng)來說,軟件的核心是控制算法。而完成這些任務(wù)的編程語言有匯編語言和C語言。軟件部分是整個(gè)智能車系統(tǒng)的靈魂,在硬件方面各參賽隊(duì)之間大同小異,真正體現(xiàn)各參賽隊(duì)智能車的優(yōu)勢和最后決定比賽成績好壞的往往是軟件部分,尤其是核心控制算法的設(shè)計(jì)。</p><p><b> 

23、 4.1 控制算法</b></p><p>  PID(Proportional Integral Differential)控制是比例、積分、微分控制的簡稱。在自動(dòng)控制領(lǐng)域中,PID控制是歷史最久、生命力最強(qiáng)的基本控制方式。</p><p>  PID控制器的原理是根據(jù)系統(tǒng)的被調(diào)量實(shí)測值與設(shè)定值之間的偏差,利用偏差的比例、積分、微分三個(gè)環(huán)節(jié)的不同組合計(jì)算出對廣義被控對象的控

24、制量。</p><p>  常規(guī)PID控制系統(tǒng)原理框圖</p><p>  PID控制算法可分為位置型和增量型兩種:</p><p><b>  (1)位置型算法</b></p><p>  模擬調(diào)節(jié)器的調(diào)節(jié)動(dòng)作是連續(xù)的,任何瞬間的輸出控制量 u 都對應(yīng)于執(zhí)行機(jī)構(gòu)(如調(diào)節(jié)閥)的位置。數(shù)字控制器的輸出控制量也和閥門位置相對

25、應(yīng),故稱為位置型算式(簡稱位置式)。</p><p><b>  (2)增量型算法</b></p><p>  增量型算法僅僅是在算法設(shè)計(jì)上的改進(jìn),其輸出是相對于上次控制輸出量的增量形式,并沒有改變位置型算法的本質(zhì),即它仍然反映執(zhí)行機(jī)構(gòu)的位置開度。如果希望輸出控制量的增量,則必須采用具有保持位置功能的執(zhí)行機(jī)構(gòu)。</p><p>  4.2 主程

26、序流程圖</p><p>  主程序流程圖如圖所示。系統(tǒng)首先對設(shè)備進(jìn)行初始化,然后選擇進(jìn)入?yún)?shù)修改程序。參數(shù)設(shè)定完之后打開中斷,最后循環(huán)執(zhí)行位置速度控制程序。</p><p>  4.3 程序的初始化</p><p>  初始化部分包括參數(shù)的讀取、PID初始化、定時(shí)器和脈沖計(jì)數(shù)器的初始化、I/O端口的初始化、PWM控制器的初始化和鍵盤顯示控制器7279的初始化。&l

27、t;/p><p>  圖4.2 初始化程序流程圖</p><p>  4.4 位置速度控制</p><p>  程序首先讀取前方傳感器組的狀態(tài)來判斷賽車和黑線的位置關(guān)系,通過該位置關(guān)系給出相應(yīng)的轉(zhuǎn)向舵機(jī)的轉(zhuǎn)角和電機(jī)的轉(zhuǎn)速。具體程序流程圖如圖。</p><p>  圖4.3 位置速度控制程序</p><p>  4.5 中斷

28、處理程序</p><p>  中斷處理程序每20毫秒執(zhí)行一次,中斷處理函數(shù)的主要目的是定時(shí)讀取脈沖計(jì)數(shù)器的值并把該值反饋給PID控制程序,然后調(diào)用PID控制程序。圖給出了程序流程圖。</p><p>  4.6 PID控制程序</p><p>  系統(tǒng)采用增量式的速度PID,具體流程圖如圖4.5 。</p><p>  圖4.5 PID控制程

29、序</p><p><b>  5 系統(tǒng)調(diào)試</b></p><p><b>  5.1 開發(fā)工具</b></p><p>  程序的開發(fā)是在組委會(huì)提供的CodeWarrior IDE下進(jìn)行的,包括源程序的編寫、編譯和鏈接,并最終生成可執(zhí)行文件。</p><p>  CodeWarrior 6.2

30、 是面向以HC1和S12為CPU的單片機(jī)嵌入式應(yīng)用開發(fā)軟件包。包括集成開發(fā)環(huán)境IDE、處理器專家?guī)臁⑷酒抡?、可視化參?shù)顯示工具、項(xiàng)目工程管理器、C交叉編譯器、匯編器、鏈接器以及調(diào)試器。</p><p><b>  5.2 調(diào)試過程</b></p><p>  我們使用的是單片機(jī)本身配套的BDM,在調(diào)試時(shí),把程序編譯下載到S08AC60單片機(jī)內(nèi),運(yùn)行后可通過內(nèi)存窗口

31、查看程序運(yùn)行狀況。根據(jù)小車在模擬跑道上的狀況調(diào)整參數(shù),完善硬件、軟件設(shè)計(jì),最終達(dá)到理想的水平。</p><p><b>  總 結(jié) </b></p><p>  在此份報(bào)告中,我主要介紹了智能車準(zhǔn)備的基本思路,包括電路、軟件、以及最重要的控制算法的創(chuàng)新思想。</p><p>  在電路方面,我們以模塊形式分類,在電源管理、電機(jī)驅(qū)動(dòng)、舵機(jī)驅(qū)動(dòng)

32、、傳感器、速度檢測,這五個(gè)模塊分別設(shè)計(jì),在查找資料的基礎(chǔ)上確定合適的最優(yōu)方案;然后我加以實(shí)驗(yàn),最后以報(bào)告中所提到的形式?jīng)Q定了我們最終的電路。</p><p>  在算法方面,我們使用C語言編程,利用比賽推薦的開發(fā)工具調(diào)試程序,經(jīng)過小組成員不斷討論、改進(jìn),終于設(shè)計(jì)出一套比較通用的,穩(wěn)定的程序。在這套算法中,我們結(jié)合路況調(diào)整車速,做到直線加速,彎道減速,保證在最短時(shí)間跑完全程。</p><p>

33、;  雖然成功的完成了智能車的設(shè)計(jì)制作,但是賽車的整體性能還有可提高的環(huán)節(jié),我們在以下方面還有待于更大的提高。路線識(shí)別方面,如果合理的調(diào)整紅外裝置,則可以更遠(yuǎn)的探測路線,以便做好彎道前的準(zhǔn)備,這樣便可以在直道上更充分的加速。在循線算法方面,更多的閱讀文獻(xiàn),查閱資料,可以使得理論更加成熟,也可以更有效的完善算法。</p><p><b>  參 考 文 獻(xiàn)</b></p><

34、;p>  1 王威.嵌入式微控制器S08AW原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2009.</p><p>  2 陳杰. 傳感器與檢測技術(shù)[M].北京:高教出版社,2004.</p><p>  3 邵貝貝 龔光華.單片機(jī)認(rèn)識(shí)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2006.</p><p>  4 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:

35、高等教育出版社,1989</p><p>  5 陳懂,劉瑢,金世俊.智能小車的多傳感器數(shù)據(jù)融合.現(xiàn)代電子技術(shù),2005,第六期</p><p>  6 臧杰,閻巖. 汽車構(gòu)造[M]. 北京. 機(jī)械工業(yè)出版社.2005</p><p>  7 沈長生.常用電子元器件使用一讀通[M].北京. 人民郵電出版社.2004 </p><p>  8

36、宗光華.機(jī)器人的創(chuàng)意設(shè)計(jì)與實(shí)踐[M].北京. 北京航空航天大學(xué)出版社.2004</p><p>  9 張偉等.Protel DXP高級(jí)應(yīng)用[M].北京. 人民郵電出版社.2002 </p><p>  10 張文春. 汽車?yán)碚揫M].北京.機(jī)械工業(yè)出版社.2005</p><p>  11 王曉明. 電動(dòng)機(jī)的單片機(jī)控制[M].北京. 北京航空航天大學(xué)出版社.200

37、2</p><p><b>  附表1:硬件電路圖</b></p><p><b>  附表2:程序源代碼</b></p><p>  #include <hidef.h> /* for EnableInterrupts macro */</p><p>  #include "

38、;derivative.h" /* include peripheral declarations */</p><p>  #include <math.h></p><p>  /*********************************定義舵機(jī)變量******************************************/</p>

39、<p>  int ad_data[12]; /*定義數(shù)組,存放12路ad轉(zhuǎn)化后的值*/</p><p>  int ad_add=0;</p><p>  int ad_average=0 ;</p><p>  int AD,Turn; </p><p>  int mid_flag,left_close,right_

40、close;</p><p>  char Zhuanjiao[]={180,170,160,150,140,130,121,113,106,100,95,90,85,80,74,67,59,50,40,30,20,10,0};</p><p>  int flag0,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag10,

41、flag11;</p><p>  /*********************************定義電機(jī)變量******************************************/</p><p>  #define Stop1 TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0;//能耗 </p><p>  #

42、define Stop2 TPM2C0V=1500;PTCD_PTCD6=1;PTFD_PTFD7=0;//反轉(zhuǎn)</p><p>  int cangshu[]={6,6,6,5,5,4,4,3,3,0,0,0,0,0,-3,-3,-4,-4,-5,-5,-6,-6,-6,}; </p><p>  //char ShuruSudu[]={35,35,35,35,38,38,40,40,

43、42,42,45,45,45,42,42,40,40,38,38,35,35,35,35};</p><p>  //char Shuruspeed[]={23,23,23,23,24,25,26,27,28,29,35,35,35,29,28,27,26,25,24,23,23,23,23}; //沖出跑道</p><p>  char Shuruspeed[]={12,12,12,13

44、,14,15,16,17,18,19,20,20,20,19,18,17,16,15,14,13,12,12,12};//剛好</p><p>  // char Shuruspeed[]={8,8,8,7,7,8,9,9,10,11,13,13,13,11,10,9,9,8,7,7,8,8,8};</p><p>  int speed,a,b;</p><p>

45、<b>  int u=0;</b></p><p><b>  int v,w;</b></p><p><b>  int uk;</b></p><p><b>  int m,n;</b></p><p>  int zw[]={0,0,0,0,0

46、,0,0,0,0,0,0};</p><p><b>  int r;</b></p><p>  int l[]={0}; </p><p>  int circle=0; </p><p>  typedef struct </p><p><b>  {</b>&l

47、t;/p><p>  int NextPoint; </p><p>  int ThisPoint; //設(shè)定目標(biāo) Desired value</p><p>  int Kp; //比例常數(shù) Proportional Const</p><p>  int Ki; /

48、/積分常數(shù) Integral Const</p><p>  int Kd; //微分常數(shù) Derivative Const</p><p>  int LastError; //Error[-1]</p><p>  int PrevError; //Error[-2]</p><p>  int

49、 SumError; //Sums of Errors</p><p>  } speedPID ;</p><p>  speedPID sPID; /* *pp=&sPID; */</p><p>  typedef struct </p><p><b>  {</b>&

50、lt;/p><p>  int NextPoint;</p><p>  int ThisPoint; //設(shè)定目標(biāo) Desired value</p><p>  int Kp; //比例常數(shù) Proportional Const</p><p>  int Ki; //積分常數(shù)

51、Integral Const</p><p>  int Kd; //微分常數(shù) Derivative Const</p><p>  int LastError; //Error[-1]</p><p>  int PrevError; //Error[-2]</p><p>  int Su

52、mError; //Sums of Errors</p><p>  } steerPID ;</p><p>  steerPID DjPID; /*, *pp=&DjPID; */</p><p>  /*************************************************************

53、************/</p><p>  void ADCInit(void)</p><p><b>  {</b></p><p>  ADC1CFG=0X00; /*A/D初始化,高速模式,8位精度,ADCK=總線頻率*/</p><p>  ADC1SC2=0X00;

54、 /*軟件觸發(fā),比較功能禁止*/</p><p>  APCTL1=0XFF; /*AD0~AD7使能*/</p><p>  APCTL2=0XFF; /*AD8-AD15使能*/</p><p>  ADC1SC1=0X00; /*禁止轉(zhuǎn)換完成中斷,單詞轉(zhuǎn)換,

55、選擇AD0,并啟動(dòng)了轉(zhuǎn)換*/</p><p><b>  }</b></p><p>  /*************************************************************************/ </p><p>  void get_data(void)</p><p>

56、;<b>  { </b></p><p>  ad_add=0; /*采集*/</p><p>  ADC1SC1=0X00; /*選擇AD通道0,若轉(zhuǎn)化沒有結(jié)束則等待,否則將轉(zhuǎn)化結(jié)果存放入ad_data[0]中*/</p><p>  for(;!ADC1SC1_COCO;);</p

57、><p>  ad_data[0]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[0] ;</p><p>  ADC1SC1=0X01;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[1]=ADC1RL;</p><

58、;p>  ad_add=ad_add+ad_data[1] ;</p><p>  ADC1SC1=0X02;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[2]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[2] ;</p><

59、p>  ADC1SC1=0X03;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[3]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[3] ;</p><p>  ADC1SC1=0X04;</p><p>  for(;!A

60、DC1SC1_COCO;);</p><p>  ad_data[4]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[4];</p><p>  ADC1SC1=0X05;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[5]=ADC

61、1RL;</p><p>  ad_add=ad_add+ad_data[5] ;</p><p>  ADC1SC1=0X06;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[6]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[6

62、] ; </p><p>  ADC1SC1=0X07;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[7]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[7];</p><p>  ADC1SC1=0X08;</p>

63、<p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[8]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[8];</p><p>  ADC1SC1=0X09;</p><p>  for(;!ADC1SC1_COCO;);</p><p

64、>  ad_data[9]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[9] ;</p><p>  ADC1SC1=0X0A;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[10]=ADC1RL;</p><p>  ad

65、_add=ad_add+ad_data[10];</p><p>  ADC1SC1=0X0B;</p><p>  for(;!ADC1SC1_COCO;);</p><p>  ad_data[11]=ADC1RL;</p><p>  ad_add=ad_add+ad_data[11]; </p><p> 

66、 ad_average= ad_add /7;</p><p>  /*************************************************************************/ </p><p>  if(ad_data[0]>=ad_average)</p><p><b>  {</b><

67、;/p><p><b>  flag0=1;</b></p><p><b>  }</b></p><p>  if(ad_data[0]<ad_average)</p><p><b>  {</b></p><p><b>  flag

68、0=0;</b></p><p><b>  }</b></p><p>  if(ad_data[1]>=ad_average)</p><p><b>  {</b></p><p>  flag1=300;</p><p><b>  }&l

69、t;/b></p><p>  if(ad_data[1]<ad_average)</p><p><b>  {</b></p><p><b>  flag1=0;</b></p><p><b>  }</b></p><p>  if

70、(ad_data[2]>=ad_average)</p><p><b>  {</b></p><p><b>  flag2=5;</b></p><p><b>  }</b></p><p>  if(ad_data[2]<ad_average)</p

71、><p><b>  {</b></p><p><b>  flag2=0; </b></p><p><b>  }</b></p><p>  if(ad_data[3]>=ad_average)</p><p><b>  {<

72、/b></p><p>  flag3=700;</p><p><b>  }</b></p><p>  if(ad_data[3]<ad_average) </p><p><b>  {</b></p><p><b>  flag3=0; &

73、lt;/b></p><p><b>  }</b></p><p>  if(ad_data[4]>=ad_average)</p><p><b>  {</b></p><p><b>  flag4=8;</b></p><p>&l

74、t;b>  }</b></p><p>  if(ad_data[4]<ad_average)</p><p><b>  {</b></p><p><b>  flag4=0;</b></p><p><b>  }</b></p>&

75、lt;p>  if(ad_data[5]>=ad_average)</p><p><b>  {</b></p><p>  flag5=1100;</p><p><b>  }</b></p><p>  if(ad_data[5]<ad_average)</p>

76、<p><b>  {</b></p><p><b>  flag5=0; </b></p><p><b>  }</b></p><p>  if(ad_data[6]>=ad_average)</p><p><b>  {</b&g

77、t;</p><p><b>  flag6=13;</b></p><p><b>  }</b></p><p>  if(ad_data[6]<ad_average)</p><p><b>  {</b></p><p><b>

78、  flag6=0; </b></p><p><b>  }</b></p><p>  if(ad_data[7]>=ad_average)</p><p><b>  {</b></p><p>  flag7=1500;</p><p><b&

79、gt;  }</b></p><p>  if(ad_data[7]<ad_average)</p><p><b>  {</b></p><p><b>  flag7=0; </b></p><p><b>  }</b></p><

80、p>  if(ad_data[8]>=ad_average)</p><p><b>  {</b></p><p><b>  flag8=17;</b></p><p><b>  }</b></p><p>  if(ad_data[8]<ad_aver

81、age)</p><p><b>  {</b></p><p><b>  flag8=0;</b></p><p><b>  }</b></p><p>  if(ad_data[9]>=ad_average)</p><p><b&g

82、t;  {</b></p><p>  flag9=1900;</p><p><b>  }</b></p><p>  if(ad_data[9]<ad_average)</p><p><b>  {</b></p><p><b>  fl

83、ag9=0; </b></p><p><b>  }</b></p><p>  if(ad_data[10]>=ad_average)</p><p><b>  {</b></p><p>  flag10=21;</p><p><b> 

84、 }</b></p><p>  if(ad_data[10]<ad_average)</p><p><b>  {</b></p><p>  flag10=0; </p><p><b>  }</b></p><p>  if(ad_data[11]

85、>=ad_average)</p><p><b>  {</b></p><p>  flag11=2300;</p><p><b>  }</b></p><p>  if(ad_data[11]<ad_average)</p><p><b> 

86、 {</b></p><p><b>  flag11=0;</b></p><p><b>  } </b></p><p>  AD=flag0+flag1+flag2+flag3+flag4+flag5+flag6+flag7+flag8+flag9+flag10+flag11;</p>

87、;<p>  /**********************************************************************************/ </p><p>  if(right_close==0)</p><p><b>  {</b></p><p>  if(AD== 1)<

88、/p><p><b>  {</b></p><p>  Turn=0;mid_flag=0;left_close=1; </p><p><b>  }</b></p><p>  if(AD== 301)</p><p><b>  {</b><

89、/p><p>  Turn=1;mid_flag=0;left_close=1;</p><p><b>  }</b></p><p>  if(AD== 300)</p><p><b>  {</b></p><p>  Turn=2;mid_flag=0;left_clo

90、se=1;</p><p><b>  }</b></p><p>  if(AD== 305)</p><p><b>  {</b></p><p>  Turn=3;mid_flag=0;left_close=1;</p><p><b>  }</b&

91、gt;</p><p>  if(AD== 5)</p><p><b>  {</b></p><p>  Turn=4; mid_flag=0;left_close=1; </p><p><b>  }</b></p><p>  if(AD== 705)</p&

92、gt;<p><b>  {</b></p><p>  Turn=5; mid_flag=0;left_close=1;</p><p><b>  }</b></p><p>  if(AD== 700)</p><p><b>  {</b></p&g

93、t;<p>  Turn=6;mid_flag=0; left_close=1; </p><p><b>  }</b></p><p>  if(AD== 708)</p><p><b>  {</b></p><p>  Turn=7;mid_flag=0; left_clo

94、se=1;</p><p><b>  }</b></p><p>  if(AD== 8)</p><p><b>  {</b></p><p>  Turn=8; mid_flag=0;left_close=1; </p><p><b>  } </

95、b></p><p><b>  }</b></p><p>  if(AD== 1108)</p><p><b>  {</b></p><p>  Turn=9;mid_flag=1;left_close=0;right_close=0; </p><p>

96、<b>  }</b></p><p>  if(AD== 1100)</p><p><b>  {</b></p><p>  Turn=10; mid_flag=1;left_close=0;right_close=0;</p><p><b>  }</b></p

97、><p>  if(AD== 1113)</p><p><b>  {</b></p><p>  Turn=11;mid_flag=1;left_close=0;right_close=0; </p><p><b>  }</b></p><p>  if(AD==13)

98、</p><p><b>  {</b></p><p>  Turn=12;mid_flag=1;left_close=0;right_close=0; </p><p><b>  }</b></p><p>  if(AD== 1513)</p><p><b&g

99、t;  {</b></p><p>  Turn=13;mid_flag=1;left_close=0;right_close=0; </p><p><b>  }</b></p><p>  if(left_close==0)</p><p><b>  {</b></p&g

100、t;<p>  if(AD== 1500)</p><p><b>  {</b></p><p>  Turn=14; mid_flag=0; right_close=1;</p><p><b>  }</b></p><p>  if(AD== 1517)</p>

101、<p><b>  {</b></p><p>  Turn=15; mid_flag=0;right_close=1; </p><p><b>  }</b></p><p>  if(AD== 17)</p><p><b>  {</b></p>

102、;<p>  Turn=16; mid_flag=0; right_close=1;</p><p><b>  }</b></p><p>  if(AD== 1917)</p><p><b>  {</b></p><p>  Turn=17; mid_flag=0; right

103、_close=1; </p><p><b>  }</b></p><p>  if(AD== 1900)</p><p><b>  {</b></p><p>  Turn=18; mid_flag=0; right_close=1; </p><p><b>

104、;  }</b></p><p>  if(AD== 1921)</p><p><b>  {</b></p><p>  Turn=19;mid_flag=0; right_close=1;</p><p><b>  }</b></p><p>  if(

105、AD== 21)</p><p><b>  {</b></p><p>  Turn=20; mid_flag=0; right_close=1;</p><p><b>  }</b></p><p>  if(AD== 2321)</p><p><b> 

106、 {</b></p><p>  Turn=21; mid_flag=0; right_close=1;</p><p><b>  }</b></p><p>  if(AD== 2300)</p><p><b>  {</b></p><p>  Turn

107、=22;mid_flag=0; right_close=1; </p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  /*************************PID初始化**

108、********************/</p><p>  void PIDInit(void)</p><p><b>  {</b></p><p>  sPID.ThisPoint=0; //設(shè)定目標(biāo) Desired value</p><p>  sPID.Kp=0; //

109、比例常數(shù) Proportional Const</p><p>  sPID.Ki=0; //積分常數(shù) Integral Const</p><p>  sPID.Kd=0; //微分常數(shù) Derivative Const</p><p>  sPID.LastError=0; //Error[-1]&l

110、t;/p><p>  sPID.PrevError=0; //Error[-2]</p><p>  sPID.SumError=0; //Sums of Errors </p><p>  DjPID.ThisPoint=0; //設(shè)定目標(biāo) Desired value 302</p><p>  DjPI

111、D.Kp=1; //比例常數(shù) Proportional Const 50</p><p>  DjPID.Ki=1; //積分常數(shù) Integral Const</p><p>  DjPID.Kd=3; //微分常數(shù) Derivative Const</p><p>  DjPID.La

112、stError=0; //Error[-1]</p><p>  DjPID.PrevError=0; //Error[-2]</p><p>  DjPID.SumError=0; //Sums of Errors </p><p><b>  }</b></p><p>  /****

113、*********************IO初始化**********************/</p><p>  void IOInit(void)</p><p><b>  {</b></p><p>  PTGDD_PTGDD4=0; //G4復(fù)位按鍵</p><p>  PTGPE_PTGPE4=1;

114、</p><p>  PTGDD_PTGDD3=1; /*G3連接計(jì)數(shù)芯片4040清零管腳,高電平清零*/</p><p>  PTGD_PTGD3=0; </p><p>  PTGDD_PTGDD1=1; /*G1拉高蜂鳴器,高電平有效,強(qiáng)驅(qū)動(dòng)*/</p><p>  PTGDS_PTGDS1=1;</p>

115、<p>  PTGD_PTGD1=1;</p><p>  PTGD_PTGD1=0;</p><p>  PTEDD=0x00; /*E 測速計(jì)數(shù)輸入*/</p><p>  PTCDD_PTCDD6=1; /*C6連接驅(qū)動(dòng)芯片386的IN1*/</p><p>  PTFDD_PTFDD7=1; /* F7連接驅(qū)

116、動(dòng)芯片386的IN2*/</p><p>  PTCD_PTCD6=0;</p><p>  PTFD_PTFD7=1;</p><p><b>  }</b></p><p>  /*************************時(shí)鐘初始化**********************/</p><

117、p>  void ICGInit(void)</p><p><b>  {</b></p><p>  ICGC1=0x78; /*fll系數(shù)為p=1,外部晶振*/ </p><p>  ICGC2=0x20; /*倍頻因子N=8,分頻因子R=1*/</p><p><b>  

118、}</b></p><p>  /*************************電機(jī)舵機(jī)初始化**********************/</p><p>  void servoInit(void)</p><p><b>  { </b></p><p>  TPM2SC=0x0F;

119、 /*總線時(shí)鐘128分頻*/</p><p>  TPM2MOD=2500;</p><p>  TPM2C1SC=0x28; /*舵機(jī)初始化------通道0設(shè)置邊緣對齊的PWM,中斷請求不允許*/</p><p>  TPM2C1V=185; </p><p>  TPM2C0SC=0x28;

120、 /*電機(jī)初始化------通道0設(shè)置邊緣對齊的PWM,中斷請求不允許*/</p><p>  TPM2C0V=0; /*設(shè)定初始占空比,舵機(jī)處于中間位置*/</p><p><b>  }</b></p><p>  /*************************延時(shí)****************

121、************/</p><p>  void delay(int de){</p><p>  while(de--){ __RESET_WATCHDOG();}</p><p><b>  }</b></p><p>  void delay1(int de)</p><p>&l

122、t;b>  {</b></p><p>  int i=100;</p><p>  while(de--)</p><p>  while(i--)</p><p>  __RESET_WATCHDOG();</p><p><b>  } </b></p>&l

123、t;p>  void delay2(int count) /* 延時(shí)子程序*/</p><p><b>  { </b></p><p>  int i,j,k;</p><p>  for(i=0;i<count;i++)</p><p><b>  {

124、 </b></p><p>  for(j=0;j<100;j++)</p><p><b>  { </b></p><p>  for(k=0;k<800;k++)</p><p><b>  {</b></p><p>  __RESET

125、_WATCHDOG(); /*復(fù)位看門狗計(jì)數(shù)器*/</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p>

126、<p>  /*************************溢出中斷處理****************** **/</p><p>  interrupt VectorNumber_Vtpm3ovf void TPM3OVF_ISR(void)</p><p><b>  { </b></p><p>  DisableI

127、nterrupts;</p><p>  if((TPM3SC & 0x80)==0x80)</p><p><b>  {</b></p><p>  TPM3SC_TOF = 0;</p><p><b>  }</b></p><p>  speed=PTED&

128、amp;0x3F;;</p><p>  PTGD_PTGD3=1;//計(jì)數(shù)器清零</p><p>  PTGD_PTGD3=0;</p><p>  if((Turn>7)&&(Turn<15)) </p><p><b>  {</b></p><p><b&

129、gt;  l[0]=1;</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  l[0]=0;</b></p><

130、p>  if(Turn>14) r=1;</p><p>  if(Turn<8) r=2;</p><p><b>  }</b></p><p>  zw[10]=zw[9];</p><p>  zw[9]=zw[8];</p><p>  zw[8]=zw[7];<

131、/p><p>  zw[7]=zw[6];</p><p>  zw[6]=zw[5];</p><p>  zw[5]=zw[4];</p><p>  zw[4]=zw[3];</p><p>  zw[3]=zw[2];</p><p>  zw[2]=zw[1];</p>&l

132、t;p>  zw[1]=zw[0];</p><p>  zw[0]=l[0];</p><p>  EnableInterrupts;</p><p><b>  } </b></p><p>  /*********************速度PID****************************/&

133、lt;/p><p>  int speedPIDCalc (speedPID *pp)</p><p><b>  {</b></p><p>  int Error,dError;</p><p>  Error=pp->ThisPoint-pp->NextPoint; //偏差e(k)</p>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論