第七屆“飛思卡爾”杯全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告_第1頁
第七屆“飛思卡爾”杯全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告_第2頁
第七屆“飛思卡爾”杯全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告_第3頁
第七屆“飛思卡爾”杯全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告_第4頁
第七屆“飛思卡爾”杯全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告_第5頁
已閱讀5頁,還剩119頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七屆“飛思卡爾”杯全國大學(xué)生

智能汽車競(jìng)賽

技術(shù)報(bào)告

0

學(xué)校:電子科技大學(xué)

隊(duì)伍名稱:ZEUS

參賽隊(duì)員:羅江波

嚴(yán)長(zhǎng)國

嚴(yán)高俊

帶隊(duì)教師:田雨

關(guān)于技術(shù)報(bào)告和研究論文使用授權(quán)的說明

本人完全了解第七屆“飛思卡爾”杯全國大學(xué)生智能汽車邀

請(qǐng)賽關(guān)保留、使用技術(shù)報(bào)告和研究論文的規(guī)定,即:參賽作品著

作權(quán)歸參賽者本人,比賽組委會(huì)和飛思卡爾半導(dǎo)體公司可以在相

關(guān)主頁上收錄并公開參賽作品的設(shè)計(jì)方案、技術(shù)報(bào)告以及參賽模

型車的視頻、圖像資料?,并將相關(guān)內(nèi)容編纂收錄在組委會(huì)出版論

文集中。

參賽隊(duì)員簽名:羅江波

嚴(yán)長(zhǎng)國

嚴(yán)高俊

帶隊(duì)教師簽名:田雨

日期:OL

-2-

14日

目錄

第一章引言錯(cuò)誤!未定義書簽。

1.1大賽介紹?1?

1.2系統(tǒng)設(shè)計(jì)框架介紹-2-

第二章智能車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化錯(cuò)誤!未定義書簽。

2.1智能車參數(shù)要求-5-

2.2智能車整體參數(shù)調(diào)校-5-

2.3編碼器安裝-7-

2.4陀螺儀與加速度計(jì)安裝錯(cuò)誤!未定義書簽。

第三章硬件電路設(shè)計(jì)說明-11-

3.1單片機(jī)最小系統(tǒng)模塊-11-

3.2傳感器模塊-12-

3.3電機(jī)模塊錯(cuò)誤!未定義書簽。

3.4測(cè)試模塊-14-

3.5陀螺儀與加速度計(jì)模塊-15-

3.6人機(jī)交互模塊-16-

第四章智能車控制軟件設(shè)計(jì)說明-17-

4.1巡線原理-11-

4.2控制算法-12-

4.3軟件系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)錯(cuò)誤!未定義書簽。

4.4偏差獲取-14-

第五章系統(tǒng)調(diào)試-26-

第六章車輛主要參數(shù)-28-

第七章總結(jié)-30-

參考文獻(xiàn)-30-

附錄:部分程序源代碼-32-

-4-

第一章引言

1.1大賽介紹

為加強(qiáng)大學(xué)生實(shí)踐、創(chuàng)新能力和團(tuán)隊(duì)精神的培養(yǎng),促進(jìn)高等教育

教學(xué)改革,受教育部高等教育司委托(教高司函[2005]201號(hào)文,附件

1),由教育部高等自動(dòng)化專業(yè)教學(xué)指導(dǎo)分委員會(huì)(以下簡(jiǎn)稱自動(dòng)化分

教指委)主辦全國大學(xué)生智能汽車競(jìng)賽。該競(jìng)賽以智能汽車為研究對(duì)

象的創(chuàng)意性科技競(jìng)賽,是面向全國大學(xué)生的一種具有探索性工程實(shí)踐

活動(dòng),是教育部倡導(dǎo)的大學(xué)生科技競(jìng)賽之一。該競(jìng)賽以“立足培養(yǎng),

重在參與,鼓勵(lì)探索,追求卓越”為指導(dǎo)思想,旨在促進(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é)作的人文精神,為優(yōu)秀人才的脫穎而

出創(chuàng)造條件。

該競(jìng)賽由競(jìng)賽秘書處為各參賽隊(duì)提供/購置規(guī)定范圍內(nèi)的標(biāo)準(zhǔn)硬

軟件技術(shù)平臺(tái),競(jìng)賽過程包括理論設(shè)計(jì)、實(shí)際制作、整車調(diào)試、現(xiàn)場(chǎng)

比賽等環(huán)節(jié),要求學(xué)生組成團(tuán)隊(duì),協(xié)同工作,初步體會(huì)一個(gè)工程性的

研究開發(fā)項(xiàng)目從設(shè)計(jì)到實(shí)現(xiàn)的全過程。該競(jìng)賽融科學(xué)性、趣味性和觀

賞性為一體,是以迅猛發(fā)展、前景廣闊的汽車電子為背景,涵蓋自動(dòng)

控制、模式識(shí)別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械與汽車等多

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

學(xué)科專業(yè)的創(chuàng)意性比賽。該競(jìng)賽規(guī)則透明,評(píng)價(jià)標(biāo)準(zhǔn)客觀,堅(jiān)持公開、

公平、公正的原則,保證競(jìng)賽向健康、普及,持續(xù)的方向發(fā)展。

該競(jìng)賽以飛思卡爾半導(dǎo)體公司為協(xié)辦方,得到了教育部相關(guān)領(lǐng)

導(dǎo)、飛思卡爾公司領(lǐng)導(dǎo)與各高校師生的高度評(píng)價(jià),已發(fā)展成全國30

個(gè)省市自治區(qū)近300所高校廣泛參與的全國大學(xué)生智能汽車競(jìng)賽。

