基于MC9S12HY32的電動汽車儀表盤設計
引言:
本文引用地址:http://www.j9360.com/article/196428.htm電動汽車儀表盤是一種集LED、LCD顯示技術、步進電機控制技術于一體,適應電動汽車電子化、數字化、信息化發展的高新技術產品,它是駕駛員與汽車進行信息交流的窗口,是一個多信息顯示平臺,顯示電機狀態、電池組狀態、行駛信息、底盤信息、指示報警等其它信息。Freescale的S12HY32是汽車儀表盤設計專用16位MCU,筆者以S12HY32為核心設計了一款電動汽車儀表盤,它采用步進電機進行指針的指示,具有很好的數據控制特性,并能及時反映汽車加減速、電壓電流上升與下降等各種工況,提高了整個系統的平穩性和定位精度,同時保留了機械指針指示的直觀、有動感、符合駕駛員習慣等優點。采用LED顯示轉向燈、遠近光變換、車門狀態、安全帶未系提示、充電指示、報警等狀態【1】,采用LCD數字顯示里程表和故障狀態。本文介紹S12HY32的功能特性和應用要點,并剖析電動汽車儀表盤的設計原理和軟硬件結構。
1 硬件設計
MC9S12HY32是一款可擴展入門級的汽車儀表盤應用16位微控制器,集16位性能和許多專用功能于一身【2】,如LCD驅動和步進電機驅動,同時服務于需要CAN/LIN的應用,非常適合經濟高效的汽車儀表盤應用。其芯片資源及特性如下【3】:
1、32MHz總線頻率的HCS12 CPU內核;
2、帶有ECC(錯誤校正碼)的32KB程序閃存和4KB數據閃存,4KB片內SRAM;
3、字段式LCD控制器,最多可配置為40x4段;
4、4個步進電機控制器,可以進行電機失速檢測;
5、兩個16位定時器模塊,可提供16位輸入捕捉、輸出比較、計數和脈沖累加器功能;
6、8通道10位逐次逼近型ADC;
7、SPI/I2C模塊,一個SCI模塊,支持 LIN 2.0、2.1 和 SAE J2602 通信;
8、MSCAN模塊,支持 CAN 協議 2.0A/B。
1.2 系統結構
儀表盤由CAN總線接口、信號采集電路、步進電機、LCD、LED、報警裝置組成,用于各種工況下汽車運行信息的采集和顯示,圖1給出了儀表盤硬件結構,下面結合S12HY32的內部資源介紹下儀表盤的硬件設計。

圖1 儀表盤硬件結構圖

圖1 儀表盤硬件結構圖
Picture 1:Dashboard hardware architecture
S12HY32內部資源專為儀表應用而設計,4個步進電機驅動器可以進行車速、電機轉速、電流和電池組電壓的指針指示,LCD控制器可以控制字段式LCD顯示總里程、小計里程和電機故障信息,內部有MSCAN模塊支持CAN總線應用,可以通過CAN總線獲取一些關鍵信息,同時保留直接進行信息采集的能力:內置定時捕捉模塊可以進行車速/電機轉速脈沖的捕捉與統計,內置ADC進行電機溫度等模擬量的采集。下面以車速信號檢測為例介紹下儀表盤電路設計。
1.3 車速信號檢測
車速是儀表盤需要顯示的關鍵信息,根據汽車原理和拓撲結構,車速信號來源是CAN總線或者車速傳感器。車速傳感器輸出0-12V的脈沖信號,其信號頻率大小與車速值大小成線性關系,隨車速增加而增加【4】,通過圖2所示的整形電路將車速傳感器信號轉換為TTL電平,然后通過定時捕捉模塊捕捉脈沖信號的上升沿或下降沿,進行統計分析即可得到車速大小。

圖2 車速信號檢測電路

圖2 車速信號檢測電路
Picture 1:Speed signal detection circuit
2 軟件設計
2.1 軟件流程設計
因為沒有采用操作系統,軟件設計采用循環體+中斷的軟件結構【5】,主循環體完成主體功能,中斷服務程序進行底層協議設計和驅動管理,軟件流程圖如圖3所示,下面簡單介紹一下該流程。首先進行全局變量和所用外設(包括IO、PWM、TIMER、SCI、CAN、LCD、MOTOR CONTROLLER)的初始化,初始化完成后,進入主循環,然后在循環體內依次進行定時器管理、開關信號檢測、車速檢測、CAN通訊管理、里程計算及存儲、報警控制、LCD控制和步進電機控制。各軟件模塊次序如圖三所示。下面以車速檢測為例介紹下軟件的詳細設計。

圖3 軟件流程圖
Picture 3 Software Process
2.2車速信號檢測軟件設計
車速信號整形后得到TTL脈沖,S12HY32的定時捕捉模塊以中斷的方式捕捉脈沖的沿變化【6】,在中斷處理函數中進行脈沖個數累加。設計脈沖統計結構體和一200ms的周期定時器,采用“滑動時間窗口脈沖統計法”進行車速的計算,脈沖統計結構體設計如下:
typedef struct{
uint8_t bank;
uint16_t cnt;
}s_PulseCnt;
在上述結構體中,cnt表示脈沖個數,bank表示數據是否有效?;瑒訒r間窗口脈沖統計法設計如下:
定義成員個數為6的脈沖統計結構體數組Speed_pulse[6],周期性存儲車速脈沖個數,脈沖率等價于一秒內的脈沖個數,則有公式如下:
脈沖頻率=(Speed_pulse[5].cnt-Speed_pulse[0].cnt) (2-1)
車速=脈沖頻率*FACTOR (2-2)
FACTOR由變速比和輪胎直徑共同決定。
當下計算的車速表示過去1秒內的平均車速,在下一個200ms到達后,將下標為1到5的結構體變量依次“滑動復制”到下標為0到4的結構體變量中,然后更新下標為5的結構體變量,此時根據公式2-1和公式2-2進行計算得到的車速為0.2秒-1.2秒之間的平均速度。這種方式計算得到的車速實時性更強,而且車速變化更加平滑,反映在指針的變化上也更加平穩平滑,能得到更佳的視覺體驗,其代碼實現如下:
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;
}
}
}
}
}
結語
筆者采用MC9S12HY32設計實現了一款電動汽車儀表盤,從處理器特性、硬件結構、車速信號檢測等方面描述了儀表盤的硬件設計,從軟件流程設計,車速信號檢測的軟件實現上描述了儀表盤的軟件設計。該儀表盤經裝車試驗,運行穩定,功能可靠,已經進入小批量預生產階段,具有很高的實用價值。
脈沖點火器相關文章:脈沖點火器原理
評論