电热水器控制系统0.docx

上传人:b****6 文档编号:5012516 上传时间:2022-12-12 格式:DOCX 页数:19 大小:223.35KB
下载 相关 举报
电热水器控制系统0.docx_第1页
第1页 / 共19页
电热水器控制系统0.docx_第2页
第2页 / 共19页
电热水器控制系统0.docx_第3页
第3页 / 共19页
电热水器控制系统0.docx_第4页
第4页 / 共19页
电热水器控制系统0.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

电热水器控制系统0.docx

《电热水器控制系统0.docx》由会员分享,可在线阅读,更多相关《电热水器控制系统0.docx(19页珍藏版)》请在冰豆网上搜索。

电热水器控制系统0.docx

电热水器控制系统0

 

UniversityofSouthChina

 

计算机控制技术课程设计

 

题目:

电热水器控制系统

学生姓名:

班级:

自动化073班

学号:

指导老师:

洪镇南

 

2010年 12月30日

 

1系统简介

我国是热水器生产大国,伴随着住宅消费和人们对生活品质的提高,热水器已由一个高档的奢侈品成为居民乔迁新居、厨卫装修的必备家庭用具。

热水器按照能源类型分为:

电热水器。

燃气热水器和太阳热水器。

电热水器安全记录比燃气热水器好。

太阳能热水器安装复杂,但节能环保。

燃气热水器小巧,品种多,使用最方便。

太阳能热水器受到安装场所的限制不是每个家庭都可以使用的,北方由于天气的原因使用此类热水器受到安装场所的限制,不是每个家庭都可以使用的,北方由于天气的原因使用此类热水器的更少了;燃气热水器目前较为常用的热水器产品之一,但如果家里之前没有安装过,重新安装比较麻烦,需要进行燃气和水的管道改造;电热水器以其方便、可靠等各种优势受到了很多的青睐。

电热水器是指用电加热的热水器,是一种可供洗手间。

厨房。

浴室使用的家用电器,具有无污染。

安全。

保温时间长。

使用方便等优点。

本系统采用单片机为主控芯片设计电热水器控制系统,其主要任务是对电热水器进行温度采集与显示、时钟的显示。

热水器的开机方式控制等。

主要功能如下:

(1)测量热水器内的温度,并通过显示器实时显示水温,显示范围为0~70℃。

(2)可以手动校正时钟。

(3)可以人工设定热水器内的烧水的温度,范围在20~70℃之间,也可以无须设定,开关打后自动烧水,最高温度为70℃。

(4)要求热水器控制系统有较强的抗干扰能力。

2系统整体设计方案

电热水器控制系统的整体设计方案包括硬件设计方案和软件设计方案。

案件是指以微控制器作为核心,由外接温度测量电路、键盘、热水器加热开关、LED显示电路、功能指示电路组成,硬件设计方案如图1所示。

 

 

图1电热水器控制系统硬件框图

系统软件整体设计流程如下所述:

电热水器上电后,首先进行系统初始化,判断加热开关是否打开,执行相应的操作;如果有功能键按下,则进入功能设定界面,包括校准时钟、设定开机时间、设定热水温度和设定定时加热时间4中功能,设定完毕后,再次按下功能键表示设定生效;若无功能键按下或者功能设定完毕后,则进行各种条件的判断并执行相应的操作;最后,各种条件判断完毕后,程序回到时钟和温度的读取与显示,进而开始新一轮的程序运行。

3硬件设计

3.1微控制器模块

在本控制系统中,选择性价比较高的ATMEL单片机AT89C52。

AT89C52提供以下标准功能:

8KBFlash删速存储器,256B内部RAM,32个I/O口线,3个16位定时器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

微控制器电路原理图如图2所示。

D100为电源指示灯;P0口连接键盘和二极管,二极管D101~D104分别为校正校准时钟、设定开机时间。

设定热水温度和设定定时加热时间4种功能的指示灯,Key_F1~Key_F4分别为功能按键、“+”按键、“-”按键、开关按键;P1.0~P1.2引脚与模数转换芯片CS5513相连;P1.3~P1.5引脚与LED驱动芯片CH451相连;P1.6和P1.7控制实时时钟的读写;P2.0通过光耦控制电磁阀开关,用于启动和关闭加热设备;P2.1~P2.6控制LED八段数码管的片选。

 

图2微控制器电路原理图

3.2温度测量

在控制领域中,温度的检测与控制占有很重要的地位,温度测控在各个领域中都得到广泛的应用。

本系统中温度测量主要由Pt1000铂电阻温度传感器、信号调理电路和模数转换电路三部分组成。

3.2.1Pt1000铂电阻温度传感器

铂电阻是温度传感器的敏感元件,其电阻与温度成一定函数关系。

