热水器压力和温度控制器文档格式.doc

上传人:wj 文档编号:4619139 上传时间:2023-05-03 格式:DOC 页数:21 大小:515.50KB
下载 相关 举报
热水器压力和温度控制器文档格式.doc_第1页
第1页 / 共21页
热水器压力和温度控制器文档格式.doc_第2页
第2页 / 共21页
热水器压力和温度控制器文档格式.doc_第3页
第3页 / 共21页
热水器压力和温度控制器文档格式.doc_第4页
第4页 / 共21页
热水器压力和温度控制器文档格式.doc_第5页
第5页 / 共21页
热水器压力和温度控制器文档格式.doc_第6页
第6页 / 共21页
热水器压力和温度控制器文档格式.doc_第7页
第7页 / 共21页
热水器压力和温度控制器文档格式.doc_第8页
第8页 / 共21页
热水器压力和温度控制器文档格式.doc_第9页
第9页 / 共21页
热水器压力和温度控制器文档格式.doc_第10页
第10页 / 共21页
热水器压力和温度控制器文档格式.doc_第11页
第11页 / 共21页
热水器压力和温度控制器文档格式.doc_第12页
第12页 / 共21页
热水器压力和温度控制器文档格式.doc_第13页
第13页 / 共21页
热水器压力和温度控制器文档格式.doc_第14页
第14页 / 共21页
热水器压力和温度控制器文档格式.doc_第15页
第15页 / 共21页
热水器压力和温度控制器文档格式.doc_第16页
第16页 / 共21页
热水器压力和温度控制器文档格式.doc_第17页
第17页 / 共21页
热水器压力和温度控制器文档格式.doc_第18页
第18页 / 共21页
热水器压力和温度控制器文档格式.doc_第19页
第19页 / 共21页
热水器压力和温度控制器文档格式.doc_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

热水器压力和温度控制器文档格式.doc

《热水器压力和温度控制器文档格式.doc》由会员分享,可在线阅读,更多相关《热水器压力和温度控制器文档格式.doc(21页珍藏版)》请在冰点文库上搜索。

热水器压力和温度控制器文档格式.doc

3.2温度传感器电路(PT100) 6

3.2LED显示电路的硬件设计 7

第4章软件设计 8

第5章设计总结 9

参考文献 10

附录Ⅰ 11

附录Ⅱ 12

第1章绪论

几年来,市场上陆续出现了一些热水器控制器,但大多数控制器存在着诸如性能不稳定,容易产生误操作;

温度、压力检测、控制误差大;

显示器有时出现乱码;

与电辅助加热装置不能很好配合等弊端。

从而必然会催生性能比较稳定、功能强大、智能型的热水器控制器。

在现代社会中,热水器控制电路的原理不仅应用于生活方面,其运用也涉及到了生产各个方面。

随着人们生活质量的提高,酒店厂房及家庭生活中都会见到热水器控制电路的影子,其将更好的服务于社会。

随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么单片机技术的出现则是给现代工业控制测控领域带来了一次新的革命。

用单片机来设计电热水器控制器具有新颖、价廉、安全、实用等优点,并且在国产电热水器上获得了成功应用。

本设计的一些方法也适用于冰箱、空调等家用电器的电脑控制设计中。

目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。

该热水器控制器电路的设计主要由单片机、液晶显示器、PT100等配件构成;

操作简便,运行成本低,同时免除了令用户不满控温精度低、可靠性差、功能单一等局面。

第2章课程设计方案

2.1系统的主要任务和主要功能

该热水器控制器电路主要实现对水温和压力的检测和控制,并满足不同用户的个性需求。

其有以下功能:

(1)水温的测量和显示;

(2)压力的测量与显示及报警;

(3)用户设定功能(如水温设定,水量设定,加热定时,进出水定时等);

(4)对电加热管的控制功能;

(5)一些功能键(如自动进、出水,压力设置,水温设置,把所设定值清零等);

2.2系统工作的基本原理

热水器控制电路有单片机、键盘、液晶显示器、水温传感器(PT100)、压力传感器(HM10)等硬件组成,然后和软件结合起来实现热水器控制电路的功能。

该设计的主要原理是:

如果没有达到,单片机就会发出一个指令启动热得快对水进行加热。

如果水温达到我们预先设定的温度值,单片机通过温度传感器PT100接收到的数据信号进行判断,就会使热得快停止加热。

