




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第九屆“飛思卡爾”杯全國大學生智能汽車競賽技術報告學校:合肥工業大學隊伍名稱:斛兵7隊參賽隊員:蔡柏林陳黎明田超帶隊教師:張陽史久根關于技術報告和研究論文使用授權的說明 本人完全了解第九屆“飛思卡爾”杯全國大學生智能汽車邀請賽關于保留、使用技術報告和研究論文的規定,即:參賽作品著作權歸參賽者本人,比賽組委會和飛思卡爾半導體公司可以在相關主頁上收錄并公開參賽作品的設計方案、技術報告以及參賽模型車的視頻、圖像資料,并將相關內容編纂收錄在組委會出版論文集中。參賽隊員簽名: 帶隊教師簽名: 日期:
目錄摘要 1Abstract 2第一章引言 3 3 3 4第二章機械結構部份的設計及調整 5 5 5 7 8 9 9 11 11第三章硬件設計 12 12 12 12 13 14 14 15 17 17 19 19 21 22第四章算法實現及軟件設計 24 24 25 25 26 26 26 27第五章智能車系統模塊調試 28 29 29 30第六章智能車主要技術參數說明 31結論 32參考文獻 33附錄A 34第九屆全國大學生智能汽車邀請賽技術報告摘要摘要本文以第九屆全國大學生智能車競賽為背景,介紹了智能賽車設計、制作的技術信息。該比賽采用大賽組委會統一提供的1:10仿真車模,以Freescale半導體公司生產的32位單片機MK60FX512VLQ15為核心控制器,采用IAREmbeddedWorkbench作為開發環境,自主構思控制策略和算法結構,硬件上采用IR2104S驅動MOS管,用兩路PWM波控制電機正反轉,傳感器采用普通工字電感構成諧振回路,通過感應賽道導線上方的磁場,控制規定車模在50cm寬的賽道上穩定行駛。硬件上通過對汽車動力學理論的學習來優化智能車的機械結構,軟件上通過對PID控制,來提高智能車的速度和魯棒性。關鍵詞:智能車單片機電磁導航PID控制器ABSTRACTThisarticleintroducestheinformationaboutdesigningandmakingthecarinthebackgroundofthe8thNationalIntelligentCarContestforCollegeStudents.Thiscontestadopting1/10EPon-racingcarprescribedbythecontestorganizationcommittee,Usingtheprovided32bitMCUMK60FX512VLQ15offreescalecorporationasthemaincontroller,selectingtheIAREmbeddedWorkbenchasthedevelopmentenvironment,designthetactics.UsingtheIR2104andMOSFETtocontroltherunningdirectionsofthemotorbytwoPWM-waves.AdoptingthenormalDRCOREasthesensor,controlthesmartcartorunonthe50cm-wide-trackbyinducingthemagneticfieldabovethewireatthecenterofthetrack.Bystudyingtheautomobiledynamicstooptimizethemechanisminthehardwareandthecombinationofdifferentcontrol-theoriessuchasPIDcontrol,wecanmakethesmartcarmoresteadyandmorefastandreachhigherrobustness.【Keyword】Smart-CarMCUElectromagneticNavigationPIDController第一章引言第一章引言比賽背景智能車是一種高新技術密集型的新型汽車,它涵蓋的范圍廣泛包括模式識別、傳感器技術、自動化控制實現、電力電子技術、計算機技術等多個領域。在國際上已經形成智能汽車研究、設計、開發、競賽的熱潮。 在我國,教育部為了加強大學生實踐、創新能力和團隊合作精神的培養,委托教育部高等學校自動化專業教學指導分委員會主辦了每年一度的全國大學生智能汽車競賽。全國大學生智能汽車競賽是在競賽組委會提供的統一汽車模型平臺上,使用飛思卡爾半導體公司的8位、16位微控制器作為核心控制模塊,通過設計道路識別傳感器和電機驅動電路、編寫相應軟件及裝配模型車,制作一個能夠自主識別道路的模型汽車,按照規定路線(路線賽前未知)行進,以完成時間最短者為優勝。智能車競賽目前已經發展有攝像頭與光電組和電磁組三個組別比賽,賽車速度與比賽質量也越來越高,競爭更是日趨激烈。1.2總體方案介紹本智能控制系統可以由傳感器、信息處理、控制算法、執行機構、速度反饋五個部分組成。其中,以單片機為核心,配有傳感器、測速電路,執行機構以及它們的驅動電路構成了控制系統的硬件;信息處理與控制算法由運行在單片機中的控制軟件完成。在檢測方面,系統是以電感傳感器檢測賽道中間的通有100mA,20KHz電流的銅線作為識別路徑的手段的,其重點之一就是通過電感傳感器來提高獲取路徑信息的準確度和速度,從而提高智能車的速度及可靠性。在控制方面,系統重點研究大賽指定型號舵機和電機的控制方案及算法。舵機的控制目標:脈寬與轉角呈線性變化,能夠以較快的速度控制舵機,延遲控制在10ms內,誤差控制盡可能的小。電機的控制目標:能根據路況進行快速地加速和減速,使電機盡可能快地接近目標速度,能夠獲得很好的期望速度,以較快的速度跑完整個賽道。此外,機械結構的調整是保證智能車系統能夠穩定可靠運行的前提。因此,機械結構的調校是至關重要的,尤其是前輪的調校。機械結構調整的原則是:減少質量,降低重心,加固安裝,使車體的轉向慣量盡量最小。1.3本文結構本文共分為五章。第一章主要是介紹了比賽的背景及智能車系統總體方案的介紹;第二章從智能車系統的機械結構出發,詳細闡述了智能車系統各部分機械結構的安裝和調整;第三章重點介紹了系統中所涉及的硬件設計方案和原理;第四章是介紹了智能系統的軟件算法;第五章則對智能車部分模塊的調試仿真做出相關的介紹;第六章對智能車的技術參數作簡要說明。第三章硬件設計第二章機械結構部份的設計及調整智能車的核心是控制策略和算法,但是,機械結構也是限制賽車速度的巨大瓶頸,如果一輛賽車的程序架構很好,但是機械部分做的不好的話,其速度也會被大大的限制。2.1整車布局(1)車模底盤降低,主板低放,以降低重心。(2)舵機豎直放置,方便控制。(3)用輕便堅固的碳纖桿作為前端傳感器的支撐材料。(4)電感安裝在最前方,碳纖桿的長度大概是50cm,為了能夠提前檢測到,以至車體能夠及時反映。(5)電池后移,從而使智能車重心能夠盡量位于車體中間偏后,這樣才能保證智能車在高速行進時的穩定性,減少甩尾現象圖2.1整車圖2.2轉向舵機的安裝舵機轉向是整個控制系統中延遲較大的一個環節,為了減小此時間常數,通過改變舵機的安裝位置,而并非改變舵機本身結構的方法可以提高舵機的響應速度。通過分析舵機控制轉向輪轉向的原理可以發現,在相同的舵機轉向條件下,轉向連桿在舵機一端的連接點離舵機軸心距離越遠,轉向輪轉向變化越快。這相當于增大力臂長度,提高線速度。針對上述特性,本設計采用“長連桿”方式將舵機豎直放在前面,大大的增加了舵機的力臂,如圖2.1所示。圖2.2轉向舵機安裝示意圖上述安裝方式的優點主要有:(1)改變了舵機的力臂,使轉向更靈敏;(2)舵機安裝在了正中央,使左右轉向基本一致,避免了多級傳動可能帶來的空程和死區;(3)增加前輪下壓力,從而提高了前輪的抓地力,當然這樣也加重了舵機的負載;2.3傳感器的安裝電感傳感器安裝的高度以及碳纖桿的長度共同決定了前瞻的大小。在本設計中,最終選取的碳纖桿的長度為50cm,碳纖桿的長度超過60cm后,在過彎的時候容易內切,而且轉彎時盲區比較多。而且我們在保證信號足夠的前提下,應盡量前端電感放高,這樣能檢測的范圍更廣。碳纖桿的一段用熱熔膠固定在車模的前面,再用連桿連接到舵機上,保障其固定牢固。如圖2.3.1圖2.圖測速傳感器的安裝為實現車速的閉環控制,需使用光電編碼器測量車速。光電編碼器安裝主要考慮的問題是與齒輪的咬合,太緊會使電機轉動吃力并且會發出很大的噪聲,太松有時候會丟齒。因此最好使得安裝的編碼器松緊程度能夠調整最好,我們采用的是500線的編碼器,每轉一圈會產生500個脈沖。光電編碼器的安裝如圖2.4所示。圖2.4光電編碼器安裝示意圖2.5智能車前輪及后輪定位的調整2.5.1前輪及后輪定位的定義前后輪的定位對于小車機械性能影響巨大。前輪定位包括主銷后傾角、主銷內傾角、前輪外傾角和前輪前束四個內容。后輪定位包括車輪外傾角和逐個后輪前束。這樣前輪定位和后輪定位總起來說叫車輪定位,也就是常說的四輪定位。車輪定位的作用是使車模保持穩定的直線行駛和轉向輕便,并減少車模在行駛中輪胎和轉向機件的磨損。車輪外傾和主銷內傾的情形如圖2.6所示。所謂主銷內傾,是將主銷(即轉向軸線)的上端向內傾斜。從智能車的前面看去,主銷軸線與通過前輪中心的垂線之間形成一個夾角,即主銷內傾角。主銷內傾的作用是使車輪轉向后能及時自動回正和轉向輕便。圖2.5.1主銷后傾如圖2.7所示,過車輪中心的鉛垂線和真實或假想的轉向主銷軸線在車輛縱向對稱平面的投影線所夾銳角為主銷后傾角,向前為負,向后為正。圖2.5.2主銷后傾示意圖車輪前束如圖2.8所示。從上往下看,兩個車輪指向的方向在前端指向內稱為車輪前束,指向外的則稱為車輪后束。圖2.5.3后輪定位主要包括后輪前束和后輪外傾,其作用與前輪對應定位項目作用一致。2.5.2前后輪定位的調節經驗從理論上講,主銷內傾的作用是使前輪自動回正。角度越大前輪自動回正的作用就越強烈,但轉向時也越費力,輪胎磨損增大;反之,角度越小前輪自動回正的作用力就越弱,因此這個主銷內傾角都有一個范圍,約5°~8°之間。而前輪外傾角對智能車的轉彎性能有直接影響,它的作用是提高前輪的轉向安全性和轉向操縱的輕便性。由于本車模的主銷內傾,前輪外傾界定不明顯,本設計按照經驗來進行前輪內外傾角的調節。前輪內外傾角的調節靠改變相應絲桿長度來實現,絲桿調長可達到前輪外傾,從經驗上來說,前輪外傾有利于小車轉向輕便,但是,容易導致前輪抓地力不足,而前輪內傾可使前輪抓地力增大,使小車在過彎的時候不易出現前輪打滑的現象,本次設計使用了前輪外傾,這樣可以使小車在轉向的時候更加輕便。對于前輪前束,可以通過調節相應絲桿長度來實現,絲桿調長可以達到前輪前束,若調短絲桿長度,可以達到前輪后束的作用。從經驗上講,前輪前束可以讓小車在直道上走得更直,但同時會降低小車轉向的靈活性,前輪后束則完全相反。無論選擇怎樣的前輪定位,都必須考慮到一個至關重要的忠告,那就是選擇參數要適當,不要太極端,比如前輪的傾角,調節1°~2°即可,絕對不能調節得讓人很遠就感到車輪有明顯的傾角。2.6車底盤的調整根據總結的智能車機械結構的設計原則,智能車底盤必須足夠低。車模底盤的高度主要由賽道中的坡道以及減速帶決定,在順利過坡的前提下,底盤越低越好.此外,適當增大底盤的剛度有利于提高車體走直線的穩定性。通過增加墊片來增大彈簧的預緊力或調整彈簧的另一個支點的位置來改變預緊力可以提高底盤的剛度。第三章硬件設計3.1硬件設計概述以單片機為核心,配有傳感器電路、測速電路,執行機構以及它們的驅動電路構成了智能車的硬件系統,硬件系統結構如圖3.1所示。圖3.1智能車硬件系統結構圖圖3.1中,MK60FX512VLQ15是本系統的核心控制器,該控制器擁有32位內核處理器,豐富的硬件資源,滿足智能車設計的要求。信號轉接板用來獲取前端信息,從而測出偏移量;舵機是用來控制車身的轉向;電機驅動與控制模塊是用來控制電機的轉動,包括加減速與正反轉;測速傳感器用來獲取電機轉速,以實現電機的閉環控制。鍵盤顯示用于系統參數的設定和系統運行狀態的獲取。電源管理模塊用來為各個模塊供電。起跑線檢測模塊就是干簧管電路,用來檢測起跑線的。從功耗和工作方式角度可將系統電路分為功率電路和數字電路。從供電電壓角度可以將電路分為7.2V、6V、5V、12V電路。本系統中,電壓分配如下:為保證驅動芯片正常工作,將7.2V經過升壓電路到12V;舵機穩壓后的6V供電;人機接口模塊、編碼器電路和電感傳感器模塊由一片5V電源芯片供電,只是主控芯片的5V電源單獨供給。3.2MK60FX512VLQ15單片機系統設計3.2.1MK60FX512VLQ15單片機為144引腳LQFP封裝的單片機,其特性如下:單任務、32位CPU核綜合體(e200z0)符合Power架構嵌入式類包括指令集增強功能,允許可變長度編碼(VLE),使得代碼長度減少。具有可選的混合16位和32位混合指令,使代碼尺寸顯著減少成為可能高達512KB的片上代碼Flash,有Flash控制器支持高達64KB的片上數據Flash,有Flash控制器支持高達48KB的片上SRAM存儲器保護單元(MPU),具有8個區域描述和32字節區域間隔尺寸中斷控制器(INTC)具有處理148個可選擇優先級中斷源能力頻率調制鎖相環(FMPLL)交叉開關架構,能夠并發訪問多個總線主機外設、Flash或SRAM引導協助模塊(BAM)支持通過一個串行連接(FlexCAN或LINFlex)內部Flash編程定時器支持輸入/輸出通道提供范圍16位的輸入捕捉、輸出比較和脈沖調試功能(eMIOS)10位ADC多達3個串行外設接口(DSPI)模塊多達4個串行通訊接口(LINFlex)模塊LINFlex1、2和3:主機能力LINFlex0:主機和從機能力多達6個增強型全速CAN(FlexCAN)模塊,具有64個可配置消息緩沖區1個IIC模塊多達123個可配置通用引腳,支持輸入和輸出操作來自FIRC或SIRC的實時計數器(RTC),支持最大超時時間為2秒,分辨率為1ms的自動喚醒6個周期中斷定時器(PIT),具有32位計數器分辨率1個系統模塊定時器(STM)Nexus開發接口(NDI)片上穩壓器(VREG)從輸入供給為所有內部各級提供電壓調節3.2.2電源電路MK60單片機使用5V供電,I/O口能夠兼容忍受5V的輸入電壓。較低的片內電壓使CPU運算速度快、功耗低,故MK60單片機特別適合低功耗場合。本設計采用了5V外部電源為K10單片機供電。為了去除單片機運行時產生的高頻噪聲,本設計在MK60電源引腳旁邊加了磁珠和電容典型值為0.1uF的去耦電容。3.2.3時鐘電路對于Kinetis系列單片機,雖然單片機內部有RC振蕩電路產生的自時鐘,但RC時鐘的頻率不穩定,會隨溫度變化,主要用來在檢測到主時鐘電路故障時起作用,靠自由時鐘單片機就能運行,這種運行模式被稱為自時鐘模式。為了給單片機提供一個可設定頻率并且穩定的工作時鐘,單片機需要外接一個石英或陶瓷振子,產生一個頻率穩定的時鐘信號,再通過片內的鎖相環電路(PLL)將時鐘頻率鎖定。本系統的時鐘電路采用了8MHz的晶振,晶振振兩端對地接典型電容值為10pF的電容,如圖3.3所示。圖3.3時鐘電路原理圖3.2.4單片機系統引腳分配如表3.2所示:表3.2單片機系統引腳分配模塊名稱分配引腳無線通訊模塊PTB[16,17]接收數據指示燈PTA[12,13,14,15]撥碼開關PTD[0,1,2,3,4,5,6,7]信號轉接板PTC[0,1,2],PTC[4,5,6,7,8,9,10,11,12]編碼器PTE17電機驅動PTB[0,1]舵機PTB[18,19],PTC3NOKIA5510模塊PTE[0,1,2,3,4,5,6,16,18,19]3.3電感傳感器電路設計組委會規定本次電磁組競賽車模需要能夠通過自動識別賽道中心線位置處由通有100mA交變電流的導線所產生的電磁場進行路徑檢測。可首先討論賽道上的直道部分(彎道可以看作很多小直道微元的積分,故只要直道研究透徹,彎道就可以迎刃而解),如圖:圖3.3.1無限長直導線周圍的磁場[5]利用畢奧-薩伐爾原理可計算得到:無限長直導線通以恒定電流I的時候周圍的磁場為:下面在計算放置在無限長直導線周圍的電感線圈能感應出的電動勢:圖3.3.2根據法拉第定律:將線圈內部小范圍內磁場近似認為是均勻分布的,將會得到即導線周圍放置的線圈感應出來的磁場與導線到線圈的直線距離成反比。因此根據此種特性即可制作出電磁感應傳感器。本設計采用LC諧振放大整流的方法來得到最終的信號。首先通過一級LC的諧振,達到一個初步的選頻濾波功能,即只感應20KHZ的電流產生的交流磁場,感應信號為正弦波,其幅值隨著導線到傳感器的距離而變化。在查詢資料后,我們摘選出了4中方案,方案1:兩級放大電路,通過INA129初級放大后,再經NE5532二級放大,通過濾波后得到信號。方案2:LMV358一級放大電路后再接一級RC濾波穩定紋波后得到最終的輸出。方案3:LM386一級放大電路。方案4:三極管放大電路。電路原理圖見圖3.3.3、3.3.4、3.3.5、3.3.6。經過試驗,我們發現方案2比方案3和方案4數據更穩定,而且相對于方案1電路更加簡潔.考慮到這些因素,我們最終選擇LMV358的放大電路作為電感信號的處理電路。圖3.3.3電路原理圖圖3.3.4電路原理圖圖3.3.5電路原理圖圖3.3.6電路原理圖3.4直流電機驅動模塊設計電機驅動電路板為一個由分立元件制作的直流電動機可逆雙極型橋式驅動器,其功率元件由四支N溝道功率MOSFET管組成,額定工作電流可以輕易達到100A以上,大大提高了電動機的工作轉矩和轉速。由于C車電機為雙電機,所以,我們用兩路相同的驅動器分別驅動兩個電機。該驅動器主要由以下部分組成:PWM信號輸入接口、邏輯換向電路、死區控制電路、電源電路、上橋臂功率MOSFET管柵極驅動電壓泵升電路、功率MOSFET管柵極驅動電路、橋式功率驅動電路、緩沖保護電路等,電路如圖3.8所示。電路中肖特基二極管IN5819保證了電平VB_1、VB_2低于12V,VB_1高于MOTOR_A,VB_2高于MOTOR_B。電路如下圖示,首先使能端為高時,驅動橋這時才會起作用。PWM0為某一占空比,PWM1為低時,使得IR2104驅動輸出分別為低電平和相應的電壓值。驅動橋電路左邊上方IRLR7843與右邊下側的IRLR7843導通,另外的兩個MOS管不導通,此時電機正轉。因此,一個電機是由兩路PWM控制,顯然當PWM輸出狀態與上述相反則為反轉。轉速的大小取決于占空比的大小。圖3.8電機驅動電路原理圖3.5測速模塊設計為了精確控制智能車的速度,需要設計速度反饋電路檢測智能車運動速度,同時獲取車模運動的里程信息。本設計采用的是單片機控制編碼器的方法來檢測小車的電機轉速。編碼器選用的是一款旋轉編碼器,其引出紅、黑、白三根線。紅色是電源線,黑色是地線,白色是信號線。編碼器的工作電壓為5~12V,可直接將編碼器的電源線接到5V電源上。編碼器的地線要和單片機的地線連在一起。每轉一周,白色信號線就輸出500個脈沖,將信號線接到單片機的PTA10和PTC15口,進行脈沖累加,再用單片機定時器定時,每5ms記一次PCANT數據,作為小車速度的參考值,然后清空脈沖累加器,再定時計數。編碼器接口電路如圖3.5所示。圖3.5編碼器接口電路圖3.9中,因為編碼器信號端是開漏輸出結構,所以需在編碼器信號輸出端接上拉電阻。信號線上的脈沖信號接至PTA10和PTC15引腳,供脈沖累加器計數。3.6人機交互模塊設計3.6.1OLED模塊設計OLED模塊主要包括OLED液晶,4個背光LED燈和4個按鍵。OLED模塊主要用于顯示檢測信息,設置控制參數。OLED液晶廣泛應用于各類便攜式設備,與其它類型的產品相比,具有以下特點:84X48點陣LCD,可顯示4行漢字;采用串行接口與主處理器進行通信,傳輸速率達4Mbps,可全速寫入顯示數據,無等待時間;可通過導電膠連接模塊與印制版,而不用連接電纜;采用低壓供電,正常顯示時的工作電流在200uA以下。OLED引腳順序與含義如表3.3所示:表3.3OLED引腳定義管腳定義說明電平備注1VDD電源輸入引腳+5V3.3-5V2CLK同步時鐘輸入GND最高可達4Mbps3DIN數據輸入TTL時鐘上升沿采樣4D/C數據/命令輸入TTL0:命令;1:數據5CS片選信號TTL低電平有效6RES外部時鐘輸入TTL7GND地GNDOLED模塊的背光電路和按鍵電路原理圖分別如圖3.6.1和圖3.6.2所示。圖3.6.1OLED模塊的背光電路圖3.6.2OLED模塊的按鍵電路背光電路中的4個LED燈采用一個8550同時驅動,8550控制端接單片機的PM0引腳,這樣既能保證LED的可靠工作,又能降低功耗。按鍵電路采用的是獨立按鍵形式,簡單而易于編程。按鍵電路中,K1~K4分別接至單片機的PTD7~PTD10引腳。3.6.2撥碼開關電路設計撥碼開關電路如圖3.13所示。撥碼開關有八位,每位可以獨立開合。PTE0/SW1~PTE7/SW8端分別接單片機的PTE0~PTE7I/O端口。當開關閉合時,相應端為低電平。當開關斷開時,相應端為高電平。改變撥碼開關的開合狀態,可以改變單片機PTE口的值,單片機根據從PTE口讀到的值進行相應的操作,從而實現了單片機的控制,PTE口采用內部上拉。圖3.13撥碼開關電路3.7電源管理模塊設計智能車電池提供的是7.2V的電壓。為了使智能車正常工作,需要將7.2V的電壓轉化為5V和6V的電壓。智能車系統用的5V穩壓芯片是LM2940。LM2940可以提供較大的穩壓電流,具有較好的穩壓性能,且紋波電壓較小。主控芯片和電感傳感器、編碼器等都需要5V供電,為減少單片電源芯片的功耗,避免電感傳感器、編碼器等影響主控芯片工作,本設計采用了一片LM2940和一片LT1086分別為主控芯片和其他需要5V的模塊供電。電源管理模塊框圖如圖3.7.1所示:圖3.7.1電源管理框圖其中5VLM2940穩壓電路如圖3.7.2所示。圖3.7.25V穩壓電路其中5VLT1086穩壓電路如圖3.7.3所示。圖3.7.35V穩壓電路驅動電路采用的12V升壓電路給驅動芯片供電,穩壓電路如圖3.7.4所示。圖3.7.412V升壓電路智能車采用的6V穩壓芯片是LM2941,穩壓電路如圖3.7.5所示,用于為轉向控制舵機供電。圖3.7.56V穩壓電路圖3.7.5中,LM4951OUT端輸出的電壓值與R52、R53之間的關系式為:第四章算法實現及軟件設計第四章算法實現及軟件設計軟件是存在于單片機內一系列指令的集合,是智能車設計的核心部分,需要花費很多的精力去設計編寫。優秀的軟件運行在良好的硬件平臺上,將使智能車能夠平穩高速地行駛。4.1路徑識別算法分析及選定智能車的路徑識別算法是智能車設計的關鍵部分,智能車設計的大部分工作都是圍繞它來展開的。經過分析,利用電感傳感器識別路徑一般有兩種不同的方法:(1)數字型尋線算法。利用多個水平放置的電感傳感器,將整個賽道分為多個區域,感應電動勢最大的電感是最靠近導線的電感,來判斷電磁線的位置。這種查詢方式的優勢在于算法簡單,易于實現。但是這種方法采集到的信息是離散的點,不利于精細控制;且要用到多個電感,會加重車頭重量,增大小車的轉動慣量,造成小車在高速行駛時發生甩尾;且多個電感“一”字排布,不得不考慮離得太近時相鄰電感的互感作用。(2)模擬型尋線算法。使用少數傳感器,直接使用感應電動勢的模擬量精確值來進行賽道的精確定位。該方式可以達到賽道精確定位的目的,同時可以利用歸一化的方法來解決每個電感線圈不完全相同的問題。這種方法的特點是用了較少個數的傳感器進行道路識別,而且充分利用MCU里的ADC功能。最終我們選擇了方案二,即模擬型尋線算法。我們利用對稱電感的差值斜率方法來解算車體相對于導線偏離的距離。這種方法簡單直觀,對于MCU的負擔較小,但是其兩端線性度不高,且其是基于無限長直導線周圍的磁場來擬合的,所以誤差較大,但是經過分析,誤差在我們可以接受的范圍內,所以選用此方案。由于磁場是矢量,為了接收更多方向的信息,我們選用了水平和向前的電感作為一組電感用于計算位置,且向前電感對于彎道與十字彎較為敏感,對于直道很不敏感,所以同時可用于路徑識別。圖4.1.1電感排布方式圖示用兩邊電感做差得出曲線如下圖4.1.2所示,可以看出,近似接近線性:圖起跑線識別程序設計起跑線的識別決定著智能車能否正確停車。起跑線處埋有磁鐵的產生靜磁場,檢測時可直接使用干簧管。當干簧管在磁鐵上方時,干簧管導通,從而產生低電平,在本系統中,我們使用的是單片機查詢方式,即每次大循環開頭時查詢相應IO口是否為低電平,如果是低電平就停車。此外,為了防止誤判,起跑線識別并不是在單片機剛上電時就進行,而是在發車后10s后才進行。4.3轉向舵機控制程序設計本智能車系統的舵機控制采用的是基于位置式PID的方向控制算法。通過對模擬控制系統PID控制規律表達式的離散化,可得數字式PID表達式如下:對于本智能車系統,u(k)即為舵機轉角,e(k)為車體相對于導線的偏移量。本算法響應時間快,穩態誤差低,由于舵機本身就是一個延時較大的環節,而積分項會導致相應更加滯后,所以為了使舵機的響應速度加快,只使用PD算法。4.4電機控制程序設計4.4本智能車系統的電機控制采用的是基于增量式PID的方向控制算法。通過對模擬控制系統PID控制規律表達式的離散化,可得數字式PID表達式如下:對于本智能車系統,u(k)即為輸給電機的PWM占空比,e(k)即為目標速度與實際速度之差。由于微分項會導致電機振蕩,故只是用PI算法。4.4.2速度分配賽道分為直道,彎道,十字彎,坡道部分,在直道部分需要加速,在入彎之前需要提前減速,在十字彎和坡道處適當減速。由于側滑現象和舵機反應速度的限制,彎道上存在所謂的極限速度,而轉彎半徑越小,此極限速度越小。所以如果在彎道里全部采取勻速,那么這個速度因為受到最小轉彎半徑的約束會比較小,非常不利于提升小車的速度。所以在彎道里,我們采取的策略是:設置彎道最低與最高速度,再根據偏差大小的不同來設置速度,偏差最大時采用彎道最小速度,偏差最小時采用彎道最大速度。4.5程序流程圖系統程序流程圖如圖4.5示。圖4.5第五章智能車系統模塊調試第五章智能車系統模塊調試5.1路徑探測模塊調試路徑探測模塊為電感探測模塊調試電感探測模塊時,按如下步驟進行:(1)進行電感的標定工作。(2)依次將車體偏移導線一定距離,記錄下這些位置的電感的感應電動勢值。(3)對所得數據進行歸總,對兩邊電感做差,擬合直線,并替換不正常的電感。5.2轉向舵機調試轉向舵機的性能決定著智能車的轉向性能,因此,轉向舵機的調試是系統設計的重要環節。測試一:舵機工作在5.8V,50HZ下,PWM輸出脈寬對應轉角與理論轉角對比舵機電壓頻率(Hz)負載情況占空比寄存器對應脈寬(ms)轉角(度)理論轉角1號5.850空載2801.4933333330-0.61號5.850空載2701.44-4-5.41號5.850空載2601.386666667-9.5-10.21號5.850空載2501.333333333-14-151號5.850空載2401.28-20-19.81號5.850空載2301.226666667-24.5-24.61號5.850空載2201.173333333-30-29.41號5.850空載2101.12-35.5-34.21號5.850空載2001.066666667-40-391號5.850空載1901.013333333-44-43.81號5.850空載1800.96-50-48.61號5.850空載1700.906666667-56-53.4測試二:舵機工作在5.9V,50HZ下,舵機轉過一定角度所對應的響應時間舵機電壓頻率(Hz)負載情況轉角(度)時間(ms)1號5.950空載602001號5.950空載301001號5.950負載10501號5.950負載1560測試三:舵機工作在5.8V,不同頻率下,舵機轉過一定角度所對應的響應時間觀測舵機在不同控制頻率下轉過相同的角度所花費的時間,100Hz和50Hz的響應速度差不多。通過對測試數據的分析,可獲得如下結論:1、舵機在給定一定脈寬以后轉過的角度和理論上給出的角度(即1.5ms對應0度等)差不多,且線形較好。 2、舵機工作在5.9V,50HZ下,空載時的響應速度大概為200ms/60度,在負載時為50ms/10度,由于在真實比賽環境賽道摩擦力的不同,負載時的響應速度可能有所不同。 3、舵機工作在5.9V,負載時,50Hz和100Hz的響應速度差不多。5.3系統調試在各模塊的基礎測試均進行完畢后,便可進入系統級調試。進行系統調試的條件是設計出具備大賽指定元素的跑道。調試前期,宜設計較小較簡單的跑道供智能車行駛。調試中后期,則應適當增加跑道的大小和難度。為保證智能車對各類跑道的適應性,應將智能車放到各類跑道上去調試,綜合各類跑道的特征和智能車自身性能,確定出恰當的控制算法,調試出最佳的控制參數。調試控制參數的典型方法是觀察智能車過小s和大彎時的轉向情況。當智能車既能以較小的擺動量過小s,又能及時轉彎時,控制參數便選取得比較理想。第六章智能車主要技術參數說明第六章智能車主要技術參數說明項目參數路徑檢測方法(競賽組)電磁組車模幾何尺寸(長、寬、高)750mm/250車模平均電流(勻速行駛)(毫安)2000電路電容總量(微法)1328uF傳感器種類及個數電感4路,測速1路,干簧管2路避障2路新增加伺服電機個數無賽道信息檢測空間精度(毫米)5賽道信息檢測頻率(次/秒)12主要集成電路種類/數量4/8車模重量(帶有電池)(千克)1.17結論電感傳感器工作穩定可靠,抗干擾能力強,因此,基于電感路徑探測傳感器的自主尋跡智能車有較強的抗干擾能力,能夠很好的適應賽場環境。系統執行一個周期所用的時間為5ms左右。唯一的時間瓶頸是舵機的響應時間。舵機作出響應需要十多毫秒的時間。因此,不斷優化舵機控制策略是令智能車平穩高速行駛的有效方法。目前,智能車系統研究還存在如下問題:(1)智能車在過十字交叉時路徑不夠平滑。(2)智能車在直線上加減速度不夠迅速。(3)智能車以較高速運行時,轉向舵機不夠靈敏,致使小車沖出賽道。針對智能車過十字交叉路徑不平滑的問題,將主要從軟件上優化路徑識別算法方面解決。針對智能車加減速不夠迅速的問題,將主要從軟件上優化電機控制算法的參數方面解決。針對智能車高速運行轉向不靈敏的問題,一方面可提高前瞻,使小車能夠更早判斷出賽道特征,另一方面可優化路徑識別算法和轉向舵機控制算法。此外,參數的高效率選取需做到:在調試程序的過程中,建立相應的數學模型,提高調試程序的目的性。參考文獻[參考文獻][1]卓晴,黃開勝,邵貝貝.《學做智能車——挑戰“飛思卡爾”杯》[M].北京:北京航空航天大學出版社,2007.[2]華成英,童詩白.《模擬電子技術基礎》[M].北京:高等教育出版社,2006.6.[3]閻石.《數字電子技術基礎》[M].北京:高等教育出版社,2006.5.[4]凌陽科技股份有限公司.《PID調節控制做電機速度控制》,2006.6.[5]黃惟一,胡生清.《控制技術與系統》[M].北京:機械工業出版社,2006.2.[6]BrianW.Kermighan,DennisM.Ritchie.TheCProgramingLanguage,SecondEdition[7]邵貝貝.《單片機嵌入式應用的在線開發方法》[M].北京:清華大學出版社,2004.10.[8]譚浩強.《C程序設計》[M].北京:清華大學出版社,2005.[9]黃開勝,金華民,蔣狄南.韓國智能模型車技術方案分析[J].電子產品世界,2006,3:150~152.[10]JinghuaZhong.PIDControllerTuning:AShortTutorial.MechanicalEngineering,Purdue[11]FreescaleSemiconductor.PK10N512VLL100ReferenceManual.,2011.附錄A源程序代碼附錄A源程序代碼#include"common.h"#include"include.h"/**********宏定義*********************************************//*********變量聲明******************************************//***********************傳感器采集信息*********************/floatad[6];floatad_max;uint8MaxNum;uint8ErrorFlag;uint8ErrorFlag_search;unsignedintAD_NORM[6];uint8turn_direction;/**********************避障信息*****************************/uint16Infrared[2];uint8LeftAvoidFlag=0;uint8RightAvoidFlag=0;floatAvoidTimes;int16Avoidance;/***********************路徑偏差信息***********************/floatSensorShift[2];floatSensorY;floatSensorY_ahead_horizontal;floatERROR0;floatY_reverse;floatX_reverse;/**********************賽車狀態信息************************/uint8stop_detect=0;uint8stop_flag=0;uint16stop_delay;//停車uint16stop_times;uint8brake_delay;/*uint8RAngleLeftFlag=0;uint8RAngleRightFlag=0;//直角彎uint8ReadyRampFlag=0;//中間電感的值非常大,探測桿已在坡道上方uint8RealRampFlag=0;//中間電感的值極小,說明車體已傾斜入坡,但需要在Ready的狀態下uint8Rampflag=0;//坡道標志uint16Rampcountflag=0;//坡道計數標志floatRampratio;//坡道上電感乘的系數uint16Ramptimes;*//**********************舵機控制****************************/uint16ui_pwmdty67;uint16Angle_max;uint16Angle_min;uint16Angle_middle;floatdirection_Kp;floatdirection_Kd;floatShiftToSteer[2];floatKp_base;floatKp_increase;/**********************速度控制***************************/floatv_target;floatspeed_target_left;floatspeed_target_right;int16g_uc_motorduty_left;int16g_uc_motorduty_right;uint8PulseCount_left;//根據給定速度換算得來的編碼器脈沖數uint8PulseCount_right;uint8encoder_flag;uint16encoder_value0;uint16encoder_value1;int16error_left[3]={0,0,0};int16error_right[3]={0,0,0};int16QUAD;//正交解碼有可能出現負值floatg_speedMin;floatg_speedMax;/**********************路徑識別信息***********************/uint8straightFlag=1;uint8curveToStraight=0;uint8straightToCurve=0;uint8leftFlag=0;uint8rightFlag=0;uint8lose_flag=0;uint8RightAngleFlag=0;floatPulse_sum=0;floatRoadShift3CM[20];floatRoadShift[20];uint8ShiftCount_num=0;floatShift_sum=0;floatShift1=0;floatShift5=0;floatShift10=0;floatShift20=0;floatShiftD6=0;floatShiftD10=0;floatShiftD20=0;floatShiftDD10=0;floatShiftDD20=0;uint8PulseLeft;int8PulseRight;/*********************定時相關變量*********************/uint8PIT_num;uint8PIT_flag;/********************宏定義***********************/#definekp_left11.9//電機的PID參數#defineki_left0.8#definekd_left0#definekp_right9.0#defineki_right0.7#definekd_right0#defineD52//后輪直徑#defineratio0.64//傳動比#defineencoder_line_num500//編碼器線數#definePulse3CM60//走過3CM是140個脈沖#defineDetect_Num5#defineSTOP_TIME10000#defineSpeedDifRatio0.005#defineAvoidFinish3500#defineROAD_SHIFT_MAX300/************************************************************************取絕對值函數************************************************************************/floatAbs(floatvalue){floatreturn_value;if(value>=0){return_value=value;}elseif(value<0){return_value=value*(-1);}returnreturn_value;}/********************************************************************兩數比大小并輸出較大的值*********************************************************************/floatcompare(floatvalue1,floatvalue2){floatvalue_max;if(value1>value2){value_max=value1;}else{value_max=value2;}returnvalue_max;}/*********************************************************************警告!核心板上所有LED快速閃爍5次用于電感斷線提示*********************************************************************/voidWarning(void){uint8m;for(m=0;m<5;m++){led(LED0,LED_ON);led(LED1,LED_ON);led(LED2,LED_ON);led(LED3,LED_ON);dwt_delay_ms(200);led(LED0,LED_OFF);led(LED1,LED_OFF);led(LED2,LED_OFF);led(LED3,LED_OFF);dwt_delay_ms(200);}}voidscan_deal(void){uint8m;/////////////////////AD采樣與數據處理//////////////////////////ad[0]=adc_once(ADC0_SE16,ADC_12bit);//實際ad5左邊電感ad[1]=adc_once(ADC0_SE18,ADC_12bit);//實際ad4右邊電感ad[2]=0;ad[3]=adc_once(ADC0_SE17,ADC_12bit);//實際ad3ad[4]=adc_once(ADC0_SE10,ADC_12bit);//實際ad2ad[5]=0;////////////////////////歸一化//////////////////////////////ad[0]=ad[0]*2372/AD_NORM[0];ad[1]=ad[1]*2370/AD_NORM[1];ad[3]=ad[3]*1871/AD_NORM[3];ad[4]=ad[4]*2076/AD_NORM[4];//////////////////////////避障數據采集///////////////////////Infrared[0]=adc_once(ADC0_DM0,ADC_12bit);Infrared[1]=adc_once(ADC1_SE16,ADC_12bit);///////////////////////避障處理///////////////////////////////if((Infrared[0]>1300&&Infrared[1]<500)||(Infrared[1]>1300&&Infrared[0]<500)){//濾波for(m=0;m<5;m++){Infrared[0]=Infrared[0]+adc_once(ADC0_DM0,ADC_12bit);Infrared[1]=Infrared[1]+adc_once(ADC1_SE16,ADC_12bit);}Infrared[0]=Infrared[0]/6;Infrared[1]=Infrared[1]/6;if(Infrared[0]>1300&&Infrared[1]<500){if(ad[0]>1600&&ad[0]<2700&&ad[1]>1600&&ad[1]<2700){Avoidance=-100;LeftAvoidFlag=1;led(LED0,LED_ON);led(LED1,LED_ON);led(LED2,LED_ON);led(LED3,LED_ON);}}if(Infrared[1]>1300&&Infrared[0]<500){if(ad[0]>1600&&ad[0]<2700&&ad[1]>1600&&ad[1]<2700){Avoidance=100;RightAvoidFlag=1;led(LED0,LED_ON);led(LED1,LED_ON);led(LED2,LED_ON);led(LED3,LED_ON);}}}/*********************************************************************舵機的PD控制*********************************************************************/voiddirection_PD(){ShiftToSteer[1]=ShiftToSteer[0];ShiftToSteer[0]=SensorShift[0];if(LeftAvoidFlag||RightAvoidFlag){if(gpio_get(PTE6)==0){ShiftToSteer[0]=ShiftToSteer[0]+Avoidance;}}direction_Kp=Kp_base+ShiftToSteer[0]*ShiftToSteer[0]/(Kp_increase*10000);if(direction_Kp>5){direction_Kp=5;}ui_pwmdty67=(unsignedint)(Angle_middle+direction_Kp*ShiftToSteer[0]+direction_Kd*(ShiftToSteer[0]-ShiftToSteer[1]));if(ui_pwmdty67>Angle_max){ui_pwmdty67=Angle_max;}if(ui_pwmdty67<Angle_min){ui_pwmdty67=Angle_min;}FTM_PWM_Duty(FTM1,FTM_CH0,ui_pwmdty67);}/*********************************************************************測速與控制速度*********************************************************************/voidspeedcount(void){encoder_value0=lptmr_pulse_get();QUAD=FTM_QUAD_get(FTM2);if(QUAD<0){QUAD=-QUAD;}encoder_value1=QUAD;//////////////////////////////////////////////////////////////將設置的速度轉換成了脈沖數,設置速度按照類似1.8m/s設置,//即賦speed_target_xxxxx為1.8//////////////////////////////////////////////////////////speed_target_left=speed_target_left*5/(3.14*D);speed_target_left=speed_target_left/ratio;speed_target_left=speed_target_left*encoder_line_num;PulseCount_left=(unsignedchar)speed_target_left;speed_target_right=speed_target_right*5/(3.14*D);speed_target_right=speed_target_right/ratio;speed_target_right=speed_target_right*encoder_line_num;PulseCount_right=(unsignedchar)speed_target_right;motorcontrol(PulseCount_left,PulseCount_right);lptmr_pulse_clean();FTM_QUAD_clean(FTM2);}/************************************************停車*************************************************/voidstop(){if(stop_flag){stop_times++;if(stop_times>=100){gpio_set(PTC0,0);gpio_set(PTC6,0);//關電機}}}/************************************************差速控制*************************************************//************主函數***************/voidmain(){/********變量聲明******************************/fb_clk_init();trace_clk_init();/********初始化******************************//////////////////電機使能端//////////gpio_init(PTC0,GPO,1);gpio_init(PTC6,GPO,1);/////////////////撥碼開關初始化///////port_init(PTE0,ALT1|PULLUP);port_init(PTE1,ALT1|PULLUP);port_init(PTE2,ALT1|PULLUP);port_init(PTE3,ALT1|PULLUP);port_init(PTE4,ALT1|PULLUP);port_init(PTE5,ALT1|PULLUP);port_init(PTE6,ALT1|PULLUP);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省2023~2024學年高一數學下學期6月聯考試卷含答案
- 部編版三年級下冊語文看拼音寫詞語復習田字格
- 山西省重點名校2025年初三“一診”模擬考試物理試題含解析
- 山東省濟南市高新區2024-2025學年數學五下期末統考模擬試題含答案
- 南通科技職業學院《英語教學技能訓練》2023-2024學年第二學期期末試卷
- 江蘇省江蘇省大豐市萬盈初級中學2025屆學業水平考試物理試題含解析
- 遼寧省鐵嶺市銀州區2024-2025學年數學三下期末質量檢測模擬試題含解析
- 江蘇省揚州市江都區國際校2025屆初三最后一次模擬考試英語試題含答案
- 婺源縣2025屆四下數學期末學業質量監測模擬試題含解析
- 延安大學西安創新學院《古代詩人研究》2023-2024學年第二學期期末試卷
- 智能輔具在康復中的應用-全面剖析
- 2025年高考地理二輪復習:選擇題答題技巧(含練習題及答案)
- 深基坑開挖及支護施工方案
- 2025屆江蘇省南通市、宿遷、連云港、泰州、揚州、徐州、淮安蘇北七市高三第二次調研英語試卷
- 2025年內蒙古自治區中考一模語文試題(原卷版+解析版)
- 安全教育車間級
- 對照品管理規范
- 光伏電站安全管理制度
- 2025年江蘇省徐州中考練習卷(1)英語試題(含答案)
- 信息科技開學第一課課件 哪吒 人工智能 機器人 信息科技
- 智能電網負荷預測-深度研究
評論
0/150
提交評論