当h=c时,传感器电阻阻值R为0,对应,系统处于100%水位。
其中,环形振荡器产生的方波周期T(或f)可通过单片机的两个定时/计数器(T0、T1)来确定,T1用来计数,T0用来定时。
3、报警系统
该系统利用蜂鸣器报警,系统故障报警和水温水位信息报警,以便及时掌握水温水位控制系统的工作状况,系统自己不能处理的就可以人工辅助处理,这样能让系统更好的运行在稳定状况下。
2.2设计方案
2.2.1系统设计方案的选择
方案一:
PIC16C72单片机为控制器件的智能电热水器PIC16C72是美国微芯(Microchip)公司推出的8/11位单片机,采用宽字节单周期指令,哈佛双总线和RISC结构,其数据吞吐量最高可达6MIPS,这几乎是其它大多数8位微控制器速度的4倍128脚封装的PIC16C72单片机集成了以下主要功能:
2KB片ROM程序存储器,128KB数据存储器;22位I/O线;5路8位A/D转换器,2个8位,1个16位多功能计数器/定时器,1个捕捉/比较/脉宽调制(CCP)部件。
以PIC16C72为控制芯片的电热水器,虽然功能很强大,但是存在一些很需要改进的地方:
中断的现场保护是中断应用中一个很重要的部分由PIC16C72的指令系统中没有专门的PUSH(入栈)和POP(出栈)指令,所以要用一段程序来实现该功能。
对可能用到的W寄存器和STATUS寄存器容进行现场保护1然后在中断服务程序中对马达,继电器进行控制1漏电检测报警在中断里给出,而每50ms进入一次中断,所以发生漏电时最多50ms即可切断电源1入口→中断保护→控制马达→控制继电器如果用直流对电机进行控制,其转速太快,过调量太大,容易引起震荡。
方案二:
根据控制系统要求,首先确定PLC的控制模块,估算出所需要的I/O点数(数字输入/输出量、模拟输入/输出量),再增加10%~20%的备用量,以便随时增加控制功能,保证系统投入运行后能够替换个别故障点或弥补遗漏的点数,统计出I/O总点数后饥渴确定PLC的控制规模,从而确定存储器(用于存储用户程序和数据)的容量,存储器容量除了根据PLC的控制规模确定。
也可以按照如下方法计算,再增加25%~30%的备用量,以便随时增加用户程序。
一种方法是根据编程实际使用的节点数计算,即编完程序之后,根据节点数计算出实际使用容量。
另一种方法是估算法,只有开关量时,所需存总数=开关量(输入/输出)总数*10;只有模拟量输入时,所需存总数=模拟量路数*120。
在模拟量输入、输出同时存在时,所需存总数=模拟量路数*250;同时,应考虑PLC提供的部继电器和寄存器的数量,以便节省资源。
系统控制框图如下:
图2.2系统控制框图
这种设计方法,需要使用节点数来计算一些数据比较繁琐。
所以不采用这种方法。
方案三:
单片机具有结构简单、控制能力强、可靠性高、体积小、价格低等优点,在许多行业都得到了广泛的应用.通过三极管的导通截止特性来判断液位的位置,并且可以通过按键切换检测压力。
但是在过程中只能检测三点,虽然可以扩展,但是占了太多的I/O口,容易造成资源的浪费。
而且仅显示单元就占用了12个I/O口,同样属于资源浪费。
在电机电路设计方面,采用的三极管的导通截止来控制点击的正转与反转,虽然设计简单,但是过多的使用三极管以及二极管类的元器件,也会使成本升高。
而且,既然是热水器的自动控制装置,那么必不可少的就是温度的检测,而其他方案中却忽略了这点,造成了最大的残缺。
通过以上三种设计方法的比较来看,实现电热水器的智能控制可以有很多种方法。
可以采用可编程序控制器PLC,各种单片机来实现。
相比PIC和PLC,单片机技术新、先进、体积小、精度高、功能扩展极其方便,且衡量之下它的成本较之其它方案要低些。
除此之外单片机的外围电路也非常的简单,系统紧凑,对于这种小规模的应用系统,单片机具备了最佳的价格和最简单的电路。
再考虑到成本控制和软硬件实现难度,采用方案三的控制系统设计,可以进一步提高电热水器的智能作用,能够保证持续的热水供应,并能够在异常情况下自动断电,可以满足人们日常生活的需要,提高了人们生活的质量。
1、单片机的选择
方案一:
采用AT89C2051芯片,它具有体积小、功耗小。
含有中断、定时/计数器。
但IO口数和存储空间相对较少,所以此芯片不利于系统的工作和系统功能的扩展。
方案二:
采用AT89C51芯片,它具有AT89C2051芯片的所有功能,且IO口数相对较多,价钱相对也比较便宜,但存储空间不是非常大。
方案三:
采用80C51芯片,它具有AT89C2051和AT89C51芯片的所有功能,且IO口数非常多,比AT89C2051和AT89C51多,价钱虽然比AT89C2051和AT89C51昂贵,但存储空间非常大,可以到达8K。
综上所述,我选择80C51芯片作为本次设计的主控芯片,主要因为这个芯片的存储空间比较大,可以运用很多场所,与本设计也相符。
2.2.2各部件控制系统方案
1、温度控制系统的设计方案讨论
如果采用热电阻,电路需接A/D转换电路,由单片机换算出实际温度,电路结构复杂,而且也精度不高,DS18B20可直接与单片机的1位I/O相接,电路结构简单,占用单片机的口线资源少,精度高,而且成本低,DS18B20以其各方面优点作为温度传感器进行温度采样应用于此水温水位控制系统中实在是当仁不让。
2、水位控制系统的设计方案讨论
此系统要进行水温水位控制,马上想到的是水温水位的两个参数的控制,在温度传感器采用DS18B20之后,对于水位的控制不假思索的想到要运用水位传感器,经过几天的资料搜集,发现水位的传感器是通过压力传感器变换过来的,看到最多的是浮球式液位传感器,而且此传感器的适用温度围和测试精度也适合该设计系统,但此方案的缺点是价格非常昂贵;后来又考虑采用应用于电子秤中的数字压力传感器,去测得整个容器中水的变化和容器中液位的换算关系,此想法基于电子秤能够测得一纸的重量,但是在实际应用中,考虑到容器的氧化,容器部的水垢增多,而且容器的外置也会产生整个容器重量的变化,从而造成液位采集的不准确,此压力传感器的市场价格也比较昂贵,应用于此控制模型中也是一种浪费;因此我自制了3根线将容器中的液位分成了3个水位挡,通过和电源正极的结合,利用水导电的特性,通过9012三极管等元件构成的驱动电路的电平转换,将液位数据输入P2口,通过单片机换算转换成液位数据存入一个存储器单元,随时读取。
3、数据显示系统的设计方案讨论
为了能构造一个适合的人机界面,在诸多的显示器件中数码管的液晶字符性显示器非常适合运用于此控制系统当中的,它的功能特性也完全适用于此设计系统的功能要求,也不会造成资源的浪费,所以就确定数码管作为本此设计系统的显示器件。
为了配合显示器件,就需设置按键,根据系统的功能要求和单片机的口线资源,为系统配制了3个独立式键盘,用来调节温度报警值。
第3章系统硬件设计
3.1系统总体设计
本课题是基于80C51单片机的智能电热水器的控制器的设计,要达到的控制要求有:
(1)用4位数码管显示水温,4位数码管显示预设温度。
(2)水温检测显示围为00~99℃,精度为±2℃。
(3)温度预设围为05~60℃,当检测温度低于预设温度1℃时,开始加热;检测温度高于预设温度1℃时,停止加热。
(4)电源开启后,根据上次设定的温度(220V总电源不能关闭)自动进入工作状态。
如220V总电源关闭后再开机,预设温度自动定为27℃。
温度+键:
每按一次该键,预设温度加1℃,长按该键(时间超过1秒以上),预设温度快速增加,当预设温度加到38℃时,按该键不起作用。
温度-键:
每按一次该键,预设温度减1℃,长按该键(时间超过1秒以上),预设温度快速减小,当预设温度减到05℃时,按该键不起作用。
(5)设置5个面板指示灯。
电源指示灯(红):
接通220V电源,该指示灯点亮。
加水指示灯(继电器旁的绿),加热指示灯(继电器旁的红):
加热元件工作时,该指示灯被点亮。
报警指示灯(红):
当缺水情况时,该指示灯被点亮。
(6)报警设置。
高温报警:
当检测温度高于65℃时,自动报警。
低温报警:
当检测温度低于0℃时,自动报警。
缺水报警:
当储水箱缺水时,自动报警。
漏电报警:
当热水器发生漏电情况时,自动报警。
(7)设置一个蜂鸣器,当热水器出现异常情况而报警时,由蜂鸣器发出报警声,并自动切断加热元件的供电。
本系统需要完成的控制系统技术性能大致总结如下:
(1)使用电源220VAC,功耗小于5W。
(2)水温显示,测温围0-99摄氏度;精度正负2摄氏度。
(3)水位分档显示,分三档:
低,中,高。
(4)具有低水位上水,手动上水等功能。
(5)缺水报警:
出现缺水状态时,蜂鸣报警,缺水指示灯亮。
高温报警:
当温度高于设定温度时,蜂鸣报警系统开启。
为了使设计具有高可靠性,与实际运用的紧密结合性,从经济、实用的角度出发,我们对热水器自动控制系统进行精心的设计,在设计过程中,我们综合多方面的知识进行分析。
系统的整体结构图如下图所示:
图3.1总体设计方框图
1、单片机最小系统
图3.2单片机最小系统
(1)单片机9脚接复位电路,可按复位按钮S1给单片机复位。
(2)晶振采用12MHZ。
(3)由于单片机只访问片FlashROM并执行部程序存储器中的指令,因此单片机的31脚接高电平VCC。
3.2各单元电路设计
3.2.1控制单元设计
80C51芯片有40个引脚,4kbytesflash片程序存储器,128bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片时钟振荡器。
80C51单片机是一种低功耗高性能的CMOS8位微控制器,置8KB可在线编程闪存。
该器件采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C51指令集兼容。
片程序存储器允许重复在线编程,允许程序存储器在系统通过SPI串行口改写或用同用的非易失性存储器改写。
通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,80C51便成为一个高效的微型计算机。
它的应用围广,可用于解决复杂的控制问题,且成本较低。
其结构框图如图3.3所示。
图3.380C51结构框图
图3.480C51
此外,80C51设计和配置了震荡频率可为12MHZ并可通过软件设置省电模式。
空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。
1、主要功能特性:
·兼容mcs-51指令系统
·4k可反复擦写(>1000次)ispflashrom
·32个双向i/o口
·4.5-5.5v工作电压
·2个16位可编程定时/计数器
·时钟频率0-33mhz
·全双工uart串行中断口线
·128x8bit部ram
·2个外部中断源
·低功耗空闲和省电模式
·中断唤醒省电模式
·3级加密位
·看门狗(wdt)电路
·软件设置空闲和省电功能
·灵活的isp字节和分页编程
·双数据寄存器指针
2、引脚功能介绍
按照功能,80C51的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O口、控制和复位等。
1.多功能I/O口
80C51共有四个8位的并行I/O口:
P0、P1、P2、P3端口,对应的引脚分别是P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过部的上拉电阻把端口拉到高电位,此时可用作输入口。
P1口作输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在对Flash编程和程序校验时,P1口接收低8位地址。
另外,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX),如表3.1所示。
表3.1 P1口管脚复用功能
端口引脚
复用功能
P1.0
T2(定时器/计算器2的外部输入端)
P1.1
T2EX(定时器/计算器2的外部触发端和双向控制)
P1.5
MOSI(用于在线编程)
P1.6
MISO(用于在线编程)
P1.7
SCK(用于在线编程)
③P2端口,该口是带有部上拉电阻的8位双向I/O端口,P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过部的上拉电阻把端口拉到高电位,此时可用作输入口。
P2口作输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器或16位的外部数据存储器时,P2口送出高8位地址,在访问8位地址的外部数据存储器时,P2口引脚上的容(就是专用寄存器(SFR)区中P2寄存器的容),在整个访问期间不会改变。
在对Flash编程和程序校验期间,P2口也接收高位地址或一些控制信号。
④P3端口,该口是带有部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过部的上拉电阻把端口拉到高电位,此时可用作输入口。
P3口作输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在80C51中,同样P3口还用于一些复用功能,如表3.2所列。
在对Flash编程和程序校验期间,P3口还接收一些控制信号。
表3.2P3端口引脚与复用功能表
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
表3.2(续)
2.RST 复位输入端。
在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。
看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。
在SFRAUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。
DISRTO位的默认状态,是复位高电平输出功能使能。
3.ALE/PROG 地址锁存允许信号。
在存取外部存储器时,这个输出信号用于锁存低字节地址。
在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。
一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。
但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。
在需要时,可以把地址8EH中的SFR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。
在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。
4.PSEN 程序存储器允许信号。
它用于读外部程序存储器。
当80C51在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。
在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。
5.EA/V