太阳能热水器中辅助电热水装置控制器的开发
2008-09-09
作者:李向阳 莫鸿强 肖 迳 史
摘 要: 介绍了太阳能热水器中辅助电热水装置控制器的开发,给出了其硬件结构和软件框图。硬件电路主要由单片机AT89C51、时钟芯片DS12887、数/模转换器ADC0809、并行接口82C55、温度传感器、水位传感器和继电器等组成。该控制器具有时间显示、水温显示和水位显示以及三段保温时间设定和温度设定功能,还具有加热器短路保护" title="短路保护">短路保护、漏电流保护和防干烧等功能。该控制器简单可靠,成本较低,已在实际中应用。
关键词: 控制器 AT89C51 DS12887 ADC0809 82C55
太阳能因其具有绿色环保、无污染、廉价等特点,越来越受到人们的喜欢,许多家庭和公共场所都在使用太阳能热水器。但是,太阳能受天气影响很大,当夜晚或者阴天阳光不足时,水箱中的水可能达不到设定温度。这时需要采用辅助加热的方法把水箱中的水加热到足够的温度,以满足用户全天候使用的要求。在辅助加热方法中,电加热是一种常用的方式。本文将介绍采用电加热作为辅助加热方式的太阳能热水器控制器的开发过程。所设计的控制器具有时间显示、水位显示和温度显示,同时具有三段保温起止时间设定和温度设定功能,可以对一天的三个时间段进行水箱温度控制,达到节电和满足不同用户使用习惯的要求;此外,还具有短路保护、漏电保护、防干烧、掉电保护、故障报警和手动控制等功能。
1 控制器的硬件电路设计
对辅助电加热控制器所要完成的功能进行分析后,采用如图1所示的设计方案。该方案以AT89C51单片机为核心,单片机在地址锁存器74LS373的配合下,通过P1、P2口扩展外围接口电路。接口电路有A/D" title="A/D">A/D转换器ADC0809、时钟芯片DS12887以及并行扩展接口82C55。ADC0809把热水器水箱中的水面温度传感器(安装在热水出水口附近,作实时显示之用)、防干烧温度传感器(安装在加热电阻丝附近,作防干烧保护之用)、水位传感器、电流传感器、漏电电流传感器的模拟信号变成数字信号,以便单片机进行实时显示、保护和控制。DS12887内有锂电池,并有114字节的RAM,可以在控制器断电时进行准确计时,并保存RAM中的数据。82C55用于对8个LED数码管和具有8个按键的键盘进行扩展。
1.1 单片机与82C55的键盘和显示接口
键盘和显示电路如图2所示。8个数码管采用共阴极连接,82C55的PA口输出显示字符的段码,PB口选择要显示的位,它们分别通过两片DS75491和两片DS2003实现8个LED数码管的段驱动和位驱动。数码管的字符显示采用软件译码和软件动态扫描的方式,在同一时间只有一位数码管被点亮。8个数码管分别显示时间(4位,小时和分钟各占两位)、水温(两位)、水位(1位)和设定标识或者故障标识(1位)。当为故障状态时,设定/故障标识位显示故障代码(漏电、短路、干烧等故障分别采用特殊的代码来表示);当为设定状态时,显示目前设定内容的代码(如“1”表示进行温度设定)?鸦在正常工作状态时(不是设定状态和故障状态时),该位灭。由于对水位的显示精度要求不高,故水位采用一个数码管显示,一般情况显示4段就足以满足要求。
82C55的PC口用于连接8个按键,采用软件方式去除抖动。8个按键分别为用于选择设定参数类型的“设定增加”和“设定减少”键、用于设定参数值的“参数增加”和“参数减少”键、用于设定完成后的“确认”键、用于人工清除故障的“故障清除”键、用于手动控制的“电加热开”和“电加热关”键。当控制器检测到故障时,如漏电和短路等,控制器关闭电加热器" title="电加热器">电加热器,并进行故障指示和报警。此时,如果实际故障消失(如发生短路故障时,控制器因保护作用而关闭电加热器电源,此时短路现象消失),控制器仍然需要保持该故障状态,则等待用户检查维修完毕后,用户按“故障清除”键后就能清除保存在控制器中的故障状态,使控制器继续正常工作。这样可以避免在维修人员没有排除故障时,控制器自动开启电热器" title="电热器">电热器而引起不必要的事故。“电加热开”和“电加热关”的设置是为了方便用户更加自由地使用热水器,通过这两个键,用户可以在任何时间开关电加热器(不要求在三段保温时间之内),而且此时控制器同样对温度进行控制和保护,如在手动加热时,如果水温超过设定温度,控制器自动关闭电加热。这样可以避免用户手动开启电加热后,忘记关闭电加热而浪费电能。
1.2 单片机与ADC0809的接口
A/D转换器ADC0809与单片机的连接如图3所示。 ADC0809的8个模拟量输入采用了其中的5个通道,分别连接水温、电流、漏电、干烧和水位的测量和变换电路的输出。ADC0809的时钟由AT89C51的ALE信号提供,根据ACD0809对工作时钟的要求和控制器对漏电和短路信号的反应速度的要求,ADC0809时钟频率取为667kHz,则AT89C51的时钟频率选为4MHz,这样?熏若A/D转换的时间为0.1ms,则控制器循环采样完5个模拟输入信号需要0.5ms时间。这样的采样速度足够满足漏电和短路的保护要求。
1.3 单片机与时钟芯片DS12887的接口和控制输出电路
AT89C51与DS12887的接口和控制输出电路如图4所示。单片机的P1口为电热水器和报警器的控制输出,对电热水器的控制是通过三极管进行功率放大后驱动大功率继电器然后再驱动电加热丝来实现的,对报警器的控制是通过三极管驱动直流蜂鸣器来实现的,通过控制蜂鸣器的接通和断开时间可以发出不同长短的断续报警声。
DS12887是内部带有不易失性RAM的实时时钟电路,在控制器中用于进行实时计时并在掉电时保存用户设置参数和故障状态参数等重要参数。图4中DS12887的MOT脚接地。由于DS12887与AT89C51的复位信号刚好相反,所以要通过一个反相器进行连接。DS12887内部有地址锁存器,不需要像82C55那样通过74LS373把地址和数据分开,可以按照图4的方式进行直接连接,通过连接AT89C51的ALE脚和DS12887的AS脚来进行地址和数据的识别。
2 控制器的软件设计
从控制器的功能和硬件设计可以看出,控制器的软件部分可以自然地分成初始化模块、模拟输入和计时模块、故障判断和控制逻辑处理模块、键盘处理" title="键盘处理">键盘处理和LED显示模块等,这些模块通过单片机的RAM和DS12887的非易失RAM交换数据。图5为控制器的主程序框图。
初始化模块对单片机的堆栈指针、中断寄存器、全局变量和初始化定时器0等进行初始化。定时器0作为动态显示和键盘扫描定时之用。输出控制子程序把控制逻辑模块的运算结果输出到单片机的P1口,执行电热器的控制和报警功能。
键盘处理和LED显示模块包括键盘处理和LED数码管显示两部分,其程序框图如图6所示。单片机通过82C55的PC口读取按键状态,去除抖动后得到按键状态,根据按键状态得到用户输入的键值,然后根据不同的键值进行散转处理,包括设定参数类型、设置电热器手动开关、参数设置和故障清除等处理。在参数设置部分还根据目前设置参数的种类对参数进行修改和保存(保存在DS12887的RAM中),按“确认”键后,当前的设定值代替原来的设定值;若不按“确认”键,原来的设定值不改变。当超过20s无键按下,则控制器自动退出设定状态。显示部分根据控制器的工作状态和用户的操作情况进行实时显示,当同时有多个内容需要显示时,故障指示状态优先。
单片机通过模拟输入和计时模块得到温度、电流和时间数据,以便进行显示和保护。图7为模拟输入和计时模块程序流程图。单片机周期地读取A/D转换的值并进行数字滤波,然后根据每个物理量的相应的测量计算公式将其转换成水面温度(用于显示和加热控制)、干烧温度(用于干烧保护)、电热器电流(用于短路保护)、漏电电流(用于漏电保护)和水位(用于显示、报警和低水位加热保护)的具体数值。该模块还通过与DS12887通信得到实时时间,用于显示和三段时间段内的温度自动控制。
图8为故障判断和控制逻辑处理程序流程图,包括故障判断和控制逻辑处理两部分。当故障判断程序检测到漏电、短路、干烧、低水位等故障,则关闭加热器电源、在故障指示位显示故障代码、发出相应的声音报警、保存故障状态;如果温度低于低温报警温度设定值,并且在三段保温设定时间段内,则显示低温报警,但不进行声音报警,以免过多打扰用户。当不在三段保温时间内时,不进行温度控制。当没有漏电、短路、干烧、低水位故障发生时,控制器根据用户设置的三段保温时间、三段保温时间内的设定温度和当前温度测量值进行温度控制。由于对控制水温的精度要求不高,采用简单的开关控制。其控制算法如下:当水温低于设定温度2℃时启动电热器;当水温高于设定温度2℃时停止电热器加热;当水温在设定温度±2℃时保持加热器原来状态。需要注意的是,该模块的控制输出结果是写入到单片机的RAM中的,在控制输出模块中再把这些结果输出到单片机的P1口,实现真正的输出,这与许多PLC的模块化软件设计是一样的。
本文介绍了一种太阳能热水器中辅助电热水装置控制器的开发,给出了硬件设计和软件框图。从控制器的功能和硬件设计来看,该控制器功能全面、技术成熟可靠、经济实用,它的成功开发使用户能全天候地使用太阳能热水器。
参考文献
1 余永权.ATMEL89系列Flash单片机原理及应用.北京:电子工业出版社,1997
2 李 华.MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版社,1993
3 王福瑞.单片微机测控系统设计大全.北京:北京航空航天大学出版社,1999
4 屠立德.操作系统基础.北京:清华大学出版社,1997