如果温度高于我们预先设定的温度值,单片机也会通过温度传感器PT100接受到的数据信号进行判断,使热得快不加热,等水温慢慢的冷却下来到达我们预先设定的温度值。

如果温度要稍许的低于(高于)我们预先设定的温度值,单片机会马上给控制热得快电路一个指令,启动(停止)加热电路,从而实现了温度的控制。

当然控制水温主要用到了PID算法,这样实现了精确的控制水的温度。

控制压力主要通过压力传感器来实现。

当压力达到预先设定的值时,探针就会通过压力传感器HM10把信号传到单片机,通过单片机的处理判断来给压力控制电路指令,从而判断是否开启报警电路。

2.3总体设计方案与比较

2.3.1方案论证

方案一:

此方案采用单片机程序控制进行设计。

包括键盘、数码显示、开关控制电路、加热装置、进水出水装置等部分,起原理如图2所示。

采用AD590温度传感器和压力传感器分别对温度信号采集和水位信号采集,将他们转换为电流或电压信号,通过信号放大后再进行A/D转换,并通过LED数码显示管显示,将采集的数据与单片机预置温度(水位)或键盘键入的所需温度(水位)进行比较,用单片机对温度和水位进行的控制。

图1方案一原理图

方案二:

此方案在方案一的基础上做了很大的改进。

用数字型温度传感器PT100和压力传感器进行温度和水位的采集的信号直接送入单片机中,再由单片机程序来进行控制。

另外该方案还包括键盘、液晶显示电路、自动控制进水和出水的装置以及加热装置等。

温度直接通过PT100完成温度数据采集,然后进行AD转换。

压力由HM10把信号传递给单片机,由液晶显示器把水温和水位显示出来,并且还将采集到的数据与键盘键入的所设定的温度和压力进行比较,再由单片机对加热装置和报警装置进行控制。

其原理如图2所示。

2.3.2方案比较与选择

采用AD590温度传感器进行温度采集同样有方案一中的问题,即信号采集、放大与传输过程中的失真不可避免,数码管不能同时显示水温和水位,因而也不予采用。

选用的数字型温度传感器(PT100)能较好的避免前述缺点,另外还设有输入设备—键盘以及显示设备—液晶显示器。

这样既可以同时显示当前水温,当前水位,设定水温,设定水位于一个界面液晶显示屏上,从而可以更加直观明了,使人机对话更加容易,同时也方便了用户的操作和控制。

经比较后最终选择方案二。

温度传感器

LED

CH451

压力传感器

键位选择

报警开关

晶振电路

温度控制

复位电路

图2方案二原理框图

2.4元器件选择

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,所以,本次设计采用AT89S52.

pt100是铂热电阻,它的阻值跟温度的变化成正比。

PT100的阻值与温度变化关系为:

当PT100温度为0℃时它的阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。

它的工业原理:

当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。

工作于-40℃~85℃(主机范围,不是外接的传感器范围)工业级PT100热电阻采集模块,按显示方式分有不带LCD显示的WD系列(WD-PT100、WD-PT1000)和带LCD显示的LM系列(LM-PT100、PT1000)两类。

采集温度范围为-200℃~+200℃,显示精度0.1℃。

HM10高精度压阻式压力传感器,是采用德国HeLM公司先进的硅压阻力敏元件封装在不锈钢壳体内组装调试而成,外壳和接口材料均为不锈钢,介质兼容性好,性能稳定可靠,精度高,密封垫端面密封。

所以,本次设计中,主机芯片采用AT89S52,温度传感器采用PT100,压力传感器采用HM10。

第3章硬件电路设计

3.1系统硬件设计

本系统的硬件以单片机AT89S52为控制核心,液晶显示电路,PT100水温检测电路,温度压力间接控制电路等。

3.2AT89S52单片机引脚图

图3.1AT89S51单片机引脚图

主机的复位方式采用按键复位,根据用户的意愿或想法可以随时复位,以防止热水器产生误差,晶振电路采用12MHZ的晶振。

3.2温度传感器电路(PT100)

图3.2PT100前置放大电路

如采用电阻式传感器作为被测对象,传感元件的引出线有以下几种方式:

二线制、三线制和四线制.采用二线制接法(图1),虽然导线电阻会给测量带来影响,但在测量精度要求不高、测量仪器与被测传感元件距离较近时,常采用二线制.但如果金属电阻本身的阻值很小,那末引线的电阻及其变化也就不能忽视,例如对于Pt100铂电阻,若导线电阻为1Ω,将会产生2.5℃的测量误差.为了消除或减少引线电阻的影响,通常的办法是采用三线联接法加以处理,如图2所示.工业热电阻目前大多采用的都是三线制接法.

