摘 要: 利用EDA技術(shù)和VHDL語言,設(shè)計(jì)了基于FPGA的太陽能熱水器控制系統(tǒng),實(shí)現(xiàn)了系統(tǒng)的硬件電路及相關(guān)配套軟件,使系統(tǒng)能夠完成太陽能熱水器溫度、水位參數(shù)的采集和對(duì)采集數(shù)據(jù)實(shí)時(shí)記錄、處理、分析、顯示和控制等功能。經(jīng)實(shí)際應(yīng)用證實(shí),該系統(tǒng)運(yùn)行穩(wěn)定、安全可靠、抗干擾能力強(qiáng)、操作靈活、使用方便,當(dāng)太陽能不足時(shí)能及時(shí)提供輔助能源補(bǔ)充加熱,實(shí)現(xiàn)了全天候不間斷提供熱水。
關(guān)鍵詞: 太陽能;FPGA;EDA;VHDL;控制系統(tǒng)
?
太陽能熱水器是目前最為“干凈”的能源之一。隨著消費(fèi)者環(huán)保和綠色意識(shí)的提高,太陽能熱水器已經(jīng)走進(jìn)了千家萬戶[1]。目前,太陽能熱水器控制器還一直處于研究與開發(fā)階段,市面在售的控制器絕大部分只具備溫度和水位顯示功能,不具備溫度水位的自動(dòng)控制功能。雖然有的控制器配有電加熱輔助裝置,但都不是自動(dòng)的,給用戶使用帶來許多不便。而且,在人類生活水平日益提高的今天,智能化家庭住宅模式將成為新的家庭住宅模式的發(fā)展趨勢(shì),目前市場(chǎng)上的太陽能熱水器智能化程度不高,主要以手動(dòng)或半自動(dòng)實(shí)現(xiàn)對(duì)太陽能熱水器的操作,在與用戶的交互性方面也不夠理想。
針對(duì)目前市場(chǎng)上熱水器控制系統(tǒng)的不足,本文設(shè)計(jì)了一種基于FPGA的控制系統(tǒng),實(shí)現(xiàn)對(duì)太陽能熱水器的水位、補(bǔ)水方式、補(bǔ)水時(shí)間的自動(dòng)控制 ,提高了系統(tǒng)的智能化;利用液晶顯示與用戶建立良好的交互界面。
1 系統(tǒng)主要功能
(1)當(dāng)水位低于規(guī)定值時(shí)報(bào)警并自動(dòng)上水,上水到規(guī)定水位時(shí)自動(dòng)停水(水位的上限可以由用戶自行設(shè)定,所設(shè)定參數(shù)具有斷電保護(hù)功能;重新上電則不需要用戶再設(shè)定)。
(2)可實(shí)現(xiàn)手動(dòng)/自動(dòng)控制切換。
(3)自動(dòng)加熱,定時(shí)加熱控制。
(4)采用分時(shí)段控制,即“用水時(shí)段”和“非用水時(shí)段”。
(5)采用全自動(dòng)溫度控制,禁止高溫空曬后進(jìn)水,可以防止真空管因突然注入冷水而爆裂。
2 系統(tǒng)組成結(jié)構(gòu)及工作原理
本系統(tǒng)由溫度傳感器及調(diào)理電路、水位傳感器及調(diào)理電路、A/D轉(zhuǎn)換電路、液晶顯示電路、FPGA控制模塊、按鍵輸入和繼電器執(zhí)行部件組成,其中FPGA控制模塊是本系統(tǒng)的核心。系統(tǒng)結(jié)構(gòu)如圖1所示。
?
?
(1)液位傳感器采用ATS173型霍爾元件[2],若干霍爾元件固定在一個(gè)垂直導(dǎo)槽上,浮子帶動(dòng)磁鋼沿導(dǎo)槽運(yùn)動(dòng),霍爾元件的輸出經(jīng)電阻網(wǎng)絡(luò)轉(zhuǎn)換成不同電壓,經(jīng)ADC送入智能控制模塊中。溫度傳感器采用負(fù)溫度(NTC)型通用熱敏電阻,信號(hào)經(jīng)一路ADC送入智能控制部分。
(2)FPGA控制部分根據(jù)檢測(cè)到的水位信號(hào)、溫度信號(hào)以及用戶的設(shè)定或操作,通過必要的邏輯運(yùn)算,以確定當(dāng)前應(yīng)該進(jìn)行的操作,并通過輸出口送至執(zhí)行部件,進(jìn)而控制進(jìn)水閥、加熱泵的狀態(tài),以實(shí)現(xiàn)所要求的控制功能。
(3)水泵、電磁閥、加熱器組成了上水、加熱執(zhí)行部件,該部件與輸出通道的繼電器相連以接受FPGA的控制命令,完成系統(tǒng)上水、加熱、循環(huán)上水、循環(huán)加熱功能。
(4)鍵盤輸入主要由S1、S2、S3和S4組成,S1用來切換操作狀態(tài)??刂破饔小?a class="innerlink" href="http://ihrv.cn/tags/直接控制" title="直接控制" target="_blank">直接控制”和“參數(shù)修改”兩種工作狀態(tài)。按S1鍵顯示“00”,控制器進(jìn)入“直接控制”狀態(tài);顯示“01”、“02”、“03”和“04”分別表示“設(shè)定上限水位”、“設(shè)定定時(shí)上水時(shí)間”、“設(shè)定定時(shí)加熱時(shí)間”和“設(shè)定加熱溫度”。
進(jìn)入“參數(shù)修改”狀態(tài)后,S2、S3用來修改規(guī)定的參數(shù);S1接受本次修改,并切換到下一個(gè)參數(shù);S4取消本次修改。進(jìn)入“直接控制”后,S2用來手動(dòng)上水,S3用來手動(dòng)加熱,S4用來停止加熱或上水。若水位已經(jīng)超過設(shè)定上限水位,或水溫已經(jīng)超過設(shè)定溫度,“直接控制”將不起作用。
設(shè)定水位上限:控制器可以監(jiān)測(cè)到6個(gè)水位,上限水位可以由用戶設(shè)置,水位上限設(shè)置范圍為03、04、05、06。
設(shè)定定時(shí)上水時(shí)間:每天在規(guī)定時(shí)間檢查水位,并上滿。若設(shè)定時(shí)間是00或大于等于24,則取消自動(dòng)定時(shí)上水。
設(shè)定定時(shí)加熱時(shí)間:每天在規(guī)定時(shí)間檢查水溫。若水溫低于設(shè)定溫度,則接通電加熱器,將水溫加熱到設(shè)定溫度;若設(shè)定時(shí)間為00或大于等于24,則取消自動(dòng)定時(shí)加熱。
設(shè)定加熱溫度:定時(shí)加熱溫度可以由用戶設(shè)定,范圍為20℃~60℃。
3 系統(tǒng)軟件實(shí)現(xiàn)
3.1 設(shè)計(jì)思想
在設(shè)計(jì)過程中,采用自頂向下的方法。首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分,然后對(duì)各模塊進(jìn)行VHDL設(shè)計(jì)并仿真,再進(jìn)一步綜合,進(jìn)行門級(jí)仿真,如果順利,便可下載,實(shí)現(xiàn)電路??刂颇K的頂層方框圖如圖2所示。
在頂層設(shè)計(jì)中加入了定時(shí)器模塊和液位、水溫信號(hào)共同完成控制功能,實(shí)現(xiàn)分時(shí)段控制,進(jìn)而實(shí)現(xiàn)在自動(dòng)補(bǔ)水的同時(shí)不影響使用熱水,在自動(dòng)開啟電加熱器補(bǔ)溫的同時(shí)不造成能源浪費(fèi),從而解決了定時(shí)補(bǔ)水、加熱的問題。
3.2 模塊設(shè)計(jì)
FPGA控制器分為以下幾個(gè)模塊:
(1)譯碼器模塊:接收鍵盤的輸入,并且根據(jù)系統(tǒng)要求,將其轉(zhuǎn)換成系統(tǒng)需要的代碼。
(2)狀態(tài)選擇模塊:接收經(jīng)過譯碼后的信號(hào),完成狀態(tài)的控制和參數(shù)接收功能。
(3)移位存儲(chǔ)器模塊:將設(shè)定參數(shù)存儲(chǔ)起來,以備在后面的控制模塊調(diào)用,完成整個(gè)控制模塊的控制功能。
(4)比較控制模塊:將根據(jù)設(shè)定的參數(shù)和當(dāng)前的水位、水溫,輸出上水、加熱、報(bào)警等相關(guān)信號(hào)給調(diào)理電路。
(5)定時(shí)器模塊:根據(jù)實(shí)際需要,實(shí)現(xiàn)定時(shí)補(bǔ)水、加熱功能。
(6)調(diào)理電路模塊:根據(jù)狀態(tài)選擇電路和比較控制電路的輸出,自動(dòng)完成上水、加熱、報(bào)警等相關(guān)操作。
由于篇幅的原因,在此僅給出部分頂層電路的VHDL源代碼[3]:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY taiyang IS
? PORT(s1s2,s3,s4:INSTD_LOGIC);-tp,level:IN? STD_
LOGIC_VECTOR(2 downto 0);
tm:??IN STD_LOGIC_VECTER(7 DOWNTO 0);
??s,j:out?STD_LOGIC;
??alarm:out STD_LOGIC;);
END taiyang
ARCHITECTURE one OFtaiyang IS
COMPONENT? state
PORT
(? q0:IN STD_LOGIC_VECTOR(3 downto 0);
??? qs:IN STD_LOGIC_VECTOR(7 downto 0);
??? tp,level:IN STD_LOGIC_VECTOR(7 downto 0);
??? s2,s3,s4:IN STD_LOGIC;
??? s,j:out? STD_LOGIC;
??? load1,load2,load3,load4:OUT? STD_LOGIC;
??? i1,i2,i3,i4:OUT STD_LOGIC_VECTOR(7 downto 0);
END COMPONENT
……
COMPONENT? compare
? PORT(r1,r2,r3,r4:IN STD_LOGIC_VECTOR(7 downto 0);
tp,level:INSTD_LOGIC_VECTOR(7downto 0);
tm:IN STD_LOGIC_VECTER(7DOWNTO 0);
s,j:out?STD_LOGIC;
larm:out STD_LOGIC;);
END compare;
BIGEN
……
U3:register
PORT(load1=>load1,load2=>load2,load3=>load3,load4=>
load4,i1=>i1,i2=>i2,i3=>i3,i4=>i4);
……
END
3.3 系統(tǒng)仿真與實(shí)現(xiàn)
在EDA工具Quartus II環(huán)境下對(duì)上述各個(gè)模塊VHDL源程序進(jìn)行編譯、選配、優(yōu)化、邏輯綜合,自動(dòng)把VHDL描述轉(zhuǎn)變成門級(jí)電路,進(jìn)而完成電路分析、糾錯(cuò)、驗(yàn)證、自動(dòng)布局布線、仿真等各種測(cè)試工作[4]。
3.4 仿真結(jié)果
在Quartus II環(huán)境下,運(yùn)用其自身的仿真工具完成仿真,仿真結(jié)果如圖3所示。
從仿真結(jié)果中可以看出,通過FPGA實(shí)現(xiàn)的太陽能控制系統(tǒng),能很好地滿足實(shí)際要求,并且較以往傳統(tǒng)的設(shè)計(jì)方法而言,采用分時(shí)段控制,即“用水時(shí)段”和“非用水時(shí)段”,避免了頻繁啟動(dòng)和用水安全,能源得到了有效利用。
該系統(tǒng)已在一些賓館、寫字樓投入運(yùn)行,通過FPGA智能控制,采用溫差跟蹤循環(huán)方式充分利用太陽能進(jìn)行加熱,并及時(shí)啟動(dòng)輔助能源補(bǔ)充加熱,在為用戶提供不間斷的開水供應(yīng)的同時(shí),節(jié)約了能源。該系統(tǒng)運(yùn)行穩(wěn)定,抗干擾性強(qiáng)。在以后的設(shè)計(jì)改進(jìn)中可加入壓力控制模塊,進(jìn)而在整個(gè)熱水器構(gòu)成中添加加壓模塊,使得上水順利完成[5]。
參考文獻(xiàn)
[1] 蔣樂書.太陽能熱水器優(yōu)化控制方案設(shè)計(jì)的探討[J].自動(dòng)化技術(shù)與應(yīng)用,2006(4).
[2] 王化祥.傳感器原理及應(yīng)用[M].天津:天津大學(xué)出版社,1998.
[3] 潘松,黃繼業(yè).EDAj技術(shù)與VHDL[M].北京:清華大學(xué)出版社.2005.
[4] 于楓.ALTERA可編程邏輯器件應(yīng)用技術(shù).北京:科學(xué)出版社.2004.
[5] 馬敏,孫寅聰,張煒宇.太陽能熱水器控制器的設(shè)計(jì)[J].河南科學(xué),2003(21).