創新設計與實踐報告--自動尋跡小車_第1頁
創新設計與實踐報告--自動尋跡小車_第2頁
創新設計與實踐報告--自動尋跡小車_第3頁
創新設計與實踐報告--自動尋跡小車_第4頁
創新設計與實踐報告--自動尋跡小車_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精品文檔創新設計與實踐實訓題目:基于S08單片機的自動尋跡小車設計專業班級:自動化學生姓名:學 號:指導教師:王威設計地點:2010年12 月 20 日日期:成績:i歡迎下載精品文檔創新設計與實訓任務書學生姓名專業班級自動化學號題目基于 S08單片機的自動尋跡小車設計課題性質其他課題來源自擬指導教師王威主要內容(參數)全國大學生“飛思卡爾”杯智能車競賽是教育部主辦的大學生5大賽事之一,具有較強的綜合訓練作用。本設計基于S08單片機,基于反射式光耦設計自動尋跡小車,主要內容如下:1、設計智能車尋跡電路;2、設計智能車電機驅動及調速電路;3、編寫程序,能夠適應各種賽道。通過本次創新設計使得學生鞏固

2、所學的理論與技能,提高學生的實踐能力和應用能力,初步掌握實際的工程設計方法,設計步驟,為將來的學習與畢業 設計打卜堅實的基礎。任務要求(進度)(包括應具備的條件、圖表等)設計要求:1 .設計基于光電開關的尋跡電路;2 .設計小車主電機驅動及調速電路;3 .編寫主程序,使小車能夠根據比賽賽道自動尋跡前進;4 、繪制相應的硬件圖紙及軟件流程圖;5 .完成軟件與硬件設計并加以調試;6 .按照要求撰寫創新設計與實踐報告書。主要參考資料1王威.嵌入式微控制器 S08AWM理與實踐M.北京:北京航空航天大學 出版社,2009.2陳杰.傳感器與卞測技術M.北京:高教出版社,2004.3邵貝貝 龔光華.單片機

3、認識與實踐M.北京:北京航空航天大學出版社, 2006.4閻石.數字電子技術基石(第三版).北京:高等教育出版社,1989審查意見系(教研室)主任簽字:年月日緒論1. 1設計背景為加強大學生實踐、創新能力和團隊精神的培養,促進高等教育教學改革, 受教育部高等教育司委托(教高司函2005201號文,附件1),由教育部高等學 校自動化專業教學指導分委員會(以下簡稱自動化分教指委)主辦全國大學生智 能汽車競賽。該競賽以“立足培養、重在參與、鼓勵探索、追求卓越”為指導思 想,是以智能汽車為競賽平臺的多學科專業交叉的創意性科技競賽,是面向全國大學生的一種具有探索性的工程實踐活動,旨在促進高等學校素質教育

4、,培養大學生的綜合知識運用能力、基本工程實踐能力和創新意識,激發大學生從事科學 研究與探索的興趣和潛能,倡導理論聯系實際、求真務實的學風和團隊協作的人 文精神。該競賽分競速賽與創意賽兩類比賽。競速賽是在規定的模型汽車平臺上,使 用飛思卡爾半導體公司的8位、16位微控制器作為核心控制模塊,通過增加道 路傳感器、電機驅動電路以及編寫相應軟件,制作一部能夠自主識別道路的模型 汽車,按照規定路線行進,以完成時間最短者為優勝。創意賽在統一比賽平臺上, 充分發揮參賽隊伍想象力,以特定任務為創意目標,完成研制作品,由競賽專家 組觀摩作品現場展示、質疑、現場觀眾投票等環節,最終決定比賽名次。該競賽 涵蓋了控制

5、、模式識別、傳感技術、電子、電氣、計算機、機械等多個學科知識。 該競賽以飛思卡爾半導體公司為協辦方,已成功舉辦了五屆,曾得到了原教 育部副部長吳啟迪教授、原高教司張堯學司長及理工處領導、飛思卡爾公司與各 高校師生的高度評價,已發展成全國26個省(自治區)、直轄市的300余所高校 廣泛參與的全國大學生智能汽車競賽。 第三、四、五屆連續被教育部批準列入國 家教學質量與教學改革工程資助項目之一(附件 2,教高函201013號)。飛思 卡爾公司在2010年8月26與國家教育部國際合作交流司簽署了關于 “高等學校 人才培養戰略合作協議”,此協議將繼續贊助全國大學生“飛思卡爾”杯智能汽 車競賽。1. 2設