在三线制接线电路中,传感元件的一端与一根导线相接,另一端同时接两根导线.传感元件在与电桥配合时,与传感元件相接的三根导线粗细要相同,长度要相等,阻值要一致(图中r1,r2,r3即为引线电阻).其中一根引线与测量仪表连接,由于测量仪表的内阻很大,可认为流过r2的电流接近于零.另两根引线分别与电桥的两个相邻臂相连,这样引线电阻对测量就不会造成影响.

3.2LED显示电路的硬件设计

温度压力信号经过单片机处理之后,需要在显示电路中直观地显示出来。

所以,需要选用合适的显示设备及显示电路,来实现对变压器内温度的实时显示。

在本设计中,采用动态LED驱动方式来实时显示变压器内的温度。

本次设计的现实电路采用CH451为显示芯片,CH451是一个整合了数码管显示驱动和键盘扫描控制以及uP监控的多功能外围芯片。

CH451内置RC振荡电路,可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、位移等功能;

同时还可以进行64键的键盘扫描;

CH451通过可以级联的串行接口与单片机等交换数据;

并且提供上电复位和看门狗等监控功能。

图3.3显示电路

CH451可以动态驱动8个共阴数码管,所有数码管的相同段引脚(段A-段G以及小数点)并联后通过串接的限流电阻R1连接CH451的段驱动引脚SEG0-SEG7,各数码管的阴极分别由CH451的DIG0-DIG7引脚进行驱动。

串接限流电阻R1的阻值越大则段驱动电流越小,数码管的显示亮度越低,R1的阻值一般在60欧姆到1000欧姆之间,在其他条件相同的情况下,应该优先选择较大的阻值。

在数码管的面板布局上,建议数码管从左到右的顺序是N1靠左边,N8靠右边,一边匹配字左右移动命令和字左右循环移动命令。

第4章软件设计

从温度传感器出来的电流信号,经过电流电压转换电路、A/D转换器、转换为单片机可以接收的信号之后,需要对单片机进行编程,实现对温度信号采集、计算和实时显示。

本设计中,软件设计采用模块化结构。

软件上,在单片机上实现多种功能,并保证控制精度,软件设计必须实现功能占CPU时间的分配上做到有主有次,既要保证完整性,又要保证实时性。

温度控制器在软件上采用AT89S52开发,用模块化结构。

本章给出软件设计的流程图。

初始化

用户键盘选择

传感器扫描

比设定值高

加热开始

声光报警,开盖降压

温度显示

压力显示

Y

N

开盖降温

第5章设计总结

本系统以AT89S52单片机为控制核心。

用单片机做为控制器具有新颖、价廉、安全、实用等优点。

本文的一些方法也适用于冰箱、空调等家用电器的电脑控制设计中。

系统实现了键盘识别、液晶显示、温度水位读取以及水温水位的自动控制等多种功能。

并且采用了PID算法,液晶显示器显示,高精度温度传感器,实现了环保节能的目的。

用液晶显示器代替了发光二级管或数码管显示,使该控制器更加新颖、更加直观。

便于用户的操作也达到了用户的特殊需求。

本设计主要阐明用AT89S52单片机来控制温度和水位及其显示原理,当然在设计中还存在一些不足之处,像定时加热、定时进水、无极调节水位以及保温装置的设计等。

参考文献

[1]孙涵芳等.单片机原理及应用[M].北京:

北京航空航天大学出版社,2007

[2]徐爱钧.智能化测量控制仪表原理与设计

(2)[M].北京:

北京航空航天大学出版社,2008

[3]梅丽凤.单片机原理及接口技术.清华大学出版社,2006.5

[4]周航慈等.智能仪器原理与设计.北京:

北京航空航天大学出版社,2005.3

[5]何立明.MCS-51系列单片机应用系统设计—系统配置与接口技术[M],北京:

北京航空航天大学出版社,2009

附录Ⅰ

总电路图

附录Ⅱ

#include<

absacc.h>

REG52.h>

stdio.h>

intrins.h>

#defineulongunsignedlong

#defineuintunsignedint

#defineucharunsignedchar

#definepara10x20;

#definedat1DBYTE[0x30]

#definedat2DBYTE[0x31]

#defineLCMDWXBYTE[0xF0FF]

#defineLCMCWXBYTE[0xF1FF]

#definecomDBYTE[0x32]