2008年起被教育部批準(zhǔn)列入國家教學(xué)質(zhì)量與教學(xué)改革工程資助項(xiàng)目

中科技人文競(jìng)賽之一(教高函[2007]30號(hào)文)。

全國大學(xué)生智能汽車競(jìng)賽原則上由全國有自動(dòng)化專業(yè)的高等學(xué)

校(包括港、澳地區(qū)的高校)參賽。競(jìng)賽首先在各個(gè)分賽區(qū)進(jìn)行報(bào)名、

預(yù)賽,各分賽區(qū)的優(yōu)勝隊(duì)將參加全國總決賽。

本次比賽分為光電、攝像頭和電磁三個(gè)賽題組,在車模中使用透

鏡成像進(jìn)行道路檢測(cè)方法屬于攝像頭賽題組,使用電磁信號(hào)巡線屬于

電磁賽題組,除此之外則屬于光電賽題組。本論文主要介紹電磁賽題

組的智能車制作。

1.2系統(tǒng)設(shè)計(jì)框架介紹

系統(tǒng)是以檢測(cè)電磁場(chǎng)信號(hào)為基礎(chǔ),通過單片機(jī)處理信號(hào)實(shí)現(xiàn)對(duì)車

體控制,實(shí)現(xiàn)車體能夠準(zhǔn)確沿著預(yù)設(shè)路徑尋跡。系統(tǒng)電路部分需要

包括單片機(jī)控制單元、電機(jī)驅(qū)動(dòng)電路、陀螺儀與加速度計(jì)電路、電

-2-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

磁傳感器電路等部分,除此之外系統(tǒng)還需要一些外部設(shè)備,例如編

碼器測(cè)速、直流電機(jī)驅(qū)動(dòng)車體和控制車體方向。綜上所述,本智能

車系統(tǒng)包含了以下幾個(gè)模塊:

1.電源模塊

2.單片機(jī)最小系統(tǒng)模塊

3.傳感器模塊

4.電機(jī)模塊

5.陀螺儀與加速度計(jì)模塊

6.測(cè)速模塊

7.人機(jī)交互模塊

系統(tǒng)的整體模塊如圖121所示:

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

圖1.2.1系統(tǒng)框架圖

-4-

第二章智能車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化

2.1智能車參數(shù)要求

1.車模尺寸要求:車模尺寸寬度不超過250mm,長(zhǎng)度沒有限制,比

賽過程中長(zhǎng)度不得發(fā)生改變。

2.傳感器數(shù)量要求:傳感器數(shù)量不超過16個(gè):磁場(chǎng)傳感器在同一位

置可以有不同方向傳感器,計(jì)為一個(gè)傳感器。

3.電機(jī)型號(hào):RN260-CN38-18130

4.全部電容容量和不得超過2000微法;電容最高充電電壓不得超過

25伏。

2.2智能車整體參數(shù)調(diào)校

智能車的整體參數(shù),包括車體重心、高度、傳感器排布方式等,

都對(duì)整個(gè)智能車系統(tǒng)的穩(wěn)定運(yùn)行起著至關(guān)重要的作用。因此,對(duì)智

能車機(jī)械系統(tǒng)的調(diào)節(jié),有助于小車更快更穩(wěn)定的運(yùn)行。

小車的布局以精簡(jiǎn)、可靠、穩(wěn)定為前提,通過對(duì)小車的布局,盡

量保證小車左右平衡,以及尋找一個(gè)合適的重心,保證小車既能穩(wěn)

定快速前進(jìn),又能在轉(zhuǎn)彎時(shí)流暢。電磁組車模如圖221所示

-5-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

圖221車模示意圖

車模運(yùn)行狀態(tài)如圖222所示

(4;r,向

I原表的轉(zhuǎn)向

[拘沒療用.

n可以去除掉

圖221車模示意圖

-6-

智能車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化

2.3編碼器安裝

選用可以3.3V工作電壓的光電編碼器進(jìn)行速度的測(cè)量。根據(jù)光

電編碼器的形狀,我們自制了一個(gè)支架,速度傳感器用螺釘通過支

架固定在后輪支架上,這樣固定好之后,就有了較高的穩(wěn)定性。然

后調(diào)節(jié)編碼器齒輪,使其與差速齒輪緊密咬合,增大測(cè)速的精確性,

但是咬合過緊也增大了摩擦,減小了對(duì)電機(jī)做功的利用率,影響小

車的快速行駛,因此減小摩擦同時(shí)增強(qiáng)齒輪間的咬合是我們主要考

慮的因素。編碼器安裝示意圖如圖241所示:

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

圖2.4.1編碼器安裝示意圖

2.4陀螺儀與加速度傳感器安裝

本次設(shè)計(jì)中陀螺儀采用的是村田公司的ENC-03系列的陀螺儀。

智能車在行進(jìn)過程中,車體僅繞兩后輪的軸心線做轉(zhuǎn)動(dòng)。芯片外觀

是長(zhǎng)方形的,安裝時(shí),應(yīng)注意將長(zhǎng)的一邊與后輪軸心線平行。此外,

還應(yīng)注意的是,陀螺儀的輸出受溫度的影響比較大,為避免環(huán)境溫

度變化對(duì)輸出的影響,我們將陀螺儀和加速度計(jì)作為一個(gè)單獨(dú)的模

塊。

-8-

智能車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化

與陀螺儀一樣,加速度傳感器的性能與安放位置也有很大的關(guān)

系。加速度傳感器是根據(jù)其XYZ軸上的模擬輸出電壓來確定車身的

傾角。由于我們測(cè)量的傾角只有一個(gè),所以可以使用Z軸的輸出來

計(jì)算,當(dāng)小車傾角為。時(shí)一,Z軸對(duì)應(yīng)的面應(yīng)該處于水平。

圖2.5ENC-03陀螺儀與加速度計(jì)

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

-10-

第三章硬件電路設(shè)計(jì)說明

本智能車硬件系統(tǒng)以穩(wěn)定為設(shè)計(jì)的原則,在有限的條件下做到

最好。單片機(jī)采用MCF52259。AMS1117-3.3產(chǎn)生的3.3V電壓?jiǎn)为?dú)

