太阳能热水器的控制器的设计
太阳能热水器控制仪设计(毕设)

摘要本课题的目的是结合太阳能热水器的具体应用,设计一种用于太阳能热水器的检测控制系统,以更好的实现对太阳能热水器的监控与控制。
太阳能热水器作为太阳能利用中最常见的一种装置,经济效益明显,正在迅速的推广应用。
根据太阳能热水器特点以及对控制器的要求,本文提出了一种基于单片机AT89C52的太阳能热水器智能控制器的设计方法。
本文在分析了解太阳能热水器及其控制器的发展和市场分布状况的基础上,描述了太阳能热水器控制器的组成及其工作原理。
论文完成了控制器的硬件设计和软件设计。
在硬件设计中,利用AT89C52单片机作为控制的中心环节,控制整个系统运作。
利用温度传感器DS18B20和分段式水位传感器作为水温水位测量环节,并将测量结果送单片机进行处理。
利用DS12887作为时钟芯片,以实现时间以及日期的显示。
选用液晶显示模块12864显示水温水位时间及日期,显示部分是人机交换的重要媒介之一。
在软件设计部分采用模块化结构,完成了包括主程序,水位检测子程序、LCD显示等子程序的设计。
系统主程序主要完成一些初始化功能,温度的检测以及控制辅助加热系统,同时完成信号转换及送显示功能;水位检测子程序完成水位测量及送数据功能;显示子程序完成水温水位及时间日期的显示功能;键盘扫描子程序实现功能转换及水温水位时间的设定。
论文通过对整体设计方案,硬件电路,软件程序的设计分析,实现了太阳能热水器的水温水位的检测与控制,具有实际的意义。
关键词:太阳能热水器;传感器;DS12887;单片机; FYD12864-0402BIAbstractThe purpose of this study is to introduce a kind of solar water heater detection based on the application of solar water heater,achieving to do the better monitoring and controling of the solar water heater. Solar water heater,as one of the most common use of the solar energy utilization. The economic benefit is obviously and the popularization and application is rapidly. According to the characteristics of solar water heater and the requirement of the controller,here shows a design method of the solar water heater intelligent controller based on the clock chip DS12887.In the analysis of the article about solar water heaters and control of the development and market condition on the basis of distribution, solar water heaters of the controller and the principle of work. The papers finish the control of the hardware and software design. In hardware design of AT89C52 monolithic integrated circuits to control center segments of the whole system. Use of the temperature sensors DS18B20 and sectional form sensors to measure the level as the water, and measurements taken for processing monolithic integrated circuits. Use DS12887 as the clock, to realize the time and date display. Use LCD modules 12864 show that the level of time and date, the display is part of the exchange of one of the man-machine important vehicle. In software design of structure, use modular completed include the program, the level of the inspection or subroutines LCD display design and so on. The main program of the system performs some of the initialization, the temperature of the inspection and control the heating system and the auxiliary signal to show complete the exercise and function testing programs;the water, the measurement and send data to display the functions;a subroutine to complete the water and time functions of the date display;scan a subroutine into the function and the time set.This paper on the overall design, software, hardware circuit analysis of designs, make the measurement and control of the solar water heater into realize, which has played a significant role in the daily life.Keywords: solar water heater; sensor; DS12887; MCU; FYD12864-0402BII目录摘要 (I)Abstract (II)第1章绪论 (1)1.1太阳能热水器控制器的发展概况及市场分析 (1)1.1.1发展概况 (1)1.1.2市场分析 (1)1.2太阳能热水器控制器的应用及意义 (1)第2章控制器的组成及工作原理 (3)2.1太阳能热水器的结构及工作原理 (3)2.1.1 太阳能热水器的结构 (3)2.1.2 控制器结构及工作原理 (5)2.2控制器的总体设计 (6)2.2.1设计思想及实现功能 (6)2.2.2方案论证 (6)第3章控制器硬件设计 (8)3.1控制器原理框图 (8)3.2单片机外围电路 (8)3.2.1晶振电路 (9)3.2.2上电复位电路 (9)3.3控制器时钟接口电路设计 (10)3.3.1 DS12887时钟芯片简介 (11)3.3.2 时钟电路 (17)3.4温度检测电路设计 (18)3.4.1数字温度传感器DS18B20主要特性 (19)3.4.2温度检测电路设计 (20)3.5水位检测及键盘电路设计 (20)3.5.1水位检测电路设计 (20)3.5.2键盘电路的设计 (21)3.5.3总体电路设计 (21)3.7显示接口电路的设计 (21)3.7.1 FYD12864-0402B模块简介 (22)3.7.2 显示电路设计 (26)3.8光电隔离与辅助加热电路设计 (27)第4章控制器的软件设计 (31)4.1主程序设计 (31)4.2水位检测子程序 (33)4.3键盘扫描子程序设计 (33)4.4显示子程序设计 (34)结论 (35)参考文献 (36)致谢 (37)附录1:电路图 (38)附录2:部分程序 (39)第1章绪论1.1太阳能热水器控制器的发展概况及市场分析1.1.1发展概况当今社会发展日新月异,人们衣食住行也在不断的提高。
基于单片机的太阳能热水器控制系统的设计