#defineO_YDBYTE[0x33]

#defineO_XDBYTE[0x34]

#definecode_1DBYTE[0x35]

sbitACC_0=ACC^0;

sbitACC_1=ACC^1;

sbitACC_3=ACC^3;

sbitcsh=P3^2;

sbitjsh=P3^1;

sbitswen=P3^3;

sbitDQ=P3^4;

sbitL1=P2^3;

sbitL2=P3^5;

sbitL3=P2^2;

sbitL4=P2^3;

sbits_a=P2^7;

sbits_b=P2^6;

sbits_c=P2^5;

sbits_d=P2^4;

unsignedcharw_s=1,s_s=1,buzzk=0,bflag=0;

unsignedchart=0,tb=0,ts=0,tg=0,shs=13,shz=11,

s_tb=0,s_ts=0,s_tg=0,s_sh=13,kk,mm=0,p=0;

/***************读取温度函数**************/

unsignedintread_temperature(void)

{union{unsignedcharc[2];

unsignedintx;

}temp;

ow_reset();

//总线复位

write_byte(0xCC);

//发SkipROM命令

write_byte(0xBE);

//发读命令

temp.c[1]=read_byte();

//温度低8位

temp.c[0]=read_byte();

//温度高8位

//SkipROM

write_byte(0x44);

//发转换命令

temp.x<

<

=4;

return(temp.c[0]);

//returntemp.x/2;

}

voidST01(void)

{do{ACC=LCMCW;

while(ACC_0==0&

&

ACC_1==0);

}

voidPR12(void){ST01();

LCMCW=com;

voidPR11(void){ST01();

LCMDW=dat2;

PR12();

voidPR1(void){ST01();

LCMDW=dat1;

PR11();

voidST3(void)

{do{ACC=LCMCW;

while(ACC_3==0);

}

voidchushi_1(void)

{dat1=0x00;

dat2=0x00;

com=0x40;

PR1();

/*设文本显示区域首地址*/

dat1=para1;

dat2=0x00;

com=0x41;

/*设文本显示区域宽度*/

dat1=0x00;

dat2=0x08;

com=0x42;

/*设图形显示区域首地址*/

com=0x43;

/*设图形显示区域宽度*/

com=0xa7;

/*光标形状设置*/

com=0x80;

/*显示方式设置逻辑"

或"

合成*/

com=0x9c;

/*显示开关设置开文本和图形显示*/

/*************清显示子程序**************/

voidCLEAR(void)

{unsignedchari,j;

dat1=0x00;

com=0x24;

com=0xb0;

for(i=0;

i<

205;

i++)/*205*/

{for(j=0;

j<

=40;

j++)/*40*/

{ST3();

LCMDW=0x00;

}

com=0xb2;

/**************PID计算*****************************/

floatPIDCalc(PID*pp,intNextPoint)

{

intdError,

Error;

Error=pp->

SetPoint*10-NextPoint;

//偏差

pp->

SumError+=Error;

//积分

dError=pp->

LastError-pp->

PrevError;

//当前微分

PrevError=pp->

LastError;

LastError=Error;

return(pp->

Proportion*Error//比例项

+pp->

Integral*pp->

SumError//积分项

Derivative*dError//微分项

);

/************************PID输出值的处理***********************/

voidactive()

{

if(fOut<

=0)jwen=1;

//温度高于设定值,关闭热得快

else{

if(fOut>

30*stPID.Proportion)//温度低于设定值2摄氏度

jwen=1;

//打开电热得快

}

/************PID控制*************************/

unsignedintget_temperature(void)

{floatfT;

fT=read_temperature();

tb=fT/100;

ts=fT/10%10;

tg=fT%10;

yej();

stPID.Proportion=1;

//设置PID比例值

stPID.Integral=0.5;

//设置PID积分值

stPID.Derivative=0.0;

//设置PID微分值

fOut=100*PIDCalc(&

stPID,(int)(fT*10));

//PID计算

active();

intscan(void)

{inti,j,r=16,key=16;

for(i=0;

=3;

i++)

{P1|=0xff;

P1&

=~(0x01<

i);

//i行输出为0

for(j=4;

8;

j++)

{if((P1&

(0x01<

j))==0)//j行为0

{delay(30);

if((P1&

j))==0)

{key=P1&

0xff;

switch(key)

{case0xe7:

r=0;

break;

case0xee:

r=1;

case0xde:

r=2;

case0xbe:

r=3;

case0xed:

r=4;

case0xdd:

r=5;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2