為單片機(jī)供電,再使用一片AMS1117-3.3為陀螺儀和加速度計(jì)、藍(lán)

牙串口供電,使用LM2940-5為傳感器供電,電機(jī)驅(qū)動(dòng)使用芯片

BTS7970o調(diào)試過程中,采用OLED、藍(lán)牙等模塊輔助,方便小車的

調(diào)試。本章均有詳細(xì)介紹。

3.1單片機(jī)最小系統(tǒng)模塊

以MCF2259為核心的單片機(jī)最小系統(tǒng)是本智能車的核心。

wH譽(yù)

d裝

一A

??

一§

運(yùn)§

整B

-H

-11-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

圖3.1.1主板電路

3.2傳感器模塊

傳感器是電磁組小車最重要的模塊之一,能夠?qū)ψ兓拇艌?chǎng)信

號(hào)作出靈敏的檢測(cè),對(duì)道路狀況的檢測(cè)起著至關(guān)重要的作用。本系

統(tǒng)根據(jù)LC諧振的原理,選取lOmH電感和6.8nF電容作為L(zhǎng)C諧振

電路,產(chǎn)生感應(yīng)電流,再通過濾波、放大、檢波,然后將結(jié)果送入

單片機(jī)AD進(jìn)行相應(yīng)的處理,以判斷賽道當(dāng)前信息。如圖3.2.1所示。

圖3.2.1

傳感器的排布,直接影響了對(duì)磁場(chǎng)的敏感程度。

直導(dǎo)線磁場(chǎng)分布交

叉導(dǎo)線磁場(chǎng)分布

-12-

硬件電路設(shè)計(jì)說明

圖3.2.2賽道磁場(chǎng)分布

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

圖3.2.3傳感器排布方案

如圖所示,根據(jù)左右兩水平電感的差值來判斷賽道信息。

3.3電機(jī)模塊

電機(jī)采用芯片BTS7970,其應(yīng)用非常簡(jiǎn)單,只需要向芯片第2引

腳輸入PWM波就能控制。當(dāng)系統(tǒng)中只需要單向控制時(shí),只需要讓電

機(jī)一端接地,另一端接BTS7960第4弓|腳。如果需要電機(jī)雙向旋轉(zhuǎn)

控制,則需要另一片BTS7960共同組成全橋。由于小車使用雙電機(jī),

所以我們使用4片BTS7970構(gòu)成兩個(gè)全橋分別控制兩個(gè)電機(jī)。

-14-

硬件電路設(shè)計(jì)說明

圖341電機(jī)驅(qū)動(dòng)電路

3.4測(cè)速模塊

本小車使用光電編碼器進(jìn)行小車的測(cè)速,并由AMS1117-3.3為

其提供3.3V工作電壓。光電編碼器輸出5%-85%VCC的方波信號(hào)。

這種測(cè)試方式電路較為復(fù)雜,需要增加外圍電路,但相對(duì)于其帶來

的,測(cè)量精度的提高和測(cè)量穩(wěn)定性的提高而言,終究利大于弊。

3.5陀螺儀與加速度計(jì)模塊

我們采用AMS1117為陀螺儀(ENC-03MB)和加速度計(jì)

(MMA7361)提供3.3V的工作電壓。由于陀螺儀數(shù)據(jù)手冊(cè)上的

輸出有過沖,不利于積分,我們采用官方提供的電路。

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

3.5.1陀螺儀電路

3.5.2加速度計(jì)電路

3.6人機(jī)交互模塊

為了方便調(diào)試,本車有藍(lán)牙模塊,有效進(jìn)行運(yùn)行參數(shù)之間的傳

送,除此之外,還設(shè)置了鍵盤、液晶顯示屏,以方便控制參數(shù)的修

改,便捷的智能車的調(diào)試。

-16-

第四章智能車控制軟件設(shè)計(jì)說明

4.1巡線原理

比賽中存在兩種磁場(chǎng):一種是用來作為起跑線的永磁鐵產(chǎn)生的固

定磁場(chǎng),用于標(biāo)識(shí)終點(diǎn);一種是賽道中通過100mA交變電流的導(dǎo)線

所產(chǎn)生的電磁場(chǎng),用于賽道識(shí)別。由于本屆電磁不需在終點(diǎn)處停車,

所以不必考慮第一種磁場(chǎng)。而后者可選取原理簡(jiǎn)單、價(jià)格便宜、體

積小(相對(duì)?。?、頻率響應(yīng)快、電路實(shí)現(xiàn)簡(jiǎn)單電磁感應(yīng)線圈作為傳感

器。交流電信號(hào)產(chǎn)生交變磁場(chǎng),交變磁場(chǎng)在電感線圈中產(chǎn)生與磁場(chǎng)

強(qiáng)度相關(guān)的電流。

由于本屆電磁為立著跑,速度相對(duì)往年來說比價(jià)慢,我們只采

用了水平雙電感,通過兩者感應(yīng)值之差來來控制電機(jī)的轉(zhuǎn)速,從而

控制小車的前進(jìn)方向。

4.2控制算法

智能車的控制包主要是電機(jī)控制。具體的控制算法有PID控制、

bang-bang算法控制和模糊控制。

4.2.1PID控制

PID控制是工業(yè)過程控制中歷史最悠久,生命力最強(qiáng)的控制方

式。這主要是因?yàn)檫@種控制方式具有直觀、實(shí)現(xiàn)簡(jiǎn)單和魯棒性能好

