0 引言
??? 汽車儀表是司機與汽車之間進行信息交流的窗口和界面,對于提高汽車儀表使用壽命,安全和經濟行駛有著積極而重要的作用。本設計采用LPC2292嵌入式控制器[1]作為儀表的控制核心,汽車原有傳感器無需更換,傳感器的輸出信號通過信號調理電路后送入MCU,經MCU處理后的信號通過LCD顯示器顯示出來。實時顯示車速、發動機轉速、水溫、油位、總里程、子里程等車況參數,并對信息進行復雜處理從而為司機提供平均車速、經濟油耗、剩余油量能跑里程數等有用信息,同時,還能對瞬時行車信息進行記錄存儲,實現“黑匣子”功能;對異常情況實現語音報警提示,且為今后功能擴展預留通訊接口。與傳統汽車儀表相比,該儀表具有功能豐富、可靠性高、精度高、可視性好、通用性強、且有存儲功能、無機械磨損、使用壽命長等優點。
隨著汽車電子的網絡化,CAN總線技術在汽車領域得到了越來越廣泛的應用,因此,CAN總線、嵌入式就成為汽車儀表未來發展的必然趨勢。
1 汽車儀表的基本結構和功能
汽車智能儀表采集車輛的各種狀態信息,這些信息包括車速,總、分里程,發動機轉速,前后橋氣壓,水溫,油量,及油壓力,電瓶電壓,室內、室外溫度等。其中一部分信息(車速、轉速、氣壓)經過處理后送入步進電機驅動模塊來驅動指針,這些信息的變化較其它信息要快且與車輛行使安全密切相關,用指針顯示既直觀、醒目又符合人的視覺習慣。所以,汽車上較常用的有四種指示儀表,即車速里程表、發動機轉速表、氣壓表等。分別顯示汽車行駛速度、單里程和總里程數、汽車行駛時發動機旋轉速度及前后橋氣壓等。 另一些變化較慢的信息(電瓶電壓、油量等)通過數據處理及液晶控制模塊在液晶屏上顯示。
汽車智能儀表由傳感器、信號調理電路、微控制器、鍵盤輸入模塊、步進電機驅動模塊、語音報警電路、LCD顯示器等部分構成。其原理框圖如圖1所示:
圖1 汽車智能儀表原理框圖
系統采用的微控制器為PHILIPS公司的LPC2292芯片。LPC2292是基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI-S CPU的微控制器。128KB片內Flash程序存儲器;外部8、16或32位總線;4路10位A/D轉換器,轉換時間低至2.44us;2個互連的CAN總線接口;2個32位定時器(帶4路捕獲和4路比較通道)、PWM單元(6路輸出)、實時時鐘和看門狗;多個串口接口,包括2個16C550工業標準UART、高速I2C接口(400Hkz)和2個SPI接口;通過片內PLL可實現最大為60MHz的CPU操作頻率。
其中:車速傳感器及調理電路模塊[3]包括光電式車速傳感器和車速測量通道的信號調理電阻。車速傳感器將對應于0~200公里/小時的車速轉變為頻率范圍為0~136.3Hz的脈沖信號;轉速傳感器及調理電路模塊包括脈沖信號式轉速傳感器和發動機轉速測量通道的信號調理電路,轉速傳感器將對應于0~8000轉/分鐘的發動機轉速變換成0~260Hz的頻率信號;由于車速和發動機轉速傳感器輸出的脈沖頻率信號,所以與之相對應的信號調理電路的作用是對傳感器的輸出信號進行整形、嵌位/限幅,以滿足MCU對輸入信號的要求。溫度傳感器采用熱敏電阻式溫度傳感器,用于測量汽車冷卻水的溫度,該傳感器將水溫的變化變換成電阻、電壓的變化;液位傳感器采用浮子-可變電阻式液位傳感器,將油位的變化變換成電阻、電壓的變化;水溫和油量傳感器輸出的是模擬信號,其對應的信號調理電路為電阻傳輸網絡,將傳感器的輸出信號送到LPC2292自帶的A/D輸入端。E2PROM選用93LC46B三線串行電擦除可編程只讀存儲器,其容量為1K×16位,擦除周期為1M次,顯示速度為2ms,數據保持時間可達40年,在儀表中用于保存子里程、總里程數據以及當前車況,并保證掉電時數據不會消失,起到汽車“黑匣子”作用。
步進電機模塊驅動控制車速表、轉速表、前橋氣壓表及后橋氣壓表。
語音模塊主要用來存儲所有報警語言,驅動報警喇叭,當車速、發動機轉速、水溫和油量等參數超限時,起語言提示報警作用。
鍵盤模塊用于人機交互,接收輸入來改變儀表的運行參數、儀表的日期時間設置、中英文語言切換、分里程清零及顯示屏的切換。
LCD顯示屏實時顯示車速、發動機轉速、水溫、油溫、總里程、子里程、日期及時間、電瓶電壓、各種報警指示、車內溫度、車外溫度等車況參數。
??? CAN通信模塊采用LPC2292內置的CAN控制器和獨立的CAN收發器PCA82C50構成,PCA82C50是Philips公司生產的高速CAN收發器,能適應不同的CAN總線傳輸速率。
2 CAN總線的優點及其在汽車領域的應用[2]
控制局域網CAN(Controller Area Network)是德國Bosh公司從20世紀80年代初為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種串行數據通信協議。它是一種多主總線,通信介質可以是雙絞線、同軸電纜或光導纖維。在自動化電子領域的汽車發動機控制部件、傳感器、抗滑系統等應用中,總線的位速率最大可達1Mbit/s。CAN網絡正在不斷地應用在汽車電子的各個方面。CAN總線具有下列主要特征:(1)多主站依據優先權進行總線訪問;(2)無破壞性的基于優先權競爭的總線仲裁;(3)借助接收濾波的多地址幀傳送;(4)遠程數據請求;(5)配置靈活性;(6)全系統數據相容性;(7)錯誤檢測和出錯指令;(8)發送期間若丟失仲裁或由于出錯而遭破壞的幀可自動重發送。
3 軟件設計
基于μC/OS-II的汽車組合儀表采用源代碼開放的μC/OS-II作為應用程序的開發平臺。主要實現以下功能:通過電機指針顯示發動機轉速、車輛速度、前橋氣壓表、后橋氣壓表4種參數;通過LCD屏顯示車速、發動機轉速、水溫、油位、總里程、子里程等車況參數。
??? μC/OS-II是一個完全免費的開放源碼的可移植、可裁剪的占先式多任務嵌入式實時操作系統內核,其功能完備、性能可靠、短小精煉,具備多任務調度,信號量、郵箱、消息隊列等任務間通信與同步,時間管理,簡單內存管理等RTOS內核基本服務功能。它采用優先級驅動的占先式多任務調度算法[4]。
??? 根據前面對整個系統的功能描述,可以將應用程序劃分為6個任務加上6個中斷(RTI節拍中斷屬于系統中斷,其他5個為用戶中斷)。這6個任務分別是:
??? (1)報警顯示任務:前后燈光、剎車、電源、油量、油溫、水溫等LED報警;
??? (2)里程顯示、存儲任務:LCD顯示車速、發動機轉速、水溫、油溫、總里程、子里程等車況參數;
??? (3) 步進電機1任務:轉速指針表顯示;
??? (4) 步進電機2任務:車速指針表顯示;
??? (5) 步進電機3任務:前橋氣壓指針表顯示;
??? (6) 步進電機4任務:后橋氣壓指針表顯示。
每個任務在建立時均分配一個優先級(范圍為0 ~63, 0為最高,63為最低)。這6個任務的優先級依次分配為1, 2, 3, 4, 5, 6;報警任務需要及時響應,具有最高的優先級;而里程顯示、存儲任務優先級最低。較高優先級的任務必須調用至少一項系統服務而暫時放棄CPU的使用權,否則低優先級任務無法得到運行。
任務的一般結構如下:
void UserTask (void *pdata)
{?? for(;;)
??? {調用μC /OS II的某種系統服務:
??? OSMboxPend ( )/OSMboxPost ( );??????? (1)
??? OSQPend ( )/OSQPost ( );?????????????? (2)
??? OSSemPend ( )/OSSemPend ( ):????????? (3)
??? OSTaskDel (OS PRIG SELF);??????????? (4)
??? OSTaskSuspend (OS_ PR工OSELF);???? (5)
??? OSTimeDly( )/OSTimeDlyHMSM();????? (6)
??? }}
?(1)-(6)是一些主要的系統服務函數,這些函數里均進行一次任務調度,或者可能會使當前任務放棄CPU使用權而運行其他的任務。用戶任務必須至少調用一個服務函數。
另外程序還有5個用C語言編寫的用戶中斷服務程序:一個CAN接收中斷(用于接收總線信息)、4個定時器輸出比較中斷(用于產生驅動步進電機的周期性脈沖)。
因此本例程序可以這樣規劃,首先調用OSInit(),對μC /OS-II做初始化,然后創建一個信號量,因為后面的任務都要用到Printp( )函數,而Printp( )是一個不可重入函數,調用前要防止多個任務同時調用,這個信號量用于保護Printp()函數。接著創建6個任務,并對這6個任務分配優先級,最后調用OSStart ( )以啟動內核,于是任務在操作系統的管理和調度下運行和切換。圖2是程序的簡要流程圖。
圖2 程序流程圖
4 結束語
隨著汽車電氣系統的總線化,高集成、嵌入式、總線化是汽車儀表發展的必然趨勢。基于LPC2292的汽車智能組合儀表,實時顯示和保存車速、發動機轉速、水溫、油位、總里程、子里程等車況參數,使汽車具有“黑匣子”功能。并且采用CAN總線建立通信網絡,集車輛儀表、視頻監控、語音輸出于一體,解決了分開安裝不便、可靠性差的缺陷,提高了系統的可靠性。
評論
查看更多