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

4 結論