6、計的意義智能車競賽與教育部已舉辦的數學建模、電子設計、機械設計、結構設計4大專業競賽不同,是以迅猛發展的汽車電子為背景,涵蓋了控制、模式識別、傳 感技術、電子、電氣、計算機、機械等多個學科交叉的科技創意性比賽。引導和激勵學生實事求是、刻苦鉆研、勇于創新、多出成果、提高素質,發現和培養 一批在學術科技上有作為、有潛力的優秀人才。1. 3設計所需的設備采用組委會提供的標準賽車底盤(賽車MATIZ配備標準驅動電機RS-380sH 轉向舵機和可充電蓄電池);單片機FREESCALE8位單片機MC9s08AW60S:評估 板;傳感器采用紅外反射式對管及觸發電路;電機驅動采用基于338865片的H-Bri

7、dge驅動電路。車模介紹車模:G768電機:RS380-ST/3545,舵機:FUTABA30109歡在下載2總體設計2.1 小車系統可分為6個部分: 電源管理:穩定電壓,使系統電壓穩定在要求的電壓范圍 光電傳感器:檢測路徑,校正小車在跑道上的位置 車速傳感:實時檢測小車當前的速度 參數選擇:根據小車當前的狀態,確定算法的參數 驅動電機:根據小車的速度、位置,增減速度 轉向電機:控制小車的方向話向電機2.2 跑道小車跑道寬度50CM中間黑線20mm小車從出發去出發,跑完一圈后,在起 始線后1米范圍內自動停下來。3cin3cm3硬件電路設計3.1 傳感器的選擇光電式傳感器是利用光電器件把光信號轉

8、換成電信號的裝置。光電式傳感器工作時,先將被測量轉換為光量的變化,然后通過光電器件再把光量的變化轉換 為相應的電量變化,從而實現非電量的測量。光電式傳感器的核心(敏感元件)是光電器件,光電器件的基礎是光電效應。本設計采用采用A/D轉換的光電對管 紅外光耦傳感器,當發光二極管由 A-B導通時,會發出紅外線,經小車跑道散射,紅外接收二極管在接收到紅外線時會由C-D導通,從而使OUT1的電壓由+5V123變為+0.7。V CC3.2 車速檢測電動機的測速有很多方法,常見的有測速發電機測速、霍爾傳感器測速、編 碼器測速、光電碼盤測速等。測速發電機測速適合大型電機的測速。 霍爾傳感器 測速的方法具有抗干

9、擾能力強,準確可靠地特點,但是測速分度較低,結構也比 較復雜。編碼器測速,不但使用方便,運行可靠穩定而且分辨率高,也是目前智 能車大賽中普遍使用的測速裝置,但是價格有點高。我們將著重介紹光電碼盤測 速,這種測速方法比較簡單、容易操作,而且編碼器也是基于光電碼盤測速的原 理。接下來的是電路部分,需要用到槽型光耦,槽型光耦的外形成一個“凹” 字型,一邊是個紅外發射管另一邊是接收管, 它們都被塑料殼包起來,中間留了 一條很細的窄縫,沒有障礙物時接收管能接受到紅外線, 有東西擋住中間時接收 管就接收不到了。在選擇槽型光耦時中間縫越細小說明管子性能越好。從右圖電路中可以看出沒有遮 擋時,發射管發出的光線

10、直接被接收 管接收,接收管導通集電極電位為低 電平,當光線被遮擋時,接收管接受 不到光線,處于截止狀態,集電極為 高電平,后面用了個CD40106B胸密 特觸發器的作用是對信號整形,遮光 物體進入和離開時都有一個過程,這 就使得信號變化也有一個過程,不是規則的方波,不能直接提供給 MCU加上施 密特觸發器以后,通過閥值觸發,就變成規則的電平信號了。將方波信號送入測速芯片CD4040BC可在QO-Q11管腳輸出/、車的速度。3鏈接電路圖、CD4040BC封裝圖如下:VCCVCCvccDBC j0UT1y o -a o上一.6 4 2 011 11864 2O044o H 01I七七0七9精品文檔

