1 引言
燃料電池是21世紀最有望取代目前汽車燃油內燃機的新動力體系之一,它是一種將H2和O2的化學能通過電極反應直接轉換成電能的裝置。一個燃料電池堆是將多片電池片串聯起來構成的,整個電堆的性能和單片電池電壓有很大的關系。因此在燃料電池的研制中有必要采集不同條件下單片電池的電壓值,通過分析找出H2和O2的反應環(huán)境和單片電池電壓之間的關系。本文所要介紹的是作者單位正在進行的25kW燃料電池轎車項目中,燃料電池單片電壓巡檢測試、分析系統(tǒng)的設計。本系統(tǒng)的上位機軟件采用VB6.0編程語言進行開發(fā),該語言功能強大,具有面向對象和可視化編程,界面友好,特別適于在 Windows環(huán)境下圖形界面和用戶程序的編制,數據采集由多個以8位PIC單片機為核心的數據采集模塊來完成。
2 系統(tǒng)組成和工作原理
本系統(tǒng)由上位機、主控單片機和若干個數據采集模塊所組成,如圖1所示。上位機為一臺工業(yè)控制計算機,其主要功能是通過RS-232串口實現和主控單片機的通信,接收采集數據和發(fā)送控制命令;實時顯示單片電池的電壓值和繪制同一時刻單片電壓變化趨勢曲線;將測量數據分類保存到數據庫,并具有對測量結果進行多種數學分析的功能。 主控單片接收來自上位機的控制命令
圖1 系統(tǒng)組成圖
實現對各個數據模塊的控制,并將各個模塊發(fā)來的數據通過RS-232串口轉發(fā)給上位機。主控單片機和各個數據采集模塊間采用RS-485總線進行通信,并設成主從結構,主控單片機設為主機,各個數據采集模塊為從機。主控單片機在收到上位機的檢測開始命令后,按照輪循的方式依次給各個數據采集模塊發(fā)采集命令,在每發(fā)出一個采集命令后就等待接收該采集模塊的采集數據,如果在等待時間內收到采集模塊發(fā)回的采集數據,就將數據打包轉發(fā)給上位機;如果等待超時仍然沒有接收到數據就直接向下一個采集模塊發(fā)采集命令,如此反復循環(huán)下去。
各數據采集模塊的軟硬件構成是完全一樣的,并通過RS-485總線實現和主控單片機的通信。每個數據采集模塊在收到來自主控單片機的測試命令后開始對其負責測試的16片電池電壓值進行采樣,然后將采樣所得的16片電池電壓值打包一起發(fā)送給主控單片機。每一個數據采集模塊能采集16片單片電池的電壓,可根據電池片的總數相應地增減數據采集模塊的數量。
3 數據采集模塊設計
在本巡檢系統(tǒng)中單片電池電壓值的采集是由各個數據模塊來完成。數據采集模塊主要是以PIC16F873單片機為核心加一些外圍電路構成如圖2所示。PIC16F873單片機是Microchip公司生產的一款精簡指令集(RISC),哈佛雙總線和兩級指令系統(tǒng)流水線結構的高性價比的8位嵌入式控制器,具有集成度高、速度快、工作電壓低、功耗低、I/O直接驅動、指令簡單易學易用等特點。其內置8k×14 Flash存儲器,1個10位四輸入通道A/D轉換器,和一個UART。并可在線串行編程(ICSP),開發(fā)和使用都很方便,所需外圍擴展器件少。在數據采集模塊中多路模擬信號的輸入是通過16路模擬開關CD4067來選擇的,單片機通過I/O口RC1~RC4來選擇具體那一路輸入。由于單片電池電壓一般比較低在0.5V~1.2V間,這個電壓在CD4067的準許范圍內,所以在CD4067的輸入口沒有加隔離電路。由于數據采集模塊和主控單片機之間是通過485總線通信的,因此單片機的串口輸入/輸出要經過MAX485進行電平轉換后才能接到485總線上。采樣速率可由主控單片機控制。由于篇幅有限下位機軟件設計在此沒有提及。
圖2 數據采集模塊原理圖
4 上位機通信程序設計
應用VB6.0內嵌MSComm控件只要通過簡單的設置與編程,就能實現串行數據的發(fā)送與接收。MSComm控件提供了一系列封裝好的標準串行通信的屬性和方法,使用它可以建立應用程序和串口的連接,完成串行數據的發(fā)送與接收。其初始化屬性設置如下:
下位機向上位機發(fā)送的數據幀格式如圖3所示:
圖3 接收數據幀式
每一幀數據由20個字節(jié)組成,依次是:一個字節(jié)的幀起始標志為FF;一個字節(jié)的數據組號;16個字節(jié)的數據;一個字節(jié)的校驗和,校驗和是組號和16個字節(jié)的數據間相互異或的結果;最后一個字節(jié)為幀結束標志為FD。16個字節(jié)的數據中每個字節(jié)表示一片電池的電壓值,為0~255的一個整數,將該數除以100及得到電壓實際值,一般單片電池電壓在0.5V~1.2V間。用MSComm進行串行通信接收數據時可采用兩種方式實現,一種是查詢方式,另一種是事件觸發(fā)方式。在本系統(tǒng)中選擇的是事件觸發(fā)方式,每當接收緩沖區(qū)中數據字節(jié)數到達20個時就觸發(fā)一個接收事件。接收通信程序如下:
此要注意的一點是從緩沖區(qū)讀數據時,數組InputData()一定要定義成Byte類型不能為Integer或Single,因為接收模式設置為二進制。上位機發(fā)送的指令較少也很簡單在此就沒有仔細分析。
5 結束語
燃料電池作為21世紀前景比較看好的一種新的、潔凈型能源,有關它的各項技術的研究都有助于推動它向實用階段進一步發(fā)展。本文在單片電壓的檢測和分析系統(tǒng)的設計上作了一些工作。雖然是面向燃料電池的,但也可借鑒到其它類似的多點檢測和控制系統(tǒng)的設計當中去。