電動汽車車載智能顯示系統設計,包括源代碼、原理結構圖
引言
電動汽車作為新型的交通工具,具有節能、污染小的特點,是目前最環保的新型交通工具,并被視為調整交通能源使用結構和改善城市大氣環境質量的有效途徑之一,是解決燃油車輛所帶來的能源和環境問題的最有希望的方案之一。在世界范圍內電動汽車的研究正在如火如荼進行;在國內,政府更是把電動汽車的列為重點攻關的技術研究。因此電動汽車智能顯示系統的研發就在這種大背景下應運而生。
電動汽車智能顯示系統觸摸屏作為一種新穎的交互式設備越來越展現出巨大的應用前景,電動汽車的智能顯示屏應該具有良好的實時性和穩定性,以符合汽車級產品的要求。
1.總體方案設計
該儀表顯示電動汽車特有的信息,主要包括電機,電機控制器,電池管理(BMS)和充電機等各個模塊的信息和實時狀態。用戶可以通過儀表模塊獲取例如電機的轉速、電機母線電壓、電機母線電流、電機相電流、電機溫度和電機轉速等信息。電池管理系統(BMS)采用電池容量優化的估算方法,此方法能夠對電池的剩余容量做出比較準確的估算,同時還能夠對電池組的總電壓進行監控,也可以對單節電池的電壓、溫度和電池容量等信息進行監控和實時報警。同時充電機的狀態和信息也都可以在BMS中顯示。
儀表顯示和各功能模塊之間的信息傳遞都是采用CAN總線的通訊方式,用戶可以通過觸摸屏方便快捷地實現與電動汽車各模塊之間的信息共享和雙向溝通。其主要功能如下:
①車輛的速度、里程、溫度、電池核電狀態(SOC)等信息實時顯示:
車輛行駛速度顯示。
電機轉速實時顯示。
車輛行駛總里程表(掉電保存),最大里程數:999,999Km。
單次行駛里程計,最大記數里程999.9Km
檔位指示,顯示車輛當前的檔位。
控制器溫度指示
電池剩余容量(SOC)實時顯示。
②電機控制器的信息和狀態實時顯示,參數設定:
電機轉速顯示
溫度顯示
檔位顯示
母線電壓,母線電流
過流報警
油門,剎車開關指示
油門,剎車給定
③電池管理的信息和狀態實時顯示,參數設定:
實時核電狀態顯示
實時電池組總電壓顯示
單節電池電壓實時顯示,欠壓、過壓報警。
單節電池溫度實時顯示,過溫報警。
單節電池容量實時顯示,過放、過充報警。
電池充放電循環次數顯示。
④充電機狀態顯示:
外接充電指示
充電機輸出電壓、電流顯示。
充電機通訊狀態指示
⑤車輛故障的實時和歷史記錄:
車輛實時故障記錄顯示,最多可以記錄163條信息。
車輛歷史故障記錄顯示,最多可以記錄163條信息。
⑥參數設置
可以設置日歷、時鐘、語言、速比、輪徑、電機最大轉速。
可以設置充電機最高輸出電壓和最大輸出電流。
可以設置控制器參數
可以設置管理的電池種類,數量,電池的ID號,可以設置電池SOC估算充放電數組數據和基準電壓
⑦采樣外部信號
可以采樣8路外部模擬信號。
2.電路硬件原理
電動汽車智能顯示儀表系統硬件框圖如圖1所示,其主要分為電源部分、通信部分、數據存儲部分、實時時鐘部分等。
圖1 電動汽車智能顯示儀表系統硬件框圖
2.1 電源電路設計
本設計中電源由電動汽車車載電池提供,給液晶屏、CAN隔離芯片、處理芯片PIC32MX、時鐘芯片PCF8563、轉換芯片MCP2515、存儲芯片AT24C256供電。
圖2 電源電路設計
車載電池電壓為48V,通過一個DC/DC電源模塊,輸出電壓為12V。液晶屏由TPS65150供電,其允許輸入電壓范圍為1.8V—6V;CAN供電電壓為5V,所以選用一個LM1117I-5將12V轉換為5V,給CAN與液晶屏供電芯片TPS65150供電。選用LM1117I-3.3將12V轉換為3.3V,給處理芯片PIC32MX、時鐘芯片PCF8563、轉換芯片MCP2515、存儲芯片AT24C256供電。本系統配備了電池,能防止掉電情況下,日歷時鐘數據丟失。時鐘芯片PCF8563在系統正常的工作狀態下由LM1117I-3.3供電,在系統掉電的工作狀態下由電池供電。
2.2 A/D采樣通道
PIC32MX A/D轉換模塊包含16個A/D轉換通道,模擬輸入通過兩個多路開關(MUX)連接到一個SHA。可在CPU 休眠和空閑模式下工作。本系統數據采樣電路將8路外部模擬信號ANx_input,經過濾波分壓,輸入到PIC32MX的A/D轉換模塊采樣通道ANx(x=0-9,12-15)。如圖3所示
圖3 A/D采樣輸入電路設計
2.3 數據存儲
本系統使用存儲芯片AT24C256存儲電池狀態歷史數據及車輛運行故障歷史數據。AT24C256是ATMEL公司推出的256kB串行電可擦可編程只讀存儲器,結構緊湊,8引腳雙排直插式封裝;存儲容量大,內部有512頁,每一頁為64字節,任一單元的地址為15位。能夠滿足本系統高容量數據儲存的要求。
圖4 數據存儲及傳輸電路設計
圖4為數據存儲及傳輸硬件接口電路圖。AT24C256存儲芯片AT24C256通過I2C數據線SDA、時鐘線SCL與PIC32MX相連接。可提供256K存儲空間。在系統工作時,可記錄電池狀態歷史數據及車輛運行故障歷史數據。
2.4通信設計
本設計包含兩種通信方式,CAN通信方式與RS485通信方式,兩種通信方式為液晶屏的通信兼容提供了可能。
2.4.1 CAN通信設計
本液晶屏設計采用的主控芯片PIC32MX440F128L不帶有CAN功能,因此本設計中的CAN通信采用MCP2515+ PCA82C250T且外加一個磁偶隔離芯片來實現CAN通信功能,通信波特率125Kbps,采用11位標準標志符,CAN通信網絡可連接節點最多112個,可滿足對110節單體電池的監控。CAN通信原理框圖如圖5所示:
圖5 CAN通信原理框圖
從電池和電機控制器發出的信息通過CAN總線送到CAN收發器,再經過轉換和隔離送入CAN控制器芯片,CAN信息經過CAN控制器處理信息數據最后以SPI通訊方式傳送給主控芯片PIC32MX440F128L進行數據處理。電路原理如圖6所示:
圖6 CAN通行原理圖
其中MCP2515是一款CAN協議控制器,完全支持CAN V2.0B技術規范,通信速率為1Mb/s。該器件主要由三個部分組成:① CAN模塊,包括CAN協議引擎,驗收濾波寄存器,發送和接受緩沖寄存器。②用于配置該器件及其運行的控制邏輯和寄存器。③SPI協議模塊。MCP2515能發送和接收標準和擴展數據幀和遠程幀。PCA82C250T是CAN收發器,支持“ISO 11898”標準,通信速率可達1Mb/s,具有很強的抗電磁干擾和抗無線干擾的能力,是雙通道數字隔離器,采用了高速CMOS工藝和芯片級的變壓器技術,工作電壓為2.7V到5V,符合車用等級,工作溫度可達到125°C。傳輸速率可達到25Mb/s。
2.4.2 RS485通信
液晶屏上配備有RS485通信接口,以方便液晶屏與外部進行通信。RS485是一種共模通信方式,具有較強的抗干擾能力。PIC32MX440F128L自帶RS485通信接口,其輸出信號送給MAX2M3425芯片,該芯片能發送、接收RS485信號,能進行半工和全雙工的傳輸方式,具有最大1M/S的傳輸方式,RS485通信電路原理圖如圖7所示:
圖7 RS485通信接口電路原理圖
2.5 液晶屏實時時鐘顯示設計
本液晶屏設計時鐘顯示數據通過PCF8563實時時鐘/日歷芯片來產生。PCF8563是低功耗的CMOS實時時鐘日歷芯片,它提供一個可編程的實時時鐘輸出,一個中斷輸出和掉電檢測器。所有的地址和數據通過I2C總線接口串行傳遞,最大總線速度可達到400Kbit/S。PCF8563有16個8位寄存器,一個內置32.768KHZ的振蕩器,一個分頻器,一個可編程的時鐘輸出,一個定時器,一個報警器,一個掉電檢測器和一個400KHZ的I2C總線接口。電路原理圖如圖8所示:
圖8 日歷時鐘電路原理圖
圖8中PCF8563芯片的5、6引腳為I2C總線用的兩個引腳,兩個引腳必須用一個上拉電阻與正電源連接,這兩個引腳與PIC32MX440F128L的I2C引腳相連實現PIC32MX440F128L與日歷時鐘芯片間傳遞數據。液晶屏工作時,PIC32MX440F128L主控芯片先通過I2C對PCF8563芯片進行初始化,設定好當前顯示的年月日以及時間信息,設定完成確認后,單片機將數據傳送給圖形處理器芯片,最后在液晶屏上顯示。如果在使用過程中想調整顯示的時間,可直接在液晶屏上通過按鈕修改。PIC32MX440F128L主控芯片會不斷地查詢液晶屏按鈕動態信息,并發送相應的指令信息到PCF8563芯片修改時間。
2.6 PIC32MX與SSD1926的接口電路
SSD1926是一款中小規模的顯示控制芯片。采用128引腳LQFP封裝,256 KB靜態存儲空間和2D圖像引擎,可以支持單色和彩色LCD;32位內部數據通道,可以提供高帶寬的顯示內存,以實現快速的屏幕刷新;采用單電源供電和單時鐘輸入,具有很短的CPU訪問延遲時間,可以支持無READY/WAIT信號的微處理器。這些特點能夠極大地簡化外圍電路的設計。同時,SSD1926還具有強大的總線兼容性,可與多種類型的MCU連接,除了支持SRAM接口與ARM系列連接、ISA接口與NEC系列連接外,還支持8/16位8080時序間接尋址方式,能夠方便地與各種具有并口的MCU連接。本設計采用PIC32MX460F512L的8位/16位并行控制接口模塊與SSD1926接口。硬件接口框圖如圖9所示:
圖9 PIC32MX440F128與SSD1926接口框圖
CS為片選信號,RS為地址與數據選擇信號,RESET為復位信號,都可以由通用I/O口進行控制,分別用RD10、RC2和RC1與其連接。數據總線DB[15:0]與并行控制接口模塊中的PMD[15:0]引腳分別對接。WR和RD為讀寫信號,由并行控制接口模塊中的PMWR和PMRD引腳分別控制。SSD1926對接收到的數據進行處理之后,再通過與LCD的接口驅動TFT彩色液晶屏進行顯示。
2.7 觸摸功能的硬件設計
電阻式觸摸屏處于與外界完全隔離的工作環境,不怕灰塵和水汽,可以用任何物體來觸摸,可以寫字畫圖,廣泛應用于工業控制領域中。觸摸屏工作時,上下導體層可以看作電阻網絡。當某一層電極加上電壓時,會在該電阻網絡上形成電壓梯度。若施加外力使得上下兩層電極在某一點相接觸,則在電極未施加電壓的另一層可以檢測出接觸點的電壓,從而換算出接觸點的坐標值。本作品選用4線電阻式觸摸屏,其電阻網絡工作原理如圖10所示。
圖10 電阻網絡工作原理圖
系統工作時,首先把AN11/RB11、AN4/RB4復用引腳設置為I/O引腳。RB11輸出高電平(+3.3 V),RB4引腳輸出低電平(0 V),在頂層的電極X+、X-上即產生了3.3 V的電壓。當有外力使得上下兩層在某一點接觸時,在底層Y+、Y-引腳上就會輸出接觸點處的電壓。此時,AN10/RB10、AN5/RB5設置為A/D輸入通道。采樣此引腳上的電壓信號,即可得到Y+、Y-引腳上的電壓值,根據式(1)可以計算出X坐標:
觸點X坐標=X軸分辨率×X相電壓采樣值/1 024 (1)
本設計為10位的精度A/D采樣,3.3 V輸入時對應的采樣值即為1 024。然后,改變4個引腳的輸出定義,將A/D輸入引腳RB10設置為I/O引腳輸出高電平,RB5設置為I/O引腳輸出低電平,將3.3 V電壓切換到底層電極Y+、Y-上,設置AN11和AN4為A/D輸入引腳。對X+、X-引腳進行A/D采樣,測量得到接觸點處的Y相電壓,根據式(2)可以計算出Y坐標:
觸點Y坐標=y軸分辨率×y相電壓采樣值/1 024 (2)
2.8 電氣連接
液晶屏共有6個接線引腳,如圖11所示。1,2腳是給儀表供電用DC48V輸入,接到電池組正極和負極。3,4腳是CAN+5V和CAN GND,這一組+5V電源由儀表電路產生,給CAN總線供電。5,6腳是CAN_H和CAN_L,與其它模塊的CAN通信線連接。電池檢測模塊如圖12所示。
圖11 CAN通信電氣連接圖
圖12 電池監測模塊
2.9 LED背光控制接口
本設計提供了對LED背光電路的調節控制接口,其硬件接口電路如圖13所示。可以通過芯片PIC32MX輸出3路PWM(OCS2-OCS4)對LCD的背光電路進行控制,可以進行明暗調節。在某些工作狀態,可關掉背光電源,降低電源損耗。
PIC32440F128L
圖13 LED背光控制硬件接口電路
3.軟件設計
本設計中的軟件主要包括兩方面的內容:圖形顯示和數據通信。軟件部分包括設備驅動程序層、圖形元素層、圖形對象層和應用層,設備驅動程序層為硬件提供必要的驅動程序,圖形元素層直接與設備驅動程序對話,圖形對象層提供控件驅動函數庫,應用層通過控件繪制界面、開發應用程序。設備驅動程序層、圖形原語層和圖形對象層都屬于系統層。
3.1圖形顯示原理
由于液晶屏在運行時需要顯示電機控制器,電機,電池模塊,以及充電機等的信息,這些信息量比較多,在一個界面里不能夠完全顯示。所以在本液晶屏中分別創建了電機控制器等顯示頁面用于檢測電機控制器及電機的相關信息,電池監測頁面用于監測電池的實時狀態,充電機頁面和主界面以及一些利于人機交互的頁面,這些頁面的創建使電動汽車用戶能方便快捷的獲得電動汽車的信息。頁面創建的軟件框圖如圖14所示:
圖14 頁面創建軟件框圖
汽車各部分實時信息通過CAN總線送入PIC32MX440F128L芯片,并通過圖形處理芯片SSD1926芯片在液晶屏上生成圖像,顯示在液晶屏上。同時,通過液晶屏也可以對各個模塊的參數進行設置,具有良好的人機界面。
圖形顯示是本設計的重點。本設計全部是用C語言來開發的,系統層使用微芯(Microchip)公司圖形對象層(Graphics Object Layer,GOL)圖形驅動庫來實現。Microchip 的圖形庫針對范圍寬廣的顯示設備控制器,可與PIC 單片機配合使用;圖形庫提供應用編程接口(API),完成基本圖形對象以及類似控件對象的繪制。 圖形庫也使得通過消息接口集成輸入設備變得容易。圖形庫的分層結構設計使得所有這一切成為可能。Microchip 圖形庫的層次結構如圖15所示。
圖15 Microchip 圖形庫的層次結構圖
應用層是使用圖形庫的程序。圖形對象層(Graphics Object Layer, GOL)生成控件,例如按鈕、滑動條和窗口等等。控件(widget)指GOL 對象或其他對象。 為了控制這些對象,GOL 層具有一個消息接口,接收從應用層來的消息。消息接口支持觸摸屏。圖形元素層實現基本繪圖功能。這些基本功能完成圖形對象的繪制,例如線、條和圓等。 液晶屏驅動程序是圖形庫結構的設備相關層。這一層直接與顯示設備控制器對話。大量的API 允許應用程序訪問圖形庫的任何一層。繪圖和消息處理在內部進行,對應用程序保持透明。圖形庫提供了兩種配置(阻塞式和非阻塞式),在編譯時進行設置。對于阻塞式配置,繪圖函數將延遲程序的執行,直到繪圖完成。對于非阻塞式配置,繪圖函數不等待繪圖完成,就把控制權釋放給程序。因為程序能執行其他任務,而不必等待繪圖任務完成繪制,從而使得單片機時間的使用更為高效。
對象狀態
GOL 對象有兩種類型的狀態:屬性狀態和繪圖狀態 。屬性狀態定義對象的行為和外觀。而繪圖狀態指出在顯示時對象是否需要被隱藏、部分重畫或完全重畫,一些常用的屬性狀態和繪圖狀態如表1 所示。
表1 常用的對象狀態
狀態 | 類型 | 說明 |
OBJ_FOCUSED | 屬性 | 對象處在聚焦狀態。通常用于表示對象被選中。有的對象沒有此屬性。 |
OBJ_DISABLED | 屬性 | 對象被禁止,忽略全部的消息。 |
OBJ_DRAW_FOCUS | 繪圖 | 聚焦應被重畫的對象。 |
OBJ_DRAW | 繪圖 | 對象應被完全重畫。 |
OBJ_HIDE | 繪圖 | 使用共同的背景色填充對象所占有的區域,把對象隱藏起來。這種狀態在所有繪圖狀態中,優先級最高。當對象被設置成隱藏時,所有其他繪圖狀態將不再產生作用。 |
式樣方案:
所有對象都使用式樣方案來定義所使用的字體和顏色。在創建對象時,對象可以使用用戶定義的式樣方案。如果不存在用戶定義的方案,就將使用缺省的式樣方案。表2 概括了式樣方案的組成部分。
表2 式樣方案的組成
式樣的組成部分 | 說明 |
EmbossDkColor | 暗浮雕顏色,用于對象的三維效果。 |
EmbossLtColor | 亮浮雕顏色,用于對象的三維效果。 |
TextColor0 TextColor1 | 對象使用的一般文本顏色。隨著對象的不同,在用法上可能有所變化。 |
TextColorDisabled | 已經被禁止的對象所使用的文本顏色。 |
Color0 Color1 | 對象繪制時使用的一般顏色。隨著對象的不同,在用法上可能有所變化。 |
ColorDisabled | 已經被禁止的對象繪制時使用的顏色。 |
CommonBkColor | 對象的共同背景色。通常用于從屏幕中隱藏對象。 |
pFont | 指向對象所使用的字體的指針。有些對象不使用文本。 |
活動對象鏈表:
圖形庫把當前正在顯示和接收消息的對象放入一個鏈表中。任何時候,GOL 消息和繪圖函數針對的都是這張鏈表中的對象。
繪圖
為了繪制對象,應用程序將調用繪圖管理器,GOLDraw()。這個函數將解析活動鏈表,使用設置的繪圖狀態重畫對象。當繪制完成后,對象的繪圖狀態自動清除。最先創建的對象將首先繪出。當前鏈表中的對象全部繪出后,GOLDraw() 調用GOLDrawCallback()函數。定制的繪圖可以在GOLDrawCallback() 函數中實現。
消息的接收和發送:
可移植性是圖形庫的關鍵特性。圖形庫支持大量的輸入設備。 圖形庫提供一個接口,用來接收來自輸入設備的消息。所有的輸入設備事件,都將采用GOL 消息結構體的方式發送到庫里去。結構體定義如下:
typedef struct {
BYTE type;
BYTE event;
int param1;
int param2;
} GOL_MSG;
字段 type 定義輸入設備的類型ID。字段 event 表明行為的類型。字段type 和event 一起決定如何解釋 param1 和param2。某些情況下,僅使用param1,而另一些情況下可能兩個參數字段都需要。
當屏幕被觸摸時,應用程序必須先填充消息結構體,然后把它傳送給庫中的消息處理函數GOLMsg(GOL_MSG*pMsg)。對象(包括它的x、y 位置),將根據目前的狀態和事件,改變其狀態。針對輸入事件而定制的行為,可以放在GOLMsgCallback() 函數中。一旦有對象收到有效的消息,這個函數就會被調用。
圖形庫用法:
圖形庫的設計,旨在使圖形接口能夠無縫地集成到應用程序中去。通常,對象行為是通過圖形庫來進行管理的。把收到的消息進行處理,根據消息的內容,改變受影響的對象狀態。然后,圖形庫自動地重畫對象,顯示狀態的改變。
在用戶接口模塊和顯示驅動程序已被選擇和加載的前提下,調用InitGraph(),復位顯示設備控制器,把光標位置移動到(0,0) ,然后初始化顯示器成全黑狀態。然后,調用GOLCreateScheme(),定義用于對象的式樣方案。
項目文件
圖形庫安裝后,項目目錄結構如圖16所示:
圖16 Microchip項目層次結構圖
此目錄作為項目目錄,可以添加應用程序代碼,也可以與圖形庫一道被編譯。Graghics Lib 子目錄下存放的是圖形庫。Source Files子目錄存放C 文件、文檔和實用程序。Headers子目錄包含子目錄Graphics Lib圖形庫的頭文件和其他頭文件。
3.2軟件設計程序流程框圖
本設計主程序流程圖如圖17所示:
圖17 主程序流程圖
當液晶屏啟動時開始對系統進行配置,對變量、EEPROM、定時計數器等進行初始化,等待50ms后,系統進入穩定,并創建代替的樣式方案。隨后從EEPROM讀取單次行駛里程和總行駛里程,并在對語言和時鐘模式進行選擇時初始化用戶定義的式樣方案(例如字體,顏色)。在此之后執行創建液晶屏頁面,處理觸摸信息,CAN接受處理等操作。最后是CAN信息的接收,處理和發送。
在此要特別強調的是觸摸信息分為四種:①無觸摸信息②接觸觸摸屏③離開觸摸屏 ④觸摸在液晶屏上移動。當無觸摸信息時,液晶屏顯示原有界面。當有物體接觸觸摸屏時,進入中段,當接觸物體離開觸摸屏時進入下一界面。本設計暫時還沒有考慮第四種情況。這也是需要改進的地方。
液晶屏顯示面積有限,不可能將所有的信息顯示在同一界面下,因此采用界面分層的層次結構來滿足不同信息的顯示。每層下面對應相應的軟件流程框圖。顯示的層次結構如圖18所示:
圖18 層次結構圖
本設計中主要通信方式為CAN通信,也是電動汽車與液晶顯示屏對話的語言,其程序設計流程框圖如圖19所示。
圖19 CAN通信結構圖
3.3 智能顯示儀表界面
開機啟動時,屏幕進入主界面,如圖20所示:
圖20 主界面
圖20中顯示了車速,車輛行駛的距離,時間,電池等信息,各模塊具體信息通過點擊功能建進入圖21所示界面。
圖21 液晶屏目錄界面
這個界面包括:控制器矢量控制,控制器壓頻控制,控制器直接轉矩控制,小計里程清零,能量清零,電池,充電機,系統設置,故障,鎖定界面和返回。點擊其中一個按鍵將進入相應的控制界面,進行更為詳細的信息顯示和設置。
當點擊控制器矢量控制按鈕,進入控制器矢量控制界面,該界面可以監視電機的相關信息,如圖22所示:
圖22 矢量控制界面
圖22中電機轉速,行駛速度,電機溫度,控制器溫度,電機電壓,電流,頻率等參數都由CAN總線傳送給Microchip-PIC32芯片,再由Microchip-PIC32信息處理后,將實時的數據在液晶顯示屏上進行顯示。
當電池在充電或者放電時,電池電壓,溫度,SOC等信息都會發生變化。液晶屏程序對充放電都進行管理。當通信出現問題時,在液晶屏右上角將顯示通信故障。如果發生過充,或者過放,液晶屏上將對過充過放電池電壓顯示為紅色以引起司機注意。在必要的時候將自動關斷充電機阻止充電機對電池進行過充電,過放電也是如此。如圖23所示。
圖24 電池狀態監控界面
本設計由于要滿足不同電池類型的需求,所以對鉛酸電池,錳酸電池,磷酸鐵鋰電池以及不同節數電池組成的電池組都進行了考慮。并進行了程序設計。當使用不同電池類型時,需要在系統設置中對電池類型進行選擇。在圖24中,1號,4號,6號電池由于沒接電池檢測芯片,所以顯示通訊故障。表3是不同電池類型的編號。
表3不同電池類型的編號
電池類型 | 電池電壓(電池節數) | 電池編號 |
鉛酸 | 6V | 0 |
8V | 1 | |
12V | 2 | |
磷酸鐵鋰 | 16節 | 3 |
24節 | 4 | |
錳酸 | 3.3V | 5 |
缺省 | ---- | 6 |
該選擇必須進入系統設置,并輸入密碼才能進行修改。密碼保護功能能阻止系統被隨意設置,從而保證系統設置的正確性。
評論