11、3.3 電源管理通過穩壓芯片LM294酹電池電壓7.2V將為5Vtt單片機和光電傳感器,使用一 23個普通二極管將另一路輸出電壓鉗制到 5.7V向舵機供電。電路圖如下:12歡在下載3.4 轉向電機1、舵機內部結構:由舵盤、齒輪組、位置反饋電位計、直流電機、控制電 路板等組成2、工作原理:脈寬信號給定參考位置,舵機內部電路通過反饋控制調節舵 盤角位。舵盤角位由PWM!制信號的脈寬決定。3、舵機基本參數:型號:S3010電 壓:4.0 6.0 V角度控制:17 400us工作速度:0.16 + 0.02堵轉力矩:6.5 + 1.3 Kg.cm3.5 驅動電機電機驅動電路,我們在此使用 MC3388

12、的片直接驅動 MC33886性:工作電壓:5-40V 導通電阻:120毫歐姆 輸入信號:TTL/CMOS PWM率: 10KHz 短路保護、欠壓保護、過溫保護等電機外形338B6 Simipllfked AppUcaUdni DlagratmMC33886驅動電路4系統軟件設計在智能車系統的設計中,硬件是基礎,沒有一個好的硬件平臺,軟件就無法 運行。對于智能車系統來說,軟件的核心是控制算法。而完成這些任務的編程語 言有匯編語言和C語言。軟件部分是整個智能車系統的靈魂,在硬件方面各參賽 隊之間大同小異,真正體現各參賽隊智能車的優勢和最后決定比賽成績好壞的往 往是軟件部分,尤其是核心控制算法的設計

13、。4.1 控制算法PID (Proportional Integral Differential )控制是比例、積分、微分控制的簡稱。在自動控制領域中,PID控制是歷史最久、生命力最強的基本控制方式。PID控制器的原理是根據系統的被調量實測值與設定值之間的偏差,利用偏差的比例、積分、微分三個環節的不同組合計算出對廣義被控對象的控制量。常規PID控制系統原理框圖PID控制算法可分為位置型和增量型兩種:(1)位置型算法模擬調節器的調節動作是連續的,任何瞬間的輸出控制量u都對應于執行機構(如調節閥)的位置。數字控制器的輸出控制量也和閥門位置相對應,故稱 為位置型算式(簡稱位置式)。(2)增量型算法增

14、量型算法僅僅是在算法設計上的改進,其輸出是相對于上次控制輸出量的 增量形式,并沒有改變位置型算法的本質,即它仍然反映執行機構的位置開度。如果希望輸出控制量的增量,則必須采用具有保持位置功能的執行機構。精品文檔4.2 主程序流程圖主程序流程圖如圖所示。系統首先對設備進行初始化,然后選擇進入參數修 改程序。參數設定完之后打開中斷,最后循環執行位置速度控制程序。4.3 程序的初始化初始化部分包括參數的讀取、PID初始化、定時器和脈沖計數器的初始化、I/O端口的初始化、PWM6制器的初始化和鍵盤顯示控制器 7279的初始化。程序入口初始化EEPROM從EEPROM里讀出參數初始化PID初始化定時器和脈

15、沖計數器初始化I/O 口初始化PWM初始化7279圖4.2初始化程序流程圖1欺速下載精品文檔4.4 位置速度控制程序首先讀取前方傳感器組的狀態來判斷賽車和黑線的位置關系,通過該位 置關系給出相應的轉向舵機的轉角和電機的轉速。具體程序流程圖如圖。4.5 中斷處理程序中斷處理程序每20毫秒執行一次,中斷處理函數的主要目的是定時讀取脈沖 計數器的值并把該值反饋給PID控制程序,然后調用PID空制程序。圖給出了程序 流程圖。進入中斷15攵'迎下載精品文檔4.6 PID控制程序系統采用增量式的速度PID,具體流程圖如圖4.5 。足香超過最大他?是+輸出最大值輸出最小值17°迎下載I返回

16、驅動電機占空比圖4.5 PID控制程序5系統調試5.1 開發工具包括源程序的編程序的開發是在組委會提供的 CodeWarrior IDE下進行的, 寫、編譯和鏈接,并最終生成可執行文件。CodeWarrior 6.2是面向以HC1和S12為CPU勺單片機嵌入式應用開發軟件 包。包括集成開發環境IDE、處理器專家庫、全芯片仿真、可視化參數顯示工具、 項目工程管理器、C交叉編譯器、匯編器、鏈接器以及調試器。5.2 調試過程我們使用的是單片機本身配套的 BDM在調試時,把程序編譯下載到S08AC60 單片機內,運行后可通過內存窗口查看程序運行狀況。根據小車在模擬跑道上的狀況調整參數,完善硬件、軟件設