基于单片机的太阳能热水器控制系统的设计太阳能热水器控制系统是一种利用太阳能来加热水并保温的设备。
基于单片机的太阳能热水器控制系统能够监测系统状态,并根据需要自动地调节工作参数,实现高效能的利用太阳能热水器。
该系统的设计涉及多个方面,包括传感器、执行元件、控制算法和人机交互界面等。
首先,传感器部分。
在太阳能热水器系统中,常用的传感器包括温度传感器、光照传感器和压力传感器。
温度传感器可以用来测量水温,光照传感器可以用来检测太阳光强度,压力传感器可以用来监测水流状态。
这些传感器的数据可以通过单片机进行采集和分析。
其次,执行元件部分。
太阳能热水器系统中常用的执行元件包括电磁阀和水泵。
电磁阀用于控制水的流动方向,水泵用于实现水的循环。
在系统的运行过程中,单片机可以根据采集到的数据来控制这些执行元件的开关状态,以实现对水的流动和供暖的控制。
第三,控制算法部分。
太阳能热水器控制系统需要进行一系列的控制算法设计,包括针对太阳能热水器的启动和停止控制,水的加热和供暖控制等。
通过合理的控制算法设计,可以最大限度地提高太阳能热水器的工作效率,提升整个系统的性能。
最后,人机交互界面部分。
太阳能热水器控制系统需要一个人机交互界面,使用户可以进行相关参数的设置和监控。
在设计上,可以采用液晶显示屏和按键来实现用户的交互操作。
通过人机交互界面,用户可以方便地设置系统的工作模式、温度设定等,同时可以实时地监测系统的运行状态和各项参数。
综上所述,基于单片机的太阳能热水器控制系统设计包括传感器的选择和布置、执行元件的控制和驱动、控制算法的设计和优化以及人机交互界面的设计等方面。
这些设计要求兼顾系统的可靠性、高效性和便利性,以实现对太阳能热水器的精确控制和高效利用。
通过优化设计,可以将太阳能热水器的效能最大化,提供可靠的热水供应。
太阳能热水器控制系统的设计

分享无罪太阳能热水器控制器的设计摘要太阳能是现在社会巨大的能源,人们利用太阳能可以节省好多的能源,所以要好好利用太阳能,发挥它应有的作用。
太阳能热水器因利用太阳能、无污染、使用方便、长期使用投入费用低等特点而倍受人们的青睐,得到很好的开展。
本设计以单片机89S52做为控制核心并协调整个系统的工作,通过数字温度传感器检测当前水的温度,由于是数字信号就直接送入单片机89S52内,通过单片机的处理在LED数码管上显示当前的温度值。
另外一路是在水箱中的水压传感器测水的压力从而得到水位的上下,水压传感器输出的是0~5V的模拟量,要经过A/D转换成为数字量再送入单片机89S52进展处理,在LED数码管上显示水位值。
按键用来设定想要控制的温度值,单片机在内部通过比拟设定的温度和当前温度,当前温度小于设定温度时就会闭合电磁开关,开启加热装置。
高于设定温度时断开开关停顿加热。
自动上水方面是设置水位的上限和下限,水位低于下限时就会闭合电磁开关,开场上水,当水位高于上线时就会自动断开电磁开关,停顿上水。
温度和水位值在时时检测,到达控制目的。
关键词:太阳能热水器,传感器,控制,单片机Design of Controller of Solar Water HeaterABSTRACTSolar energy is now a great resources, people use solar energy can save a lot of energy, so make good use of solar energy, to play its proper role. Solar water heater due to use of solar energy, no pollution, easy to use, long-term use of inputs and low cost has attracted people's favor, well developed.This design mostly 89S52 microcontroller core as a control and coordinate the work of the entire system, digital temperature sensor by detecting the current water temperature, because the number of digital signal directly into the MCU 89S52, through SCM handle LED digital tube displays the current temperature. Another way is the pressure in the tank pressure sensor measuring the water level to get the water level, water pressure sensor output is 0 ~ 5V for analog to go through A/D converted into digital and then processed into the MCU 89S52, in LED digital tube display level value. Button is used to set the desired temperature, microcontroller internally by comparing the set temperature and current temperature, current temperature is less than the set value will be closed when the electromagnetic switch, open the heating device. Sheung Shui aspect automatically set the upper limit water level, water level less than the lower limit will be closed electromagnetic switch, will begin to water, the water level reaches the line is automatically disconnected when the electromagnetic switch, stop watering . Temperature and water values detect constantly to controlling purposes.KEY WORDS: Solar heater, Sensor, control ,MCU目录摘要 (I)ABSTRACT (II)1 前言 (1)1.1 课题背景和意义 (1)1.2 本课题研究内容与主要工作 (2)1.3 本课题的研究预期成果 (2)2 总体系统设计 (3)3 总体硬件设计 (4)3.1 系统总体硬件框图与工作原理 (4)3.2 温度传感器 (4)3.2.1 温度传感器DS18B20 (4)3.2.2 DS18B20的构造 (6)3.3 水压传感器及A/D转换 (7)3.3.1 水压传感器 (7)3.3.2 ADC0832构造及原理 (7)3.4 电磁开关电路及原理 (8)3.4.1 光电隔离器的原理 (9)3.4.2 电磁继电器的原理 (10)3.5 单片机控制系统 (11)3.6 LED数码管显示电路 (13)3.7按键电路设计 (15)4 软件设计方案 (16)4.1 DS18B20驱动程序设计 (17)4.1.1 DS18B20工作过程及时序 (17)4.1.2 DS18B20的驱动程序 (19)4.2串行AD转换器ADC0832程序设计 (21)4.3 按键控制程序设计 (25)4.4 LED数码管显示程序设计 (27)5 硬件电路仿真结果 (30)5.1 温度仿真 (30)5.1.1 温度显示仿真 (30)5.1.2 温度控制仿真 (30)5.2 水位仿真 (32)5.2.1 水位显示仿真 (32)5.2.2 水位控制仿真 (32)5.3 仿真结果分析 (33)致谢 (35)参考文献 (36)附录Ⅰ系统总原理图 (37)附录Ⅱ系统源程序 (38)1 前言1.1 课题背景和意义目前,中国已成为世界上最大的太阳能热水器生产国,年产量约为世界各国之和,已有一百多家太阳能热水器生产厂。
太阳能热水器智能控制系统设计