等一系列的優(yōu)點(diǎn)。PID控制主要有三部分組成,比例、積分、微分。

比例控制是一種最簡(jiǎn)單的控制方式。其控制器的輸出與輸入誤差信

-17-

智能車控制軟件設(shè)計(jì)說明

號(hào)成比例關(guān)系。偏差一旦產(chǎn)生,調(diào)節(jié)器立即產(chǎn)生控制作用使被控量

朝著減小偏差的方向變化,控制作用的強(qiáng)弱取決于KP。當(dāng)僅有比例

控制時(shí)系統(tǒng)輸出存在穩(wěn)態(tài)誤差(Steady-stateerror)o

為了消除穩(wěn)態(tài)誤差,引入積分控制。積分項(xiàng)對(duì)誤差取決于時(shí)間

的積分,隨著時(shí)間的增加,積分項(xiàng)會(huì)增大。這樣,即便誤差很小,

積分項(xiàng)也會(huì)隨著時(shí)間的增加而加大,它推動(dòng)控制器的輸出增大使穩(wěn)

態(tài)誤差進(jìn)一步減小,直到等于零。

為了預(yù)測(cè)預(yù)測(cè)誤差變化的趨勢(shì),引入微分的控制器,這樣就能

夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被

控量的嚴(yán)重超調(diào)。

PID控制框圖如下圖所示

-18-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

對(duì)應(yīng)的誤差傳遞函數(shù)為:

U(s)/E(s)=Kp(l+l/Ti+Td)

式中,Kp為比例增益;Ti為積分時(shí)間常數(shù);Td為微分時(shí)間

常數(shù);U(s)為控制量;E(s)為被控量與設(shè)定值R(s)的偏差。

”(f)=Kp「e(f)+JfeQ)df+7;苧]

時(shí)域表達(dá)式為L(zhǎng)1“山」(式一)

在單片機(jī)中,我們僅能對(duì)數(shù)字信號(hào)處理,即數(shù)字PID控制。將上式

離散化,得錯(cuò)誤!未找到引用源。(式二)

A.位置式PID算法

直接利用上述離散化公式計(jì)算,框圖如右圖所示。由于積分項(xiàng)

(Pi)是將所有采集值偏差相加,在

一段時(shí)間后會(huì)很浪費(fèi)單片機(jī)資源。對(duì)其稍加改進(jìn),

得到增量型PID算法。

智能車控制軟件設(shè)計(jì)說明

B.增量式PID算法

根據(jù)式二得第k-1個(gè)采樣周期的控制量為

錯(cuò)誤!未找到引用源。(式三)

式二減式三得

錯(cuò)誤!未找到引用源。(式四)

由此,第k個(gè)采樣時(shí)刻實(shí)際控制量為錯(cuò)誤!未找到引用源。,為方便

書寫,寫為

錯(cuò)誤!未找到引用源。(式五)

其中,錯(cuò)誤!未找到引用源。

<?1=-KpU+-y-)

由上可知,利用三個(gè)歷史數(shù)據(jù),遞推使用,

即可完成PID控制量??驁D如右圖所示:

4.2.2模糊控制

一般控制系統(tǒng)包含了五個(gè)主要部分,即:定義

變量、模糊化、知識(shí)庫、邏輯判斷及反模糊

化,底下將就每一部分做簡(jiǎn)單的說明:

(1)定義變量:也就是決定程序被觀察的狀

-20-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

況及考慮控制的動(dòng)作,例如在一般控制問題上,輸入變量有

輸出誤差E與輸出誤差之變化率CE,而控制變量則為下一

個(gè)狀態(tài)之輸入U(xiǎn)。其中E、CE、U統(tǒng)稱為模糊變量。

(2)模糊化(fuzzify):將輸入值以適當(dāng)?shù)谋壤D(zhuǎn)換到論域的

數(shù)值,利用口語化變量來描述測(cè)量物理量的過程,依適合的

語言值(linguisitcvalue)求該值相對(duì)之隸屬度,此口語

化變量我們稱之為模糊子集合(fuzzysubsets)o

(3)知識(shí)庫:包括數(shù)據(jù)庫(database)與規(guī)則庫(rulebase)

兩部分,其中數(shù)據(jù)庫是提供處理模糊數(shù)據(jù)之相關(guān)定義;而規(guī)

則庫則藉由一群語言控制規(guī)則描述控制目標(biāo)和策略。

(4)邏輯判斷:模仿人類下判斷時(shí)的模糊概念,運(yùn)用模糊邏輯和

模糊推論法進(jìn)行推論,而得到模糊控制訊號(hào)。此部分是模糊

控制器的精髓所在。

(5)解模糊化(defuzzify):將推論所得到的模糊值轉(zhuǎn)換為明

確的控制訊號(hào),做為系統(tǒng)的輸入值。

模糊算法可以解決一些非線性問題,將賽道分為直線、入大小彎、

出大小彎、蛇形彎道,對(duì)應(yīng)的直線加速、入大彎減速轉(zhuǎn)方向、入小

彎制動(dòng)轉(zhuǎn)方向、出彎加速、蛇形彎道直接通過(若可以達(dá)到這種前

智能車控制軟件設(shè)計(jì)說明

瞻性)。要達(dá)到這種控制要通過實(shí)際檢測(cè),分析大量賽道磁場(chǎng)信息,

找出它們的特征。

4.2.3總結(jié)

雖然模糊控制可以較好解決一些非線性問題,但控制復(fù)雜,實(shí)際