17、計,最終達到理想的水平。精品文檔總結在此份報告中,我主要介紹了智能車準備的基本思路,包括電路、軟件、以 及最重要的控制算法的創新思想。在電路方面,我們以模塊形式分類,在電源管理、電機驅動、舵機驅動、傳 感器、速度檢測,這五個模塊分別設計,在查找資料的基礎上確定合適的最優方 案;然后我加以實驗,最后以報告中所提到的形式決定了我們最終的電路。在算法方面,我們使用CS言編程,利用比賽推薦的開發工具調試程序,經 過小組成員不斷討論、改進,終于設計出一套比較通用的,穩定的程序。在這套 算法中,我們結合路況調整車速,做到直線加速,彎道減速,保證在最短時間跑 完全程。雖然成功的完成了智能車的設計制作,但是賽

18、車的整體性能還有可提高的環 節,我們在以下方面還有待于更大的提高。 路線識別方面,如果合理的調整紅外 裝置,則可以更遠的探測路線,以便做好彎道前的準備,這樣便可以在直道上更 充分的加速。在循線算法方面,更多的閱讀文獻,查閱資料,可以使得理論更加 成熟,也可以更有效的完善算法。15欠°迎下載精品文檔參考文獻1王威.嵌入式微控制器S08AWK理與實踐M .北京:北京航空航天大學出 版社,2009.2陳杰.傳感器與檢測技術M .北京:高教出版社,2004.3邵貝貝 龔光華.單片機認識與實踐M.北京:北京航空航天大學出版社, 2006.4閻石.數字電子技術基礎(第三版).北京:高等教育出版社

19、,19895陳懂,劉玲,金世俊.智能小車的多傳感器數據融合.現代電子技術,2005, 第六期6臧杰,閻巖.汽車構造M.北京.機械工業出版社.20057沈長生.常用電子元器件使用一讀通M.北京.人民郵電出版社.20048宗光華.機器人的創意設計與實踐M.北京.北京航空航天大學出版 社.20049張偉等.Protel DXP高級應用M.北京.人民郵電出版社.200210張文春.汽車理論M.北京.機械工業出版社.200511王曉明.電動機的單片機控制M.北京.北京航空航天大學出版 社.200219攵'迎下載精品文檔17欠“迎下載附表1:硬件電路圖+5+5后乳和B DM3,21 "0

20、6551515+7.2IRQ電SETPTF076544DDDDGPPPTTPTG3PTD3PTD2VSSAD£一AGNDFSIN1V+V+OUT1OUT2DNCPGNDPGNDDNCIN2D1 CCPV+OUT2OUT2D2PGND PGND3S389PTF1PTF2PTF3PTF4PTC6PTF7PTF5PTF6PTE0PTE1PTE2 567PTTE3 EEP TTVDDADPTD1PTD0PTE7PTESPTESPTWPTESPTE2PTBIIND outG卡00uFTitleSzeBNumberDate:Fie:CLEARVCCCLOCKOUTPUTAQABQBCQCDQDP

21、TGNDLOADRevision18-Dec-2010Sheet ofREVtOwnaayDB精品文檔附表2:程序源代碼#include <hidef.h> /* for Enablelnterrupts macro */ #include "derivative.h" /* include peripheral declarations */*#include <math.h>定義舵機變量 */23欠0迎下載int ad_data12; /*定義數組,存放12路ad轉化后的值*/int ad_add=0;int ad_average=0 ;int

22、AD,Turn;int mid_flag,left_close,right_close;charZhuanjiao=180,170,160,150,140,130,121,113,106,100,95,90,85,80,74,67,59,50,40,30,20,10,0;/*int flag0,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag10,flag11;定義電機變量 */#define Stop1 TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0; 能耗 #define Stop2 TPM2

23、C0V=1500;PTCD_PTCD6=1;PTFD_PTFD7=0; 反轉 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,;/char ShuruSudu=35,35,35,35,38,38,40,40,42,42,45,45,45,42,42,40,40,38,38,35,35,35,35;/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;/沖出跑道 char Shuruspeed=