铂电阻温度传感器是利用其电阻与温度成一定函数关系而制成的温度传感器。

铂电阻具有测量范围大、测温精度高。

温度性好。

示值复现性高和耐氧化等特点,被用来为0~926℃温度区内的国际标准温度计。

但是铂电阻的特性曲线是非线性的,在

-200℃≤t≤650℃时:

Rt=R0[1+At+Bt^2+C(t-1000)t^3],在0℃≤t≤650℃时:

Rt=R0[1+At+Bt^2]

式中Rt为温度t℃时的热电阻的电阻值。

R0为温度时0℃的热电阻的电阻值。

A、B、C是通过实验确定的常数,它们的数值分别为A=3.90802*10^-3,B=-5.802*10^-7,C=-4.22*10^-7.

本系统中采用Pt1000,即R0=1000欧姆,温度要求范围为0~70℃,所以合适式:

Rt=R0[1+At+Bt^2],由于铂电阻的特性曲线是非线性的,因此在设计时必须进行线性化校正。

3.2.2信号调理电路

传感器输出的电压信号比较弱,所以合适的放大电路是必需的,而且为了减小放大电路对测量电桥的影响,放大电路应具有高输入阻抗的特性,并且具有低漂移、高精度及较强的抗干扰能力。

本系统采用的是TLC2201。

TLC2201是一款高精度、低噪音的功率放大器,先进的LinCOMOS工艺使其应用相当广泛。

而且价格适中,在仪器仪表中有较好的性价比。

Pt1000与TLC2201的接口电路如图3所示。

图3Pt1000与TLC2201接口电路原理图

由图4知,运算放大器U201的连接方式是电压跟随器的方式,电压跟随器有缓冲器、隔离、提高带载能力的作用。

Z201提供的是一个稳定的电压1.2V,R202、R203、R204组合成的串并电路形成一个可调的电压,并同时输入到U201的同相输入端。

图3中R201是限流电阻,防止电流过大而使得稳压管损坏。

C201、C202分别是独石电容和电解电容,分别滤除电源的高频干扰和低频干扰。

CH_IN网标识的引脚输出调理后的信号,此引脚与模数转换电路的信号输入端相连。

运放U202的连接方式是同相比例放大器。

同相比例放大器具有高输入电阻、低输出电阻的特点,对前级电路呈高组态,对后级电路呈低组态,因而对前后电路起到隔离作用。

Rpt是铂电阻传感器的应变电阻值,在温度发生变化的时候,电阻相应改变。

U202的同相输入端输入的是U201输出的固定信号,其反相输入是由R208、Rpt接成的一个负反馈的放大电路。

3.2.3模数转换电路

此系统选择的A/D芯片为一种串行输出的A/D转换器CS5513。

CS5513是CirrusLogic公司生产的20位串行输出模数转换芯片,具有成本低、易于使用、可进行直流测量的优点。

该产品包含一个4阶的△∑调制器和一个滤波器,可有效地抑制线性噪声。

CS5503的基本参数和特点如下:

(1)△∑模数转换器:

a)线性误差:

0.0015%FS

b)无噪声分辨率:

17位。

(2)差分模拟输入(双极性)。

(3)参考电压范围为250mV-5V。

(4)输出子速率为107Hz。

(5)带有片上振荡器。

(6)低功耗,正常模式时为2.5mW,休眠模式时为10uW.

其内部结构如图4所示。

CS5513的引脚是按标准排列,各引脚的功能如下。

1脚VREF:

参考电压输入。

2、3脚AIN+、AIN-:

差分输入引脚。

图4CS5513内部结构

4脚CS:

双功能脚,低电平时,低电平时,当输出寄存器有新数据时,SDO将变成低电平;高电平时,SDO脚输出为高阻抗。

5脚SCLK:

串口时钟输入线。

6、7脚V+、V-:

提供正负模拟电源。

8脚SDO:

串数据输出端。

CS5513与模拟输入通道的接口电路如图5所示,经由信号调理电路后得到的模拟信号输入到CS5513芯片的AIN+输入端,CS5513的参考电压为2.5V。

图5CS55132的接口电路设计

3.3实时时钟

本实时时钟选择PHILIPS公司的PCF8563芯片实现,它是一款工业低功耗的CMOS实时时钟芯片。

它提供一个可编程的时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过IIC总线接口串行传递。

PCF8563具有以下基本特征:

(1)地工作电流:

典型值为0.25uA。

(2)400KHz的IIC总线接口。

(3)可编程时钟输出频率为:

32.758KHz,1024Hz,32Hz,1Hz。

(4)内含复位电路振荡器电容和掉电检测电路。

(5)四种报警功能和定时器功能。

