太陽熱水器水位控制的EDA實(shí)現(xiàn)
[1]目前,我國太陽能熱水器的產(chǎn)量和使用量均居世界首位[1][2]。隨著人們生活水平的提高,對太陽能熱水器的品質(zhì)要求越來越高。智能控制型太陽能熱水器越來越受到人們的歡迎。水位控制是智能控制型太陽能熱水器的基本功能之一,是實(shí)現(xiàn)“全自動控制”不可或缺的環(huán)節(jié)。所謂水位控制,是通過設(shè)定來實(shí)現(xiàn)太陽能熱水器水箱里缺水時自動補(bǔ)水、水滿時自動停水的功能?,F(xiàn)有的控制方案多由水位
本文設(shè)計了一種新型的水位控制器,并采用了電子設(shè)計自動化(EDA)技術(shù)[4][5],用目前廣泛應(yīng)用的VHDL硬件電路描述語言,在Altera公司的MAX+PLUSⅡ集成開發(fā)環(huán)境下進(jìn)行綜合、仿真,并下載到可編程邏輯器件EPF10K10TC144-3中,以實(shí)現(xiàn)控制功能。
2 水位控制的主要功能
智能型水位控制要求補(bǔ)水及時且不影響正常使用。此處設(shè)計的智能化水位控制器可以實(shí)現(xiàn)水滿后自動停水、條件補(bǔ)水和強(qiáng)制補(bǔ)水及顯示、報警等功能。如圖1所示。
圖1 水位控制示意圖
其中“水位”由水箱中的水位傳感器提供。分三個檔位:滿水水位、條件補(bǔ)水水位和強(qiáng)制補(bǔ)水水位。滿水水位用于實(shí)現(xiàn)水滿后自動停水功能;條件補(bǔ)水水位可設(shè)置在一定水位如半箱水,當(dāng)水箱水位低于此設(shè)置(高于強(qiáng)制補(bǔ)水水位)時實(shí)現(xiàn)有條件補(bǔ)水:當(dāng)用水指示位有效(正在用水)時禁止補(bǔ)水,否則予以補(bǔ)水;強(qiáng)制補(bǔ)水水位可設(shè)置為水箱無水(或設(shè)置在較低水位),此時實(shí)現(xiàn)強(qiáng)制補(bǔ)水功能。為使用方便,控制器提供報警、指示功能:補(bǔ)水時補(bǔ)水指示燈亮,用戶此時不能用水;水箱水位低于條件水位時發(fā)出提示音樂,此時用戶若想繼續(xù)間斷用水,可通過鍵盤設(shè)置“補(bǔ)水禁止”,這樣,即便不用水也不會補(bǔ)水,以便短時間內(nèi)仍有熱水可用,因此時有音樂提示,用戶可在用水完畢及時撤銷“補(bǔ)水禁止”位,為水箱補(bǔ)水;水箱水位到達(dá)強(qiáng)制補(bǔ)水水位而又被禁止補(bǔ)水時,發(fā)出報警信號,以便撤銷補(bǔ)水禁止位及時補(bǔ)水,防止水箱長時間缺水。
3 水位控制器的VHDL代碼
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)是IEEE工業(yè)標(biāo)準(zhǔn)硬件描述語言,是隨著可編程邏輯器件(PLD)的發(fā)展而發(fā)展起來的。這種用語言描述硬件電路的方式,容易修改和保存,且具有很強(qiáng)的行為描述能力,所以在電路設(shè)計中得到了廣泛應(yīng)用。以下是描述水位控制的VHDL代碼。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY bushui IS
PORT (ply,forbid : IN STD_LOGIC; --用水標(biāo)示,用水禁止
level : IN INTEGER RANGE 0 TO 7; --水位
valve,alm,music : OUT STD_LOGIC; --補(bǔ)水電磁閥,報警,提示音樂
fil_l : BUFFER STD_LOGIC); --補(bǔ)水指示燈
END bushui;
ARCHITECTURE behav OF bushui IS
BEGIN
PROCESS(ply,forbid,level)
BEGIN
CASE forbid IS
WHEN '1' => valve = '0';fil_l = '0'; --禁止補(bǔ)水
IF level = 3 AND level > 1 THEN
music = '1';alm = '0'; --音樂提示水位低于條件補(bǔ)水水位
ELSIF level = 1 THEN
alm = '1';music = '0'; --水位低于強(qiáng)制補(bǔ)水水位報警
ELSE music = '0'; alm = '0';
END IF;
WHEN '0' => alm = '0';
IF level = 7 THEN
valve = '0';fil_l = '0';music = '0'; 水滿時停止補(bǔ)水
ELSIF level= 3 AND level > 1 THEN
alm = '0';music = '1'; --音樂提示水位低于條件補(bǔ)水水位
valve = not ply; fil_l = not ply; --不用水時予以補(bǔ)水
ELSIF level = 1 THEN
valve = '1';fil_l = '1';music = '0'; --強(qiáng)制補(bǔ)水
ELSE music = '0'; valve = fil_l;fil_l = fil_l;
END IF;
WHEN OTHERS => null;
END CASE;
END PROCESS;
END behav;
評論