智能热水器设计毕业论文二稿.docx
《智能热水器设计毕业论文二稿.docx》由会员分享,可在线阅读,更多相关《智能热水器设计毕业论文二稿.docx(25页珍藏版)》请在冰豆网上搜索。
智能热水器设计毕业论文二稿
ModifiedbyJEEPonDecember26th,2020.
智能热水器设计毕业论文二稿
插图索引
摘要
智能化的热水器一般的用单片机作为控制器,能实现恒温和水位的自动调节的功能,本设计是以FPGA和单片共同作为控制器件设的智能化热水器,在减少了一些外围器件的同时实现了恒温和水位的自动调节控制,还能实施时间监控,根据不同的月份,不同的日期,不同的时间而自动开启和关断热水器的电源,从而使得热水使用更加方便,设定后不需要人的干预,同时能节约电能。
本设计编程语言使用VHDL语言和C51,运行环境分别是MAX+plusII和KeiluVision3,用Proteus7Professional画系统的电路图并进行仿真调试,FPGA芯片使用Altera公司的EPF10K10TC144-4,单片机使用STC89C52RC.
关键词:
智能、热水器、FPGA、EDA、VHDL、单片机89C51、C51、恒温控制、液位控制、时钟控制、键盘控制、液晶显示
Abstract
WaterheatersaregenerallyuseMCUasthekindofwaterheaterscouldachievetoconstanttemperatureandwaterlevelautomaticlly,ThedesignofintelligentwaterheaterisbasedonFPGAandMCUcontrol,reducingthenumberofperipheraldeviceswhileachievingtheautomaticadjustmentoftemperatureandwaterlevelcontrol,andalsomonitortheimplementationofthetime,accordingtoadifferentmonth,differentdays,differenttimesandautomaticturnedonandoffthepoweroftheintelligentwaterheater,makingtheuseofwaterheartermoreconvenient,Settingswithouthumanintervention,savingenergyatthesametime.
ThedesignofprogramminglanguageusesVHDLlanguageandC51,operatingenvironmentareMAX+plusIIandKeiluVision3,withProteus7Professionalpaintingsystemandthesimulationcircuitdebug,FPGAchipuseAltera'sEPF10K10TC144-4,microcontrolleruseSTC89C52RC.
Keywords:
Smart,waterheaters,FPGA,EDA,VHDL,MCU89C51,C51,temperaturecontrol,waterlevelcontrol,clockcontrol,keyboardcontrol,liquidcrystaldisplay
绪论
选题的背景及目的
市场上适合家庭使用的热水器有两类,一类是燃气式,另一类是电热式,而购买热水器主要考虑价格、安全性,方便性、寿命、成本等因素,一般来说,燃气热水器的优点是价格低、加热快、出水量大、温度稳定,缺点是必须分室安装,不易调温,需定期除垢,在使用中易产生有害气体,因此其使用受到一定限制;储水式电热水器的优点是干净、卫生,不必分室安装,不产生有害气体,调温方便,高档产品还有到达设定温度后自动断电、自动补温等功能。
本设计是基于已有的储水式电热水器基础上实现时钟定时开关的控制和高温断路保护功能,同时用FPGA作为数据采集器,使得液位和温度的实时性更强,液位和温度的精准度更高,同时可手动调节液位和温度,用LCD显示相关信息,整个系统外围器件少,稳定性高,同时安装使用方便。
研究现状分析
目前大多数智能热水器都是基于单片机控制的智能热水器,利用EDA技术和单片机技术,设计的基于FPGA电热式热水器控制器,实现系统的硬件电路及相关配套软件的设计,使系统能完成热水器定时开关、热水器温度、水位参数的采集、对采集数据实时记录、处理、分析、显示和控制等功能。
此设计将FPGA和单片机结合使用,既发挥了FPGA高速数据采集的特点,有发挥了单片机在控制方便的优点,因此整个系统的实时性比一般的仅用单片机设计的系统的实时性强,但在其性价比低,因而,此设计仅适用于练习FPGA与单片机的通信功能,练习用FPGA和单片机完成一个具体系统的具体功能的设计,如果希望此产品能具有一定的实用价值和市场竞争力,可以用单片机单独完成此设计,用DS1302时钟芯片完成时钟的嵌入和定时控制的功能。
研究方法
通过分析现有电热式热水器的功能和结构的和查阅相关文献、资料,总结现了市场上现有的热水器的种类、结构和功能特点,在已有产品的功能基础上加入了定时开关功能,使得此产品更人性化也符合社会提倡的节能的需要,此设计先通过Proteus和MasplusII等软件仿真,然后在系统板上进行逐个的功能调试,在逐个功能完成的基础上进行系统总体功能调试。
1主要器件和编程语言简介
本设计所用到的主要元器件
FPGA芯片EPF10K10TC144-4一片
单片机STC89C52RC一片
时钟芯片DS1302一片
温度传感器DS18B20一个
液晶显示器LCD12864一片
继电器HLS8L-DC5V-S-C三个
电平转换芯片MAX232一片
器件简介
FPGA简介
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FLEX系列等。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
单片机简介
单片机STC89C52RC和89C51单片机基本相同,具体资料参照参考教科书《单片微型计算机原理及应用》,张毅坤、陈善久、裘学红编着。
DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为~。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
引脚功能及结构
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
DS1302的引脚功能图如下图:
图1DS1302封装图
DS1302的控制字节
DS1302的控制字如图2所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
为了实现系统报警计时等功能,此设计采用了DS302实时时钟芯片。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为~。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
引脚功能及结构DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
DS18B20简介
DS18B20的数字温度计提供9至12位(可编程设备温度读数。
信息被发送到/从DS18B20通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
存储器
DS18B20的存储器包括高速暂存器RAM和可电擦除RAM,可电擦除RAM又包括温度触发器TH和TL,以及一个配置寄存器。
存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。
当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。
当修改过寄存器中的数时,这个过程能确保数字的完整性。
高速暂存器RAM是由8个字节的存储器组成;第一和第二个字节是温度的显示位。
第三和第四个字节是复制TH和TL,同时第三和第四个字节的数字可以更新;第五个字节是复制配置寄存器,同时第五个字节的数字可以更新;六、七、八三个字节是计算机自身使用。
用读寄存器的命令能读出第九个字节,这个字节是对前面的八个字节进行校验。
温度的读取
DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以便为所测的温度,还需要判断正负。
前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。
编程语言简介
VHDL简介
VHDL语言是一种用于电路设计的高级语言。
VHDL的英文全写是:
VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,即超高速集成电路硬件描述语言。
其主要用于描述数字系统的行为、结构、功能和接口。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
在使用VHDL等高级语言时,有专用的工具来实现将语言描述的电路功能转换为实际的电路,所以使用者就用不着对底层的电路很熟悉,也用不着对CPLD/FPGA的结构很熟悉。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效、高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
C51语言简介
语言数据结构
每写一个程序,总离不开数据的应用,在学习C51语言的过程中掌握理解数据类型也是很关键的。
先看表2-1,表中列出了KEILuVision2C51编译器所支持的数据类型。
在标准C语言中基本的数据类型为char,int,short,long,float和double,而在C51编译器中int和short相同,float和double相同,这里就不列出说明了。
下面来看看它们的具体定义:
数据类型
长度
值域
unsignedchar
单字节
0~255
signedchar
单字节
-128~+127
unsignedint
双字节
0~65535
signedint
双字节
-32768~+32767
unsignedlong
四字节
0~
signedlong
四字节
~
float
四字节
±~±+38
*
1~3字节
对象的地址
bit
位
0或1
sfr
单字节
0~255
sfr16
双字节
0~65535
sbit
位
0或1
图2KEILuVision2C51编译器所支持的数据类型
2系统方案选择和论证
设计要求
1、基本功能要求:
实现温度自动调节控制,使得温度能维持在某个一定的范围之内;液位自动调节控制,使得液位能维持某个范围之内;定时开启和关断控制,根据不同日期和时间,开启和关断热水器电源;键盘设定温度及时间校正功能,能设定维持温度的范围的最大值和最小值,同时可以用键盘校正时间。
2、扩展功能要求:
实现恒温控制,使得温度能温度在具体的某个值,而不是维持在某个范围之内,即实现温度的实时监控;实现水位的调节功能,能使水位维持在某个具体的数值,而不是维持在某个范围之内,即实现水位的实时监控。
3、本设计软件部分主要采用VHDL硬件描述语言编程实现FPGA的数据采集和控制功能,用C51语言实现单片机的控制功能,并利用MAX+PLUSⅡ和KeiluVision3软件开发平台进行编程调试。
对于VHDL语言程序要调试等待准确的仿真时序图,对于C51程序,要用Keil编译,并用Proteus7Professional得到准确的仿真结果。
其中FPGA和MCU的通信的的程序则直接用实物进行调试,并要求得到与理论分析相一致的结果。
4、本设计由控制器模块、水位控制模块、水温控制模块、定时开关控制模块、时钟模块、键盘模块和显示模块七大硬件模块构成,各模块相互关联,控制器是各模块相互联系沟通的桥梁。
各模块方案论证和选择
控制器模块方案的论证和选择
方案A:
单独使用FPGA作为控制器。
如果单独使用FPGA作为控制器件,优势是大大的简化了外围电路,提高了整个系统的稳定性和可靠性,控制引脚能足够的满足我们的设计要求,且不需要外部EEPROM和时钟芯片,可以直接使用FPGA内部的高速ROM,也可以编写时钟模块的程序,且FPGA速度要比单片机快的多,但是要完成LCD显示、温度数据的采集、键盘控制等众多控制功能,FPGA与单片机相比没有优势。
FPGA的主要优势是能实现片上系统,大大简化外围电路,且能完成数据的高速采集;单片机的主要优势是控制简单方便。
在此设计中单独使用FPGA不能很好的体现它在高速数据采集方面的优势。
方案B:
单独使用单片机作为控制器。
如果单独使用单片机使用作为控制器,优势是能较简单方便实现水位控制模块、水温控制模块、定时开关控制模块、时钟模块、键盘模块和显示模块等各个功能模块的控制功能,同时成本大大降低,但是增加了一些外围元件,如需要增加时钟芯片和EEPROM芯片,外围电路的复杂性增加,这使得电路的稳定性和可靠性与方案A相比有所降低。
方案C:
同时使用FPGA和单片作为控制器件。
这样的方案主要是综合两种控制器件的优势,但是成本提高。
本设计采用方案C,原因是为了探索FPGA在控制功能方面的应用领域,利用低端FPGA实现一些控制功能,不仅电路大大简化,而且成本也与单片机相当。
水位控制模块方案的论证和选择
方案A
采用超声波。
用超声波实时监测水位的高度,因为本设计用到DS18B20,可以根据温度用软件补偿因为温度变化而引起的超声波速度的变化,这样能较准确的实时监控热水器内水位的高度,因而可以使等水位维持在某个值附近。
方案B
采用压力传感器。
用压力传感器测量出热水器不装水时的重量,再测量出装入水后的重量(即先要用压力传感器设计成一个电子称),根据这个差值可以计算出液位的高度,此方式能十分准确的测出液位高度,因此可以通过电磁阀将水位稳定在某个值,但是传感器的成本较高,一般的压力传感器一直在负重之下,时间长了误差增大,最终损坏。
方案C
自制传感器。
自己制作一个传感器测量出一个水位的最低值、测量出一个水位的最高值,当水位低于最低值时打开电磁阀,热水器进水;当水位达到水位的最高时,关闭电磁阀。
这样能将水位维持在某个范围之内。
同时自制的传感器简单,而且成本很低。
比较上述几种方案,本设计采用方案C。
成本低,同时能满足设计要求。
水温控制模块方案的论证和选择
温度采集模块
方案A
采用AD590。
AD590的测温范围为-55℃~+150℃。
AD590的电源电压范围为4V~30V。
电源电压可在4V到6V范围变化,电流变化1mA,相当于温度变化1K。
AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
但是AD590需要放大电路和A/D转换电路,电路较为复杂。
方案B
采用DS18B20。
DS18B20能测量-55摄氏度到125摄氏度的温度值,采用“一线总线”,内嵌A/D转换,可直接与控制器件连接外围电路简单。
两种方案比较,方案B能很好的满足我们的设计要求,而且电路比方案A简单,同时成本较方案A要低的多,因此本设计采用方案B。
热电阻丝控制方式
方案A
采用用PWM控制方式,通过改变MOS管或电力开关三极管的控制级信号的占空比来调整输出端电压的有效值,这种控制方式能使得温度稳定在某个值附近,当时需要将交流电转换成直流电,即需要设计市电压的整流电路,还需要耦合器件和电力开关管,电路较为复杂,成本较高。
方案B:
采用继电器。
使用继电器控制热电阻丝的电源的开和关,当温度值低于最低值是继电器闭合,热电阻丝通电工作,当温度高于最高值是继电器断开,热电阻丝断电停止工作。
这种方式的缺点是继电器断开和吸合的瞬间存在电弧,存在安全隐患,