(6)IIC总线从地址:

读,0A3H;写,0A2H.

PCF8563的硬件连接原理图如图7所示。

图7PCF8563连接原理图

3.4LED显示电路

在本系统中需要显示的有时钟和温度两个部分,显示的内容较少,所以采用LED显示。

时钟显示采用4个LED显示,温度显示采用2个LED显示。

本系统从业CH4511来实现LED的驱动设计。

CH451是一个整合了数码管显示驱动和键盘扫描控制,以及uP监控的多功能外围芯片。

CH451内置RC振荡电路,可以直接动态驱动8位数码管或者64位LED,具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。

CH451的引脚接线图如图8所示

图9CH451引脚定义

GND:

接地,持续电流不小于200mA。

DOUT:

串行接口的数据输出。

LOAD:

4线串行接口的数据输入控制,带上拉。

DIN:

4线串行接口的数据输入,带上拉。

DCLK:

串行接口数据时钟,带上拉。

CH451与LED接线的显示电路如图10所示

 

图10CH51与LED连接的显示电路

如图10所示:

电路中主要元件是LED显示驱动芯片CH451,驱动6个带小数点的数码管。

在CH451的段输出加了200欧姆的限流电阻调节数码管的工作电流。

由于CH451DE为选择端DIG0-DIG7的输出为低电平有效,所以要选用共阴极型数码管。

数码管的公共端分别借至Dig0—Dig5,由CH451控制刷新相应的位显示。

4软件设计

4.1模数转换软件设计,如图11所示,AD转换流程图如下所示,

 

图11AD转换流程图

部分程序实现代码如下:

1)unsignedlongCS5513()

功能:

读取CS5513的AD转换数据

unsignedlongCS5513()//读取AD转换值程序实现

{

uchari;

ucharover_ad=0;

unsignedlongAD;

AD=0;

ADCS=0; //片选,低电平有效

delay_1();//延时

ADCLK=0;

delay_1();

time_50ms=0;

while(ADSDO);//判断是否数据转换结束

for(i=0;i<4;i++)

{

ADCLK=1;

delay_1();

over_ad<<=1;

if(ADSDO)over_ad++;//读前面的几位,是标志位

ADCLK=0;

delay_1();

}

for(i=0;i<20;i++)//读后面的20位数据值

{

ADCLK=1;

delay_1();

AD=AD<<1;//数据放入无符号长整形的AD变量中,并移位保存。

if(ADSDO)AD++;

ADCLK=0;

delay_1();

}

if(!

error_ad)//判断转换是否出错

{

time_50ms=0;

while(!

ADSDO)

{

if(time_50ms>=6)

{

error_ad=1;

ADCLK=0;delay_1();

ADSDO=1;delay_1();

for(i=0;i<48;i++)

{

ADCLK=1;delay_1();

ADCLK=0;delay_1();

}

break;

}

}

}

ADCS=1;

for(i=0;i<4;i++)delay_1();

if(over_ad)error_ad=1;

return(AD);//子程序返回一个变量AD的值,以待数据处理用。

}

4.2实时时钟软件设计

PCF8563芯片的工作原理如下:

它有16个8位寄存器,一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器,一个可分频器,一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHzIIC总线接口。

IIC总线从地址:

读:

0A3H;写:

0A2H。

程序代码如下:

/********

(1)函数名:

voidI2CStart(void)

*功能:

发送I2C总线的起始位

*****/

voidI2CStart(void)

{

EA=0;

SDA=1;SCL=1;SomeNOP();

SDA=0;SomeNOP();SCL=0;

}

/******************************************************************

*

(2)函数名:

voidI2CStop(void)

*功能:

发送I2C总线的停止位

*****************************************************************/

voidI2CStop(void)

{

SCL=0;SDA=0;SomeNOP();

SCL=1;SomeNOP();SDA=1;

EA=1;

}

/*****************************************************************

*(3)函数名:

voidWaitAck(void)

*功能:

主机等待从机发送来的确认ACK

********************************************************************/

boolWaitAck(void)

{

ucharerrtime=255;//因故障接收方无ACK,超时值为255。

SDA=1;SomeNOP();

SCL=1;SomeNOP();

while(SDA)

{

errtime--;

if(!

errtime)

{

I2CStop();

SystemError=0x11;

returnfalse;

}

}

SCL=0;

returntrue;

}

/*********************************************************************

*(4)函数名:

voidI2CSendByte(ucharch)

*功能:

向总线发送一个字节的数据

*******************************************************************/

voidI2CSendByte(ucharch)

{

uchari=8;

while(i--)

{

SCL=0;_nop_();

SDA=(bit)(ch&0x80);

ch<<=1;SomeNOP();

SCL=1;SomeNOP();

}

SCL=0;

}

