王玉彪
摘要:本文簡(jiǎn)要分析了國(guó)際、國(guó)內(nèi)燃油發(fā)動(dòng)機(jī)電控系統(tǒng)(ECU)研發(fā)與生產(chǎn)現(xiàn)狀,以實(shí)例方式描述了發(fā)動(dòng)機(jī)電控系統(tǒng)硬及軟件開發(fā)方法及注意事項(xiàng),從整體上勾勒出了發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)的輪廓。
關(guān)鍵詞:汽車電子;發(fā)動(dòng)機(jī)電控制系統(tǒng);ECU;硬件設(shè)計(jì);固件編寫
0 ?引言
為了滿足越來越嚴(yán)格的排放法規(guī)要求,同時(shí)提高汽車的動(dòng)力性、燃油經(jīng)濟(jì)性和舒適性,發(fā)動(dòng)機(jī)電控系統(tǒng)起到了越來越重要的作用。國(guó)際上,汽車發(fā)動(dòng)機(jī)電控系統(tǒng)的發(fā)展模式日趨成熟,國(guó)際知名品牌汽車廠商都有專業(yè)化分工的汽車配件廠商,為其提供全套的汽車電子配件產(chǎn)品。在國(guó)內(nèi),汽車消費(fèi)市場(chǎng)的飛速增長(zhǎng)與自主開發(fā)汽車電子產(chǎn)品的空白形成鮮明的對(duì)比,國(guó)內(nèi)合資廠商生產(chǎn)的主要車型,其汽車電子配件產(chǎn)品包括汽車發(fā)動(dòng)機(jī)電控系統(tǒng)基本由外商壟斷;而致力于發(fā)展民族品牌的汽車制造商,采用國(guó)產(chǎn)發(fā)動(dòng)機(jī)在配套電子控制系統(tǒng)時(shí),也多是委托國(guó)外企業(yè)提供配套產(chǎn)品。我國(guó)汽車電子產(chǎn)品開發(fā)和生產(chǎn)還處于起步階段,具有極大的發(fā)展?jié)摿涂臻g,汽車發(fā)動(dòng)機(jī)電控系統(tǒng)的開發(fā)與應(yīng)用已逐漸從過去的院校和研究機(jī)構(gòu)的研發(fā)向以企業(yè)為主導(dǎo)并以產(chǎn)業(yè)化為目標(biāo)的局面發(fā)展。
本文的目的是厘清發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)過程,立足于實(shí)踐,選取一些典型模塊做為電路設(shè)計(jì)、軟件開發(fā)的樣例,用來解析發(fā)動(dòng)機(jī)傳感器、ECU及發(fā)動(dòng)機(jī)電控器件的工作原理,掌握傳感器輸入調(diào)理電路和輸出控制電路設(shè)計(jì)方法,了解ECU固件編程過程。
1 ?總體開發(fā)思路
發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)可分為兩大部分,分別為硬件電路設(shè)計(jì)和固件(軟件)開發(fā),這兩部分工作是緊密關(guān)聯(lián)的。
硬件電路設(shè)計(jì)主要有電源電路、輸入信號(hào)的調(diào)理和采集電路、MCU基本外圍電路、輸出控制電路和輸入輸出通信接口電路。
固件開發(fā)主要有固件開發(fā)環(huán)境搭建、MCU系統(tǒng)時(shí)鐘初始化、輸入輸出端口初始化、串行通信接口的初始化、時(shí)序控制和核心算法代碼實(shí)現(xiàn)。
發(fā)動(dòng)機(jī)電子控制系統(tǒng)可分為信號(hào)輸入電路(各種傳感器信號(hào)處理)、電子控制單元(ECU)和輸出控制電路三部分,如圖1所示。
圖1列出了發(fā)動(dòng)機(jī)常用的信號(hào)采集和輸出控制器件,還有一些采集和控制器件未列出,如自動(dòng)檔系統(tǒng)的檔位信號(hào)、空調(diào)開關(guān)信號(hào)、啟動(dòng)開關(guān)信號(hào)、助力轉(zhuǎn)向開關(guān)信號(hào)、巡航控制開關(guān)信號(hào)等,但處理流程大致相同,即信號(hào)輸入采集——ECU單元處理——輸出控制電路響應(yīng)。
電控系統(tǒng)由底板和子板構(gòu)成,子板上有可編程MCU器件,編寫好的固件可以通過左側(cè)的串口下載到MCU中,右側(cè)端口用來連接發(fā)動(dòng)機(jī)上的各類傳感器和電控器件。
ECU電路可分為三部分,底板主要是輸入電路、輸出電路及核心板接口。核心板主要是MCU電路。
在開發(fā)ECU時(shí),各單元電路側(cè)重點(diǎn)各有不同,下面分開講述。
1.1 信號(hào)輸入電路
發(fā)動(dòng)機(jī)上安裝的傳感器種類較多,傳感器采集到信號(hào)需要經(jīng)過輸入電路處理才能被MCU使用,傳感器輸出的電信號(hào)可分為三種,分別是電壓信號(hào)、脈沖信號(hào)和開關(guān)信號(hào)。
①電壓信號(hào):輸出的電壓信號(hào)范圍為0~5V,用來表示連續(xù)變化的量。②脈沖信號(hào):脈沖信號(hào)電壓范圍也是0~5V,一般用來計(jì)數(shù)或同步。③開關(guān)信號(hào):一般用高低電平表示導(dǎo)通和斷開的狀態(tài)。
1.2 核心控制器(MCU)選型
發(fā)動(dòng)機(jī)電控系統(tǒng)的核心控制器件是MCU,就是常說的單片機(jī)系統(tǒng)。目前在汽車電子控制領(lǐng)域最常使用的是飛思卡爾(Freescale)單片機(jī),該系統(tǒng)單元機(jī)已經(jīng)被恩智普收購(gòu)。早期使用16位MC9S12系列單片機(jī)較多;具體選型時(shí)可根據(jù)硬件采集種類和數(shù)量、固件代碼處理需要的Flash、RAM大小及運(yùn)算速度需求來確定。在汽車電子領(lǐng)域,目前使用飛思卡爾32位MCU較多,也可以選用意法半導(dǎo)體出產(chǎn)的STM32系列的MCU。
1.3 輸出控制電路
輸出控制按工作原理大致可分為三類,分別是繼電器類、旋轉(zhuǎn)電機(jī)類和脈沖類。例如,電子點(diǎn)火線圈是脈沖類的,怠速控制閥、節(jié)氣門控制閥等為電機(jī)類,油泵繼電器、電子噴油器則為繼電器控制類。
2 ?硬件電路設(shè)計(jì)
硬件電路設(shè)計(jì)大致可分為三個(gè)部分,分別是數(shù)據(jù)采集及調(diào)理電路(即信號(hào)輸入部分)、MCU基本單元和輸出控制電路。
2.1 數(shù)據(jù)采集及調(diào)理電路設(shè)計(jì)
數(shù)據(jù)采集及調(diào)理電路主要解決信號(hào)轉(zhuǎn)換、噪聲抑制和A/D采集等問題。在器件選型時(shí)要考慮功耗、頻率響應(yīng)、噪聲系數(shù)、耐壓值和高低溫適應(yīng)范圍等。為了便于MCU處理,還需要考慮該信號(hào)如何被MCU采集。我們以冷卻液溫度傳感器為例,說明輸入信號(hào)的處理過程。圖2是常見的冷卻液溫度傳感器實(shí)物圖片。
該傳感器金屬部分直接與冷卻液接觸,可準(zhǔn)確測(cè)量冷卻液的當(dāng)前溫度,從解剖圖可看出,該器件相當(dāng)于一個(gè)電阻器件,其工作原理就是將溫度變化,轉(zhuǎn)變?yōu)殡娮柚底兓?那MCU怎么來采集阻值變化呢,很簡(jiǎn)單,就是把阻值的變化先轉(zhuǎn)換為電壓的變化,然后MCU對(duì)該電壓進(jìn)行采樣就可以了。
下面來具體看一下冷卻液溫度傳感器信號(hào)處理電路,如圖3所示。
紅框中的電阻即為溫度傳感器的電阻,參考電壓Vref經(jīng)R7與溫度傳感器電阻串聯(lián)分壓,通過C6、R8和C7濾波后送給MCU(AD0-1端)采樣。通過分析電路知道,當(dāng)溫度發(fā)生變化時(shí)溫度傳感器的電阻值將跟著線性變化,經(jīng)分壓后采樣點(diǎn)的電壓值也跟著發(fā)生變化,經(jīng)過MCU的內(nèi)部A/D電路的采樣,就可得到一組當(dāng)前溫度下的采集值,這樣就完成了模擬量到數(shù)字量的變換,得到的數(shù)字量便于單片機(jī)處理和傳輸。對(duì)模擬量進(jìn)行A/D采樣后再進(jìn)行數(shù)字化處理是輸入電路使用最多的處理方式,其它類型輸入如脈沖輸出、開關(guān)量輸入,數(shù)字化處理相對(duì)來說要簡(jiǎn)單些,直接使用單片機(jī)的計(jì)數(shù)器計(jì)數(shù)或判斷GPIO端口信號(hào)有無即可。
2.2 MCU電路設(shè)計(jì)
MCU設(shè)計(jì)主要是最小系統(tǒng)設(shè)計(jì),即根據(jù)MCU型號(hào)配備必要的外圍器件,保證MCU能夠穩(wěn)定運(yùn)行;包括晶體振蕩電路、調(diào)試接口和基本的電源供給電路。
MCU的每個(gè)供電引腳均有一個(gè)0.1uF的濾波電容,用于降低干擾信號(hào)的影響;晶振電路按照典型電路設(shè)計(jì),確保晶振能夠穩(wěn)定啟振;外接了BDM調(diào)試接口,方便程序的調(diào)試和下載。本電路圖中,除了最小電路外我們也將外圍一些信號(hào)引入到MCU,比如冷卻液溫度采集信號(hào)AD0-1,已經(jīng)接入到MCU的PAD0引腳。
2.3 輸出控制電路設(shè)計(jì)
輸出控制電路需要根據(jù)具體的電控器件來確定。例如點(diǎn)火線圈驅(qū)動(dòng)電路必須滿足高耐壓和大電流的要求,而怠速閥控制在滿足電流輸出要求的情況下,還需要滿足時(shí)序要求。圖4是實(shí)際的怠速閥控制電路。
圖4中,IAC1、IAC2和IACEnb來自于MCU,X2、X3、X4、X5分別連接四線怠速閥的相應(yīng)接線??刂七壿嬘蒑CU運(yùn)算后得到,電路輸出電流由電機(jī)專用控制芯片UDN2916LB來保證。
硬件電路中還包括串行接口設(shè)計(jì),這種接口電路較為通用,在這里就不講述具體電路了。
3 ?固件開發(fā)
固件開發(fā)分為以下幾個(gè)部分:一是MCU初始化部分,即讓MCU運(yùn)行起來。其中還包括輸入輸出接口初始化,這部分要根據(jù)輸入或輸出信號(hào)要求,對(duì)MCU的相應(yīng)接口進(jìn)行初始化。比如一些接口要初始化A/D采樣接口,把模擬量變?yōu)閿?shù)字量便于MCU處理,一些接口初始化為通用的GPIO接口,還有些接口要初始化為串口通信接口等。二是驅(qū)動(dòng)程序編寫。在初始化輸入輸出接口后,必須對(duì)這些接口編寫驅(qū)動(dòng)程序,保證MCU能夠正確讀入或輸出相應(yīng)的信號(hào)或數(shù)據(jù)。三是在以上兩個(gè)工作完成的基礎(chǔ)上實(shí)現(xiàn)控制邏輯,即常說的控制算法的實(shí)現(xiàn)。這部分工作必須在深入理解發(fā)動(dòng)工作原理的基礎(chǔ)上,讀取發(fā)動(dòng)運(yùn)行時(shí)的相關(guān)參數(shù),并根據(jù)參數(shù)情況,完成邏輯控制,使發(fā)動(dòng)機(jī)平穩(wěn)工作。
3.1 MCU初始化工作
主要工作有:MCU時(shí)鐘初始化、通用輸入輸出端口(GPIO)初始化、A/D通道初始化、串行通信端口(USART)初始化、PWM輸出端口初始化。該程序用于完成MCU時(shí)鐘初始化工作,初始化代碼在INIT_PLL子函數(shù)中,在主函數(shù)main()中調(diào)用了該初始化程序。在程序開始部分,使用宏定義方法定義一些常量,以方便在程序中使用;主程序中為保證初始化代碼不被中斷干擾,屏蔽了中斷。解讀程序時(shí)我們發(fā)現(xiàn)子程序稱作鎖相環(huán)初始化,對(duì)照硬件MCU最小系統(tǒng)電路可以看到,時(shí)鐘電路就是在MCU外部增加了一個(gè)無源晶體,并且該晶體頻率是8MHz,遠(yuǎn)達(dá)不到MCU運(yùn)行主頻為32MHz或40MHz頻率;實(shí)際上MCU的主頻來自內(nèi)部的PLL電路,外部晶體與MCU內(nèi)部振蕩電路產(chǎn)生8MHz頻率后,沒有直接做為主頻使用,主要原因是振蕩電路產(chǎn)生的頻率穩(wěn)定性不夠,必須通過PLL電路處理且倍頻后才能做為MCU主頻使用,所以初始化鎖相環(huán)就是初始化MCU的時(shí)鐘系統(tǒng)。
3.2 輸入輸出接口驅(qū)動(dòng)程序編寫
輸入輸出接口驅(qū)動(dòng)主要有:定時(shí)器驅(qū)動(dòng)程序、GPIO驅(qū)動(dòng)程序、A/D采樣驅(qū)動(dòng)程序、D/A變換驅(qū)動(dòng)程序、PWM驅(qū)動(dòng)程序和串行通信驅(qū)動(dòng)程序。
在這里有必要區(qū)分一下初始化代碼與驅(qū)動(dòng)代碼不同之處。由于嵌入式MCU硬件引腳有限,每個(gè)引腳都有復(fù)用功能,比如可以做為輸入引腳也可以做為輸出引腳,還可以用做特殊功能引腳使用;初始化代碼作用就是確定硬件引腳的輸入輸出功能、運(yùn)行時(shí)鐘分配和工作參數(shù)配置;而驅(qū)動(dòng)程序則是完成如何實(shí)現(xiàn)輸入或輸出功能。一般初始化代碼只在程序運(yùn)行前調(diào)用一次,而驅(qū)動(dòng)程序可以在程序任何需要的地方調(diào)用。
采樣通道參數(shù)由變量char s傳入,根據(jù)s不同確定具體采樣哪個(gè)通道。當(dāng)s為1時(shí)采樣通道AD01,就是前面提到的冷卻液溫度值,當(dāng)s為2時(shí)采樣通道AD00值。每次采樣啟動(dòng)后,都需要判斷采樣寄存器狀態(tài),以確定采樣是否完成。當(dāng)采樣完成后,返回采樣值A(chǔ)D_data給調(diào)用程序。
3.3 發(fā)動(dòng)機(jī)控制邏輯代碼實(shí)現(xiàn)
主要有點(diǎn)火時(shí)序控制、燃油量控制、怠速運(yùn)轉(zhuǎn)控制、加速加濃邏控制、氧傳感器處理和爆振傳感器處理等代碼。
ECU開發(fā)的核心算法代碼以發(fā)動(dòng)機(jī)曲軸傳感器的同步信號(hào)、發(fā)動(dòng)進(jìn)氣歧管壓力、冷卻液溫度等傳感器輸入數(shù)據(jù)為參數(shù),以內(nèi)燃機(jī)工作原理、多缸發(fā)動(dòng)機(jī)點(diǎn)火及噴油時(shí)序等做為算法的基本依據(jù),以標(biāo)定參數(shù)表(燃油表、點(diǎn)火提前角表、空燃比表等)為基準(zhǔn)數(shù)值,以實(shí)時(shí)、高效、準(zhǔn)確邏輯運(yùn)算為目標(biāo),以電控器件為控制對(duì)象,精心編制出的一套邏輯代碼,用于控制發(fā)動(dòng)機(jī)處于最佳工作狀態(tài)??梢钥闯鲞@部分程序是ECU開發(fā)重點(diǎn)和難點(diǎn),也是汽車廠家核心競(jìng)爭(zhēng)力的體現(xiàn)。發(fā)動(dòng)機(jī)控制邏輯代碼只與驅(qū)動(dòng)程序開相關(guān),與硬件電路相關(guān)性較低,可由更擅長(zhǎng)邏輯代碼開發(fā)、對(duì)內(nèi)燃機(jī)工作原理更熟悉程序員編寫實(shí)現(xiàn)。
4 ?硬軟件聯(lián)調(diào)
由于嵌入式開發(fā)中軟件和硬件的高度相關(guān)性,在發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)過程中,硬件和軟件聯(lián)調(diào)貫穿于整個(gè)開發(fā)過程。在硬件單元電路設(shè)計(jì)時(shí)要和軟件模塊設(shè)計(jì)相互聯(lián)調(diào),以確定硬件單元電路和軟件模塊程序的正確性。在硬件整體電路和軟件整體代碼設(shè)計(jì)完成后,還需要進(jìn)行整體聯(lián)調(diào),以驗(yàn)證核心算法的優(yōu)劣和總體時(shí)序的正確性。在聯(lián)調(diào)過程中發(fā)現(xiàn)問題需要及時(shí)修改然后再驗(yàn)證,沒問題了再進(jìn)行下一單元電路設(shè)計(jì)和下一段代碼編寫,避免問題積累,增加整體調(diào)試難度。
在固件編寫規(guī)劃時(shí),還需要注意要留有MCU讀寫Flash的接口,用于讀寫發(fā)動(dòng)機(jī)標(biāo)定參數(shù),如燃油表、點(diǎn)火提前角表、空燃比表等,這部分?jǐn)?shù)據(jù)存儲(chǔ)在MCU內(nèi)部或外部Flash中,永久保存且掉電不丟失。在標(biāo)定發(fā)動(dòng)機(jī)時(shí)可以隨時(shí)修改這部分?jǐn)?shù)據(jù),修改數(shù)據(jù)在重啟MCU即可生效,以方便燃油發(fā)動(dòng)機(jī)標(biāo)定參數(shù)的確定,降低標(biāo)定數(shù)據(jù)與固件程序的耦合性。
5 ?綜述
本文較為全面地描述了燃油發(fā)動(dòng)機(jī)電控系統(tǒng)的開發(fā)過程,也勾勒出了發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)的清析輪廓,可以看出發(fā)動(dòng)機(jī)電控系統(tǒng)的開發(fā)有一定的工作量,但并不是遙不可及,相信有實(shí)力的廠家或研究單位,組織和管理好開發(fā)團(tuán)隊(duì),做好頂級(jí)設(shè)計(jì)和任務(wù)分工,一定可以開發(fā)出一套滿足實(shí)用要求的燃油發(fā)動(dòng)機(jī)電控系統(tǒng)。
參考文獻(xiàn):
[1]劉勝吉,曾瑾瑾,李崇尚,等.點(diǎn)火提前角對(duì)通用小型汽油機(jī)缸內(nèi)燃燒及排放的影響[J].內(nèi)燃機(jī)工程,2016(5).
[2]邵千鈞,何文華,熊樹生.基于CMAC的點(diǎn)火提前角控制怠速穩(wěn)定性的研究[J].內(nèi)燃機(jī)學(xué)報(bào),2005(4).
[3]邵千鈞,何文華,衛(wèi)忠星,等.多次點(diǎn)火提高LPG發(fā)動(dòng)機(jī)點(diǎn)火可靠性的研究[J].內(nèi)燃機(jī)工程,2005(4).