24、12,12,12,13,14,15,16,17,18,19,20,20,20,19,18,17,16,15,14,13,12,12,12;/剛好 / 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;int speed,a,b;int u=0;int v,w;int uk;int m,n;int zw=0,0,0,0,0,0,0,0,0,0,0;int r;int l=0;int circle=0;typedef structint NextPoint;int ThisPoint; /設定目標Desired

25、 valueint Kp;/比例常數Proportional Constint Ki;/積分常數Integral Constint Kd;/微分常數Derivative Constint LastError; /Error-1int PrevError; /Error-2int SumError; /Sums of Errors speedPID ;speedPID sPID; /* *pp=&sPID; */typedef structint NextPoint;int ThisPoint; /int Kp;/int Ki; /int Kd;/int LastError;/Error

26、-1int PrevError;/Error-2設定 目 標 Desired value比例常數 Proportional Const積分常數 Integral Const微分常數 Derivative Constint SumError; /Sums of Errors steerPID ;steerPID DjPID; /*, *pp=&DjPID; */*/ void ADCInit(void) ADC1CFG=0X00;ADC1SC2=0X00;APCTL1=0XFF;/*A/D初始化,高速模式,8位精度,ADCK總線頻率*/*軟件觸發,比較功能禁止*/*AD0AD7使能 */

27、APCTL2=0XFF;ADC1SC1=0X00;/*AD8-AD15使能 */*禁止轉換完成中斷,單詞轉換,選擇AD0,并啟動了轉換*/*/ void get_data(void)ad_add=0;/*采集 */ADC1SC1=0X00;/* 選擇AD通道0,若轉化沒有結束則等待,否則將轉化結果存放入 ad_data0中*/for(;!ADC1SC1_COCO;);ad_data0=ADC1RL;ad_add=ad_add+ad_data0;ADC1SC1=0X01;for(;!ADC1SC1_COCO;);ad_data1=ADC1RL;ad_add=ad_add+ad_data1;ADC

28、1SC1=0X02;for(;!ADC1SC1_COCO;);ad_data2=ADC1RL;ad_add=ad_add+ad_data2;ADC1SC1=0X03;for(;!ADC1SC1_COCO;);ad_data3=ADC1RL;ad_add=ad_add+ad_data3;精品文檔ADC1SC1=0X04;for(;!ADC1SC1_COCO;);ad_data4=ADC1RL;ad_add=ad_add+ad_data4;ADC1SC1=0X05;for(;!ADC1SC1_COCO;);ad_data5=ADC1RL;ad_add=ad_add+ad_data5;ADC1SC1

29、=0X06;for(;!ADC1SC1_COCO;);ad_data6=ADC1RL;ad_add=ad_add+ad_data6;ADC1SC1=0X07;for(;!ADC1SC1_COCO;);ad_data7=ADC1RL;ad_add=ad_add+ad_data7;ADC1SC1=0X08;for(;!ADC1SC1_COCO;);ad_data8=ADC1RL;ad_add=ad_add+ad_data8;ADC1SC1=0X09;for(;!ADC1SC1_COCO;);ad_data9=ADC1RL;ad_add=ad_add+ad_data9;ADC1SC1=0X0A;fo

30、r(;!ADC1SC1_COCO;);ad_data10=ADC1RL;ad_add=ad_add+ad_data10;ADC1SC1=0X0B;for(;!ADC1SC1_COCO;);ad_data11=ADC1RL;ad_add=ad_add+ad_data11;ad_average= ad_add /7;/*/if(ad_data0>=ad_average)flag0=1;if(ad_data0卜ad_average)flag0=0;if(ad_data1>=ad_average) flag1=300;if(ad_data1卜ad_average)flag1=0;if(ad

31、_data2>=ad_average)flag2=5;if(ad_data2卜ad_average)flag2=0;if(ad_data3>=ad_average)flag3=700;if(ad_data3卜ad_average)flag3=0;if(ad_data4>=ad_average)flag4=8;if(ad_data4卜ad_average)flag4=0;if(ad_data5>=ad_average)flag5=1100;if(ad_data5卜ad_average)flag5=0;if(ad_data6>=ad_average)flag6=13;

32、if(ad_data6卜ad_average)2彼°迎下載精品文檔flag6=0;if(ad_data7>=ad_average)flag7=1500;if(ad_data7卜ad_average)flag7=0;if(ad_data8>=ad_average)flag8=17;if(ad_data8卜ad_average)flag8=0;if(ad_data9>=ad_average)flag9=1900;if(ad_data9卜ad_average)flag9=0;if(ad_data10>=ad_average)flag10=21;if(ad_data1

33、0卜ad_average)flag10=0;if(ad_data11>=ad_average)flag11=2300;if(ad_data11卜ad_average)flag11=0;AD=flag0+flag1+flag2+flag3+flag4+flag5+flag6+flag7+flag8+flag9+flag10+flag11;/*/if(right_close=0)if(AD= 1)Turn=0;mid_flag=0;left_close=1;if(AD= 301)Turn=1;mid_flag=0;left_close=1;if(AD= 300)Turn=2;mid_flag