調(diào)試中較PID控制無明顯優(yōu)勢(shì),所以我們采用PID控制。電機(jī)控制

為增量式PID,由于給定速度頻繁變化,采用微分先行PID,使電機(jī)

能夠快速響應(yīng)。

4.3.軟件系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)

軟件運(yùn)行需要配置單片機(jī)各個(gè)模塊寄存器數(shù)值,使單片機(jī)各個(gè)模

塊正常工作。初始化中包括:?jiǎn)纹瑱C(jī)時(shí)鐘配置、I/O口配置、PWM

模塊配置、A/D模塊配置、RTI實(shí)時(shí)中斷配置、脈沖捕捉模塊配置。

當(dāng)初始化完畢后,進(jìn)入跑車程序:對(duì)傳感器輸入信號(hào)進(jìn)行采樣,當(dāng)

完成一次采樣后將采樣值映射成車相對(duì)于跑道的位置,根據(jù)當(dāng)前與

過去位置決定舵機(jī)轉(zhuǎn)角和電機(jī)速度,通過改變PWM模塊內(nèi)部寄存

器數(shù)值可以得到不同占空比的方波信號(hào),實(shí)現(xiàn)對(duì)舵機(jī)和電機(jī)的調(diào)節(jié)。

軟件整體流程如下圖所示:

-22-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

開始

模塊初始化

輸入?yún)?shù)一I

1——J——否

卷入跑車程定〉—

4

開中斷

讀取編碼器的值,

計(jì)算速度

偏差計(jì)算

I.I

采集AD值

電機(jī)控制

賽車調(diào)試上述算法參數(shù)的獲取必須通過實(shí)際的測(cè)量,賽道信息

的獲取我們打算用藍(lán)牙藍(lán)傳送數(shù)據(jù)。利用藍(lán)牙串口模塊,將所需數(shù)

據(jù)發(fā)回PC機(jī),通過MATLAB仿真分析偏差變化,對(duì)數(shù)據(jù)進(jìn)行處理

得到賽道信息,從而調(diào)整參數(shù)使之達(dá)到最佳值。

4.4偏差獲取

智能車控制軟件設(shè)計(jì)說明

傳感器感應(yīng)值與距離導(dǎo)線距離成負(fù)相關(guān)關(guān)系,四個(gè)傳感器感應(yīng)值

與小車距離導(dǎo)線偏差之間關(guān)系圖像如下圖所示:

傳感器特性曲線圖

2500

6oo

OOO

50

偏差

將數(shù)據(jù)導(dǎo)入MATLAB中進(jìn)行傳感器到偏差的映射計(jì)算,得到偏差計(jì)

算公式

err=0.0360*(sensor0-sensor?)+0.0029*(sensor3-sensor4);

將計(jì)算值與實(shí)際值比較,可得

-24-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

第五章系統(tǒng)調(diào)試

開發(fā)工具使用的是大賽組委會(huì)提圖的Codewarrior5.0開發(fā)環(huán)境,如

圖5.1.1所示。它能夠?yàn)閱纹瑱C(jī)MCF52259提供與之配套的應(yīng)用程序

開發(fā)模塊。在目標(biāo)程序的下載方面,通過BDM與單片機(jī)之間的連接

下載程序。在調(diào)試方面,使用了MCF52259的串口,利用串口線將

MCF52259和PC的串口相連,使用串口調(diào)試工具或PC的超級(jí)終端進(jìn)

行程序的調(diào)試。使用AltiumDesigner設(shè)計(jì)硬件電路。

FreesualeCodeWarrior-[init.c]

-I:cEditSc?JrchProjectProce-ss.orExper*V7ir?du,,DQ

xc//A

St.aCLKsEL-O^Oo;

PLLcTLFILoN-1

|LinJcOrder*|T<?SYNR-OxDB;

REFDVIoXO8;

SI1vOoo

D-X-

W?n0P?:

TnP

blvi?tooth.csme?0;

il<CRGF工G8K

blvielootX-hEL-

Ks1ELsE工;

Hait■-曰

inith

input.,e

inpuths101i.uvoxdpoart(voId)

Jc?y.c'DDRA-Oxcf;.網(wǎng)—:fcT

k?y.h

PORTA-Ox££.

DDRB-Oxel;"Ba+TMT坨仃

DDRE=Oxff;//led

IRQCR_IRQEN-0;“PE中斷諭止

DDRJ-Oacf£.

selectcar.hDDRS-Oxff;

SetPscrameter-cPORTB?Ox7f;

S?tPwn*terKDDRJ-Oxff.PTJ-0x£f;心f/L快育/

speedpid.cDDRk?=Oxff,FORTK-Oxff,

sp??dpidK1U-b.1-0x7f;PTT-Oxff;PERT-Oxff;

cs.cDDRM-Oxff;PTM-Oxf£;

tactics.KDDRF-Oxff,PTF-0x7f,

d0t■1>??0cDDRH=0xff;PTH=0xff;

