【正文】
PWMDTY01+=PWM_Value。 PID_Init()。 //存儲(chǔ)誤差,用于下次計(jì)算 sptrLastError = iError。 //Error[2] sptrProportion =P_DATA。 PWMPER23=12000。 //先輸出高電平,計(jì)數(shù)到DTY時(shí),反轉(zhuǎn)電平 PWMPRCLK = 0x33。240*4000/48000000=20ms PITLD0=40001。 //通道7不管理其他通道 TSCR1 = 0x80。 _asm(nop)。unsigned int WholeVelocity=0。 //Error[1] int PrevError。在更換控制策略之前,將一個(gè)周期的脈沖數(shù)增加到1600,雖然增加了單片機(jī)的工作量,但是車子行駛時(shí)變得十分穩(wěn)定。智能車的設(shè)計(jì)涉及了控制、模式識(shí)別、傳感技術(shù)、汽車電子、電子信息、計(jì)算機(jī)和機(jī)械等多個(gè)學(xué)科(周斌,蔣荻開,黃開勝,2006),不僅開拓了視野,也提高了動(dòng)手實(shí)踐能力。Code Warrior是面向以HC12和S12為CPU的單片機(jī)嵌入式應(yīng)用開發(fā)的軟件包,包括集成開發(fā)環(huán)境IDE、處理器專家?guī)?、全芯片仿真、可視化參?shù)顯示工具、項(xiàng)目工程管理器、C交叉編譯器、匯編器、鏈接器以及調(diào)試器等。在CodeWarrior 界面完成程序編譯后,通過(guò)BDM工具,將程序下載到MC9S12XS128微處理器中,然后進(jìn)行小車的調(diào)試。在編寫主程序前,要先對(duì)各個(gè)模塊分別進(jìn)行調(diào)試,并編寫各部分的子程序。本文選取的E6A2型號(hào)編碼盤如圖34所示,其核心參數(shù)如圖34所示。本文總結(jié)前幾屆各參賽隊(duì)伍的情況,綜合各方面情況和自身車模狀況,采用的是光電編碼器,它具有安裝方便、調(diào)試簡(jiǎn)單等特點(diǎn)。受車模機(jī)械結(jié)構(gòu)的限制,必須采用體積小、重量輕的速度傳感器。表1 BTS7970引腳介紹表PinSymbolI/OFunction1GNDGound2INIInputDefines whether high or lowside switch is activated3INHIInhibitWhen set ro low device goes in sleep mode8OUTOPower out put of the bridge5SRISlew RateThe slew rate of the power switches can be adjustedby connecting a resister between SR and GND6ISOCurrent Senseand DiagnosisBTS7970B驅(qū)動(dòng)芯片特點(diǎn)如下:(1)在25℃時(shí)導(dǎo)通電阻的典型值為16 mΩ(2)與主動(dòng)續(xù)流相結(jié)合的脈寬調(diào)制能力高達(dá)25kHz(3)開關(guān)電流限制降低功耗的過(guò)流保護(hù)(4)電流限制在典型的43A(5)過(guò)壓鎖定(6)欠壓關(guān)斷 隔離芯片74LS244B簡(jiǎn)介74LS244B為3態(tài)8位緩沖器,主要用于三態(tài)輸出,作為地址驅(qū)動(dòng)器、時(shí)鐘驅(qū)動(dòng)器、總線驅(qū)動(dòng)器和定向發(fā)送器等。用兩片BTS7970B即可構(gòu)成全橋驅(qū)動(dòng)電路,控制電機(jī)的正反轉(zhuǎn),經(jīng)實(shí)際測(cè)試效果還比較好,我們最終選擇了該驅(qū)動(dòng)方案。原理圖如圖25所示。實(shí)際使用倒轉(zhuǎn)功能進(jìn)行剎車效果非常明顯,但頻繁對(duì)電機(jī)和驅(qū)動(dòng)電路施加方向電流,兩者的發(fā)熱相當(dāng)明顯。在現(xiàn)有的硬件上實(shí)現(xiàn)剎車有三種方法:(1)使用機(jī)械結(jié)構(gòu)剎車。經(jīng)過(guò)反復(fù)調(diào)試,將每場(chǎng)圖像得到的黑線位置與速度 PID 參考速度值構(gòu)成二次曲線關(guān)系。更重要的是,在 KI 置零的情況下,通過(guò)合理調(diào)節(jié) Kp,發(fā)現(xiàn)車能夠在直線高速行駛時(shí)仍能保持車身非常穩(wěn)定,沒有震蕩,基本沒有必要使用 KI參數(shù);(2) 微分項(xiàng)系數(shù) KD 使用定值,原因是舵機(jī)在一般賽道中都需要較好的動(dòng)態(tài)響應(yīng)能力; (3) 對(duì) Kp,本文使用了二次函數(shù)曲線,Kp 隨黑線位置與中心值的偏差呈二次函數(shù)關(guān) 系增大,在程序中具體代碼如下: ()其中iError是黑線位置與中心值的偏差。使用時(shí),常選擇帶死區(qū)、積分分離等改進(jìn) PID 控制算法。在實(shí)際代碼實(shí)現(xiàn)算法時(shí),處理成一下形式: ()位置式 PID 控制算法的缺點(diǎn)是:由于全量輸出,所以每次輸出均與過(guò)去的狀態(tài)有關(guān), 計(jì)算時(shí)要對(duì)過(guò)去 e(k)進(jìn)行累加,計(jì)算機(jī)工作量大;而且因?yàn)橛?jì)算機(jī)輸出的 u(k)對(duì)應(yīng)的是 執(zhí)行機(jī)構(gòu)的實(shí)際位置,如計(jì)算機(jī)出現(xiàn)故障,u(k)的大幅度變化,會(huì)引起執(zhí)行機(jī)構(gòu)位置的大 幅度變化,這種情況往往是生產(chǎn)實(shí)踐中不允許的,在某些場(chǎng)合,還可能造成嚴(yán)重的生產(chǎn)事故。將偏差的比例(P)、積分(I)和微分(D)通過(guò)線性組合構(gòu)成控制量,對(duì)被控對(duì)象進(jìn)行控制,故稱 PID控制器,原理框圖如圖 22 所示。將搜索到的左右兩邊黑線的中心位置相加再除以二,得到虛擬中心黑線的位置。如圖21所示。 Assembly:顯示匯編代碼。復(fù)位后單片機(jī)程序停止運(yùn)行,選擇TBDML HCS12菜單中Flash…命令打開如圖16所示內(nèi)存擦寫窗口,先選中后三行內(nèi)存進(jìn)行擦除(Erase),擦除之后下載(Load)新程序即可。(4)安裝選擇目標(biāo)板S12單片機(jī)型號(hào)。Corewarrior IDE是Metrowerks為其DSP和微處理芯片所推出的專用可視化集成開發(fā)環(huán)境,功能強(qiáng)大,除了能編譯代碼外還具有芯片仿真等功能。本次大賽使用的電機(jī)驅(qū)動(dòng)芯片為BTS7970B,其輸入信號(hào)即為一路PWM信號(hào)。在系統(tǒng)目標(biāo)板上通常添加一個(gè)手動(dòng)復(fù)位按鈕,方便調(diào)試。(2)BDM接口BDM接口允許用戶通過(guò)該接口向單片機(jī)下載和調(diào)試程序。MC9S12XS128的串行接口有以下三種。HCS12X系列單片機(jī)是Freescale 公司于2005年推出的HCS12系列增強(qiáng)型產(chǎn)品,基于S12 CPU內(nèi)核,可以達(dá)到25MHz的HCS12的25倍性能。3 控制算法仿真與開發(fā)環(huán)境智能小車采用MC9S12XS128芯片作為核心控制單元,該芯片為16位單片機(jī)擁有豐富的資源,包括CAN通訊口、BDLC模塊、PWM模塊、ATD模塊、電源管理模塊、BDM模塊等。 賽道記憶方式由于比賽規(guī)則要求車輛在跑道上行駛兩圈,因此車輛第一圈時(shí)通過(guò)記錄轉(zhuǎn)速傳感器采集到的脈沖數(shù)、轉(zhuǎn)向舵機(jī)的轉(zhuǎn)角等信息,來(lái)判斷區(qū)分直道、彎道、S彎道以及轉(zhuǎn)彎的方向與轉(zhuǎn)彎半徑等等信息。根據(jù)PID控制器的原理得知,PID控制器的主要作用是平穩(wěn)的消除系統(tǒng)產(chǎn)生的偏差。其主要的因素是小車本身的控制惰性,這個(gè)惰性主要來(lái)源于控制模型車的前輪轉(zhuǎn)向的舵機(jī)。建立起模型車運(yùn)動(dòng)力學(xué)模型進(jìn)行分析過(guò)于復(fù)雜。高速區(qū)低速區(qū)中速區(qū)高速區(qū)圖8 彎道策略圖 圖9 十字交叉段本文主要設(shè)計(jì)了一個(gè)智能車控制系統(tǒng),實(shí)現(xiàn)了快速自動(dòng)尋跡功能。 小車在行駛過(guò)程中會(huì)遇到以下兩種路況:(1)當(dāng)小車由直道高速進(jìn)入彎道時(shí),轉(zhuǎn)角方向和車速應(yīng)根據(jù)彎道的曲率迅速做出相應(yīng)的改變,原則是彎道曲率越大則方向變化角度越大,車速越低。(2)道路識(shí)別模塊道路檢測(cè)模塊用于完成賽道相對(duì)智能車的偏移量、方向、曲率等信息的采集,通過(guò)連接線把信息傳送給中央控制單元,使智能車沿著跑道軌跡穩(wěn)定前行,獲取更多、更遠(yuǎn)、更精確的賽道信息是提高智能車運(yùn)行速度的關(guān)鍵。本文智能車系統(tǒng)采用飛思卡爾16位單片機(jī)MC9S12XS128為核心控制單元,由采用攝像頭檢測(cè)技術(shù)的道路識(shí)別模塊和速度檢測(cè)模塊負(fù)責(zé)采集信號(hào),并將采集到的電平信號(hào)送入核心控制單元MCU,核心控制單元對(duì)信號(hào)進(jìn)行處理后,通過(guò)單片機(jī)端口發(fā)出PWM信號(hào)波,通過(guò)輸出不同占空比分別對(duì)轉(zhuǎn)向舵機(jī)、直流電機(jī)進(jìn)行驅(qū)動(dòng)控制,完成控制智能車的方向與速度。電源部encoder 部電機(jī)部傳 感 器 部圖3 SUNMOON大學(xué)的智能車 國(guó)內(nèi)研究現(xiàn)狀在國(guó)內(nèi)已經(jīng)成功地舉辦過(guò)七次‘飛思卡爾’杯全國(guó)大學(xué)生智能汽車競(jìng)賽。該車由光學(xué)定向與測(cè)距系統(tǒng)對(duì)收集的信息進(jìn)行導(dǎo)航?jīng)Q策,分析哪里是行人哪里是樹木。該大賽對(duì)促進(jìn)智能車輛技術(shù)交流與創(chuàng)新起到很大激勵(lì)作用。本文基本實(shí)現(xiàn)了路徑識(shí)別的功能,在實(shí)際的測(cè)試中,小車能夠較好的完成循線行駛的任務(wù)。 本科畢業(yè)設(shè)計(jì)飛思卡爾智能小車控制系統(tǒng)設(shè)計(jì)指導(dǎo)教師 級(jí)實(shí)驗(yàn)師摘 要本文以智能小車競(jìng)賽為背景,闡述了研究本課題的意義,開發(fā)了一種高性能的智能小車車控制系統(tǒng)。關(guān)鍵詞:智能小車 控制系統(tǒng) PID算法 循線行駛The design of Freescale smart car control systemCai Jianbin(College of Engineering, South China Agricultural University, Guangzhou 510642, China)Abstract: Based on the smart car petition as a background, elaborated on the significance of this thesis, the control system is developed for intelligent car high performance. The smart car use the Freescale pany’s 16 bit microcontroller MC9S12XS128B as the core controller, using CMOS video sensors to collect traffic information, with the circuit speed sensor, motor, servo motor, battery, information processing, in order to achieve the purpose of path identification, control the smart car speed and stable on the runway running. The smart car system is a system with timevarying and nonlinear, the traditional PID algorithm of single feedback control can make the system overshoot and oscillation phenomenon in different degree, could not get ideal control effect. In this paper, the feedforward control is introduced to control the smart car system, effectively improve the realtime performance of the system, improving the reaction speed of the system。在2005年的第二屆比賽中,主辦方只在賽前2小時(shí)提供一張光盤,上面提供了比賽路線上2935個(gè)“路點(diǎn)”的方位與海拔等詳細(xì)資料。“途銳”自主行駛了90%的賽程,不過(guò)在通過(guò)關(guān)鍵十字路口時(shí)還是靠手動(dòng)駕駛。參加競(jìng)賽的賽車均以飛思卡爾的汽車用16位微控制器(第七屆開始可以用32位)作為智能模型車之主控芯片,開發(fā)軟件可以選擇CodeWarrior ,比賽賽道具備基本參數(shù)限制。為了使智能車能夠快速平穩(wěn)沿著賽道行駛,除了控制前輪轉(zhuǎn)向舵機(jī)外,還需要控制車速,使智能車載機(jī)轉(zhuǎn)彎時(shí)的速度不要過(guò)快而沖出跑道,所以要采用速度檢測(cè),對(duì)智能車進(jìn)行閉環(huán)反饋控制。(3)電源模塊為各個(gè)電路模塊提供穩(wěn)定電源,可靠的電源方案是整個(gè)電路穩(wěn)定運(yùn)行的基礎(chǔ),電源模塊包含多個(gè)穩(wěn)壓電路,將充電電池電壓轉(zhuǎn)換成各模塊所需要的電壓。彎道策略圖如圖8所示。在硬件上,該系統(tǒng)采用MC9S12XS128單片機(jī)為控制核心,車速檢測(cè)模塊、舵機(jī)控制模塊及直流驅(qū)動(dòng)電機(jī)控制模塊的工作;在控制算法上,采用PID控制算法實(shí)現(xiàn)對(duì)智能車的舵機(jī)轉(zhuǎn)角和電機(jī)轉(zhuǎn)速的控制。為了抓住問(wèn)題的主要矛盾,需要將模型車的運(yùn)動(dòng)規(guī)律進(jìn)行簡(jiǎn)化。由于舵機(jī)輸出給定角度需要一定的時(shí)間延遲,它正比于旋轉(zhuǎn)角度的大小。根據(jù)賽車的數(shù)學(xué)模型,就需要控制舵機(jī)將黑線平滑的控制在車的中央。根據(jù)第一圈記錄的數(shù)據(jù)信息,可以對(duì)第二圈的各個(gè)道路點(diǎn)進(jìn)行分段處理。其中,電源管理模塊是該系列單片機(jī)的一個(gè)特色,按照需求通過(guò)該模塊可以為每個(gè)模塊單獨(dú)的供電,或可以關(guān)掉,以節(jié)約電源;同時(shí)該單片機(jī)的指令是流水線操作執(zhí)行速度特別的快,其指令執(zhí)行時(shí)間與總線的字周期幾乎相等??偩€頻率最高可達(dá)40 MHz。(1)兩個(gè)異步串行通信接口模塊SCI;(2)一個(gè)I2C總線接口;(3)一個(gè)同步串行外設(shè)接口SPI。BDM接口是連接BDM調(diào)試工具的,其中BDMIN接口是接BDM調(diào)試工具,向MC9S12單片機(jī)下載程序使用的。(5)調(diào)試用LED燈調(diào)試用LED燈和單片機(jī)的PORTK口相連,供程序調(diào)試使用。BTS7970B根據(jù)PWM信號(hào)的周期和占空比來(lái)控制電機(jī)的轉(zhuǎn)向和速度。 BDM調(diào)試器的使用 Hiwave初始化參數(shù)設(shè)置(1),雙擊它即可打開調(diào)試軟件。將BDM與單片機(jī)連接,回車確認(rèn)后有提示選擇相應(yīng)型號(hào)的單片機(jī),在此選擇MC9S12XS128,單擊[OK]。單擊Make后如無(wú)錯(cuò)誤,可單擊Debug,出現(xiàn)對(duì)話框單擊OK進(jìn)行下載,出現(xiàn)如圖17和圖16所示,下載成功。 Registers:顯示當(dāng)前寄存器的值。圖21 0V5116攝像頭為了能使小車循線,就必須及時(shí)地將當(dāng)前賽道信息的變化提供給控制算法部分,才能調(diào)整小車的狀態(tài)。由于一場(chǎng)有許多行(本文設(shè)定采取了120行),全部用上,單片機(jī)會(huì)處理不過(guò)來(lái),所以本文選取了遠(yuǎn)場(chǎng)的8行,然后對(duì)這8行的虛擬中心點(diǎn)進(jìn)