太阳能热水器智能控制系统设计智能控制系统主要分为硬件部分和软件部分。
硬件部分包括传感器、执行器和控制模块;软件部分包括数据采集、数据处理和控制算法。
1.传感器通过安装在太阳能热水器上的不同类型的传感器,可以实时获取一些必要的参数信息,如太阳辐射强度、水温、水位等。
传感器的选择需要考虑到其精度、可靠性和成本等因素。
传感器可以通过模拟信号或数字信号的形式将收集到的数据传输给控制模块。
2.执行器执行器用于控制太阳能热水器的工作状态,如水泵的开关控制、阀门的开关控制等。
执行器通常由电磁阀、电机或电热器等组成,通过开关控制电源的通断来实现相应的操作。
3.控制模块控制模块是整个智能控制系统的核心部分,它接收传感器传输过来的数据,并根据一定的控制算法进行处理,最后控制执行器的工作。
控制模块通常由单片机或微处理器组成,具有数据处理能力,并能通过通信接口与其他设备进行数据传输和控制。
4.数据采集数据采集是指将从传感器采集到的数据进行收集和记录的过程,可以将数据存储在数据库或者内存中,供后续的数据处理和分析使用。
数据采集可以通过定时采集、事件触发采集或实时采集等方式进行。
5.数据处理数据处理是指对采集到的数据进行计算、分析和处理的过程,以提取有用的信息。
例如,可以通过计算太阳能辐射强度和水温的关系来预测水温的变化趋势,以及控制相应的工作状态。
6.控制算法控制算法是根据实际应用需求设计的,用于根据传感器数据和其他信息来控制太阳能热水器的工作状态。
例如,根据太阳辐射强度和水温的关系,可以设计一个算法来控制水泵的开关,以实现更高效的加热水温。
总结起来,太阳能热水器智能控制系统的设计可以通过传感器实时获取相关参数信息,经过数据采集和处理,最终通过控制算法控制执行器的工作状态。
这样的设计可以提高太阳能热水器的效率和节能性,实现智能化的控制和管理。
基于51单片机的太阳能热水器控制系统设计

基于51单片机的太阳能热水器控制系统设计一、本文概述随着全球对可再生能源需求的日益增加,太阳能作为一种清洁、可持续的能源形式,已经引起了广泛的关注和应用。
太阳能热水器作为一种常见的太阳能应用产品,其在节能减排、提高生活质量等方面具有显著的优势。
然而,太阳能热水器在实际使用过程中,仍存在一些问题,如水温控制不稳定、能效利用率不高等。
为了解决这些问题,本文提出了一种基于51单片机的太阳能热水器控制系统设计方案。
该系统以51单片机为核心控制器,结合温度传感器、水位传感器、执行机构等硬件设备,实现了对太阳能热水器水温和水位的精确控制。
通过实时监测水温和水位信息,系统能够自动调整加热功率和补水流量,确保水温稳定在用户设定的范围内,同时避免了水资源的浪费。
系统还具有故障诊断功能,能够及时发现并处理潜在的故障问题,提高了系统的可靠性和稳定性。
本文首先介绍了太阳能热水器的工作原理和现状,分析了传统控制系统存在的问题和不足。
然后,详细阐述了基于51单片机的太阳能热水器控制系统的硬件组成和软件设计。
在硬件设计方面,本文介绍了各个硬件模块的功能和选型原则,包括温度传感器、水位传感器、执行机构等。
在软件设计方面,本文详细说明了系统的控制算法和程序流程,包括温度控制算法、水位控制算法、故障诊断算法等。
本文通过实验验证了系统的可行性和有效性,为太阳能热水器的智能化、高效化提供了有益的探索和实践。
本文的研究不仅有助于提升太阳能热水器的能效利用率和用户体验,还为其他可再生能源应用产品的智能化控制提供了有益的参考和借鉴。
本文的研究成果对于推动太阳能热水器行业的技术进步和产业发展具有重要的现实意义和应用价值。
二、太阳能热水器控制系统总体设计太阳能热水器控制系统的总体设计是确保整个系统高效、稳定运行的关键。
在设计过程中,我们充分考虑了太阳能热水器的实际应用场景和用户需求,以及51单片机的性能特点,从而构建了一个既实用又可靠的控制系统。
太阳能热水器智能控制系统设计

