当h=c时,传感器电阻阻值R为0,对应,系统处于100%水位。
其中,环形振荡器产生的方波周期T(或f)可通过单片机的两个定时/计数器(T0、T1)来确定,T1用来计数,T0用来定时。
3、报警系统
该系统利用蜂鸣器报警,系统故障报警和水温水位信息报警,以便及时掌握水温水位控制系统的工作状况,系统自己不能处理的就可以人工辅助处理,这样能让系统更好的运行在稳定状况下。
2.2设计方案
2.2.1单片机的选择
方案一:
采用AT89C2051芯片,它具有体积小、功耗小。
含有中断、定时/计数器。
但IO口数和存储空间相对较少,所以此芯片不利于系统的工作和系统功能的扩展。
方案二:
采用AT89C51芯片,它具有AT89C2051芯片的所有功能,且IO口数相对较多,价钱相对也比较便宜,但存储空间比较小。
方案三:
采用AT89S52芯片,它具有AT89C2051和AT89C51芯片的所有功能,且IO口数非常多,比AT89C2051和AT89C51多,但价钱比较昂贵。
综上所述,我选择AT89C51芯片作为本次设计的主控芯片,主要因为这个芯片已经能满足本次设计的要求,且价格也比较适中。
2.2.2各部件控制系统方案
1、温度控制系统的设计方案讨论
如果采用热电阻,电路需接A/D转换电路,由单片机换算出实际温度,电路结构复杂,而且也精度不高,DS18B20可直接与单片机的1位I/O相接,电路结构简单,占用单片机的口线资源少,精度高,而且成本低,DS18B20以其各方面优点作为温度传感器进行温度采样应用于此水温水位控制系统中实在是当仁不让。
2、水位控制系统的设计方案讨论
此系统要进行水温水位控制,马上想到的是水温水位的两个参数的控制,在温度传感器采用DS18B20之后,对于水位的控制不假思索的想到要运用水位传感器,经过几天的资料搜集,发现水位的传感器是通过压力传感器变换过来的,看到最多的是浮球式液位传感器,而且此传感器的适用温度范围和测试精度也适合该设计系统,但此方案的缺点是价格非常昂贵;后来又考虑采用应用于电子秤中的数字压力传感器,去测得整个容器中水的变化和容器中液位的换算关系,此想法基于电子秤能够测得一张纸的重量,但是在实际应用中,考虑到容器的氧化,容器内部的水垢增多,而且容器的外置也会产生整个容器重量的变化,从而造成液位采集的不准确,此压力传感器的市场价格也比较昂贵,应用于此控制模型中也是一种浪费;因此我自制了3根线将容器中的液位分成了3个水位挡,通过和电源正极的结合,利用水导电的特性,通过9012三极管等元件构成的驱动电路的电平转换,将液位数据输入P2口,通过单片机换算转换成液位数据存入一个存储器单元,随时读取。
3、数据显示系统的设计方案讨论
为了能构造一个适合的人机界面,在诸多的显示器件中数码管的液晶字符性显示器非常适合运用于此控制系统当中的,它的功能特性也完全适用于此设计系统的功能要求,也不会造成资源的浪费,所以就确定数码管作为本此设计系统的显示器件。
为了配合显示器件,就需设置按键,根据系统的功能要求和单片机的口线资源,为系统配制了3个独立式键盘,用来调节温度报警值。
第三章系统硬件设计
3.1系统总体设计
本课题是基于AT89S52单片机的智能电热水器的控制器的设计,要达到的控制要求有:
(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)单片机RST接复位电路,可按复位按钮RST给单片机复位。
(2)晶振采用12MHZ。
(3)由于单片机只访问片内FlashROM并执行内部程序存储器中的指令,因此单片机的31脚接高电平VCC。
3.2各单元电路设计
3.2.1控制单元设计
AT89S52芯片有40个引脚,4kbytesflash片内程序存储器,128bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。
图3.2AT89S52结构框图
3.2.2显示单元设计
1、报警电路的设计
图3.3蜂鸣器电路
本系统中采用蜂鸣器报警,由于单片机输出电流较小,所以用三极管9013驱动蜂鸣器发出声音。
图3.4水位报警电路
当水位比较低的时候,红灯亮,水位在中间的时候,红灯和黄灯亮,当水位慢的时候三个灯都亮,出故障的时候三个灯闪。
2、LED数码管显示
图3.5数码管显示电路
4位数码管为共阳管,由于单片机输出电流比较小,故用4个PNP型的三极管9015来驱动数码管。
单片机输出低电平时三极管导通,使数码管的4各公共端1、4、5和12脚为高电平,此时数码管的数据端输入低电平后数码管被点亮,120欧电阻R12到R19为三极管的限流电阻。
3.2.3检测单元设计
一、温度传感器
1、DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
2、DS18B20温度传感器与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图3.4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
图3.6DS18B20电路
DS18B20的1脚接地,2脚数据端接单片机的P3.3,3脚接VCC,为了确保DS18B20工作可靠,2脚要接10K的上拉电阻。
2、水位检测
我们把储水箱大致分为3份,水位由潜入热水器的储水箱不同深度的水位电极和潜入储水箱底部的公共电极(导线)进行检测;由单片机依次使各水位电极呈现高电平,由公共电极所接的三极管进行电位转换,水位到达的电极,转换电位为低(0);水位没有到达的电极,转换电位为高
(1);每检测一位便得到一位数据,3个电极检测一遍以后便得到了3个串行数据,然后把这3个数据转化为字节一路送发光二极管;在这里我们可以用发光二极管亮的盏数来显示水位的高低。
(若没有发光二极管亮则表示箱内没有水或者只有少量的水,若有一个发光二极管灯亮则表示箱内有三分之一箱的水,以此类推,若有三个发光二极管亮,则表示水箱水是满的。
图3.7水位监测电路
水位用三根导线,一个是电源负极,当导线接触到水后,由于水的导电性,使得两外两根导线也是低电平,从而使三极管9012导通,P3.6和P3.7是低电平,当两根导线不接触水的时候,输出是高电平。
三、继电器
本设计包含两个继电器,两个继电器分别是控制加热装置和加水装置,用发光二极管来代替加热装置和加水装置,继电器用三极管9012驱动。
继电器可以模拟的完成实物上的自动控制。
继电器控制电路如图所示。
图3.8继电器控制电路
第四章系统软件设计
4.1主程序设计
为了保证系统的正常运行,当系统开机后,即单片机上电复位开始运行后,需要对硬件各部分进行自动检查,如果正常,系统就可以继续往下执行,如果不正常就必须出错报警,以便人工修正,为系统的正常运行作好准备。
主程序流程图如4-1:
Y
图4.1主程序流程图
4.2子程序设计
4.2.1温度采集
温度采集子程序的功能是对DS18B20进行初始化、查询温度采集和转换是否完成,并且完成对温度数据的处理以便送LED显示。
其程序流图如图所示:
图4.2温度采集程序
4.2.2控制按键设计
按键的确认就是判断按键是否闭合,反映在电压上就是和按键相连的引脚呈现出高电平还是低电平。
如果是低电平,则表示闭合。
因此,通过判断电平的高低,就可以确定是否有键按下。
但是为了确保一次按键动作只确认一次按键,必须消除机械开关的抖动影响。
消除按键的抖动,通常用软件消除的方法。
在第一次检测到有按键被按下时,执行一段10ms~15ms的延时子程序,再确认该键电平是否仍然为低电平,如果保持为低电平状态就说明有键按下,从而消除抖动的影响。
再次扫描,如果按键为高电平说明按键松开。
本报警器按键处理子程序流程图如图4.4所示。
4.2.3读温度
N
Y
N
Y
图4.3读温度流程图图4.4键盘处理子程序
第五章系统调试
5.1硬件调试
制造电子产品,可靠性与安全是两个重要因素,而零件的安装对于保证产品的安全可靠是至关重要的。
如何疏忽都可能造成整机工作失常,甚至导致更为严重的后果。
元件安装时我们要保证导通与绝缘的电器性能、保证机械强度、抱着那个传热的要求和安装时接地与屏蔽要充分利用。
为达到产品的可靠与安全,安装时应遵循一些基本的要求与原则。
5.1.1调试步骤
对于整个系统制作完成后,调试工作是非常重要的一个环节,它直接关系到系统能否正常工作。
1、首先对电源部分进行调试。
2、检查印刷电路是否设计正确,元器件位置是否安装正确。
特别是二极管、三极管、电容等极性不要装错。
观察有没有焊接点短路,虚焊,多余的管脚有没有剪去。
保证导通与绝缘的电气特性,电气连接的通与断是安装的核心这里所说的通与断,不仅是安装后简单的使用万用表测试的结果,而且要考虑在振动,长期工作,湿度等自然条件变化的环境中,都能保证通者恒通,断者恒断。
保证机械强度,电子产品在使用过程中,不可避免的需要运输和搬动,会发声各种有意或无意达到振动,冲击,如果机械安装不够牢固,电气连接不够可靠,都有可能因为加速度的瞬间受力使装置受到损害。
保证传热的要求,在安装中,必须考虑某些零部件在传热,电磁方面的要求。
安装时接地与屏蔽要充分利用,接地与屏蔽一是消除外办对产品的电磁干扰,二是消除产品对外办的电碰干扰,三是减少产品内部的相互电磁干扰。
3、当检查电路和焊接无误后,就可以将一些比较主要的元器件和主控芯片装上去进行调试。
焊接后的检查:
焊接结束后必须检查有无漏焊、虚焊以及由于焊锡流淌造成的元件短路。
虚焊较难发现,可用镊子夹住元件引脚轻轻拉动,如发现摇动应立即补焊。
5.1.2液位检测
将自制的测水位导线放入水中,通电之后,显示当前的水位。
我们把储水箱大致分为3份,水位由潜入热水器的储水箱不同深度的水位电极和潜入储水箱底部的公共电极(导线)进行检测;由单片机依次使各水位电极呈现高电平,由公共电极所接的三极管进行电位转换,水位到达的电极,转换电位为低(0);水位没有到达的电极,转换电位为高
(1);每检测一位便得到一位数据,3个电极检测一遍以后便得到了3个串行数据,然后把这3个数据转化为字节一路送发光二极管;在这里我们可以用发光二极管亮的盏数来显示水位的高低。
(若没有发光二极管亮则表示箱内没有水或者只有少量的水,若有一个发光二极管灯亮则表示箱内有三分之一箱的水,以此类推,若有三个发光二极管亮,则表示水箱水是满的。
将自制的测水位导线放入水中,通电之后,显示当前的水位。
导线分三级,当水位没有达到最低级时,蜂鸣器响,继电器开始模拟进水的过程;当水位高于最低级时,蜂鸣器停止,显示中等水位,继电器继续模拟上水;当水位达到最高点时,显示最高水位的发光二极管亮,继电器停止工作。
5.1.3温度检测
温度传感器检测到的水温,利用数码管能正确显示出当前的水温。
图5.1温度显示电路
5.2软件调试
5.2.1Proteus仿真
Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件,它组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。
此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“TheRoutetoPCBCAD”。
Proteus产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。
用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
其功能模块:
—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARESPCB设计。
PROSPICE仿真器的一个扩展PROTEUSVSM:
便于包括所有相关的器件的基于微处理器设计的协同仿真。
此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。
支持许多通用的微控制器,如PIC,AVR,HC11以及8051。
最新支持ARM。
交互的装置模型包括:
LED和LCD显示,RS232终端,通用键盘,I2C,SPI器件。
强大的调试工具,包括寄存器和存储器,断点和单步模式。
IARC-SPY和KeiluVision2等开发工具的源层调试。
应用特殊模型的DLL界面-提供有关元件库的全部文件。
5.2.2软件调试过程
本系统所使用的汇编软件是Keil.Keil编译器把C语言编写的源程序与Keil内含的库函数装配在一起,然后由C51编译器编译成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的HEX文件,然后将其写入CPU存储器中。
电路设计制作完成后,先用keiluVision2仿真器进行调试。
(1)、使用菜单“Project/NewProject”出现一个对话框,然后给将要建立的工程取一个名字,单击保存后会出现另外一个对话框选择系统所使用的单片机型号,本系统所使用的单片机型号为AT89S52。
选中后回到工程窗口的页面打开“Tatget”的下一层,“SourceGroup1”单机右键选中“Addfiletogroup‘SourceGroup1’”,出现对话框,选择系统所用的源文件即可。
(2)单击“Project/Target1”出现对话框选中“Target”页面修改单片机的频率项Xtal(MHz)为12.选中“Output”页面选中“CreateHEX”选项。
(3)编译连接通过“Project/RebuildallTargetFiles”来实现
(4)在Protues上画出电路图,并将keil所生成的Hex文件调入到电路中的单片机内,点击运行。
总结
此次水温水位控制系统耗时三周,设计了一个以AT89C51单片机为核心配合其他外围电路的热水器智能控制系统,运用DS18B20传感器完成了对热水器容器内的水位、水温测量并用数码管及发光二极管来显示水温和水位;缺水时手动上水,运用按键模块设定温度参数,缺水报警;水温超过设定温度值时报警系统启动,发出报警信号。
本设计的水温和水位各自的实现操作为:
水位是使用自制的测水位导线放入水中,通电之后,显示当前的水位。
由单片机依次使各水位电极呈现高电平,由公共电极所接的三极管进行电位转换,水位到达的电极,转换电位为低(0);水位没有到达的电极,转换电位为高
(1);每检测一位便得到一位数据,3个电极检测一遍以后便得到了3个串行数据,然后把这3个数据转化为字节一路送发光二极管;在这里我们可以用发光二极管亮的盏数来显示水位的高低。
而水温的控制利用低功耗单线数字温度传感器DS18B20实现温度采样,将采样的温度值通过单片机的P3.3口送入单片机处理,然后实现水温的控制,利用按键对水温的值进行设置,当温度高于上限或者低于下限后蜂鸣器报警,使之保持温度在一定范围内的稳定。
本控制系统可以时时采集热水器内部水温通过LED显示水温,由于太阳能热水器实际温度不会超过100摄制度,所以本系统采用两位显示,测量范围为00~99摄氏度,温度可以精确到小数点后两位。
在本次设计中不足之处是硬件设计中缺少了在缺水状态下自动上水功能和实际运用电热丝来加热使水温达到设定温度范围的功能。
在这设计过程中,通过自己不断的解决工程中遇到的一个一个的问题,磨练了自己的意志