智能型即热式热水器控制系统.docx
《智能型即热式热水器控制系统.docx》由会员分享,可在线阅读,更多相关《智能型即热式热水器控制系统.docx(29页珍藏版)》请在冰豆网上搜索。
智能型即热式热水器控制系统
摘要
热水器可分为燃气式、电热式和太阳能三大类;电热式热水器又可分为储水式和即热式两种;即热式热水器又可分为电热管和电热膜两种。
总体来讲,电热水器,特别是即热式热水器已逐渐成为家庭生活时尚。
其特点是安全、出热水快、节水节能、体积小、价格低,唯一的缺点是功率容量大,功率6KW/220V时,电流达27.3A,这是即开即热特点所决定的。
本设计的主要特点是恒温以及温度可调。
采用单片机来对它们进行控制不仅具有控制方便、简单和灵活性大等优点,而且还可以大幅度提高被控温度的技术指标,从而进一步提高产品的质量。
本设计运用80C51单片机系统为主控制芯片。
其外围电路主要由水温检测和A/D转换、晶闸管控制、水温和状态显示、按键输入以及稳压电源等部分组成。
关键字:
温度控制80C51A/D转换
第一章系统介绍
1.1系统原理
该热水器的工作原理为:
温度传感器及有关电路将电热水器出口温度转化为电压,单片机利用本身具有的A/D转换器将测得的模拟量转换为数字量,再转化为与之对应的温度值。
与设定的温度相比较后,以偏差及其变化量为输入、加热量为输出,就可达到温度自调的目的,并加以显示。
其主控电路原理图如下:
1.2方案论证
基于上述原理该系统具有对温度的精确控制、能显示当前时间热水器的实际温度以及自动检测热水器是否处于正常工作状态,并具有调温、恒温、防超高温等多项自检功能,使用户在使用过程中安全更有保障。
1.2.1水温检测电路
1.2.2按键输入电路
1.2.3水温和状态显示电路
本设计中选的显示器是LED,显示方法是静态显示。
而常用的显示器件有:
(1)显示和记录仪表;
(2)CRT显示终端;(3)LED或LCD显示器;(4)大屏幕显示器。
在这些显示方法中,显示和记录仪表能连续进行显示和记录。
但它的价钱比较贵,且为模拟显示,读数不方便,有一定的误差,所以它只适用于企业的技术改造,在新设计的微型计算机系统中不宜采用。
CTR它直观、灵活,不但可显示数字,而且可以显示画面及报表;但系统比较复杂,价格也比较贵,所以多用于大、中型控制系统中。
大屏幕显示具有显示清晰、视觉范围宽广等优点,主要用于车站、码头、体育场馆、大型生产装置的现场显示。
LED数码管由于具有结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高等优点。
虽然LCD也有这些优点但它价格比LED贵。
所以本设计选LED。
在微型计算机控制系统中常用的显示方法有:
(1)动态显示;
(2)静态显示。
动态显示的优点是使用硬件少,价格低,线路简单。
但它占用机时长,只要单片机不执行显示程序,就立刻停止显示。
因此是计算机的开销增大。
静态显示占用机时少,显示可靠,只要不送入新的数据,则显示值不变同时用起来也比较方便。
因此本设计选用静态显示。
1.3芯片介绍
本设计采用的单片机是89C51,89C51单片机的封装共分为DIP、PLCC及PQEP3种形式,常用DIP封装方式。
其外形及引脚如下图所示:
89C51单片机共40个引脚,大致可分为4类:
(1)电源引脚。
Vcc(40脚):
电源端,+5V。
Vss(20脚):
接地端(GND)。
(2)时钟电路引脚。
XTAL1(19脚):
外接晶振输入端。
XTAL2(18脚):
外接晶振输出端。
(3)I/O引脚。
P0口(39脚~32脚):
P0.0~P0.7统称为P0口。
是一组8位漏极开路型双向I/O口,也是地址/数据总线复用口。
P1口(1脚~8脚):
P1.0~P1.7统称为P1口。
是一组内部带上拉电阻的8位准双向I/O口,可驱动4个TTL门电路。
P2口(21脚~28脚):
P2.0~P2.7统称为P2口。
是一组内部带上拉电阻的8位准双向I/O口,可驱动4个TTL门电路。
P3口(10脚~17脚):
P3.0~P3.7统称为P3口。
是一组内部带上拉电阻的8位准双向I/O口,且该端口每个引脚具有第二功能。
(4)控制线引脚。
RST:
复位端。
EA/Vpp(31脚):
片外程序存储器选择端/Flash存储器编程电源。
ALE/PROG(30脚):
地址锁存允许端/编程脉冲输入端。
PSEN(29脚):
读片外程序存储器选通信号输出端。
第二章硬件设计
2.1电源部分的设计
一组交流输入通过桥式整流电路,输出4种电压:
+12V、+6.8V、+5V、-0.7V。
+12V用于继电器线圈电源(图中未画出);+6.8V和-0.7V用于运放正负电源(线性更可靠);+5V用于89C51及其余元件工作电源。
2.2水温检测和A/D转换电路
在本设计中水温检测和A/D转换电路是一个配套电路,因为水温检测电路所检测出的温度是一个连续变化的量,即模拟量。
而单片机处理的数据只能是数字量,所以数据在进入单片机之前,必须把模拟量转换成数字量(也即A/D转换)。
2.2.1水温检测电路
水温检测电路主要由R4VD1、R5R7RP1组成桥式检测电路和放大器组成,他的工作原理是先由桥式检测电路检测出温度信号再经IC5、IC6两个放大器将信号放大处理之后传送给ADC0809进行A/D转换,其中该电路还可以通过RP1和RP2两个滑动电阻来分别调节零度和满度两点的A/D值为00H和FFH。
2.2.2A/D转换电路
A/D转换电路主要由A/D转换器组成,本设计采用的A/D转换芯片为ADC0809。
因为ADC0809具有较高的转换速度和精度,受温度影响较小,能较长时间保证精度,重现性好,功耗较低,且具有8路模拟开关,对于过程控制它是比较理想的器件。
1.电路组成及转换原理
ADC0809是含8位A/D转换器、8路多路开关,以及与微型计算机兼容的控制逻辑的COMS组件,其转换方法为逐次逼近型。
它的精度是1LSB。
在A/D转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256电阻分压器,以及一个逐次逼近型寄存器。
8路的模拟开关的通/断由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。
其原理框图如下:
2.ADC0809的引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装,如下图所示:
●IN7~IN0:
8个模拟量输入端。
●START:
启动信号。
当START为高电平时,A/D转换开始。
●EOC:
转换结束信号。
当A/D转换结束后,发出一个正脉冲,表示A/D转换完毕。
此信号可用做A/D转换是否结束的检测信号,或向CPU申请中断的信号。
●OE:
输出允许信号。
当此信号有效时,允许从A/D转换器的锁存器中读取数字量。
此信号可作为ADC0809的片选信号,高电平有效。
●CLOCK:
实时时钟,可通过外接RC电路改变时钟频率。
●ALE:
地址锁存允许,高电平有效。
当ALE为高电平时,允许C、B、A所示的通道被选中,并把该通道的模拟量接入A/D转换器。
●C,B,A:
通道号选择端子。
C为最高位,A为最低位。
●D7~D0:
数字量输出端。
●V,V:
参考电压端子。
用以提供D/A转换器权电阻的标准水平。
对于一般单极性模拟量输入信号,V=+5V,V=0V。
●Vcc:
电源端子。
接+5V。
●GND:
接地端。
3.ADC0809的技术指标
●单一电源,+5V供电,模拟量输入范围为0~5V。
●分辨率为8位。
●功耗为15mW。
●转换速度取决于芯片的时钟频率。
●可锁存三态输出,输出与TTL兼容。
●无须进行零位及满量程调整
●温度范围为-40℃~+85℃。
2.3晶闸管控制电路
晶闸管控制电路是由P1.3、P1.5、P1.7输出三路晶闸管控制信号来分别控制2kW电热膜的通断,三路控制电路相同。
在运行过程中P1.3输出低电平时,G3(PNP)导通,经MOC3041光耦,自动过零触发可控硅导通,接通2kW电热膜电源;P1.5输出低电平时,G2(PNP)导通,经MOC3041光耦,自动过零触发可控硅导通,接通2kW电热膜电源;P1.7输出低电平时,G1(PNP)导通,经MOC3041光耦,自动过零触发可控硅导通,接通2kW电热膜电源。
本设计中所用的晶闸管是电力晶体管它是电流控制型器件,大多工作在功率开关状态,对其要求与小信号晶体管有所不同,它主要有足够的容量、适当的增益、较快的开关速度和较低的功率损耗。
K1~K3为继电器保护,与晶闸管控制组成双重控制和保护电路。
IC11(TPL521-2)和G10组成过零检测电路,用于周期控制晶闸管触发电路。
2.4水温和状态显示电路
显示电路由4511(七段译码、锁存、驱动)和共阴LED数码管组成,P0.0~P0.3输出BCD码,P0.5、P0.6分别控制二位刷新显示,P0.4用于控制闪烁显示,P0.7控制小数点显示。
P0口作为输出口时,外接上拉电阻(排阻)。
2.5按键输入电路
ON/OFF是启动按钮与P3.5连接,直流电源始终接通,热水器未使用时,89C51处于低耗待机方式,仅开放T1中断,T1设置在计数器临界状态,按ON/OFF键即触发T1中断,在T1中断服务子程序中,唤醒CPU跳出低功耗待机方式,进入正常工作。
键用于设置水温,设置水温时,小数点亮,以便于实际水温显示区别(3秒后自动恢复显示实际水温)。
按键输入端RC电路用于消除按键抖动。
第三章软件设计
3.1程序流程图
3.1.1主程序流程图
主控程序将整个控制过程分为两种周期,一种周期是10ms,另一种周期是320ms。
10ms周期由交流电压过零中断开始,由T0中断控制,每隔2ms进行一次A/D转换,测一次出水水温,10ms内共4次,其平均值作为10ms水温平均值;余下时间内检测一次漏电、关水、水温设置上升下降;若出水,则输出刷新SCR控制字。
320ms周期由对10ms计数控制,求320ms水温平均值,此值作为显示和控温的参数。
满320ms刷新一次水温显示,调整一次320ms周期SCR控制字。
程序流程图如下:
图3—1
3.1.2求320ms水温平均值子程序流程图
320ms水温平均值是由32个10ms水温平均值在平均产生的。
求320ms水温平均值的方法有两种,一种方法是记录每10ms的水温平均值,这样就需要占用内RAM32B存储空间,显然是不可取的;第二种方法是将每次10ms水温平均值除以32,然后累加而得,这种方法占用内RAM存储空间少。
本设计采用第二种方法。
程序流程图如下:
图3—2
3.1.3水温设置上升、下降键子程序流程图
经常在一些智能化设备中看到设置整定值采用上升键和下降键的方法,按一下上升键,设置整定值上升一位数,按住不放,快速上升;按一下下降键,设置整定值下降一位数,按住不放,快速下降。
能实现这种效果的方法可能很多,下图为本设计的扫描上升键流程图。
按键按一次释放,设置整定值加1并发短促嘟声(嘟声表示有效);按键超过0.2s开始计时,计时每增加0.1s,设置整定值加1,并刷新显示发出长嘟声。
程序流程图如下:
图3—3
3.1.4判水温升降状态子程序流程图
图3—4
3.1.5判水温高低状态子程序流程图
图3—5
3.1.6求SCR控制字升降子程序流程图
3.2程序设计
3.2.1主程序
主程序
MAIN:
LCALLSTAT;初始化
WORK:
JNB01H,WORK;等待交流电压过零或T02ms中断
CLR01H;有电压过零或T02ms中断,清中断标志
LCALLAD;检测出水温(A/D转换)
JBTR0,WORK;T0未停,2ms中断未满4次,返回中断
WK1:
LCALLTAV10;求10ms水温平均值
LCALLLOST;检测漏电(若漏电,则0FH=1)
JBC0FH,WK;漏电、转低功耗
LCALLCLOS;检测开关
LCALLKUP;扫描水温设置上升键
LCALLKDN;扫描水温设置下降键
LCALLTAV320;求水温320ms平均值
JNB02H,WK2;判320ms周期满否?
(02H标志在TAV320中设置)
CLR02H;320ms周期满,清320ms标志
LCALLDISP;320ms刷新显示一次
LCALLCTRL;控温320ms调整一次周期控制状态
LCALLEXP;解码(周期控制状态转化为SCR控制字)
WK2:
JNB03H,WORK;未出水,返回循环(03H在出水中断INT1中置位)
LCALLSCR;出水,输出SCR控制字(10ms刷新一次)
LJMPWORK;返回循环
WK3:
LCALLLOW;转入低功耗睡眠状态
LJMPWORK;跳出低功耗,返回正常工作循环
3.2.2求320ms水温平均值子程序
求320ms水温平均值子程序
TAV320:
MOVA,32H;读水温10ms平均值
MOVB,#32;置除数
DIVAB;10ms水温平均值/32
ADDA,42H;320ms水温平均值累加
MOV42H,A;回存
MOVA,B;读320ms水温平均值余数
ADDA,43H;320ms水温平均值余数累加
MOV43H,A;回存
CLRC;
SUBBA,#32;320ms水温平均值余数累加值试减32
JCT320;余数累加值<32,余数累加值不变
INC42H;余数累加值>=32,320ms水温平均值加1
MOV43H,A;余数累加值减去32后的差值回存
T320:
DJNZR3,T323;判320ms到否?
未到返回
SETB02H;320ms到,置320标志
MOVR3,#32;重置320ms计数器出值
MOVA,43H;读余数(余数四舍五入)
CJNEA,#16,T321;余数与32半数(16)比较
T321:
JCT322;余数<16,“四舍”
INC42H;余数>=16,“五入”
T322:
MOV45H,44H;刷新上次水温
MOV44H,42H;存320ms水温平均值(本次水温)
MOV42H,#0;320ms水温平均值累加器清0
MOV43H,#0;320ms水温平均值余数累加器清0
T323:
RET
有关寄存器和标志位说明:
32H:
10ms水温A/D平均值;
42H:
320ms水温平均值累加器;
43H:
320ms水温平均值余数累加器;
44H:
本次320ms水温A/D平均值;
R3:
320ms计数器;
02H:
320ms标。
3.2.3水温设置上升、下降键子程序
水温设置上升、下降键子程序
KUP:
JNBP1.6,KUP1;按上升键,转记一次
JB0CH,KUP0;已按下降键,互锁返回
CLR09H;未按上升键或上升键后释放,清长按钮标志
SETBP2.6;停嘟声
MOVR7,#00H;长按钮计数器清0
JBC08H,KUP2;有上升键按下标志,确认按一次上升键
KUP0:
RET;未按上升键,返回
KUP1:
JB08H,KUP10;已有上升键按下标志,转长按钮计数
SETB08H;无按下标志,置上升键按下标志
CLRP0.7;小数点亮(表示与水温显示的区别)
CLRP2.6;发嘟声
KUP10:
INCR7;长按钮0.2s计数
CJNER7,#20,KUP0;判长按钮0.2s满否?
未满返回
DECR7;满0.2s,长按钮0.2s计数器保持临界状态
JB09H,KUP11;有长按钮标志,转100ms计数
SETB09H;无长按钮标志,置长按钮标志
MOV33H,#10;置100ms计数器初值
KUP11:
DJNZ33H,KUP0;判100ms满否?
未满返回
MOV33H,#10;满100ms,重置100ms计数器初值
KUP2:
INC46H;设置整定值+1
MOVA,46H;
CJNEA,#85,KUP20;判设置整定值大于85℃否?
KUP20:
JCKUP3;<85℃
MOV46H,#85;≥85℃,置最大整定值85℃
MOVA,46H;
KUP3:
MOV36H,#10;置整定刷新显示保留时间(3220ms×10)
SETB06H;置整定刷新显示控制标志
LCALLDIR;刷新显示
RET;
个标志位和寄存器说明:
08H:
上升键按下标志;
09H:
上升键长按钮标志(按上升键0.2s后建立);
0CH:
下降键按下标志(与上升键互锁);
06H:
整定刷新显示控制标志(在显示子程序中起整定刷新显示控制作用);
P0.7:
小数点显示控制端;
P2.6:
嘟声输出端;
R7:
长按钮计数器,计数0.2s;
33H:
100ms计数器,在确定长按钮后,每增加100ms,设置整定值加1;
46H:
设置整定值寄存器;
36H:
整定刷新显示保留时间计数器,保留显示10×320ms=3.2s。
3.2.4温控子程序
温控子程序
CTRL:
JNB00H,CL1;非初始,转正常温控
LCALLBEGN;初始,按初始状态控温
RET;
CL1:
LCALLUPDN;判水温升降状态标志
LCALLHILW;判水温高低状态标志
LCALLWORD;根据水温升降、高低,求SCR控制字升降
RET;
3.2.5判水温升降状态子程序
判水温升降状态子程序
UPDN:
MOV23H,#0;清上升下降标志
CLR0EH;清水温不变标志
CLRC;
MOVA,44H;读本次水温
SUBBA,45H;本次水温-上次水温
JCDN;下降,转
JNZUP;上升,转
SETB0EH;不变,置水温不变标志
RET;
UP:
SETB1FH;置上升标志
UP1:
CJNEA,#2,UP10;判上升1?
UP10:
JNCUP2;非上升1,转判上升2
SETB1CH;置上升1标志
RET;
UP2:
CJNEA,#3,UP20;判上升2?
UP20:
JNCUP3;非上升2,转上升3
SERB1DH;置上升2标志
RET;
UP3:
SETB1EH;置上升3及以上标志
RET;
DN:
SETB18H;置下降标志
CLRC;
MOVA,45H;
SUBBA,44H;上次水温-本次水温
DN1:
CJNEA,#2,DN10;判下降1?
DN10:
JNCDN2;非下降1,转判下降2
SETB19H;置下降1标志
RET;
DN2:
CJNEA,#3,DN20;判下降2
DN20:
JNCDN3;非下降2,转下降3
SETB1AH;置下降2标志
RET;
DN3:
SETB1BH;置下降3标志
RET;
有关寄存器及标志位说明:
23H:
上升下降标志寄存器(位地址18H~1FH);
44H:
本次水温寄存器;
45H:
上次水温寄存器;
0EH:
水温不变标志(本次水温与上次水温相比);
18H:
水温下降标志;
19H:
下降1标志;
1AH:
下降2标志;
1BH:
下降3标志;
1CH:
上升1标志;
1DH:
上升2标志;
1EH:
上升3标志;
1FH:
上升标志。
3.2.6判水温高低状态子程序
判水温高低状态子程序
HILW:
MOV24H,#0;清水温高低状态标志
CLR0DH;清水温=整定值标志
MOVA,44H;读水温
CLRC;
SUBBA,47H;水温值-整定值
JCLW;水温值<整定值,转
JNZHI;水温值>整定值,转
SETB0DH;水温值等于整定值,置水温值等于整定值标志
RET;
HI:
SETB27H;置水温值>整定值标志
HI1:
CJNEA,#4,HI10;判水温高1℃
HI10:
JNCHI2;>1℃,转判高2℃及以上
SETB24H;≤1℃,置≤1℃标志
RET;
HI2:
CJNEA,#7,HI20;判水温高2℃
HI20:
JNCHI3;>2℃,转高3℃及以上
SETB25H;≤2℃,置≤2℃标志
RET;
HI3:
SETB26H;置高3℃及以上标志
RET;
LW:
SETB20H;置水温值<整定值标志
MOVA,47H;
CLRC;
SUBBA,44H;整定值-水温值
LW1:
CJNEA,#4,LW10;判水温低1℃?
LW10:
JNCLW2;低1℃及以上,转判低2℃
SETB21H;低1℃及以内,置低1℃标志
RET;
LW2:
CJNEA,#7,LW20;判水温低2℃
LW20:
JNCLW3;低2℃以上,转低3℃及以上
SETB22H;低2℃及以内,置低2℃标志
RET;
LW3:
SETB23H;置低3℃及以上标志
RET;
有关寄存器及标志位说明:
24H:
水温高低标志寄存器(位地址20H~27H);
44H:
本次水温A/D值寄存器;
47H:
水温整定值(温度数×3)寄存器;
0DH:
水温值=整定值标志;
20H:
水温值<整定值标志;
21H:
水温值低于整定值1℃及以内标志;
22H:
水温值低于整定值2℃标志;
23H:
水温值低于整定值3℃及以上标志;
24H:
水温值高于整定值1℃及以内标志;
25H:
水温值高于整定值2℃标志;
26H:
水温值高于整定值3℃及以上标志;
27H:
水温值>整定值标志。
3.2.7求SCR控制字升降子程序
求SCR控制字升降子程序
WORD:
JBC0DH,WD0;本次水温=整定值,转R4不变
JBC27H,WDN;本次水温>整定值,转降低R4
CLR20H;本次水温<整定值,清低于标志
JBC21H,WUP1;本次水温低于整定值1℃以内,转
JBC22H,WUP2;本次水温低于整定值2℃以内,转
WUP3:
CLR23H;本次水温低于整定值3℃及以上,清低于3℃标志
JBC19H,WUPN2;低3℃,且下降1,转控制字R4+2
JBC1AH,WUPN3;低3℃,且下降2,转控制字R4+3
JBC1BH,WUPN3;低3℃,且下降3,转控制字R4+3
SJMPWUPN1;低3℃,其余情况,转控制字R4+1
WUPN3;INCR4;控制字R4+3
WUPN2:
INCR4;控制字R4+2
WUPN1:
INCR4;控制字R4+1
CJNER4,#96,UP0;判控制字超上限否?
(最大控制字96)
WUP0:
JCWD0;控制字<96,正常返回
MOVR4,#96;控制字≥96,置最大控制字96
WD0:
RET;
WUP2:
JBC1AH,WUPN2