太阳能热水器智能控制系统设计一、引言太阳能热水器是一种利用太阳能进行加热水的技术设备,具有环保、节能、安全等优点,正逐渐被广大用户所接受和使用。
然而,当前太阳能热水器的控制系统一般较简单,只能实现温度设定和加热控制的基本功能。
本文将基于这种现状,设计一种太阳能热水器智能控制系统,以提高系统的自动化程度和智能化程度,为用户提供更便捷、高效、舒适的使用体验。
二、系统架构智能控制系统的基本架构包括感知层、传输层和应用层。
感知层通过传感器检测环境参数,如太阳能收集器的温度、太阳辐射强度等,传输层将感知层采集到的数据传输给应用层处理,并接收应用层的控制指令。
三、硬件设计1.传感器选择:选择适合使用环境的温度传感器、辐射传感器等多个传感器,确保感知层能够准确地采集各项参数。
2.控制器设计:选用具有较高性能和稳定性的控制器,能够实时处理感知层传输的数据和应用层指令,确保控制系统的高效、稳定工作。
3.通信模块选择:选择适合的无线通信模块,以确保感知层数据的稳定传输和应用层指令的可靠接收。
四、软件设计1.数据处理算法:根据感知层采集的数据,设计相应的数据处理算法。
如根据太阳能收集器的温度和太阳辐射强度,计算热水器加热的时间和功率等参数。
2.智能控制算法:设计智能控制算法,根据用户设定的热水需求以及当前环境参数,自动控制热水器的工作状态,实现最优的加热效果和节能效果。
3.用户界面设计:为用户提供友好、直观的操作界面,以便用户随时设定热水需求、查询加热状态和温度等信息。
五、系统功能1.自动感知:系统能够自动感知太阳能收集器的温度、太阳辐射强度等参数,并采集到控制器。
2.数据处理:根据感知层采集的数据,通过数据处理算法计算热水器的工作参数,并将参数传输给应用层。
3.智能控制:根据用户设定的热水需求,结合当前环境参数,通过智能控制算法自动控制热水器的工作状态,实现最优的加热效果和节能效果。
4.用户界面:为用户提供友好、直观的操作界面,用户可以设定热水需求、查询加热状态和温度等信息。
毕业设计太阳能热水器控制电路

太阳能热水器控制电路设计一、系统设计1.设计原理太阳能热水器自动控制电路采用AT89S52单片机作为控制关键,外围加蜂鸣器控制电路、数码显示电路、水位检测电路、电机控制电路、按键电路、温度检测电路等。
数码管实时切换显示目前温度与目前液位,当液位过高时,蜂鸣器报警,并且电机反转模拟排水过程;当液位过低时,蜂鸣器报警,并且电机正转模拟进水过程。
本系统设计简朴,成本低,性能优良,具有一定旳稳定性和实用性。
三、硬件电路设计1.基本原理框图图一:原理框图(1)太阳能热水器控制装置重要构成由CPU、显示电路、按键电路、蜂鸣器电路、电机电路、液位检测电路、温度检测电路、电源电路构成,如图一。
(2)太阳能热水器控制装置旳工作原理接通电源后,显示目前水位,水位被分为16个点。
并且显示目前温度。
液位显示与温度旳显示切换进行。
当水位显示低于或等于1时,蜂鸣器报警,并且电机正转,表达进水;当水位显示高于或等于15时,蜂鸣器报警,并且电机反转,表达排水。
液位检测运用CD40512.各部分电路原理(1)最小系统最小系统电路如图二所示。
图二:最小系统(2)显示电路采用LED数码管显示,该方案具有实现轻易、发光亮度大、驱动电路简朴等长处,其可靠性也优于LCD旳显示。
由6个数码管和6个74LS164构成,采用串行静态显示旳措施。
将数码管旳8个输入端与74LS164旳输出端Q0~Q7相连。
P1.0和74LS164旳CLK 连接,作为时钟;P1.4接74LS164旳A 端,作为显示数据旳输入端。
显示电路如图三所示。
C31104VCCC33104VCCC32104VCCC34104VCCC35104VCC图三:显示电路不过使用74LS164串显会出现消隐旳问题。
为了消除消隐,那么就必须在硬件上与软件上结合来消除消隐旳问题。
消隐电路如图四所示。
软件上,在传数据时,先传一种高电平,直到数据传完再传送一种低电平即可。
图四:消隐电路(3)按键电路键按下后,进行温度及液位检测旳切换,也可不使用。
太阳能热水器自动温度控制器设计