(■?!XncludesECLKCTL|-OxcO;^/Dxsabl?ECLKoutput

.f1Proj?ctS?ttin<s

■[*.C3LibxvoadPWM(void)

圖5.1.1

-26-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

第六章車輛主要參數(shù)

車模主要參數(shù)名稱參數(shù)

車模重量0.835kg

車模長(zhǎng)度45cm

車模寬度24.5cm

車模高度23cm

傳感器種類及數(shù)量電感*2、陀螺儀*1、加速度計(jì)*1、編

碼器*2

電路電容總量1950uf

賽道信息檢測(cè)頻率500次/秒

賽道信息檢測(cè)精度5mm

-28-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

第七章總結(jié)

雖然這是電磁組第三屆比賽,并經(jīng)過這么長(zhǎng)時(shí)間的調(diào)試,但依

然存在的問題還很多,下面我們想說說存在的問題及改進(jìn)方向。

首先,電磁傳感器的方案中,輸出電壓與輸入的磁場(chǎng)強(qiáng)度不成

正比,這導(dǎo)致了測(cè)量時(shí)存在誤差,可以采用補(bǔ)償?shù)姆椒右韵?/p>

可以進(jìn)行硬件和軟件的補(bǔ)償,硬件上用高精度電感電容電阻,相對(duì)

應(yīng)的電感和電容盡量接近,軟件上濾波。還有一點(diǎn)就是前瞻問題,

由于不限車長(zhǎng),但前瞻依然無法做到很大,因?yàn)閭鞲衅鬟^長(zhǎng)的話,

前端一點(diǎn)點(diǎn)的晃動(dòng),對(duì)小車的直立都會(huì)有很大的影響。

然后,由電磁傳感器測(cè)得的電壓來計(jì)算相對(duì)偏移量的算法中,

可以大幅改進(jìn),根據(jù)理論推導(dǎo)和實(shí)驗(yàn)測(cè)得數(shù)據(jù),開發(fā)更穩(wěn)定、更精

確地算法,如擬合直線,二次曲線等方法,更精確的得出相對(duì)位置

的大小。而采用模糊控制也是一種很好處理非線性問題的解決方法。

最后C車模的電機(jī)性能比較差和功率較小,一對(duì)新的電機(jī)調(diào)

試幾天后,性能明顯下降,各種參數(shù)有很大的變動(dòng),不得不更換新

的電機(jī),影響調(diào)車的進(jìn)度。由于功率較小,使小車的過彎速度受到

比較大的限制,從而影響小車的整體速度??梢圆捎霉β时容^大的

電機(jī)來代替目前的電機(jī),使小車的轉(zhuǎn)彎性能得到提高。

從2月開始做智能車開始到現(xiàn)在,我們把所學(xué)的理論知識(shí)化為

實(shí)際,增強(qiáng)了實(shí)踐動(dòng)手能力,加深了對(duì)理論知識(shí)的理解。并接觸了

很多新的知識(shí),拓寬了視野。在感謝比賽組委會(huì)為我們搭建這樣一

個(gè)平臺(tái)的同時(shí),我們還特別感激我們學(xué)校和學(xué)院里一直支持和關(guān)注

智能車比賽的領(lǐng)導(dǎo)以及老師。

參考文獻(xiàn)

[1]邵貝貝.嵌入式實(shí)時(shí)操作系統(tǒng)[LC/OS-II(第2版)[M].北

京.清華大學(xué)出版社.2004

-30-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

[2]譚浩強(qiáng),C語言程序設(shè)計(jì)[M].清華大學(xué)出版社,2006.1

[3]新型PID控制及其應(yīng)用2002年作者:陶永華主編

[4]周金萍等《MATLAB6.5實(shí)踐與提高》,中國電力出版社

[5]MC33886TechnicalData,FreescaleSemiconductorJuly

2005.

[6]卓晴.基于電磁引導(dǎo)的智能車控制算法

[7]RamonPallas-Areny,JohnG.Webster,傳感器和信號(hào)調(diào)節(jié)

(第二版)[M].北京:清華大學(xué)出版社,2003.

附錄:部分程序源代碼

#include"alldefine.h"

#include"carsub.h"

#include"support_common.h"/*includeperipheraldeclarationsand

more*/

#include"UART.h"

#include"Debug.h"

//#definefilter〃濾波調(diào)試開關(guān)

voidmain(void)

(

unsignedcharArray[8]={0},Rcvbuf[2]={0};

inti=0;

staticfloatsend1[8];

staticinttemp_r=0;

#ifdeffilter

UartInit(0,80,9600,0);//藍(lán)牙串口初始化,注意調(diào)整波特率

#else

UartInit(0,80/15200,0);〃藍(lán)牙串口初始化,注意調(diào)整波特率

#endif

All_init();

-32-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

CardebugO;

for(;;)

(

//MCF_GPIO_PORTNQI:

MCF_GPIO_PORTNQ_PORTNQ1;

CheckCarStand();

somesets();〃相關(guān)參數(shù)設(shè)置

#ifndeffilter

if((temp_rec=:

l)&&(!((g_fCarAngle>MAXERRANGLE)ll(g_fCarAngle<MINER

RANGLE)ll(g_LoseLineFlag==l)ll(!L_flag))))

(

for(i=0;i<Tran_Bytenum;i++)

(

UartSendl(O,send[i]);

)

temp_rec=0;

)

#else

if(temp_r==0)

智能車控制軟件設(shè)計(jì)說明

sendl[O]=g_fCarAngle;

sendl[l]=g_foriginal_angle;

send1⑵=VOLTAGE_RIGHT;

send1[3]=g_fSpeedControlOut*100;

send1[4]=g_fAngleControlOut*100;

send1[5]=g_fDirectionControlOut*100;

send1[6]=g_fLeftMotorOut*100;

send1[7]=g_fRightMotorOut*100;

temp_r=1;

)

if((temp_r=:

1))//&&(!((g_fCarAngle>30)ll(g_fCarAngle<-50)ll(g_LoseLineFlag

==l)ll(!L_flag))))

|

UartSendl(0,Oxfl);

for(i=0;i<2;i++)

(

UartSendl(O,(int8)sendl[i]);

-34-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

UartSendl(O,(int8)((int)sendl[ij?8));

)

UartSendl(O,0xf2);

temp_r=0;

)

#endif

)

)

#definecarsub_global

#include"UART.h"

