基于三星S3C2410的ARM-Linux電子控制油門(mén)設(shè)計(jì)
引言
巡航控制系統(tǒng)(CCS)是20世紀(jì)60年代發(fā)展起來(lái)的,又稱(chēng)為恒速行駛系統(tǒng)。巡航控制系統(tǒng)工作時(shí),ECU根據(jù)各種傳感器輸送來(lái)的信號(hào)判斷汽車(chē)的運(yùn)行狀況,通過(guò)執(zhí)行元件自動(dòng)調(diào)節(jié)節(jié)氣門(mén)的開(kāi)度使汽車(chē)的行駛速度與設(shè)定的車(chē)速保持一致。汽車(chē)在良好路面上長(zhǎng)時(shí)間行駛時(shí),駕駛員啟動(dòng)巡航控制系統(tǒng)并設(shè)定行駛速度,不需駕駛員操縱加速踏板,通過(guò)巡航控制系統(tǒng)即可自動(dòng)保持既定的行駛速度,不僅減輕了駕駛員的勞動(dòng)強(qiáng)度,同時(shí)利用先進(jìn)的電子控制技術(shù)控制節(jié)氣門(mén)的開(kāi)度,比駕駛員操縱節(jié)氣門(mén)更精確,汽車(chē)燃料經(jīng)濟(jì)性、排放污染性也可得到改善。
1 系統(tǒng)原理
1.1 電控油門(mén)原理
工作時(shí),由駕駛員發(fā)出轉(zhuǎn)速的控制指令,由節(jié)氣門(mén)開(kāi)度傳感器采集發(fā)動(dòng)機(jī)的轉(zhuǎn)速參數(shù),并把信號(hào)輸入電控單元;電控單元將控制信號(hào)和反饋的節(jié)氣門(mén)位置信號(hào)進(jìn)行比較,根據(jù)比較的結(jié)果來(lái)驅(qū)動(dòng)執(zhí)行器改變節(jié)氣門(mén)的開(kāi)度,使實(shí)際的開(kāi)度與控制開(kāi)度達(dá)到一致,從而實(shí)現(xiàn)車(chē)速的自動(dòng)控制。
1.2 舵機(jī)控制原理
舵機(jī)是一種位置(角度)伺服驅(qū)動(dòng)器,適用于那些角度需要不斷變化并可以保持的系統(tǒng)。S3003型舵機(jī)有3個(gè)引腳,分別為電源Vcc、地GND和控制線(xiàn) Signal??刂菩盘?hào)由Signal通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓[2]。它的內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20 ms、寬度為1?5 ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片以決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。
控制線(xiàn)的輸入是一個(gè)寬度可調(diào)的周期性方波脈沖信號(hào),方波脈沖信號(hào)的周期為20 ms(即頻率為50 Hz)。當(dāng)方波的脈沖寬度改變時(shí),舵機(jī)的角度發(fā)生改變,角度變化與脈沖寬度成正比。其輸出軸轉(zhuǎn)角與輸入脈沖寬度關(guān)系如圖1所示。
圖1 舵機(jī)輸出轉(zhuǎn)角與輸入脈沖寬度關(guān)系
2 系統(tǒng)設(shè)計(jì)
本系統(tǒng)采用三星公司的S3C2410和Futaba公司的S3003型舵機(jī)分別作為控制器和執(zhí)行器,使用Linux操作系統(tǒng),實(shí)驗(yàn)平臺(tái)為濟(jì)南恒信有限公司的發(fā)動(dòng)機(jī)實(shí)驗(yàn)平臺(tái)。
圖2 系統(tǒng)流程
2.1 系統(tǒng)設(shè)計(jì)流程
系統(tǒng)流程如圖2所示??刂破鱏3C2410完成各項(xiàng)初始化工作,接收來(lái)自操作人員的cmd指令,根據(jù)cmd的值來(lái)進(jìn)行一系列的處理,包括停止執(zhí)行器、旋轉(zhuǎn)多少角度等。然后通過(guò)節(jié)氣門(mén)開(kāi)度傳感器和轉(zhuǎn)速傳感器計(jì)算出等效的cmd值,并與cmd進(jìn)行比較以決定是進(jìn)行下一次cmd的判斷,還是調(diào)整執(zhí)行器的角度。
2.2 設(shè)置Linux系統(tǒng)時(shí)鐘頻率
為了降低電磁干擾和降低板間布線(xiàn)要求,芯片外接的晶振頻率通常很低,通過(guò)時(shí)鐘控制邏輯的PLL提高系統(tǒng)時(shí)鐘[3]。在三星公司的S3C2410A手冊(cè)中列出了推薦的幾種時(shí)鐘頻率,這里我們選用輸出時(shí)鐘頻率FCLK=202?80 MHz的配置,即PLL控制寄存器中的:MDIV=161(0xa1)、PDIV=3、SDIV=1。
在UBoot的board/smdk2410/smdk2410.c中進(jìn)行設(shè)置:
#define M_MDIV 0xA1
#define M_PDIV 0x3
#define M_SDIV 0x1
int board_init (void){
……
/* configure MPLL */
clk_power?﹥MPLLCON = ((M_MDIV ﹤﹤ 12) + (M_PDIV ﹤﹤ 4) + M_SDIV);
……
}
在UBoot的cpu/arm920t/start.S中設(shè)置FCLK、HCLK、PCLK的比例:
/* FCLK:HCLK:PCLK = 4:2:1*/
ldrr0, =CLKDIVN
mov r1, #3
strr1, [r0]
由以上程序可知FCLK=202.80 MHz,HCLK=101?40 MHz,PCLK=50.70 MHz,而S3C2410的PWM模塊使用的時(shí)鐘是PCLK,所以PWM的輸入時(shí)鐘為50.7 MHz。