太阳能热水器自动温度控制器设计
引言
目前,市场上销售的太阳能热水器大多没有自动控制功能,使用起来不
灵活方便,为此,为太阳能热水器加装自动控制功能,具有广泛的市场。
1 自动控制系统技术要求
(1)设定温度的范围为25℃至65℃。
(2)输入信号为水温传感器产生的温度信号;水位传感器产生的水量
信号。
(3)输出信号为控制水温电信号(控制加热电热管)和控制水流量
调节阀信号(控制加水电磁阀)。
(4)配有输入功能键盘:完成自动/手动、手动加水键、手动加热键、
温度设定键、水位档选择键。
(5)具有两位LED 数码显示电路,显示温度设定值、实际温度测量值,六个发光二极管指示六档水位(10%、30%、50%、70%、90%、100%)。
2 系统硬件设计及原理
太阳能热水器加装自动控制功能,主要是加装一个数据采集系统和一个
电脑控制板。
根据太阳能热水器的技术要求及经济方面的考虑,我们选用
89C51 单片机为核心控制器,组成热水器温度控制系统。
系统由89C51 单片机、数据采集系统、水位选择电路、温度显示系统、水位指示系统、加水电磁阀控
制电路、加热电热管控制电路、报警讯响电路、复位电路、晶振电路、键盘电
路组成。
硬件系统组成粗略框架如数据采集系统是非常重要的一部分,它通过水。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
太阳能热水器的通用控制器研制武汉工程大学刘增华李伟1、系统功能与指标1.1功能特点具有目前产品的一般功能:1)设置上限水位:设置水位上限,可选择50% ~99%之间(我们选取80%),并且在使用中,不得自动上水。
2)设置水箱水温:设置电加热的温度上限,可选择0°C~80°C(我们选取60°C),自动加热。
3)水位指示:LED五段显示。
4)水温指示:LCD液晶数字显示。
5) 自动上水:为防止空晒,当水位低于10%时,系统强制上水;当水位低于30%时,提示报警,若没有使用,启动自动上水,若使用,则报警提示先上水,再使用。
6)辅助加热:当出现阴雨天气,水温达不到要求,启动辅助电加热,电加热温度上限设置为60°C。
同时还具有新加功能:1)智能模式:检测淋浴水温,自动调节凉水的流量,自动调节,使水温保持在设定温度的2°C范围内,并保持有足够的流量。
1.2技术指标1)设置上限水位:设置水位上限,可选择50% ~99%之间(我们选取80%),并且在使用中,不得自动上水。
2)设置水箱水温:设置电加热的温度上限,可选择60°C,自动加热。
3)水位指示:分段显示(5段显示)。
4)水温指示:数字显示(精度为1度)。
5)自动上水:为防止空晒,当水位低于30%时,提示报警,若没有使用,启动自动上水。
若使用,则报警提示先上水,再使用。
6)智能模式:检测淋浴水温,自动调节热水、凉水的流量,自动调节,使水温保持在设定温度的2°C范围内,并保持有足够的流量。
2、系统结构设计2.1系统的工作原理太阳能热水器辅助控制系统结构如图1所示。
在太阳能热水器的储水箱内增加一个电加器,采用220V市电加热,由辅助控制系统的继电器控制通断电,用来在温度达不到要求的时候进行辅助加热来保证热水温度。
水位、水温探测器从保温储水箱顶部安装在水箱中,通过电缆线接入用户室内控制器。
流量控制阀用通过步进电机来精确控制冷水即自来水的流量,来保证热水与冷水混合后的温度达到用户的要求。
当水位不足报警时,通过电磁阀启动上水,上水的过程中,不允许淋浴,且放水电磁阀关闭。
当需要淋浴时,放水电磁阀打开,通过自动控制冷水电磁阀的开度来保证冷水与热水混合后的温度与用户设定值基本一致(水温保持在设定温度的2°C范围内),淋浴过程中,系统禁止上水和辅助加热。
当淋浴完后按下”淋浴完键”,系统停止放水并且电机要复位。
系统的总体结构图如下。
淋浴器图1 太阳能热水器辅助控制系统结构图2.2 控制系统与电路结构组成控制系统采用FPGA内部构建Core8051单片机来控制水温水位等,其内部接线图如图2所示。
整个系统采用Fusion StartKit开发平台,嵌入8051内核为核心,对水温、水位等参数进行智能检测和显示,读取电磁阀的状态,经键盘操作和单片机内部运算比较,控制相应得执行机构进行通、断电及报警提示,其控制系统组成如图3。
图2 FPGA内部Core8051引脚分配图图3 太阳能热水器控制系统的组成Core8051的P0口作液晶的数据口,P2.0-P2.2为液晶的使能控制口,P2.3-P2.5分别接步进电机驱动器CP-,u/d-,FREE-, CP为脉冲信号输入端;U/D为电机正、反转控制端;FREE 为电机脱机控制端,通过不断的对淋浴水温进行智能检测和显示,经单片机内部运算与设定温度进行比较,控制输入步进电机的脉冲信号及正反转状态,来调节流量控制阀的开度,从而来保证喷头水温与用户设定水温的相一致。
P2.6接数字温度传感器ds1820,用来检测水箱温度并通过芯片及单片机内部处理后显示在液晶上,P2.7也接温度传感器用来检测淋浴喷头的水温。
如果水箱温度不足时(达设置水温下限),则加热继电器动作,启动辅助加热装置,当水温达加热温度上限时加热继电器断开,辅助加热装置关闭。
水位用5段led灯显示,如果水位不足则报警蜂鸣器响,若没使用则上水继电器动作,电磁阀开通,自动上水至水位上限后关闭。
3、单元电路设计3.1水位检测图4 由555定时器构成的液位测量电图水位检测原理如下:由两块铝板组成电容构成介质变化型电容传感器,电容大小为:lS C ε= 式中:ε为介质,S 为对应的面积,l 为长度。
假设电容器为两平极结构,作绝缘处理后的电容器两极间浸入不同的界质中,由于电容器中的介质相对介电系数不同,电容量是不同的,即检测电容传感器在水位变化导致电容器的电容C 变化情况。
电容传感器处在大气中、浸入水中不同深度,其电容量的变化,可反映出水位的变化。
在大气中相对介电常数为1,电容传感器的电容量为C1,在水中相对介电常数更大,达到80,电容传感器的电容量将随着浸入深度加大而变大。
由于上下两部分的介质不同,则总电容有两个电容并联组成: 设铝板总高度为H ,液位高度为h ,则上下两部的介质分别为空气和水。
h H bhl S C -•==11εb hbh l S C 80802=•==ε式中:空气的介电常数为1,b 为铝板的宽度。
本传感器采用NE555制作为脉冲波发生器,输出的频率反映液位的变化,根据实际测试:uF C 1.0min =、uF C 2.2max =取中心工作频率为1KHz ,确定电阻值。
当水箱里无水时(水位最低),最小。
将水位划分为五段:0.1-0.2m 、0.2-0.3m,、0.3-0.4m 、0.4-0.5m 、0.5-0.6m ,分别对应于显示灯LED1、LED2、LED3、LED4、LED5。
当水位发生C1C2变化引起电容的变化,经多谐振荡器输出周期性方波的频率f也随之发生变化[f=1.43/(R1+2R2)C],根据单片机的计数器T0扑捉到的时钟的个数,再经单片机内部比较处理来决定点亮的LED灯。
譬如当水位处于h1位段时,输出的频率满足点亮LED1的条件,则LED1亮,指示水位位于0.1-0.2m处,由此来实现水位的显示。
LED灯显示采用动态扫描方式,即在某一时刻,只有一个灯被点亮。
当水位低于h2时,启动蜂鸣器报警,提示需加水,若无人使用则自动启动加水。
实验表明,为能很好的满足电路的要求,R1用可调电阻,R2应选取阻值较大一点的电阻,这里我们选R2=8.1KΩ,R1阻值范围为0-30 KΩ。
3.2 温度检测对水温信号的检测采用一线式数字温度传感器DS1820,它以9 位数字量的形式反映器件的温度值。
通过使用连接到VDD 引脚的外部电源来向ds1820供电,如图5 所示,这种方法的优点是在I/O 线上不要求强的上拉,总线上主机不需向上连接便在温度变换期间使线保持高电平。
这就允许在变换时间内其它数据在单线上传送。
图5 温度传感器接线图3.3步进电机控制电路的设计为了能调控水温,需要节流阀控制冷水的流量,由于商品化的电动阀价格太高,本方案选用节流阀+步进电机的组合控制。
步进电机,选用的二相四拍步进,步距角为1.8°。
同时,采用BY-2HB03M的驱动器来驱动,控制二相四拍步进电机的步进及正反转。
通过单片机控制步进电机即可控制节流阀,达到控制淋浴水温的目的。
步进电机控制电路连接图如图6所示。
图6 步进电机控制连线图3.4 光电隔离与辅助加热电路设计下图7为太阳能热水器辅助加热电路设计,当室外光照不足(阴天,雨天)时,对水箱的水提前加热是非常有必要的,而这一电路恰好能完成该功能。
工作原理为:当Core8051的P1.2口输出高电平时,三极管T1导通,使得继电器线圈通电闭合,电阻丝R1’-R4’发热,从而完成加热任务。
Vcc 图7 辅助加热电路图加热电阻丝220VACK13.5继电器驱动电路电路如图8所示,三极管Q 为NPN 驱动三极管,工作在开关状态;二极管D 为继电器线圈在由吸合变为断开时提供续流,以免产生高压,从而保护三极管Q 。
VCC+24v-图8 继电器驱动电路因为硬件设计中要用到两个电磁阀,淋浴时的放水电磁阀和向水箱上水的电磁阀,故需要两个继电器来控制。
4、控制器的软件设计控制器软件设计采用模块化结构,包括主程序,键盘扫描子程序,显示子程序,步进电机控制程序,液位比较子程序及温度计算子程序。
系统主程序主要完成水箱及喷头温度和水位的检测,温度的设置,水位不足报警,自动上水及一些初始化功能。
系统主程序流程图如图8所示。
5、测试结果该控制器的设计主要采用Actel公司Fusion系列60万门的AFS600芯片,通过嵌入8051内核来实现,充分利用该平台提供的资源,来完成本次设计任务。
该控制器与市面上的太阳能控制器比较,主要解决了两大主要问题:1.水温的控制调节问题。
该控制器采用精确度很高且跟随性很好的步进电机在很短的时间内进行精确自动调节淋浴水温,保证设定水温与实际水温误差在2℃,并且水温从低向设定水温自动调节,杜绝因水温调节过高而发生烫伤事件。
2. 自动上水问题。
该控制器能实现完成自动上水过程,当检测水位低于水位下限时,先检测热水器是否处于使用状态,若使用中则报警并提示上水再使用,此过程中由于水位留有余量,用户仍然可以继续完成淋浴;若没使用,则启动自动上水至设定的水位上限。
此外,由于增加了一个温度传感器用来检测淋浴水温,使得控制器更加智能化。
致谢本次设计制作历时5个月,在本次设计的过程中,在对Fusion 开发平台熟悉的过程中得到广州周立功刘银华经理及武汉周立功陈光华工程师的细心帮助;在对硬件搭建及软件编程的过程中得到沈浩研究生的大力帮助;在整个设计过程中得到了熊俊俏老师的鼎力相助和悉心指导,在此一并表示深深地感谢!//太阳能热水器智能控制系统程序://定义头文件和各个输入管脚以及变量声明#include <reg52.h>#include <absacc.h>#include <stdio.h>#include <intrins.h>#define uint unsigned int//定义变量类型名#define uchar unsigned char/*定义8255a字符型字位口*/#define DIGPORT XBYTE[0x1FFF]//PA口地址,位选码地址#define WORDPORT XBYTE[0X3FFF]//PB口地址,断选码地址#define CCOM XBYTE[0X7FFFF]//控制字寄存器地址#define KPORT XBYTE[0X5FFF]//PC口,键盘扫描地址//DS1302_RST=1//定义DS1302时钟芯片引脚操作#define Set_DS1302_RST DS1302_RST=1//DS1302_RST=0#define Clr_DS1302_RST DS1302_RST=0//DS1302_SDA=1#define Set_DS1302_SDA DS1302_SDA=1//DS1302_SDA=0#define Clr_DS1302_SDA DS1302_SDA=0//DS1302_SCLK=1#define Set_DS1302_SCLK DS1302_SCLK=1//DS1302_SCLK=0#define Clr_DS1302_SCLK DS1302_SCLK=0//定义读时间控制字#define DS1302_SEC_Reg 0x80#define DS1302_MIN_Reg 0x82#define DS1302_HR_Reg 0x84#define DS1302_DATE_Reg 0x86#define DS1302_MONTH_Reg 0x88#define DS1302_DAY_Reg 0x8a#define DS1302_YEAR_Reg 0x8c#define DS1302_CONTROL_Reg 0x8e#define DS1302_CHARGER_Reg 0x90#define DS1302_CLKBURST_Reg 0xbe//全局变量//为了方便,我把个位和十位分开了uchar year1=0x88;uchar year0=0x88;uchar month=0x88;uchar date=0x88;uchar day=0x88;uchar hour=0x88;uchar minute=0x88;uchar second=0x88;/*定义P1口各管脚*/sbit L0=P2^0;sbit L1=P2^1;sbit L2=P2^2;sbit L3=P2^3;sbit K0=P2^4;sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit Hig=P1^4;sbit DS1302_SDA=P1^5;//定义DS1302时钟引脚与单片机引脚的连接sbit DS1302_SCLK=P1^6;sbit DS1302_RST=P1^7;/*声明调用函数*/void inital(void);void timer1_svr(void);void display(void);void delay(uchar j);void DS1302_Write(uchar reg,uchar dat);uchar DS1302_Read(uchar reg);void DS1302_Init(void);void ReadTime(void);void WtTmCr();void LvRead();void TmRead();void key(void);uchar kbscan(void);void DS1302(void);void int0_int(void);void int1_int(void);/*定义调用存储单元*//*显示缓冲区(依次为高位低位)*/uchar BUFFER[3]={0,0,0};uchar WTLV;//水位值uchar TMP;//水温值uchar WTLVSET;//水位设定值uchar TMPSET;//水温设定值uchar buf[4]={0,0,0,0};/*数码管显示编码"0"-"9","A","-"*/uchar code TABLE[]={0x7B,0x30,0xEA,0xF8,0xB1,0xD9,0xDB,0x70,0xFB,0xF9,0xF3,0x80};main(){inital();//初始化中断、定时器、I/O口kbscan();//键盘扫描key();//键盘处理TmRead();//读取温度LvRead();//读取水位DS1302();//读取时间display();//显示}void inital(){P1_0= P1_1= P1_2=K0=0;//初始化外部驱动口DS1302_Init();EA=1;//开外部中断IT0=1;//外部中断下降沿触发EX0=1;//允许外部中断0Hig=1;P1.3输出高电平TMOD=0x11;定时器工作于方式1TH1=0X8A;//定时器1赋初值TL1=0XD0;ET1=1;定时器1开定时中断TR1=1;//开启定时器1CCOM=0X80;//初始化8255A,送控制字,工作方式0}uchar kbscan(void){uchar recode;if((KPORT&0X0F)!=0X0F) //若有键按下 {delay(2); //延时抖动if((KPORT&0X0F)!=0X0F){recode=KPORT;return(recode);}}elsereturn(0);}void key(void){uchar key;key=kbscan();delay(2);if(key==0x01){P1_1=1;//上水}if(key==0x02) //设置水位{if(WTLVSET==4)WTLVSET=0;elseWTLVSET+=WTLVSET;BUFFER[0]=WTLVSET;//显示设置水位display();}if(key==0x04)//电加热{P1_0=1;}if(key==0x08)//设置温度{if(TMPSET>=80)TMPSET=30;elseTMPSET=TMPSET+10;//增加十度 BUFFER[0]=TMPSET; 显示设置水温 display();}}void timer1_svr() interrupt 1{TH1=0X8A;//重新给定时器1赋值TL1=0XD0;Hig=!Hig;//充放电变换if(Hig)//充电开始时启动定时器0{TL0=TH0=0X00;//定时器0赋初值0TR0=1;//启动定时器0}}void int0_int(void) interrupt 0//外部中断0,测水位{EX0=0;EX1=1;TR0=0;buf[0]=TL0;buf[1]=TH0;}void int1_int(void) interrupt 2//外部中断1,测水温{EX1=0;EX0=1;TR0=0;buf[2]=TL0;buf[3]=TH0;}void TmRead()//水温值处理{uint val;val=buf[3]*256+buf[2];if(val<7549)TMP=97-int(val*8/1000);elseif(val<20000)TMP=50-int(val/1000);elseTMP=30-int(val*5/10000);}void LvRead()//水位值处理{if(buf[1]>60){WTLV=1;//L3=0;L2=1;L1=1;L0=1;}else if(buf[1]>45){WTLV=2;L3=1;L2=0;L1=1;L0=1;}else if(buf[1]>36){WTLV=3;L3=1;L2=1;L1=0;L0=1;}else{WTLV=4;L3=1;L2=1;L1=1;L0=0;}}void WtTmCr()//水位、水温控制{if(WTLV==4)P1_1=0;if(WTLV==1)P1_1=1;if(TMP>=TMPSET)P1_0=0;if(TMP<TMPSET&&hour==0x19)P1_0=1;}void display(void){uchar i; //显示缓冲区首址uchar delay; //显示延时uchar disp; //显示内容uchar digit; //定义数码管显示位digit=0x0200;for(i=2;i>=0;i--){if(BUFFER[i]>100) disp=BUFFER[i]%10+10;//显示高位else disp=BUFFER[i]%10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay=200;delay++);digit=digit>>1;//显示低位disp=BUFFER[i]/10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay=200;delay++);digit=digit>>1;}}void delay(uchar j)//延时程序{uchar a,b;for(a=0;a<j;a++)for(b=0;b<200;b++);}void DS1302()//时间程序{ReadTime();BUFFER[1]=second;BUFFER[2]=hour;}void DS1302_Write(uchar reg,uchar dat)//写入时间 {uchar i;Clr_DS1302_RST;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();Set_DS1302_RST;_nop_();_nop_();for(i=8;i>0;i--){if(reg&0x01) Set_DS1302_SDA;else Clr_DS1302_SDA;_nop_();_nop_();Set_DS1302_SCLK;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();reg>>=1;}for(i=8;i>0;i--){if(dat&0x01) Set_DS1302_SDA;else Clr_DS1302_SDA;_nop_();_nop_();Set_DS1302_SCLK;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();dat>>=1;}Clr_DS1302_RST;_nop_();_nop_();}uchar DS1302_Read(uchar reg)//读取时间{uchar dat=0,i;Clr_DS1302_RST;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();Set_DS1302_RST;_nop_();_nop_();for(i=8;i>0;i--){if(reg&0x01) Set_DS1302_SDA;else Clr_DS1302_SDA;_nop_();_nop_();Set_DS1302_SCLK;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();reg>>=1;}for(i=8;i>0;i--){dat>>=1;if(DS1302_SDA) dat|=0x80;Set_DS1302_SCLK;_nop_();_nop_();Clr_DS1302_SCLK;_nop_();_nop_();}Clr_DS1302_RST;_nop_();_nop_();return(dat);}void DS1302_Init(void)//初始化DS1302{DS1302_Write(DS1302_CONTROL_Reg,0x00);//关闭写保护 DS1302_Write(DS1302_SEC_Reg,0x80);//暂停DS1302_Write(DS1302_CHARGER_Reg,0xa9);//涓流充电 DS1302_Write(DS1302_YEAR_Reg,0x04); //年DS1302_Write(DS1302_MONTH_Reg,0x12); //月DS1302_Write(DS1302_DATE_Reg,0x09); //日DS1302_Write(DS1302_DAY_Reg,0x04); //周DS1302_Write(DS1302_HR_Reg,0x10); //时DS1302_Write(DS1302_MIN_Reg,0x25); //分DS1302_Write(DS1302_SEC_Reg,0x00); //秒DS1302_Write(DS1302_CONTROL_Reg,0x80);//打开写保护 }void ReadTime(void)//读取时间{uchar dat;dat=DS1302_Read(DS1302_YEAR_Reg);//年year0=dat&0x0f;year1=dat>>4;dat=DS1302_Read(DS1302_MONTH_Reg);//月month=dat;dat=DS1302_Read(DS1302_DATE_Reg);//日date=dat;dat=DS1302_Read(DS1302_DAY_Reg);//周day=dat;dat=DS1302_Read(DS1302_HR_Reg);//时hour=dat;dat=DS1302_Read(DS1302_MIN_Reg);//分 minute=dat;dat=DS1302_Read(DS1302_SEC_Reg);//秒 second=dat;}。