宾馆供水智能控制器的设计
宾馆供水智能控制器的设计,宾馆,供水,智能,控制器,设计
1 热水器水温水位控制装置的设计 指导老师: 王 彦 第六组: 徐文卿 唐正宇 蓝仁富 (南华大学电气学院 湖南 衡阳 421001) 摘要: 本系统是为热水器水温水位的检测和控制而设计的。在太阳能热水器温控系统中,水温 和水位传感器起着举足轻重的作用。系统的分析了数字式温度传感器 DS18B20 和耐高温电容式 液位传感器分别检测水温和水位的原理,以 AT89S51 单片机为核心,实现对水温和水位、上水测 量、显示、报警等功能,并以电磁阀、继电器为阀门开关全自动加热、上水。整个系统精度高, 耐高温性强,易于调整,测试方便。测试结果表明,误差小于 2%,达到设计要求。 关键词: AT89S51 单片机,水温水位,传感器,检测与控制 The System For Autocontrol The Temperature And Level Of The Water- Heater Abstract: This system is design to measure and control the water lever and temperature for the water-heaer.Its composed of two sensor (a digital chip DS18B20 and a lever sensor),display,buzzer and so on,all these component are control of the core chip AT89S51. This system can display the lever and the temperature in the water_case .In addition,it will be heaet or add water automatic through electromagnetism vave or relay which are controled by AT89S51. The whole system is easy to adjust.It is proved to be reliable and of high value and high feasibility after testing. Keyword: AT89S51 control temperature lever 2 目录 1 系统设计 4 1.1 设计要求 4 1.1.1 设计任务: 4 1.1.2 主要技术指标: 4 1.1.3 主要功能: 4 1.1.4 显示要求: 4 1.1.5 故障显示 4 1.2 方案的比较和论证 4 1.2.1 温度检测部分 4 1.2.2 水位检测部分 5 1.2.3 核心控制部分 7 1.2.4 执行器部分 8 1.2.5 显示器部分 8 1.3 系统方案的确定 8 1.4 系统的工作原理 9 2 单元电路设计 10 2.1 水温检测部分 10 2.1.1 DS18B20 简介 10 2.1.2 DS18B20 的工作方式 10 2.1.3 DS18B20 的工作时序 11 2.2 水位检测部分 12 2.3 显示部分 14 2.4 执行器部分 14 2.4.1 继电器印制板电路的设计 15 2.4.2 加水控制电路 15 2.4.3 加热控制电路 15 2.5 电源部分 16 2.6 智能控制部分 16 2.6.1 报警和按键电路 17 2.6.2 时钟电路 17 2.6.3 上电自动复位电路 18 2.6.4 液晶显示接口电路 18 3 软件的设计 19 3 3.1 系统正常工作子程序 19 3.2 设定预置温度子程序 20 3.3 设定预置水位子程序 21 3.4 系统主程序 21 4 系统的测试 22 4.1 测试仪器清单 22 4.2 水温的测试 22 4.3 水位的测试 22 4.4 继电器控制电路的测试 22 5 结束语 23 参考文献 23 附录 24 附录 1 系统使用说明 24 附录 2 主要元器件清单 24 附录 3 系统原理图 25 附录 4 印制板图 25 附录 5 热水器水温水位控制装置程序清单 26 4 1 系统设计 1.1 设计要求 1.1.1 设计任务: 设计一个太阳能热水器水温水位控制系统 1.1.2 主要技术指标: 1. 测温精度:2 2. 测温范围:0100 3. 水位分档:5 档 1.1.3 主要功能: 1. 开机自检:开机时发出“滴”提示音,表示机器处于正常状态; 2. 水位预置:可预置加水水位:20、50、80、100%; 3. 水温指示:显示热水器内部的实际水温; 4. 水位指示:显示热水器的内部实际水位; 5. 温控上水:当热水器 未加满水,水温又偏高时(水温在 60100时) ,自动补水至合适 水温 50左右; 6. 自动上水:当缺水时延迟 15 分钟自动上水至预置水位,预置水位默认状态为 50%档,启 动时蜂鸣长声,关水时短鸣三声;上水时水位滚动显示。 7. 手动上水:当水位低于预置水位时,按手动上水按键,则加水至预置水位;按 ON/OFF 按 键则停止上水; 8. 缺水报警:当缺水时(位于缺水档)报警,延迟 15 分钟自动进入自动上水; 9. 正常工作: 正常工作时,水位、水温交替显示。 1.1.4 显示要求: 1. 水温: 数字+; 2. 水位:缺水档一段发光管,其余两位。 1.1.5 故障显示 1. 传感器接触不良,显示:- 1.2 方案的比较和论证 1.2.1 温度检测部分 方案一: 采用电桥电路,热敏电阻作为一个桥臂如图 2.1 所示,其中 R 为热电阻.电阻阻值随水温的 变化而变化,电桥的输出也发生变化.其温度系数大,一般 aT-310-2610-2之间,热响应快, 结构简单可靠,由于热敏电阻输出信号很小,必需对输出信号进行放大,然后将放大信号转换成 数字信号,送到单片机进行处理。 5 图 1.1.1 热电阻构成的电桥电路 方案二: 采用数字式温度传感器DS18B20,其可编程为9位12位A/D转换精度,分辨率可达到0062 5,被测温度用符号扩展的16位数字量方式串行输出; CPU只需一根端口线就能与DS18B20通 信,可节省大量的引线和逻辑电路。编程简单,容易实现. 方案三: 采用数字式集成温度传感器AD7418测量水温,其内部包含有带隙温度传感器和 10位模数转换 器,可将感应 温度转换为0.25量化间隔的数字信号直接送入单片机进行处理. 方案比较和确定: 热敏电阻测温虽然温度系数大,测量方便,但是由于热敏电阻是以横批信号传输的,模拟信号抗 干扰能力差, 传输过程会遇到高压线、电磁等信号的干扰,即使加上滤波电路,也不能达到理想 的效果;而且方案一需要对信号进行放大和A/D 转换,电路也比较复杂。方案二和方案三都是使 用数字式温度传感器测温,采用数字信号传输,抗干扰能力强,灵敏度高,都适用于远距离温度 检测系统,但AD7418成本较高,市场上也难买到, 综合上所述,方案二为最佳选择。 1.2.2 水位检测部分 方案一: 采用用压阻式压力传感器 19C300A3K 构成电桥电路。固体受到的作用力发生改变后,电阻率 就发生变化,即产生了压阻效应。这种效应促使电桥的输出电压也产生了相应的变化. 输出电压经 放大和 AD 转换后送入单片机. 其核心部分是一块圆形硅膜片(见图 2。2),在膜片上利用集成电路工艺方法扩散上四个阻值 相等的 P 型电阻。用导线将其构成平衡电桥。膜片的四周用圆硅环(硅杯)固定,其下部是与 被测系统相连的高压腔。当硅片受力时,膜片的变形使扩散电阻的阻值发生变化。其相对的变化 可表示为: R = e (2-1) 其中, e 为压阻系数 ; 为应力。 6 图 1.2.1 压阻式压力传感器结构图 . 电平模片上的扩散电阻构成桥式测量电路,相对的桥臂电阻是对称布置的,电阻变化时,电 桥输出电压与膜片所演戏压力成对应关系,硅环的内外则输入被测差压及参考压力,压力差使硅 膜片变形,膜片上的两对电阻阻值发生变化,使电桥输出相应的压力变化的信号。 方案二: 基于液位的变化使电容值的改变的原理进行测量。示意图如图1.2.2所示.同时通过改变电容 值的方法来改变震荡电路的频率。即所谓的电容式液位传感器。 图1.2.2 电容式传感器测量示意图 电容式传感器的输出信号静电容量是单片机所不能识别的,可以采用C/F转换电路,将电容量 转变成的频率, 计算出水位电容频率之间的关系, 单片机根据不同的频率得出该频率所对应 的水位位数值,并显示出来。 图1.2.3为电容式液位传感器的方框图。 电容 式液 位传 感器 C/F 转 换 单 片 机 显 示 器 图1.2.3电容式传感器 方案三: 采用超声波液位传感器。超声波液位传感器的探头安装在热水器的上方,探头受电激励后, 通过空气向其下的液体发射超声波,超声波被液体反射,回波被探头接收和测量,并被转换为电 信号。其工作原理图如图1.2.4所示。 7 图1.2.4 超声波传感器水痊测量原理 热水器水位测量计算公式如下: H2 = HH1 = H-CT2 式中,H2 为液位高度;H1为传感器到液体表面的距离;C为超声波在空气中的传播速度;T 为超声波渡越时间; H为超声传感器至液体容器底面的总距离。 方案的比较与确定: 方案一使用的电阻式液位传感器其优点是装置简单、体积小,灵敏系数大,成本低;缺 点是电极浸泡在液体中易腐蚀、可靠性差、耐温性差,方案二使用的电容式传感器静电容量与液 位是线性关系,这样给计算带来很大方便,且传感器导体不与液体接触,无触点,耐腐蚀,抗干 扰能力强,成本低。方案三使用的超声波传感器,不与液体接触,因而具有耐腐蚀,安装方便, 但由于超声波的传播速度受空气密度的影响,密度越大,传播速度越快,而空气密度和温度有密 切关系,所以,温度变化时,声速也变化,导致测量不准确.经分析综合,本设计采用方案二测量 热水器水位。 1.2.3核心控制部分 方案一: 以 AT89S51 单片机作为系统核心, 分析处理水温水位传感器的信息,并作出相应的控制, 并输出显示。 方案二: 用 FPGA(可编程门阵列)实现:,对信息进行分析处理,然后作相应的控制。 方案三: 采用西门子公司生产的S7-200系列PLC(可编程控制器)控制。 PLC 是以计算机技术为核心, 通过简单的编程可以实现强大的功能。在现代化大规模控制系统中,PLC集散控制系统正被广泛 采用。 方案的比较与确定: 8 单片机控制适合于功能比较简单的控制系统,而且其具有成本低,功耗低,体积小算术运算功 能强,技术成熟等优点.其缺点是外围电路比较复杂,编程复杂。方案二使用FPGA控制,稳定性好, 抗干扰能力强,编程及调试也相对简单,但就目前来说其成本过高,会造成资源的浪费,能满足 设计要求,方案三功能强大,编程简单,但是广泛应用的中小型PLC显示功能较差,往往只能通 过面板信号灯的状态来确定输出状态,对于设备的状态过程无法显示, 从而给调试程序员带来 不便,而且成本也很高。综上所述本设计的核心部分采用方案一。 1.2.4 执行器部分 方案一: 采用双向可控硅作为水温或水位的控制开关。图1.2.5是双向可控硅控制电路一个简单例子. 图1.2.5 双向可控硅电路原理图 当A电位高于B电位时,既交流电压在正闰周期时,加上控制电压Ug,S1导通,负载电路工作.在 负闰周期时,S2导通,负载工作,因此无论在正半周还是负半周,负载电路均处于工作状态,我们只 要调节控制角的大小来调节电压的高低即可,而这必需采用触发电路(如晶体管). 方案二: 采用电磁式继电器控制加热器或进水阀的通断,电磁式继电器根据外来信号(电压和电流), 利用电磁原理便衔铁产生闭合或断开动作,从而带动触点动作,使控制电路接通或断开, 方案的比较与确定: 方案一采用的双向可控硅内部结构简单,但外部电路较复杂,触发电路计算比较复杂.方案二采 用的电磁继电器具有可靠性高,抗干扰性强,功能齐全,体积小,灵活可扩,软件直接、简单, 维护方便,外形美观等优点,因此采用方案二,. 1.2.5 显示器部分 方案一: 采用四位一体的 LED 数码管交替显示水温和位。数码管采用 BCD 编码显示数字,程序编 译容易,资源占用较少。 方案二: 运用字符型液晶显示,液晶显示屏是以若干个 58 或 511 点阵块组成的显示字符群,每个 点阵块为一个字符位.字符间距的行距都为一个点的宽度.采用这种液晶显示功耗低,可靠性高,可 以同时显示水温和水位。 方案的比较和确定: 数码管具有电路结构简单、低损耗、寿命长、耐老化、成本低、对外界要求低、易于维护、 操作简单等优点,可采用数码管动态显示,方案二内部模块复杂,外部的液晶显示虽然功能较强, 但费用高,编程也很复杂.不易测试仿真. 所以本系统采用第一种方案。 9 1.3 系统方案的确定 由上述分析与论证,确定了系统的总体设计方案:以 AT89S51 单片机为核心,使用数字式温度 传感器 DS18B20 和耐高温液位传感器 19C300VKY 液位传感器检测水温水位 , 八位数码管显示 水温和水位,采用继电器作为阀门开关控制热水器加热、加水。外加蜂鸣器和热键组成了系统的 硬件电路,其系统的整体框图如图 1.3.1 所示. 单片机 A/D 转换 显示器 蜂呜器 加热器 放大电路温度 传感器 物位传感器 继电器 键盘 控制 继电器 进水阀 图 1.3.1 系统整体框图 1.4 系统的工作原理 根据设计的要求,要将水位和水温的变化精确地反映到控制部分,使用高灵敏度温度数字 化温度传感器 DS18B20T 和电容式液位传感器.DS18B20 以数字信号的方式送单片机的 P00 口,由 于电容式传感器是根据液位的不同改变电容量的,需要将电容转换成频率信号之后,送到单片机 处理。 单片机是整个系统的核心,能够接收水温和水位信息并在数码管交替显示.,配合一定的基 本电路和程序设计实现对水温水位的控制。用户可以根据自身的需要设定水温和水位。单片机 通过中断响应来实现对水位和水温的控制,当热水器未加满水,水温又偏高时,继电器 2 常开 触点吸合,由继电器控制的进水阀阀门打开,加水至水温达到预定温度,单片机响应中断,停 止加水;当水位低于预置水位时,延迟 15 分钟自动上水至预置水位;当实际水温低于设定温度 时,系统响应中断,继电器 1 常开触点闭合,启动加热器,直至水温升到设定温度;当缺水时 (位于缺水档)系统响应中断,蜂鸣器报警,延迟 15 分钟自动进入自动上水。 在必要时可以 手动上水,当水位达到设定水位时,系统自动报警,提示用户关闭手动上水.水温水位在正常时 10 由 8 位 LED 数码管同时显示。如果系统接触不良,频率为零,在 LED 上显示-。 2 单元电路设计 2.1水温检测部分 2.1.1 DS18B20简介 DS18B20是DALLAS 公司生产的一线式数字温度传感器,具有3引脚TO 92小体积封装形 式如( 图 2.1.1);温度测量范围为55125,可编程为 9位12位A/D转换精度,测温分辨率 可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入, 也可采用寄生电源方式产生; CPU只需一根端口线就能与DS18B20通信,占用微处理器的端口 较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。 图2.1.1DS18B20 图2.1.2DS18B20 内部结构图 引脚图 DS18B20内部结构如图 2.1.2所示,主要由4部分组成:64位ROM、温度传感器、非挥发的 温度报警触发器TH和TL 、配置寄存器。DS18B20 的管脚排列如图2所示,DQ为数字信号输入 输出端;GND为电源地;VDD为外接供电电源输入端。 ROM中的 64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个 DS18B20的64位序列号均不相同。64位ROM 的排的循环冗余校验码( CRC=X8X5X4 1)。 ROM的作用是使每一个DS18B20 都各不相同,这样就可以实现一根总线上挂接多个 DS18B20的 目的。 高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字 节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表 现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。 11 2.1.2 DS18B20的工作方式 图2.1.3 寄生电源工作方式 图2.1.4外接电源工作方式 图2.1.3和图2.1.4画出了DS18B20与微处理器的典型连接。图2.1.3中DS18B20采用寄生电源 方式,其VDD和GND端均接地,图2.1.4中DS18B20采用外接电源方式,其 VDD端用3V5.5V电源供 电。 本系统所用的晶振频率为12MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写了 3 个子程序(见程序清单),所有的数据读写均由最低位开始。 2.1.3 DS18B20 的工作时序 DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工 作时序包括初始化时序、写时序和读时序,如图图2.1.5(a),(b),(c) 所示。 图2.1.5(a) 初始化时序 12 图2.1.5 (b) 写时序 图2.1.5 (b) 读时序 DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以 0.0625/LSB形式表达,其中S为符号位。例如125的数字输出为07D0H,25.0625的数字 输出为0191H,25.0625的数字输出为FF6FH,55的数字输出为FC90H。 2.2 水位检测部分 正如 1。2。2 节所述,水位检测是通过改变电容值的方法来改变此震荡电路的频率的,而 电容值的改变和电容浸在水了的高度有关并且和起容值和在水里的液位的高度成正比的关系。 2个相邻而又互相绝缘的导体便构成一个电容器,当2导体的面积和相互距离确定后其静 电容量大小仅与两导体周围的介质有关。用小刀在板中央长的方向刻去宽05mm的铜箔,于是板 上形成相互绝缘的2块极扳,焊上引出导线后,将整块板连同焊点一起用硅橡胶包裹起来,形成 不透水的绝缘层。不同的液位的静电容量不同,对某一个介电常数固定为的液体,传感器的电 容变化量与液位高度成正比,其关系如图2。2。1所示, 13 图 2.2.1 电容式传感器容值与液位的关系 图 2.2.2 是由四个与非门组成的矩形波发生电路,本设计使用 74HC00 构成振荡器,其频率 由 R1 与 C 的值决定. 图 2.2.2 由 74HC00 组成的波形产生电路 74HC00 内部由 4 个与非门组成,其内部结构及引脚图如图 2.2.3 所示,7 脚和 14 脚分别接地和 电源,其余均为输入输出脚.74HC00 是利用先进的硅门技术实现的,具有低功耗,高速率的优点. 图 2.2.3 74HC00 引脚图 14 2.3 显示部分 系统采用八位 LED 数码显示管同时显示水温和水位,左四位为水温,右四位为水位。其显 示的功能主要由软件的设计实现,为了节省系统的资源,本系统采用动态显示。动态显示原理如 下: 当向 LED 的段码数据口发送第一个 8 位数据,这时只有一个数码管显示该数码,延时一段时 间后可以发送第二 8 位数据,显示器分时轮流工作,虽然每次只有一个显示器显示,但由于人的 视觉暂留现象,我们仍能感觉到所有显示器都在同时显示。 图2.3.1为显示电路的原理图,两个四位一体的LED数码管的数据输入端通过限流电阻直接与单 片机P2口连接,八个位码直由P0口提供,但由于P0口驱动能力有限,在此采用八个三极管(9012)分别驱 动各个位. 图2.3.1显示电路原理图 2.4执行器部分 执行器部分分为加水控制和加热控制两部分,其核心器件均是电磁式继电器. 电磁继电器是 自动控制电路中常用的一种元件。实际上它是用较小电流控制较大电流的一种自动开关。因此, 广泛应用于电子设备中。电磁继电器一般由一个线圈、铁心、一组或几组带触点的簧片组成。触 点有动触点和静触点之分,在工作过程中能够动作的称为动触点,不能动作的称为静触点。当线 圈通电以后,铁心被磁化产生足够大的电磁力,吸动衔铁并带动簧片,使动触点和静触点闭合或 分开;当线圈断电后,电磁吸力消失,衔铁返回原来的位置,动触点和静触点又恢复到原来闭合 或分开的状态。应用时只要把需要控制的电路接到触点上,就可利用继电器达到控制的目的. 下面就电磁继电器的特性参数作一些简要的介绍 1.额定工作电压或额定工作电流:这是指继电器工作时线圈需要的电压或电流。 2.直流电阻:这是指线圈的直流电阻。有些产品说明书中给出额定工作电压和直流电阻,这 时可根据欧姆定律求出额定工作电流。若已知额定工作电流和直流电阻,亦可求出额定工作电压。 15 3.吸合电流:它是指继电器能够产生吸合动作的最小电流。要使继电器可靠吸合,给定电压 可以等于或略高于额定工作电压。一般不要大于额定工作电压的 1.5 倍。否则会烧毁线圈。 4.释放电流:它是指继电器产生释放动作的最大电流。如果减小处于吸合状态的继电器的电 流,当电流减小到一定程度时,继电器恢复到未通电时的状态,这个过程称为继电器的释放动作。 释放电流比吸合电流小得多。 5.触点负荷:它是指继电器触点允许的电压或电流。它决定了继电器能控制电压和电流的大 小。应用时不能用触点负荷小的继电器去控制大电流或高电压。 2.4.1 继电器印制板电路的设计 由于系统在使用加热器和进水阀时,是通过弱电控制强电实现的,两个继电器的输出端均接 220 交流电压,本设计考虑安全问题是十分必要的。 在硬件制作过程中,本系统将继电器驱动电路与单片机控制板隔离,整个硬件系统由三块印 制板组成。另外,在印制板的制作过程中考虑到流过继电器门交流电比较大,而板底铜很薄,因 此采用大面积敷铜的方法,以减小导线的负载,过到安全的目的。印制板电路图.见附录 3 2.4.2 加水控制电路 通过继电器(T5)的常开触点的通断来控制进水阀电源(220V)的通断,从而控制进水阀 的通断,以达到加水和断水的目的。并且在继电器的线圈的加一双向的开关以达到手动和自动控 制加水的目的。电路中三极管作为驱动,DS2 的是电源指示灯。 图 2.4.1 继电器驱动电路(加水) 2.4.3 加热控制电路 加热控制电路和加水控制电路原理基本上一致,只是所采用继电器的所采用的型号不同,因 为是加水的控制电路由于进水阀的工作的功率很小只有几十瓦,而加热器的功率就不同了要达到 上千瓦甚至是几千瓦。 16 图 2.4.2 继电器驱动电路(加热) 2.5 电源部分 电源部分由由整流电路、滤波电路、稳压电路等组成,其原理图如图2。5。1所示,图中D为桥 式整流管,C1、C2为滤波电容,C3、C4为旁路电容,用以改善负载的瞬态响应,稳压电路采用 LM7809 三端集成稳压器外形图如图2.5.2所示。LM7809具有使用方便,输出稳定的特点。 图2.5.1 9伏直流稳压电源电路 图2.5.2 LM809外形图 2.6 智能控制部分 智能控制部分是系统的核心,由AT89S51单片机及必要的外围电路组成,如报警电路,时钟电路 等.单片机是系统的司令部,它接收从传感器检测电路输入的信号,并将输入信号进行处理运算,以控制 电流或电压的形式输出给执行单元电器、显示单元电路和报警电路等。 图2.6.1为AT89S51的引脚图,其中,KBET1-KBET7接数码管的位选项端,D0-D7接数码管段码端, XTAL1和XTAL2接晶振电路,K2-K4接按键开关,BUUZRE接蜂鸣器电路,YEWEI接液位传感器经C/F电路转换 后的输出信号,WENDU接DS18B20的I/O口,DCF接加水控制电路,JRE接加热控制电路,DX、CS3、 TXDR接液晶显示接口。 17 图2.6.1 AT89S51引脚图 2.6.1 报警和按键电路 蜂鸣器具有控制简单,声音悦耳动听,是人机接口的重要输出设备,本系统用以语音提示,电路硬件 原理图如图2.6.2所示.系统采用三极管(9012)作为蜂鸣器驱动,R2起限流作用.BUZZRE信号来自单片机 P10口,P10为低电来时,蜂鸣器发出声音,如果改变BUZZRE的频率,蜂鸣器便可以发出悦耳的音乐. 图2.6.2报警和按键硬件电路原理图 图2.6.1中K2、K3、K4是三个轻触按键,其中K2与单片机INT1相连,用户可以通过K1选择三种不 同的工作状态(设定水温状态、设定水位状态、正常工作状态)。K3与单片机T0口相连,K4与T1口相 连。当系统响应中断并且K1处于设定预置水温或设定预置水位状态时,K3、K4有效,作为调整数值使 用。 2.6.2 时钟电路 时钟电路是单片机的心脏,它控制着单片机的工作节奏。其原理图如图2。6。3所示。系统采用 11,05926MHZ的晶振,电容C1、C2的作用有两个,其一是使振荡电路起振,其二是对振荡器的频率f 18 起微调节器作用(C1、C2大,f变小)其典型值为30pf. 图2.6.3 系统时钟电路 2.6.3 上电自动复位电路 在单片机RST复位端接一个电容至VCC和一个电阻至VSS(地) ,就能实现上电自动复位, 如图2。6。4,在加电瞬间,电容 通过电阻充电,在RST 端出现一定时间的高电平,只要高电 平的时间够长,就可使AT89S51有效的复位。RST端加电时应保持的高电平时间包括 VCC的上升 时间和振荡器起振的时间,电路中RC时间常数越大,上电时 RST端保持高电平的时间越长,本 系统R=10K,C=10Uf。 图2.6.4上电自动复位电路 2.6.4 液晶显示接口电路 为了扩展系统的功能,在设计过程中,系统还增加了一个液晶显示接口,供用户使用,可以 直接与液晶显示器相连,以达到更好的显示效果。 19 图2.6.5 液晶显示接口电路 3 软件的设计 本系统的程序设计采用 C 语言进行编译,程序在 Windows XP 环境下采用 Keil uVision2 软 件编写的,实现了单片机水温水位的测量,水温和水位的显示,水温水位的控制,蜂鸣器报警等 功能。 3.1 系统正常工作子程序 当 K2 处于第一状态时,单片机执行正常工作子程序,正常工作时 K3,K4 无效。系统正 常工作子程序主要功能是交替显示实际的热水器水位,判断是否超过设定和水温水位,其子程序 流程图如图 3.1.1 所示。 20 显示实时温度和水位 交替显示 正常状态 判断是否超过预置水 位或预置温度 是 报警并关闭加热器和 阀门 RET 图 3.2.1 正常状态子程序流程图 若热水器未加满水,水温又偏高时,单片机控制进水阀加水,至合适水温 50左右,单片 机响应中断,停止加水;当水位低于预置水位时,调用延迟子程序,15 分钟自动上水至预置水 位;当实际水温低于设定温度时,系统响应中断,控制启动加热器,直至水温升到所设定温度; 当缺水时(位于缺水档)系统响应中断,蜂鸣器报警,延迟 15 分钟自动进入自动上水。水温水 位在正常时由 8 位 LED 数码管同时显示。如果接触不良,频率为零,在 LED 上显示-。 3.2 设定预置温度子程序 当 K1 处于第二个状态时,单片机执行设定水温子程序。其程序流程图图 3.2.1 所示。 设定预设温度由 K3 和 K4 完成,K3 加 1 摄氏度 K4 减 1 摄氏度;此时控制端口均为低 , 关闭阀门和加热器 调节预置温度 RET 调节预置温度 图 3.2.1 设定预置温度子程序流程图 21 3.3 设定预置水位子程序 当 K2 处于第三个状态时,单片机执行设定预置水位子程序其程序流程图如图 3.3.1 所示。 设定预置水位,此时按下 K3,系统检测到 K3 为低电平,水位预置值 KEY2 加 20%,加到 100%时 KEY2 赋 20%,KEY3 无效。此时控制端口均为低 关闭阀门和加热器 调节预置水位 RET 调节预置水位 图 3.3.1 设定预置水位子程序流程图 3.4 系统主程序 本设计为用户提供了三个工作状态, 按 K1 切换工作状态,其三个状态分别为正常工作、设 定预设温度、设定预设水位。基程序流程图如图 3。4。1 所示。 开始 正常 状态 调预 置水 位 调预 置温 度 由 KEY1 选择状态 结束 图 3.4.1 系统主程序流程图 22 4 系统的测试 在系统的设计过程中,我们对大部分尤其是关键部分的单元电路进行了测试,温度传感器 DS18B20 电路,电容式液位传感器电路,继电器驱动电路等。 4.1 测试仪器清单 测试使用的仪器设备如表 4。1 所示。 表 4.1.1 测试使用的仪器设备 序号 名称 型号 数量 备注 1 3 位半数字万用表 UNI-T 1 深圳胜利公司 2 直流稳压电源 DF1731SC2A 1 江苏扬中电子仪器厂 3 单片机实验仪 YD-S51 1 湖南衡阳远达电子公司 4 信号发生器 GFG-8216A 1 南京无线电仪器厂 5 双踪示波器 YB4365 1 江苏扬中电子仪器厂 4.2 水温的测试 空 4.3 水位的测试 空 由 74HC00 组成的方波发生器输出波形如图 4.3.1 所示. 图 4.3.1 C/F 转换电路输出波形图 我们在做液位检测电路的时候,原来我们计划所采用的是型号为 但是器件没有到,我们改为测频法检测水位,单元电路见上,由于我们用的是改变电容的方法来 检测水位的变化,但是实际的电路的制作中发现电容的容值不仅和理论值相差好大而且起容值在 空气中是不断的变化的。因此其频率值也是不断的变化的,并且变化的范围是我们无法容忍的。 追其原因可能是我们没有找到达到我们需要的绝缘材料(我们试过硅胶,但是其在开水中就会变 融从板子上脱落达不到绝缘的效果。且其为固体要望板子上涂均匀的话没有合适的工具那是不可 能的(如果涂不均匀的话势必影响其测量的精度) ) 。 4.4 继电器控制电路的测试 在继电器测试过程中,最初采用万用板搭建的单元电路测试继电器的吸合电压是 8.6 伏(可靠 的吸合电压是) ,释放电压是.伏(可靠的释放电压是以下) ,的限流电 阻的最大值是.,但是做出印制的小板的时候却发现如果是以上值的话,继电器是不会正 常的工作的(三极管换用了,其限流电阻换上才能正常的工作) 。追其原因,可能 23 是所采用的继电器是电磁式继电器,起动通断的触点是机械式的,弹簧阻力会发生变化,因而其 所要求的控制的吸和的电压就会发生变化,如果设计的电路其吸合的电压刚好是其最小值的附近, 则起工作就会不稳定。 5 结束语 本系统使用了性价比较高的 AT89S51 单片机实现了对太阳能热水器水位水温的预置、检测、 控制、显示和缺水报警等功能。利用数字技术和频率技术分别检测水温和水位,大大提高了系统 的抗干扰能力。利用电梯继电器控制加热器和进水阀的通断,可以远距离控制但由于实际的制作 的过程中,其制作电容用的板子没有很好的绝缘材料的密封,使得其容值不断的变化,因而其震 荡的频率(在看似相同的情况下)也不断的改变,并且改变的数值的范围与理论值相差很大,在 此很抱歉,没有做成功。 由于时间有限,该系统还有很多值得改进的地方,比如显示部分不直观,可改用液晶显示。 测量水位部分可数字液位计, 参考文献 1张宝芬、张毅、曹丽自动检测技术及仪表控制系统.北京 :化学化工出版社.2002 年 12 月第 1 版; 2高吉祥.模拟电子技术.北京:电子工业出版社.2004 年 2 月第 1 版; 3黄智伟.全国大学生电子设计竞赛训练教程.北京:电子工业出版式社.2005 年 1 月第 1 版; 4.陈龙三编著.8051 单片机 C 语言控制与应用; 北京:清华大大学学出版社 1999 年 8 月第一版 24 附录 附录 1 系统使用说明 本装置是为太阳能热水器水温水位自动控制而设计的。考虑到安全问题,该装置控制部分由 三块不同的板子组成,其中两块分别控制加热器和进水阀 220V 交流电压,在使用过程中要特别 注意安全问题。以免造成各各种损伤。 继电器通电过程中若触碰充电部分,可能会有触电的危险,请尽量避免。 进行继电器(含端子台、插座等连接部件)的安装、保养、故障处理时,请务必切断电 源。 关于端子的连接、请在确认目录的内部接线图的基础上正确连接。错误连接可能会导致意外的 误动作、异常发热、着火等情况, 附录 2 主要元器件清单 元件名称 元件型号 个数 功能 备注 单片机芯片 AT89S51 1 系统控制中心 继电器 AQR10AZ-Z4/6VDC 2 控制加热器的通/断 温度传感器 DS19B20 1 测量水温 数字化传感器 数码管 四位一体数码管 2 显示水温和水位 液位传感器 电容式(自制) 1 测量水位 进水阀 1 自动加水开关 家用小型 12V 电源接口 1 +12V 电源输入接口 蜂呜器 1 产生音频信号 下载接口 ISP 下载接口 1 程序下载接口 电源开关 1 接通和断开电源 按下为导通 外部存储器 CAT24C02 1 2K 容量 EEPROM 晶振 12M 晶体振荡器 1 时钟振荡源 稳压管 LM7805 1 稳压管 LM7812 1 按键 轻触按键 5 键盘控制 发光二极管 LED 4 显示系统状态 红 2 绿 1 黄 1 电阻 电容 2 30P 电感 25 附录 3,系统原理图 图 1 热水器水温水位控制系统原理图 附录 4 印制板图 图 1 加热控制电路 PCB 图 图 2 加水控制电路 PCB 图 26 图 3 系统总控制板 PCB 图 附录 5 热水器水温水位控制装置程序清单 /*/ /* 热水器程序 1.0 本设计由温度测量控制,液位测量控制,显示,报警,输入等五个模块 构成,其中: 液位测量使用 TLC549 对电压进行测量,得到压阻式传感器上电压 数据,从而得到液位值, 或者通过 T1 计数器测量频率,加以转化得到液位值 温度测量通过使用 DS18B20 直接对温度进行测量,得出数据 显示通过四位 7 段数码管显示数据“-88-”为显示位”88 C“显示温度。 再通过与预设进行比较,当温度或液位超过设定,则报警。 操作方法: 按 KEY1 切换工作状态,正常工作,设定预设温度,设定预设水位。 正常工作时 KEY2,KEY3 无效。实时温度和液位交替显示,在此模式下报警才有效; 设定预设温度,KEY2 加 1 摄氏度,KEY3 减 1 摄氏度;此时控制端口均为低 设定预设水位,KEY2 加 20%,KEY3 无效。此时控制端口均为低 /*/ #include 27 #include #include #define uint unsigned int #define uchar unsigned char sbit buzzer=P10;/蜂鸣器 sbit heater=P16;/加热器 sbit c=P36;/水阀门 sbit P0_0=P37;/温度 DS18B20 数据线 sbit adc=P15;/ sbit ccl=P14; sbit led8=P00; sbit led7=P01; sbit led6=P02; sbit led5=P03; sbit led4=P04; sbit led3=P05; sbit led2=P06; sbit led1=P07;/8 位数码管显示位选端 uchar temp111; uchar a,b; uchar bitselect; bit key1,key2,key3,keyon,keyoff,buzzer1; uchar key1_state,temp,key2_state; uint pl; uint LED1_data,LED2_data,LED3_data,LED4_data,led_data; int ytm=40,yp=60,tm=0,p=0; long t0count,x,o; uchar code led_segment13=0 xC0,0 xCF,0 xA4,0 x86,0 x8B,0 x92,0 x90,0 xC7,0 x80,0 x82,0 x70,0 xFF,0 xBF; uchar disbuffer=0,0,0,0,0,0,0,0; / 温度值的变量; / 结果为负和正的标志位。 /*延时程序*/ void delay(uint v) while(v!=0) v-; /*显示模块*/ /* 28 void display1(void) for(bitselect=0;bitselect8;bitselect+) if(bitselect=0)led1=0;led2=1;led3=1;led4=1;led1=1;led2=1;led3=1;led4=1; else if(bitselect=1)led1=1;led2=0;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1; else if(bitselect=2)led1=1;led2=1;led3=0;led4=1;led5=1;led6=1;led7=1;led8=1; else if(bitselect=3)led1=1;led2=1;led3=1;led4=0;led5=1;led6=1;led7=1;led8=1; else if(bitselect=4)led1=1;led2=1;led3=1;led4=1;led5=0;led6=1;led7=1;led8=1; else if(bitselect=5)led1=1;led2=1;led3=1;led4=1;led5=1;led6=0;led7=1;led8=1; else if(bitselect=6)led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=0;led8=1; else if(bitselect=7)led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;led8=0; P2=led_segmentdisbufferbitselect; delay(200); P2=0 xff; /及时关闭 P2 口,以免造成最后一灯较亮 /*/ void alarm() uint i; for(i=0;iyp+5c=0; if(p0) i-; / 延时 P0_0 = 1; i = 4; while (i0) i-; presence= P0_0; delay(20); return (presence); bit tmpread (void) / 读取数据的一位 unsigned int i; bit dat; P0_0 = 0; P0_0 = 1; i+; i+; /延时 dat = P0_0; i = 8; while (i0) i-; / 延时 31 return (dat); unsigned char tmpread2 (void) /读一个字节 unsigned char i,j,dat; dat = 0; for (i=1;i=8;i+) j = tmpread (); dat = (j 1); return (dat); void tmpwrite (unsigned char dat) /写一个字节 unsigned int i; unsigned char j; bit testb; for (j=1;j 1; if (testb) P0_0 = 0; / 写 0 i+; i+; P0_0 = 1; i = 8; while (i0) i-; else P0_0 = 0; / 写 0 i = 8; while (i0) i-; P0_0 = 1; i+; i+; void tmpchange(void) / ds1820 开始转换 tmreset (); / 复位 delay (200); / 延时 tmpwrite (0 xcc); / 跳过序列号命令 tmpwrite (0 x44); / 发转换命令 44H, 32 /* /* void tmp (void) / 读取温度 tmreset (); / 复位 delay (200); / 延时 tmpwrite (0 xcc); / 跳过序列号命令 tmpwrite (0 xbe); / 发送读取命令 a = tmpread2 (); / 读取低位温度 P0_0 = 0; b = tmpread2 (); /读取高位温度 P0_0 = 0; tm_read() tmpchange(); / 开始温度转换 delay(200); / 读取延时 tmp(); P0_0=0;/读取温度 temp111=(b4); if(tmreset ()=0) disbuffer3=11; disbuffer2=(temp111/10)%10; /- disbuffer1=temp111%10; disbuffer0=10; else if (tmreset ()=1) disbuffer3=11; disbuffer2=12; disbuffer1=12; disbuffer0=10; /*液位数据读取比较控制程序 */ uchar tlc549_read() uchar i,adcdata; adcdata=0; for(i=0;i8;i+) delay(100); adcdata=adcdata1; 33 if(adc) adcdata+; ccl=1
收藏