/*******************************************************************(5)函数名:

ucharI2CReceiveByte(void)

*功能:

接收总线上发来的一个字节的数据

*****************************************************************/

ucharI2CReceiveByte(void)

{

uchari=8;

ucharddata=0;

SDA=1;

while(i--)

{

ddata<<=1;

SCL=0;SomeNOP();

SCL=1;SomeNOP();

ddata|=SDA;

}

SCL=0;

returnddata;

}

/********************************************************************

*(6)函数名:

voidGetPCF8563(ucharfirsttype,ucharcount,uchar*buff)

*功能:

读取时钟芯片PCF8563的时间

******************************************************************/

voidGetPCF8563(ucharfirsttype,ucharcount,uchar*buff)

{

uchari;

I2CStart();

I2CSendByte(0xA2);//0xA2表示从机的写数据地址

WaitAck();

I2CSendByte(firsttype);

WaitAck();

I2CStart();

I2CSendByte(0xA3);//0xA3表示从机的读数据地址

WaitAck();

for(i=0;i

{

buff(i)=I2CReceiveByte();//从总线上读取count字节的数据

if(i!

=count-1)SendAck();//除最后一个字节外,其他都要从MASTER发应答。

}

SendNotAck();

I2CStop();

}

/********************************************************************

*(7)函数名:

voidSetPCF8563(uchartimetype,ucharvalue)

*功能:

调整PCF8563芯片中的时钟值

*

************************************************************/

voidSetPCF8563(uchartimetypeucharvalue)

{

I2CStart();

I2CSendByte(0xA2);//0xA2表示从机的写数据地址

WaitAck();

I2CSendByte(timetype);//将时间类型发送到总线

WaitAck();

I2CSendByte(value);//将新设置的时间发送到总线

WaitAck();//等待从机应答

I2CStop();

}

4.3LED显示软件设计

LED的显示采用CH451芯片驱动,CH451具有硬件实现的高速4线串行接口,包括4根信号线:

串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。

LED显示程序代码如下:

/****************************************************************

*

(1)函数名:

voidCH451_Wcmd(uintcommand)

*功能:

写入CH451控制命令

*

**voidCH451_Wcmd(uintcommand)

{

uchari;

LOAD=0;

for(i=0;i<12;i++)

{

DIN=command&1;

DCLK=0;

DCLK=1;

command>>=1;

}

LOAD=1;

}

/*****************************************************************

(2)函数名:

voidch451_write(uintcommand)

*功能:

CH451初始化

****************************************************************/

voidCH451_Init()

{

DIN=0;

DIN=1;

CH451_Wcmd(CH451_RESET);//设置复位

CH451_Wcmd(0x401);

CH451_Wcmd(0x580);//设置BCD译码方式

CH451_Wcmd(0x600);//设置闪烁控制

}

/*****************************************************************(3)函数名:

voidCH451_Wdata(ucharaddress,ucharda)

*功能:

向对应的八段数码管写入数据

*

***********************************************************/

voidCH451_Wdata(ucharaddress,ucharda)

{

uchari;

DIN=0;

for(i=0;i<8;i++)//发8位的数据,刚好7段加个点

{

DIN=da&0x01;

da=da>>1;

DCLK=0;//DCLK上升缘DIN输入数据

;

DCLK=1;

}

for(i=0;i<4;i++)//发一个4位BCD码,用于选通数据的通道

{//0~7个LED的阴极选通,用于选择第几个LED

DIN=address&0x01;

address=address>>1;

DCLK=0;

;

DCLK=1;

}

LOAD=0;//LOAD上升缘,串行数据帧发送完成标志

LOAD=1;

}     //加载字数据到LED

5元件清单

元件序号

型号

主要参数

数量

备注

C100,C101

20PF

2

电容

C201,C205,C207

104uF

3

电容

C202,C206,C208,C501

10nF

4

电容

C203,C204,C209

0.1uF

3

电容

D100,D101,D102,D103,D104

5

发光二极管

Rpt-1000

1

铂电阻

R102,R103,R104,R105

10K

4

电阻

R106,R107,R108,R109

100

4

与电阻

U100

89C52

1

51单片机

U201,U202

TLC2201

2

运算放大器

U203

CS5513

1

AD转换芯片

U300

CH451

1

LED驱动芯片

U400

PCF8563

1

时钟芯片

Key_F1,Key_F2,Key_F3,Key_F4,Key_S

5

按键按钮

5参考文献

[1]康华光.电子技术基础(数字部分)[M].北京:

高等教育出版社,2008.

[2]康华光.电子技术基础(模电部分)[M].北京:

高等教育出版社,2008.

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1