34、=0;left_close=1;if(AD= 305)Turn=3;mid_flag=0;left_close=1;if(AD= 5)Turn=4; mid_flag=0;left_close=1;if(AD= 705)Turn=5; mid_flag=0;left_close=1;if(AD= 700)Turn=6;mid_flag=0; left_close=1;if(AD= 708)Turn=7;mid_flag=0; left_close=1;if(AD= 8)Turn=8; mid_flag=0;left_close=1;if(AD= 1108)Turn=9;mid_flag=1;l

35、eft_close=0;right_close=0;if(AD= 1100)27f迎下載精品文檔Turn=10; mid_flag=1;left_close=0;right_close=0;if(AD= 1113)Turn=11;mid_flag=1;left_close=0;right_close=0;if(AD=13)Turn=12;mid_flag=1;left_close=0;right_close=0;if(AD= 1513)Turn=13;mid_flag=1;left_close=0;right_close=0;if(left_close=0)if(AD= 1500)Turn=1

36、4; mid_flag=0; right_close=1;if(AD= 1517)Turn=15; mid_flag=0;right_close=1;if(AD= 17)Turn=16; mid_flag=0; right_close=1;if(AD= 1917)Turn=17; mid_flag=0; right_close=1;if(AD= 1900)Turn=18; mid_flag=0; right_close=1;if(AD= 1921)Turn=19;mid_flag=0; right_close=1;if(AD= 21)Turn=20; mid_flag=0; right_clo

37、se=1;if(AD= 2321)Turn=21; mid_flag=0; right_close=1; if(AD= 2300)Turn=22;mid_flag=0; right_close=1;/*PID初始化 */void PIDInit(void)sPID.ThisPoint=0;/設定目標Desired valuesPID.Kp=0;/比例常數Proportional ConstsPID.Ki=0;/積分常數Integral ConstsPID.Kd=0;/微分常數Derivative ConstsPID.LastError=0;/Error-1sPID.PrevError=0;/E

38、rror-2sPID.SumError=0;/Sums of ErrorsDjPID.ThisPoint=0;/設定目標Desired value 302DjPID.Kp=1;/比例常數Proportional Const 50DjPID.Ki=1;/積分常數Integral ConstDjPID.Kd=3;/微分常數Derivative ConstDjPID.LastError=0;Error-129欠0迎下載DjPID.PrevError=0;Error-2DjPID.SumError=0;/Sums of Errors/*io初始化 */void IOInit(void)PTGDD_PT

39、GDD4=0;/G4復位按鍵PTGPE_PTGPE4=1;PTGDD_PTGDD3=1;/*G3連接計數芯片4040清零管腳,高電平清零*/PTGD_PTGD3=0;PTGDD_PTGDD1=1;/*G1拉高蜂鳴器,高電平有效,強驅動 */PTGDS_PTGDS1=1;PTGD_PTGD1=1;PTGD_PTGD1=0;PTEDD=0x00; /*E測速計數輸入*/PTCDD_PTCDD6=1; /*C6 連接驅動芯片 386 的 IN1*/PTFDD_PTFDD7=1; /* F7 連接驅動芯片 386 的 IN2*/PTCD_PTCD6=0;精品文檔31迎下載PTFD_PTFD7=1;/*

40、時鐘初始化 */void ICGInit(void)ICGC1=0x78; /*fll系數為p=1,外部晶振*/ICGC2=0x20;/*倍頻因子N=8,分頻因子 R=1*/*電機舵機初始化 */void servoInit(void)TPM2SC=0x0F;/*總線時鐘128分頻*/TPM2MOD=2500;TPM2C1SC=0x28;TPM2C1V=185;TPM2C0SC=0x28;TPM2C0V=0;/*/*/*舵機初始化電機初始化通道0設置邊緣對齊的通道0設置邊緣對齊的設定初始占空比,舵機處于中間位置*/PWM中斷請求不允許*/PWM中斷請求不允許*/*延時 */void delay

