基于MC9S12HY32的電動汽車儀表盤設(shè)計
引言:
本文引用地址:http://www.ex-cimer.com/article/196428.htm電動汽車儀表盤是一種集LED、LCD顯示技術(shù)、步進電機控制技術(shù)于一體,適應(yīng)電動汽車電子化、數(shù)字化、信息化發(fā)展的高新技術(shù)產(chǎn)品,它是駕駛員與汽車進行信息交流的窗口,是一個多信息顯示平臺,顯示電機狀態(tài)、電池組狀態(tài)、行駛信息、底盤信息、指示報警等其它信息。Freescale的S12HY32是汽車儀表盤設(shè)計專用16位MCU,筆者以S12HY32為核心設(shè)計了一款電動汽車儀表盤,它采用步進電機進行指針的指示,具有很好的數(shù)據(jù)控制特性,并能及時反映汽車加減速、電壓電流上升與下降等各種工況,提高了整個系統(tǒng)的平穩(wěn)性和定位精度,同時保留了機械指針指示的直觀、有動感、符合駕駛員習(xí)慣等優(yōu)點。采用LED顯示轉(zhuǎn)向燈、遠(yuǎn)近光變換、車門狀態(tài)、安全帶未系提示、充電指示、報警等狀態(tài)【1】,采用LCD數(shù)字顯示里程表和故障狀態(tài)。本文介紹S12HY32的功能特性和應(yīng)用要點,并剖析電動汽車儀表盤的設(shè)計原理和軟硬件結(jié)構(gòu)。
1 硬件設(shè)計
MC9S12HY32是一款可擴展入門級的汽車儀表盤應(yīng)用16位微控制器,集16位性能和許多專用功能于一身【2】,如LCD驅(qū)動和步進電機驅(qū)動,同時服務(wù)于需要CAN/LIN的應(yīng)用,非常適合經(jīng)濟高效的汽車儀表盤應(yīng)用。其芯片資源及特性如下【3】:
1、32MHz總線頻率的HCS12 CPU內(nèi)核;
2、帶有ECC(錯誤校正碼)的32KB程序閃存和4KB數(shù)據(jù)閃存,4KB片內(nèi)SRAM;
3、字段式LCD控制器,最多可配置為40x4段;
4、4個步進電機控制器,可以進行電機失速檢測;
5、兩個16位定時器模塊,可提供16位輸入捕捉、輸出比較、計數(shù)和脈沖累加器功能;
6、8通道10位逐次逼近型ADC;
7、SPI/I2C模塊,一個SCI模塊,支持 LIN 2.0、2.1 和 SAE J2602 通信;
8、MSCAN模塊,支持 CAN 協(xié)議 2.0A/B。
1.2 系統(tǒng)結(jié)構(gòu)
儀表盤由CAN總線接口、信號采集電路、步進電機、LCD、LED、報警裝置組成,用于各種工況下汽車運行信息的采集和顯示,圖1給出了儀表盤硬件結(jié)構(gòu),下面結(jié)合S12HY32的內(nèi)部資源介紹下儀表盤的硬件設(shè)計。
圖1 儀表盤硬件結(jié)構(gòu)圖
圖1 儀表盤硬件結(jié)構(gòu)圖
Picture 1:Dashboard hardware architecture
S12HY32內(nèi)部資源專為儀表應(yīng)用而設(shè)計,4個步進電機驅(qū)動器可以進行車速、電機轉(zhuǎn)速、電流和電池組電壓的指針指示,LCD控制器可以控制字段式LCD顯示總里程、小計里程和電機故障信息,內(nèi)部有MSCAN模塊支持CAN總線應(yīng)用,可以通過CAN總線獲取一些關(guān)鍵信息,同時保留直接進行信息采集的能力:內(nèi)置定時捕捉模塊可以進行車速/電機轉(zhuǎn)速脈沖的捕捉與統(tǒng)計,內(nèi)置ADC進行電機溫度等模擬量的采集。下面以車速信號檢測為例介紹下儀表盤電路設(shè)計。
1.3 車速信號檢測
車速是儀表盤需要顯示的關(guān)鍵信息,根據(jù)汽車原理和拓?fù)浣Y(jié)構(gòu),車速信號來源是CAN總線或者車速傳感器。車速傳感器輸出0-12V的脈沖信號,其信號頻率大小與車速值大小成線性關(guān)系,隨車速增加而增加【4】,通過圖2所示的整形電路將車速傳感器信號轉(zhuǎn)換為TTL電平,然后通過定時捕捉模塊捕捉脈沖信號的上升沿或下降沿,進行統(tǒng)計分析即可得到車速大小。
圖2 車速信號檢測電路
圖2 車速信號檢測電路
Picture 1:Speed signal detection circuit
2 軟件設(shè)計
2.1 軟件流程設(shè)計
因為沒有采用操作系統(tǒng),軟件設(shè)計采用循環(huán)體+中斷的軟件結(jié)構(gòu)【5】,主循環(huán)體完成主體功能,中斷服務(wù)程序進行底層協(xié)議設(shè)計和驅(qū)動管理,軟件流程圖如圖3所示,下面簡單介紹一下該流程。首先進行全局變量和所用外設(shè)(包括IO、PWM、TIMER、SCI、CAN、LCD、MOTOR CONTROLLER)的初始化,初始化完成后,進入主循環(huán),然后在循環(huán)體內(nèi)依次進行定時器管理、開關(guān)信號檢測、車速檢測、CAN通訊管理、里程計算及存儲、報警控制、LCD控制和步進電機控制。各軟件模塊次序如圖三所示。下面以車速檢測為例介紹下軟件的詳細(xì)設(shè)計。
圖3 軟件流程圖
Picture 3 Software Process
2.2車速信號檢測軟件設(shè)計
車速信號整形后得到TTL脈沖,S12HY32的定時捕捉模塊以中斷的方式捕捉脈沖的沿變化【6】,在中斷處理函數(shù)中進行脈沖個數(shù)累加。設(shè)計脈沖統(tǒng)計結(jié)構(gòu)體和一200ms的周期定時器,采用“滑動時間窗口脈沖統(tǒng)計法”進行車速的計算,脈沖統(tǒng)計結(jié)構(gòu)體設(shè)計如下:
typedef struct{
uint8_t bank;
uint16_t cnt;
}s_PulseCnt;
在上述結(jié)構(gòu)體中,cnt表示脈沖個數(shù),bank表示數(shù)據(jù)是否有效?;瑒訒r間窗口脈沖統(tǒng)計法設(shè)計如下:
定義成員個數(shù)為6的脈沖統(tǒng)計結(jié)構(gòu)體數(shù)組Speed_pulse[6],周期性存儲車速脈沖個數(shù),脈沖率等價于一秒內(nèi)的脈沖個數(shù),則有公式如下:
脈沖頻率=(Speed_pulse[5].cnt-Speed_pulse[0].cnt) (2-1)
車速=脈沖頻率*FACTOR (2-2)
FACTOR由變速比和輪胎直徑共同決定。
當(dāng)下計算的車速表示過去1秒內(nèi)的平均車速,在下一個200ms到達(dá)后,將下標(biāo)為1到5的結(jié)構(gòu)體變量依次“滑動復(fù)制”到下標(biāo)為0到4的結(jié)構(gòu)體變量中,然后更新下標(biāo)為5的結(jié)構(gòu)體變量,此時根據(jù)公式2-1和公式2-2進行計算得到的車速為0.2秒-1.2秒之間的平均速度。這種方式計算得到的車速實時性更強,而且車速變化更加平滑,反映在指針的變化上也更加平穩(wěn)平滑,能得到更佳的視覺體驗,其代碼實現(xiàn)如下:
void SpeedDetect(void)
{
uint16_t i,j;
uint16_t Carspeed_pulse_frequency=0;
if(1==Speed_detect_enable){
if(1==Timer[SPEED_PULSE_ACCUMU_200MS].overflow_flag){
for(i=0;i=5;i++){
if(0==Speed_pulse[i].bank){
Speed_pulse[i].cnt=Car_speed_pulses;
Speed_pulse[i].bank=1;
if(5==i){
Carspeed_pulse_frequency=Speed_pulse[5].cnt-Speed_pulse[0].cnt;
Ev_speed=(float32_t)Carspeed_pulse_frequency*CAR_PULSE_FACTOR;
EvSpeedRangeCheck();
for(j=0;j5;j++){
Speed_pulse[j].cnt=Speed_pulse[j+1].cnt;
}
Speed_pulse[i].bank=0;
}
break;
}
}
}
}
}
結(jié)語
筆者采用MC9S12HY32設(shè)計實現(xiàn)了一款電動汽車儀表盤,從處理器特性、硬件結(jié)構(gòu)、車速信號檢測等方面描述了儀表盤的硬件設(shè)計,從軟件流程設(shè)計,車速信號檢測的軟件實現(xiàn)上描述了儀表盤的軟件設(shè)計。該儀表盤經(jīng)裝車試驗,運行穩(wěn)定,功能可靠,已經(jīng)進入小批量預(yù)生產(chǎn)階段,具有很高的實用價值。
脈沖點火器相關(guān)文章:脈沖點火器原理
評論