#include"Debug.h"

#include"stdio.h"

#include"carsub.h"

#include"support_common.h"

#include"math.h"

voidCarSublnit(void)//各全局變量初始化

(

inti;

L_flag=0;

智能車控制軟件設(shè)計(jì)說明

temp_rec=0;

g_nDirection_Selflag=1;〃默認(rèn)選擇電磁傳感器

g_SensorChooseFlag=1;〃傳感器切換標(biāo)志

g_StartCount=0;//起步計(jì)數(shù)

g_nStartSpeed=20;

g_nStartTime=3;

g_nSpeedMax_Int=15;

g_ntempcount=0;

g_timecount=0;

g_fLeftMotorOut=0;〃左輪電機(jī)輸出

g_fRightMotorOut=0;//右輪電機(jī)輸出

g_fAngleControlOut=0;//角度輸出控制量

g_fSpeedControlOut=0;//速度控制輸出量

g_fDirectionControlOut=0;〃方向控制輸出量

g_nLeftMotorPulseSigma=0;

g_nRightMotorPulseSigma=0;

count=0;〃脈沖計(jì)數(shù)

g_fCarSpeed=0;

g_nSpeedControlPeriod=0;

-36-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

g_nCarSpeedSet=34;//期望速度?。。。。。。。。。。。?!

g_nCarSpeedSet_temp=g_nCarSpeedSet;

g_fSpeedControlIntegral=0;

g_fSpeedControlOutOld=0;

g_fSpeedControlOutNew=0;

//重要參數(shù)

g_fSPEED_CONTROL_P=0.95;//速度P參數(shù)

g_fSPEED_CONTROL_P_temp=g_fSPEED_CONTROL_P;

g_fSPEED_CONTROL_I=0.0077;//0.0477;〃速度I參數(shù)

g_fSPEED_CONTROL_D=0;

g_ANGLE_CONTROL_P=0.2088;//0.26//角度P參數(shù)

g_ANGLE_CONTROL_D=0.3030;〃0.00345〃角度D參數(shù)

g_ANGLE_CONTROL_I=0.00000;//角度I參數(shù)

g_fDIRECTION_CONTROL_P=0.0812;//方向P參數(shù)

g_fDIRECTION_CONTROL_D=1.5700;

g_fDIRECTION_CONTROL_I=0.0;

//重要參數(shù)

智能車控制軟件設(shè)計(jì)說明

g_fLeftVoltageSigma1=0;

g_fRightVbltageSigmal=0;

g_nDirectionControlPeriod=0;

g_nDirectionControlFlag=1;〃改為0則關(guān)掉方向控制

g_nAngleControlFlag=0;

g_fDirectionControlOutOld=0;

g_fLeftRightSub_old=0;

g_fDirectionControlOutNew=0;

g_fDirection_add45min_L=10000;//先賦一個(gè)較大的值,以便

初始化時(shí)修改

g_fDirection_add45min_R=10000;

g_fDirection_sub18max=-10000;//先賦一個(gè)較小的值,以便初

始化時(shí)修改

g_fDirection_subl8min=10000;

-38-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

g_nSpeedControlFlag=0;

//

g_fgyroscopestandard=1967;

g_fanglezstandard=1790;//31482868//2970

g_fGyroscopeAngleIntegral=0;

g_nInputVoltageCount=0;

g_nADresult=0;

g_fangleratio=0.1363;

g_cmeumselectnew=0;

g_ckeyvalue=0;

g_nCurveFlag=0;

g_BeepEnableFlag=0;

g_StraitEnableFlag=0;

g_CurveIntFlag=0;

g_StraightAddTime=99;

g_AddSpdPeriod=50;

智能車控制軟件設(shè)計(jì)說明

g_AddSpdPeriod2=50;

for(i=0;i<10;i++)

(

g_lnInputVbltageSigma[iJ=O;

g_nInputVoltage[i]=0;

)

)

voidDelaylOus(void)

(

intii;

for(ii=0;ii<200;ii++)

(

)

)

voidMotorOutput(void)〃電機(jī)輸出函數(shù)

floatfLeft,fRight;

-40-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

staticuint32i,Temp_count=0;

Temp_count++;

if((int)g_nCarSpeedSet_temp==5)〃方向調(diào)試

(

fRight=g_fDirectionControlOut+g_fAngleControlOut;

fLeft=-g_fDirectionControlOut+g_fAngleControlOut;

)

elseif(((int)g_nCarSpeedSet_temp==

6)ll((int)g_nCarSpeedSet_temp==7))//6直立調(diào)試,7速度閉環(huán)

(

fRight=g_fAngleControlOut;

fLeft=g_fAngleControlOut;

)

else〃正常情況

(

fRight=g_fAngleControlOut+g_fDirectionControlOut;

fLeft=g_fAngleControlOut-g_fDirectionControlOut;

/*if(Temp_count%10==0)

智能車控制軟件設(shè)計(jì)說明

if(!((g_fCarAngle>40)ll(g_fCarAngle<-40)ll(g_LoseLineFlag==

DH(L_flag==0)))

(

for(i=(RECORD_PAGENUM*24-2);i>0;i-=2)

|

g_err_rec[i+l]=g_err_rec[i-l];

g_err_rec[i]=g_err_rec[i-2];

)

g_err_rec[OJ=g_fAngleControlOut*100;

g_err_rec[l]=g_fDirectionControlOut*100;

)

}*/

if((ABS(fRight)>l)ll(ABS(fLeft)>l))

(

BEEP_ON;

if((ABS(g_fDirectionControlOut)>=0.4)&&(ABS(g_fAngleCont

rolOut)>=0.6))

-42-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

g_fDirectionControlOut=

(float)(0.4*g_fDirectionControlOut/(ABS(g_fDirectionControlOut))

);

g_fAngleControlOut=

(float)(0.6*g_fAngleControlOut/(ABS(g_fAngleControlOut)));

)

elseif((ABS(g_fDirectionControlOut)>=0.4))

|

g_fDirectionControlOut=

(l-ABS(g_fAngleControlOut))*g_fDirectionControlOut/(ABS(g_fD

irectionControlOut));

)

elseif((ABS(g_fAngleControlOut)>=0.6))

(

g_fAngleControlOut=

(l-ABS(g_fDirectionControlOut))*g_fAngleControlOut/(ABS(g_fA

ngleControlOut));

)

fRight=g_fAngleControlOut+g_fDirectionControlOut;

fLeft=g_fAngleControlOut-g_fDirectionControlOut;

智能車控制軟件設(shè)計(jì)說明

else

(

BEEP_OFF;

)

g_fRightMotorOut=fRight;

g_fLeftMotorOut=fLeft;

if<(g_fCarAngle>MAXERRANGLE)ll(g_fCarAngle<MINERRA

NGLE)ll(g_LoseLineFlag==1))