41、(int de) while(de-) _RESET_WATCHDOG();void delay1(int de)int i=100;while(de-)while(i-)_RESET_WATCHDOG();void delay2(int count)/*int i,j,k;for(i=0;i<count;i+)for(j=0;j<100;j+)for(k=0;k<800;k+)_RESET_WATCHDOG(); /* 延時子程序*/復位看門狗計數器*/精品文檔32f迎下載/*溢出中斷處理 * */interrupt VectorNumber_Vtpm3ovf void T

42、PM3OVF_ISR(void) Disablelnterrupts;if(TPM3SC & 0x80)=0x80)TPM3SC_TOF = 0;speed=PTED&0x3F;PTGD_PTGD3=1;計數器清零PTGD_PTGD3=0;if(Turn>7)&&(Turn<15)l=1;elsel0=0;if(Turn>14) r=1;if(Turn<8) r=2;zw10=zw9;zw9=zw8;zw8=zw7;zw7=zw6;zw6=zw5;zw5=zw4;zw4=zw3;zw3=zw2;zw2=zw1;zw1=zw0;zw=l0;

43、/*EnableInterrupts;速度 pid*/int speedPIDCalc (speedPID *pp) int Error,dError;Error=pp->ThisPoint-pp->NextPoint; /偏差 e(k)pp->SumError+=Error;/ 積分 e(1)+e(2)+* dError=Error-pp->LastError; /當前微分pp->PrevError=pp->LastError;pp->LastError=Error;if(w>=1500)|(Turn>14)|(Turn<8)精品文

44、檔34欠0迎下載sPID.Kp=80;/ 110sPID.Ki=0;sPID.Kd=10;else/ 0/ 10/ 145sPID.Kp=180;sPID.Ki=0;sPID.Kd=5;/ 1/ 15return (pp->Kp*Error+pp->Ki*pp->SumError/50+pp->Kd*dError);/*舵機 pid*/int steerPIDCalc (steerPID *pp)int dError,Error;Error=pp->ThisPoint-pp->NextPoint; /pp->SumError+=Error; / 積分偏

45、差dError=pp->LastError-pp->PrevError; /pp->PrevError=pp->LastError;pp->LastError=Error;當前微分return (pp->Kp*Error+pp->Ki*pp->SumError/2500+pp->Kd*dError);/*舵機控制 */void SteerContral(void)int djpid;DjPID.NextPoint=0;DjPID.ThisPoint=ZhuanjiaoTurn; /turn為黑線位置if(v>0)djpid=v;els

46、edjpid=101+steerPIDCalc(&DjPID);v=0;TPM2C1V=djpid;a=TPM2C1V;/*電機控制 */void SpeedContral(void)精品文檔if(circle>=2)TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0;for(;)_RESET_WATCHDOG();elsesPID.NextPoint=speed;sPID.ThisPoint=ShuruspeedTurn;if(u>0)uk=u;elseuk=speedPIDCalc(&sPID);u=0;TPM2C0V=uk;w=TPM

47、2C0V;36f迎下載/*起始延時 */void Start_Key(void)for(;)if(PTGD_PTGD4=0)delay1(1);if (PTGD_PTGD4=0)delay2(10);EnableInterrupts;break ;_RESET_WATCHDOG();/*起始線識別 */void StartLine() if(ad_data7<=30|ad_data8<=30)&&ad_data10>=70&&(ad_data5>=100|ad_data6>=100)&&(a d_data3<=30|ad_data4<=30)&&ad_data1>=70)circle+ ;PTGD_PTGD6=1;delay(8000);PTGD_PTGD6=0;川*川void main(void) IOInit();ICGInit();ADCInit();servoInit();PIDInit(

溫馨提示

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

評論

0/150

提交評論