張立,王佳寧,孫遜之,王國(guó)云
(常州星宇車燈股份有限公司,江蘇常州 213022)
隨著智能汽車的發(fā)展,車燈作為汽車的一個(gè)重要組成部分,也在向著更舒適、更安全的智能化方向發(fā)展。傳統(tǒng)上的車燈只是單純提供照明的一個(gè)系統(tǒng),目前的車燈在此基礎(chǔ)上擁有更多的附加功能。前照燈作為車上最重要的車燈之一,一直是研究關(guān)注的重點(diǎn),因此業(yè)內(nèi)提出智能前照燈的概念[1-2]。智能前照燈結(jié)合汽車自身的一些工作狀態(tài),如車速、制動(dòng)、轉(zhuǎn)向等,以及汽車上的一些傳感器,共同來(lái)控制前照燈的照明區(qū)域及亮度。
由于車燈控制器往往與車燈并行開發(fā),因此開發(fā)周期較短,無(wú)法像傳統(tǒng)車燈電子系統(tǒng)開發(fā)方式一樣進(jìn)行多次的調(diào)試驗(yàn)證,而且車燈控制器的邏輯比較復(fù)雜,常規(guī)采用C語(yǔ)言人工寫代碼,不但執(zhí)行效率低,影響實(shí)時(shí)性,而且還存在邏輯問(wèn)題,為產(chǎn)品留下隱患。并且針對(duì)某款單片機(jī)平臺(tái)編寫的代碼,移植到別的平臺(tái),需要針對(duì)單片機(jī)進(jìn)行較大的改動(dòng)。
基于模型的方法是一種將系統(tǒng)可視化,通過(guò)MATLAB進(jìn)行算法開發(fā)、建模以及仿真驗(yàn)證的方法,可以由模型快速地生成針對(duì)某款單片機(jī)的代碼,只需調(diào)用此代碼的輸入輸出函數(shù)即可將算法與主程序集成。此方法研發(fā)周期短、代碼質(zhì)量高、可移植性好[3-6]。其開發(fā)流程如圖1所示。
設(shè)計(jì)一個(gè)智能前照燈控制系統(tǒng)程序,車燈照明區(qū)域及亮度由汽車的一些工作狀態(tài)以及外部傳感器進(jìn)行控制。
系統(tǒng)功能要求:
(1)發(fā)動(dòng)機(jī)啟動(dòng),電源電壓正常并且近光燈打開時(shí),系統(tǒng)開始工作;
(2)當(dāng)車速v<10 km/h時(shí),用汽車前后高度傳感器的值控制車燈內(nèi)的電機(jī),以調(diào)節(jié)車燈的俯仰角;
(3)當(dāng)10 km/h (4)當(dāng)80 km/h (5)當(dāng)車速v>120 km/h時(shí),車燈內(nèi)電機(jī)不再隨車速變化而改變。 開發(fā)系統(tǒng)的硬件平臺(tái)采用Freescale的HS12系列16位單片機(jī);系統(tǒng)算法的建模、開發(fā)、仿真采用MATLAB的R2010a版本;算法的集成編譯及燒寫采用Freescale的集成開發(fā)環(huán)境CodeWarrior 5.1。 如圖2所示,在MATLAB中,可以選擇硬件平臺(tái)中單片機(jī)的型號(hào),以及各數(shù)據(jù)類型的位數(shù),以便建立的算法模型能夠生成目標(biāo)單片機(jī)能夠執(zhí)行的代碼。 Simulink模塊是MATLAB中一個(gè)重要的組成部分,提供一個(gè)動(dòng)態(tài)系統(tǒng)建模、仿真的集成環(huán)境。它將許多算法都集成為可視化模塊,可以直接用鼠標(biāo)進(jìn)行操作。Simulink可以將編寫的圖形化的算法模型轉(zhuǎn)換為C語(yǔ)言,從而與硬件接口代碼整合,燒寫到控制器芯片。 完整的模型如圖3所示。發(fā)動(dòng)機(jī)、電源電壓及近光燈信號(hào)為邏輯信號(hào),通過(guò)與門進(jìn)入狀態(tài)機(jī)中,同時(shí)狀態(tài)機(jī)接收車速信號(hào),并根據(jù)這些參數(shù),計(jì)算出電機(jī)調(diào)整步數(shù),將電機(jī)步數(shù)作為輸出信號(hào)由單片機(jī)輸出。系統(tǒng)每10 ms執(zhí)行一次。 仿真后進(jìn)入Simulink的Code Generation,并進(jìn)入配置界面,點(diǎn)擊Build,MATLAB將自動(dòng)生成HC12相關(guān)的源文件及鏈接文件,在CodeWarrior中添加生成的代碼,編譯為HEX文件,下載到目標(biāo)板,即可實(shí)現(xiàn)設(shè)計(jì)的算法邏輯功能。 編譯后的文件燒入目標(biāo)板后,與車燈的透鏡模組連接,如圖4所示將透鏡模組固定在工裝上,距離墻面3 m,此時(shí)在墻面上標(biāo)記透鏡光斑截止線的高度。使用CANoe往目標(biāo)板里發(fā)送車速信息、調(diào)節(jié)傳感器,并測(cè)量此時(shí)光斑截止線的高度,由臺(tái)架上透鏡高度h1、光斑高度h2及透鏡與墻面的距離可以計(jì)算出電機(jī)移動(dòng)的角度。實(shí)驗(yàn)結(jié)果如表1所示,數(shù)據(jù)1中車速小于10 km/h,此時(shí)透鏡的運(yùn)動(dòng)隨著傳感器的值變化;數(shù)據(jù)2中車速為10~80 km/h,透鏡不響應(yīng)車速及傳感器;數(shù)據(jù)3、4中車速大于80 km/h時(shí),透鏡只響應(yīng)車速而不響應(yīng)傳感器,可見代碼滿足設(shè)計(jì)的功能。 數(shù)據(jù)車速/(km·h-1)傳感器移動(dòng)角度/(°)透鏡移動(dòng)角度/(°)1554.824060310000.9410050.9 文中采用MATLAB建立模型來(lái)進(jìn)行智能車燈控制器軟件的開發(fā),這種方法也可以應(yīng)用在其他汽車控制器的軟件開發(fā)中。圖形化的建模環(huán)境,不僅降低了軟件設(shè)計(jì)的門檻,同時(shí)使工程師將精力更集中在算法上而不是具體的代碼編寫上,而且針對(duì)不同的硬件平臺(tái),只需要在MATLAB上進(jìn)行配置,即可完成軟件的移植。1.2 軟硬件開發(fā)平臺(tái)
2 控制系統(tǒng)建模
2.1 Simulink仿真建模
2.2 自動(dòng)代碼生成
3 測(cè)試驗(yàn)證
4 結(jié)論