(

g_fRightMotorOut=0;

g_fLeftMotorOut=0;

)

if(g_fLeftMotorOut>MOTOR_OUT_MAX)

g_fLeftMotorOut=MOTOR_OUT_MAX;〃輸出限幅

if(g_fLeftMotorOut<MOTOR_OUT_MIN)g_fLeftMotorOut=

MOTOR_OUT_MIN;

-44-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

if(g_fRightMotorOut>MOTOR_OUT_MAX)

g_fRightMotorOut=MOTOR_OUT_MAX;

if(g_fRightMotorOut<MOTOR_OUT_MIN)

g_fRightMotorOut=MOTOR_OUT_MIN;

SetMotorVoltage();

)

voidSetMotorVoltage(void)//PWM輸出函數(shù)

(

#definenPeriod255

uint8nOut;

if(g_fLeftMotorOut>0){〃左輪正轉(zhuǎn)(注意校正左右輪)

MCF_PWM_PWMDTY(O)=0;〃反轉(zhuǎn)清零

nOut=(uint8)(g_fLeftMotorOut*nPeriod);

MCF_PWM_PWMDTY(2)=nOut;

}else{〃左輪反轉(zhuǎn)

MCF_PWM_PWMDTY(2)=0;//正轉(zhuǎn)清零

nOut=(uint8)(-g_fLeftMotorOut*nPeriod);

MCF_PWM_PWMDTY(O)=nOut;

)

智能車控制軟件設(shè)計(jì)說明

if(g_fRightMotorOut>0){〃右輪正轉(zhuǎn)

MCF_PWM_PWMDTY(1)=0;//反轉(zhuǎn)清零

if((g_fRightMotorOut*nPeriod)>255)

nOut=255;

else

nOut=(uint8)(g_fRightMotorOut*nPeriod);

MCF_PWM_PWMDTY(3)=nOut;//+10右輪補(bǔ)償

}else{〃右輪反轉(zhuǎn)

MCF_PWM_PWMDTY(3)=0;〃正轉(zhuǎn)清零

if((-g_fRightMotorOut*nPeriod)>255)

nOut=255;

else

nOut=(uint8)(-g_fRightMotorOut*nPeriod);

MCF_PWM_PWMDTY(1)=nOut;

voidPWMJnit(void)//PWM模塊初始化

-46-

第七屆全國大學(xué)生智能汽車競(jìng)賽技術(shù)報(bào)告

MCF_GPIO_PUAPAR&=Ox3f;〃驅(qū)動(dòng)芯片使能3

MCF_GPIO_PNQPAR&=Ox3fff;〃驅(qū)動(dòng)芯片使能7

MCF_GPIO_DDRUA1=0x08;

MCF_GPIO_DDRNQ1=0x80;

MCF_GPIO_PORTUAl=MCF_GPIO_PORTUA_PORTUA3;

MCF_GPIO_PORTNQ1=0x80;

MCF_GPIO_PTCPAR=MCF_GPIO_PTCPAR_DTINO_PWMO

IMCF_GPIO_PTCPAR_DTIN1_PWM2;

MCF_GPIO_PTAPAR=MCF_GPIO_PTAPAR」COCO_PWM1

IMCF_GPIO_PTAPAR_1COC1_PWM3;

MCF_PWM_PWMPOL=MCF_PWM_PWMPOL_PPOLO//設(shè)置

高電平開始

IMCF_PWM_PWMPOL_PPOL1

IMCF_PWM_PWMPOL_PPOL2

IMCF_PWM_PWMPOL_PPOL3

IMCF_PWM_PWMPOL_PPOL4

IMCF_PWM_PWMPOL_PPOL5

IMCFPWMPWMPOLPPOL6

智能車控制軟件設(shè)計(jì)說明

IMCF_PWM_PWMPOL_PPOL7;

MCF_PWM_PWMCLK=MCF_PWM_PWMCLK_PCLKO//選

擇時(shí)鐘SA

IMCF_PWM_PWMCLK_PCLK1〃選擇時(shí)鐘SA

IMCF_PWM_PWMCLK_PCLK2〃選擇時(shí)鐘SB

IMCF_PWM_PWMCLK_PCLK3〃選擇時(shí)鐘SB

IMCF_PWM_PWMCLK_PCLK4〃選擇時(shí)鐘SA

IMCF_PWM_PWMCLK_PCLK5〃選擇時(shí)鐘SA

IMCF_PWM_PWMCLK_PCLK6〃選擇時(shí)鐘SB

IMCF_PWM_PW

溫馨提示

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