FPGA的VRLA蓄電池測試系統設計
1、 引言
本文引用地址:http://dyxdggzs.com/article/201612/333396.htm閥控式鉛酸蓄電池(VRLA)在實(shí)際使用中會(huì )出現電池殼變形、電解液滲漏、容量不足、電池端電壓不均勻等現象,實(shí)踐證明,整組電池的容量是以狀況最差的那塊電池的容量值為準,而不是以平均值或額定值(初始值)為準,當電池的實(shí)際容量下降到其本身額定容量的90% 以下時(shí),電池便進(jìn)入衰退期,當電池容量下降到原來(lái)的80%以下時(shí),電池便進(jìn)入急劇的衰退狀況,衰退期很短,此時(shí)電池組已存在極大的事故隱患,所以對VRLA蓄電池的定時(shí)檢測和在線(xiàn)監測是非常重要和必須的。
2、 硬件電路設計
VRLA蓄電池在線(xiàn)監測系統主要功能是對直流電源VRLA蓄電池組中每一個(gè)VRLA蓄電池的端電壓進(jìn)行巡檢,其工作方式分為實(shí)時(shí)監測和定時(shí)監測兩類(lèi),定時(shí)監測的時(shí)間間隔由用戶(hù)根據實(shí)際需要設定,用戶(hù)可隨時(shí)切換實(shí)時(shí)與定時(shí)監測兩種工作模式,通過(guò)監視器顯示電壓、溫度、內阻曲線(xiàn)實(shí)現對單個(gè)及整體VRLA蓄電池的監控操作??赏瓿蓤D表打印,圖形保存,曲線(xiàn)顯示,歷史數據回放多種管理功能,并缺省設置越限報警電壓及溫度范圍限,如有異常情況立即發(fā)出報警信號。
2.1 測試系統硬件結構
圖1 整機系統框圖
本例FPGA開(kāi)發(fā)系統采
用Xilinx FPGA控制模塊Spartan-II(XC2S200)、差動(dòng)式多路模擬開(kāi)關(guān)(包括模擬開(kāi)關(guān)CD4051及光耦合器TLP181)、A/D轉換AD0809芯片、Philips公司PDIUSBD12通用串行接口芯片、Winbond公司W(wǎng)29C020C并口Flash存儲器及SRAM W24257、2×4鍵盤(pán)陣列、越限報警器件等構成。理想的VRLA蓄電池測試系統,通過(guò)實(shí)時(shí)監測VRLA蓄電池組內單節VRLA蓄電池的電壓,內阻和溫度能夠有效的識別單節VRLA蓄電池的性能差異和安全臨界點(diǎn),有效控制單節VRLA蓄電池的過(guò)充,過(guò)放和熱失控,實(shí)現均衡放電和均衡充電的理想功能;同時(shí)準確計算出單個(gè)VRLA蓄電池電量,根據充放電曲線(xiàn),建立最佳充放電方法,并與控制器智能化配合,確定VRLA蓄電池負載特性參數選擇,延長(cháng)VRLA蓄電池使用壽命。
2.2 差動(dòng)式多路模擬開(kāi)關(guān)設計
數據采集電路設計采用差動(dòng)式多路模擬開(kāi)關(guān)可以避免常規雙刀式繼電器模擬開(kāi)關(guān)對大型VRLA蓄電池組測量時(shí)需要的繼電器太多,儀器的體積過(guò)大,功耗、成本及故障率高等眾多缺點(diǎn),如圖示差動(dòng)式模擬開(kāi)關(guān)工作電源由所測VRLA蓄電池組提供,并采用光耦合器隔離采樣開(kāi)關(guān)與低壓系統,以解決VRLA蓄電池組的電池數目多,電壓高,難以測量等問(wèn)題。差動(dòng)式模擬開(kāi)關(guān)工作過(guò)程為:FPGA控制器通過(guò)控制端CA,CB來(lái)同時(shí)控制U1,U2八選一模擬開(kāi)關(guān),如果控制端同時(shí)選中輸入端B1,則模擬開(kāi)關(guān)U1輸出端OUT1輸出VRLA蓄電池B1的正端電壓,而模擬開(kāi)關(guān)U2的輸出端OUT2輸出則是B1的負端電壓,如果將OUT2接到測量系統的地電平,OUT1接到測量系統信號輸入端,則便可測得VRLA蓄電池B1的各項數據值。同理,只要控制CA,CB就可完成對B1~B4各個(gè)單體電池數據的量測,繼而得出整組電池的各項參數數據。
圖2 差動(dòng)式模擬開(kāi)關(guān)電路原理圖
3、 軟件設計
系統軟件采用模塊化設計,底層固件程序由VHDL語(yǔ)言編程的若干子程序塊組成,包括主 控制程序,數據采集子程序,超限判斷及報警子程序,USB端點(diǎn)通信子程序,中斷處理子程序;上位機應用程序在Visual Basic環(huán)境下開(kāi)發(fā),可完成圖表打印,圖形保存,曲線(xiàn)顯示,歷史數據回放等管理功能。
3.1 主控制程序
用于完成FPGA及外部模塊的上電自檢和初始化,初始化flash存儲器,SRAM工作區,A/D轉換器及差動(dòng)模擬采樣通道設置、USB端口及周邊接口的上電復位。初始化將對初始狀態(tài)給予設定,包括定時(shí)器、中斷器的開(kāi)放等。其中外部中斷用于響應鍵盤(pán)信號及USB口中斷響應與上位機通信等操作。
3.2 USB控制端點(diǎn)中斷服務(wù)程序流程圖
USB控制端點(diǎn)中斷服務(wù)程序功能是在USB通信口發(fā)出中斷響應后把當前選定的單節蓄電池的電壓、溫度等數據存入相應數據區,為系統顯示、報警、通信等功能提供原始數據,之后根據用戶(hù)設置的蓄電池組數、每組蓄電池節數及設定電壓、溫度值,將原始數據作相應修正即可在上位機應用程序處顯示每組蓄電池的單節電池電壓及整體蓄電池的電壓、溫度、內阻曲線(xiàn)。
圖3 USB控制端點(diǎn)中斷服務(wù)程序流程圖
3.3 USB控制端點(diǎn)通信建立初始化程序
參考Philips公司PDIUSBD12數據手冊,PDIUSBD12的命令字分為三種:初始化命令字、數據流命令字和通用命令字,FPGA先給PDIUSBD12的命令地址發(fā)命令,根據不同命令的要求再發(fā)送或讀出不同的數據。因此,可以將每種命令做成函數,用函數實(shí)現各個(gè)命令,以后直接調用相關(guān)函數即可。FPGA內部USB控制端點(diǎn)與PDIUSBD12通信初始化程序清單:
constant D12_CONNECT_data: REG8x8:= //配置命令和數據
( D12_COMMAND_SET_DMA, //設置DMA命令
D12_DMA,&nbs p; //發(fā)送命令數據
D12_COMMAND_SET_MODE, //發(fā)送設置模式命令
D12_MODE_CONFIG, //發(fā)送模式設置
D12_MODE_CLOCK_DIV, //發(fā)送分頻率模式
others => X"00" );
constant D12_CONNECT_DATA_TYPE: REG8x1:= //命令、數據執行順序
( D12_COMMAND,
D12_DATA, //發(fā)送數據
D12_COMMAND,
D12_DATA, //發(fā)送數據
others => 0 );
constant D12_CONNECT_DATA_LENGTH: INTEGER8 := 5; //配置參數總長(cháng)度
constant D12_EP0_ACK_data: REG8x8:= //配置0斷點(diǎn)命令
( D12_COMMAND_SEL_EP0_OUT,&nb
sp; //發(fā)送0斷點(diǎn)選擇
D12_COMMAND_ACK_SETUP, //確認建立
D12_COMMAND_CLEAR_EP_BUFFER, //清寄存器
D12_COMMAND_SEL_EP0_IN, //接收0斷點(diǎn)選擇
D12_COMMAND_ACK_SETUP, //確認建立
others => X"00" );
constant D12_EP0_ACK_DATA_LENGTH: INTEGER8 := 5; //配置0斷點(diǎn)總長(cháng)度
constant ep0_ack_data: REG8x8 := D12_EP0_ACK_DATA; //發(fā)送0斷點(diǎn)數據
4、 結語(yǔ)
基于FPGA的VRLA蓄電池測試系統充分利用固件編程調試靈活,開(kāi)發(fā)成本低,片上資源豐富等優(yōu)勢,能方便的實(shí)現多組輸入模擬量的擴展??蓪?shí)現對單體電壓0~15V、整組電壓0~500V,電壓測量精度:±0.5%;溫度測量范圍:-20℃~+80℃;內阻測試范圍:0~99mΩ等高精度的參數測量。
評論