1、I目 录摘 要 .VABSTRACT .VI绪论 .11 主要器件和编程语言简介 .21.1 本设计所用到的主要元器件 21.2 器件简介 .21.2.1 FPGA 简介 .21.2.2 单片机简介 .31.2.3 DS1302 简介 31.2.4 DS18B20 简介 .51.3 编程语言简介 .61.3.1VHDL 简介61.3.2 C51 语言简介62 系统方案选择和论证 82.1 设计要求 .82.2 各模块方案论证和选择 .82.2.1 控制器模块方案的论证和选择 .82.2.2 水位控制模块方案的论证和选 .92.2.3 水温控制模块方案的论证和选择 .92.2.4 定时开关控制模
2、块方案的论证和选择 .102.2.5 时钟模块方案的论证和选择 .102.2.6 键盘模块方案的论证和选择 .112.2.7 显示模块方案的论证和选择 .112.3 硬件系统框图和总体软件系统流程图 .112.4 硬系统总体电路图 .14II2.4.1 FPGA 模块电路图 142.4.2 单片机控制模块电路图 .153 .硬件电路组装调试 173.1 各模块的硬件组装 .173.1.1 FPGA 模块 173.1.2 单片机模块 .183.2 组装和改进系统硬件电路 .193.3 各硬件电路调试方法 .203.3.1 FPGA 调试方法 203.3.2 继电器电路的调试方法 .214 .软件
3、调试及仿真 .224.1 各模块的软件调试、仿真和实物测试 .224.1.1 FPGA 软件调试、仿真和实物测试 .224.1.2 DS1302 软件调试、仿真和实物测试 234.1.3 DS18B20 软件调试、仿真和实物测试 234.2 整个系统软件调试、仿真和实物测试 244.2.1 主程序的调试、仿真和实物测试 .244.2.2 水位调节子程序的调试、仿真和实物测试 .264.2.3 水温调节子程序的调试、仿真和实物测试 .264.2.4 定时开关子程序的调试、仿真和实物测试 .284.2.5 校时程序仿真 .294.2.6 按键功能提示界面的程序仿真 .304.2.7 没有实现的第二
4、定时功能提示界面的程序仿真 .305 .总体设计电路的优缺点总结及改进意见和展望 .315.1 优点 .315.2 缺点 .315.3 改进意见和展望 .31III结 论 .32参考文献 33附录 A:VHDL 语言源程序 .34附录 B: C51 语言程序主程序名及头文件名 35致 谢 .36插图索引图 1 DS1302 封装图 4图 2 KEIL uVision2 C51 编译器所支持的数据类型 .7图 3 智能热水器系统设计总体框图 .12图 4 FPGA 控制器设计总体框图 12图 5 MCU 控制器设计总体框图 12图 6 矩阵键盘特征值分布图 .13图 7 总体程序流程图 .13I
5、V图 8 校时、调温功能按键分布图及对应特征值 .14图 9 FPGA 控制模块电路图 15图 10 单片机控制模块电路图 .16图 11 自制水位传感器 .17图 12 继电器驱动电路 .17图 13 矩阵键盘电路 .18图 14 LCD12864 的显示电路 .18图 15 DS1302 电路 19图 16 DS18B20 电路 .19图 17 改进后的继电器驱动电路 .20图 18 自制水位传感器 .20图 19 自顶向下的设计流程 .22图 20 FPGA 控制器的时序仿真图 22图 21 FPGA 控制器结构图 22图 22 DS1302 仿真图 23图 23 DS18B20 仿真图
6、 .23图 24 主程序流程图 .24图 25 主程序仿真图 .25图 26 提示功能界面仿真图 .25图 27 水位调节程序的流程图 .26图 28 水位调节程序仿真图(a) .26图 29 水位调节程序仿真图(b) .26图 30 水温调节子程序流程图 .27图 31 水温调节仿真图 .27图 32 按确定键后的水温调节界面 .28图 33 定时开关子程序流程图 .28图 34 定时开关功能仿真图 .28图 35 按确定键后的仿真图 .29图 36 校时功能界面仿真 .29图 37 按确定键后的校时功能界面仿真 .29图 38 提示功能界面仿真 .30图 39 没实现的定时功能提示界面仿真
7、 .30V摘 要智 能 化 的 热 水 器 一 般 的 用 单 片 机 作 为 控 制 器 , 能 实 现 恒 温 和 水 位 的 自 动 调 节的 功 能 , 本 设 计 是 以 FPGA 和 单 片 共 同 作 为 控 制 器 件 设 的 智 能 化 热 水 器 , 在 减 少 了一 些 外 围 器 件 的 同 时 实 现 了 恒 温 和 水 位 的 自 动 调 节 控 制 , 还 能 实 施 时 间 监 控 , 根据 不 同 的 月 份 , 不 同 的 日 期 , 不 同 的 时 间 而 自 动 开 启 和 关 断 热 水 器 的 电 源 , 从 而使 得 热 水 使 用 更 加 方 便
8、 , 设 定 后 不 需 要 人 的 干 预 , 同 时 能 节 约 电 能 。 本 设 计 编 程语 言 使 用 VHDL 语 言 和 C51, 运 行 环 境 分 别 是 MAX+plus II 10.0 和 Keil uVision3, 用 Proteus 7 Professional 画 系 统 的 电 路 图 并 进 行 仿 真 调 试 , FPGA 芯片 使 用 Altera 公 司 的 EPF10K10TC144-4, 单 片 机 使 用 STC89C52RC.关 键 词 : 智 能 、 热 水 器 、 FPGA 、 EDA 、 VHDL、 单 片 机 89C51、 C51、 恒
9、 温 控 制 、液 位 控 制 、 时 钟 控 制 、 键 盘 控 制 、 液 晶 显 示VIAbstractWater heaters are generally use MCU as the controller.This kind of water heaters could achieve to constant temperature and water level automaticlly, The design of intelligent water heater is based on FPGA and MCU control, reducing the number of
10、peripheral devices while achieving the automatic adjustment of temperature and water level control, and also monitor the implementation of the time, according to a different month, different days, different times and automatic turned on and off the power of the intelligent water heater, making the u
11、se of water hearter more convenient, Settings without human intervention, saving energy at the same time. The design of programming language uses VHDL language and C51, operating environment are MAX + plus II 10.0 and Keil uVision3, with Proteus 7 Professional painting system and the simulation circ
12、uit debug, FPGA chip use Alteras EPF10K10TC144-4, microcontroller use STC89C52RC.Key words: Smart, water heaters, FPGA, EDA, VHDL, MCU 89C51, C51, temperature control, water level control, clock control, keyboard control, liquid crystal display1绪论选题的背景及目的市 场 上 适 合 家 庭 使 用 的 热 水 器 有 两 类 , 一 类 是 燃 气 式
13、 , 另 一 类 是 电 热 式 ,而 购 买 热 水 器 主 要 考 虑 价 格 、 安 全 性 , 方 便 性 、 寿 命 、 成 本 等 因 素 , 一般来说,燃气热水器的优点是价格低、加热快、出水量大、温度稳定,缺点是必须分室安装,不易调温,需定期除垢,在使用中易产生有害气体,因此其使用受到一定限制;储水式电热水器的优点是干净、卫生,不必分室安装,不产生有害气体,调温方便,高档产品还有到达设定温度后自动断电、自动补温等功能。本设计是基于已有的储水式电热水器基础上实现时钟定时开关的控制和高温断路保护功能,同时用 FPGA 作为数据采集器,使得液位和温度的实时性更强,液位和温度的精准度更高
14、,同时可手动调节液位和温度,用 LCD 显示相关信息,整个系统外围器件少,稳定性高,同时安装使用方便。研究现状分析目前大多数智能热水器都是基于单片机控制的智能热水器,利用 EDA 技术和单片机技术,设计的基于 FPGA 电热式热水器控制器,实现系统的硬件电路及相关配套软件的设计,使系统能完成热水器定时开关、热水器温度、水位参数的采集、对采集数据实时记录、处理、分析、显示和控制等功能。此设计将 FPGA 和单片机结合使用,既发挥了 FPGA 高速数据采集的特点,有发挥了单片机在控制方便的优点,因此整个系统的实时性比一般的仅用单片机设计的系统的实时性强,但在其性价比低,因而,此设计仅适用于练习FP
15、GA 与单片机的通信功能,练习用 FPGA 和单片机完成一个具体系统的具体功能的设计,如果希望此产品能具有一定的实用价值和市场竞争力,可以用单片机单独完成此设计,用 DS1302 时钟芯片完成时钟的嵌入和定时控制的功能。研究方法通过分析现有电热式热水器的功能和结构的和查阅相关文献、资料,总结现了市场上现有的热水器的种类、结构和功能特点,在已有产品的功能基础上加入了定时开关功能,使得此产品更人性化也符合社会提倡的节能的需要,此设计先通过 Proteus 和 MasplusII 等软件仿真,然后在系统板上进行逐个的功能调试,在逐个功能完成的基础上进行系统总体功能调试。231 主要器件和编程语言简介
16、1.1 本设计所用到的主要元器件FPGA 芯 片 EPF10K10TC144-4 一 片单片机 STC89C52RC 一片时 钟 芯 片 DS1302 一 片温 度 传 感 器 DS18B20 一 个液 晶 显 示 器 LCD12864 一 片继 电 器 HLS8L-DC5V-S-C 三 个电 平 转 换 芯 片 MAX232 一 片1.2 器件简介1.2.1 FPGA 简介FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种
17、半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect )三个部分。FPGA 的基本特点主要有:(1)采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合用的芯片。( 2)FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。(3)FPGA 内部有丰富的触发器和 IO 引脚。(
18、4)FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。(5)FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前 FPGA 的品种很多,有 XILINX 的 XC 系列、 TI 公司的 TPC 系列、ALTERA 公司的 FLEX 系列等。4FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,
19、配置完成后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器,只须用通用的EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA 的使用非常灵活。FPGA 有多种配置模式:并行主模式为一片 FPGA 加一片 EPROM 的方式;主从模式可以支持一片 PROM 编程多片 FPGA;串行模式可以采用串行 PROM编程 FPGA;外设模式可以将 FPGA 作为微处理器的外设,由微处理器对其
20、编程。1.2.2 单片机简介单片机 STC89C52RC 和 89C51 单片机基本相同,具体资料参照参考教科书单片微型计算机原理及应用 ,张毅坤、陈善久、裘学红编著。1.2.3 DS1302 简介DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V 。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部有一个318 的用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品
21、,与 DS1202 兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 引脚功能及结构 DS1302 的引脚排列 ,其中 Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc10.2V 时,Vcc2 给 DS1302 供电。当 Vcc2小于 Vcc1 时,DS1302 由 Vcc1 供电。X1 和 X2 是振荡源,外接 32.768kHz晶振。RST 是复位/片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两
22、种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。5上电运行时,在 Vcc2.5V 之前,RST 必须保持低电平。只有在 SCLK 为低电平时,才能将 RST 置为 高电平。I/O 为串行数据输入输出端(双向) ,后面有详细说明。SCLK 为 时钟输入端。 DS1302 的引脚功能图如 下图:图 1 DS1302 封装图DS1302 的控制字节 DS1302 的控
23、制字如图 2 所示。控制字节的最高有效位 (位 7)必须是逻辑1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址; 最低有效位( 位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 数据输入输出(I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位到高位 7。
24、 DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式,其日历、时间寄存器及其控制字见表 1。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM寄存器,此方式下可一次性读写所有的 RAM 的 31
25、个字节,命令控制字为FEH(写 )、FFH(读) 。 为了实现系统报警计时等功能,此设计采用了 DS302 实时时钟芯片。DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时6钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个318 的用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源/后背电源双电源引脚,同时提供了对
26、后背电源进行涓细电流充电的能力。 2.1 引脚功能及结构 DS1302 的引脚排列, 其中Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于Vcc10.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302 由Vcc1 供电。X1 和 X2 是振荡源,外接 32.768kHz 晶振。RST 是复位/ 片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存
27、器;其次, RST提供终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在 Vcc2.5V 之前,RST 必须保持低电平。只有在 SCLK 为低电平时,才能将 RST 置为高电平。I/O 为串行数据输入输出端(双向),后面有详细说明。 SCLK 始终是输入端。1.2.4 DS18B20 简介DS18B20 的数字温度计提供 9 至 12 位(可编程设备温度读数。信息被发送到/ 从 DS18B20 通过 1 线接口,所以中央微处理器与 D
28、S18B20 只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个 DS18B20 的包含一个独特的序号,多个 ds18b20s 可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。存储器DS18B20 的存储器包括高速暂存器 RAM 和可电擦除 RAM,可电擦除RAM 又包括温度触发器 TH 和 TL,以及一个配置寄存器。存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。当确认以后就可以用复制寄存器的
29、命令来将这些数字转移到可电擦除 RAM 中。当修改过寄存器中的数时,这个过程能确保数字的完整性。高速暂存器 RAM 是由 8 个字节的存储器组成;第一和第二个字节是温度的显示位。第三和第四个字节是复制 TH 和 TL,同时第三和第四个字节的数字可以更新;第五个字节是复制配置寄存器,同时第五个字节的数字可以更新;7六、七、八三个字节是计算机自身使用。用读寄存器的命令能读出第九个字节,这个字节是对前面的八个字节进行校验。温度的读取DS18B20 在出厂时以配置为 12 位,读取温度时共读取 16 位,所以把后11 位的 2 进制转化为 10 进制后在乘以 0.0625 便为所测的温度,还需要判断正
30、负。前 5 个数字为符号位,当前 5 位为 1 时,读取的温度为负数;当前 5 位为0 时,读取的温度为正数。1.3 编程语言简介1.3.1 VHDL 简介VHDL 语言是一种用于电路设计的高级语言。VHDL 的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language, 即超高速集成电路硬件描述语言。其主要用于描述数字系统的行为、结构、功能和接口。目前,它在中国的应用多数是用在 FPGA/CPLD/EPLD 的设计中。在使用 VHDL 等高级语言时,有专用的工具来实现将语言描述的电路功能转换为实际的
31、电路,所以使用者就用不着对底层的电路很熟悉,也用不着对CPLD/FPGA 的结构很熟悉。除了含有许多具有硬件特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL 系统设计的基本点。应用 VHDL 进行工程设计的优点是多方面的。 (1)与其他的硬件
32、描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速的完成必须有多人甚至多个代发组共同并行工作才能实现。8(4)对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动的把 V
33、HDL 描述设计转变成门级网表。 (5)VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。1.3.2 C51 语言简介语言数据结构每写一个程序,总离不开数据的应用,在学习 C51 语言的过程中掌握理解数据类型也是很关键的。先看表 21,表中列出了 KEIL uVision2 C51 编译器所支持的数据类型。在标准 C 语言中基本的数据类型为 char, int, short, long, float 和 double,而在 C51 编译器中 int 和 short 相同,float 和 double 相同,这里就不列出说明
34、了。下面来看看它们的具体定义:数据类型 长度 值域unsigned char单字节 0255signed char 单字节 -128+127unsigned int双字节 065535signed int 双字节 -32768+32767unsigned long四字节 04294967295signed long 四字节 -2147483648+2147483647float 四字节 1.175494E-383.402823E+38* 13 字节 对象的地址bit 位 0 或 1sfr 单字节 0255sfr16 双字节 065535sbit 位 0 或 1图 2 KEIL uVision2
35、 C51 编译器所支持的数据类型9102 系统方案选择和论证2.1 设计要求1、基本功能要求:实现温度自动调节控制,使得温度能维持在某个一定的范围之内;液位自动调节控制,使得液位能维持某个范围之内;定时开启和关断控制,根据不同日期和时间,开启和关断热水器电源;键盘设定温度及时间校正功能,能设定维持温度的范围的最大值和最小值,同时可以用键盘校正时间。2、扩展功能要求:实现恒温控制,使得温度能温度在具体的某个值,而不是维持在某个范围之内,即实现温度的实时监控;实现水位的调节功能,能使水位维持在某个具体的数值,而不是维持在某个范围之内,即实现水位的实时监控。3、本设计软件部分主要采用 VHDL 硬件
36、描述语言编程实现 FPGA 的数据采集和控制功能,用 C51 语言实现单片机的控制功能,并利用 MAX+PLUS和 Keil uVision3 软件开发平台进行编程调试。对于 VHDL 语言程序要调试等待准确的仿真时序图,对于 C51 程序,要用 Keil 编译,并用 Proteus 7 Professional 得到准确的仿真结果。其中 FPGA 和 MCU 的通信的的程序则直接用实物进行调试,并要求得到与理论分析相一致的结果。4、本设计由控制器模块、水位控制模块、水温控制模块、定时开关控制模块、时钟模块、键盘模块和显示模块七大硬件模块构成,各模块相互关联,控制器是各模块相互联系沟通的桥梁。
37、 2.2 各模块方案论证和选择2.2.1 控制器模块方案的论证和选择方案 A:单独使用 FPGA 作为控制器。如果单独使用 FPGA 作为控制器件,优势是大大的简化了外围电路,提高了整个系统的稳定性和可靠性,控制引脚能足够的满足我们的设计要求,且不需要外部 EEPROM 和时钟芯片,可以直接使用 FPGA 内部的高速 ROM,也可以编写时钟模块的程序,且 FPGA 速度要比单片机快的多,但是要完成 LCD 显示、温度数据的采集、键盘控制等众多控制功能,FPGA 与单片机相比没有优势。FPGA 的主要优势是能实现片上系统,大大简化外围电路,且能完成数据的高速采集;单片机的主要优势是控制简单方便。
38、在此设计中单独使用 FPGA 不能很好的体现它在高速数据采集方面的优势。方案 B:单独使用单片机作为控制器。如果单独使用单片机使用作为控制11器,优势是能较简单方便实现水位控制模块、水温控制模块、定时开关控制模块、时钟模块、键盘模块和显示模块等各个功能模块的控制功能,同时成本大大降低,但是增加了一些外围元件,如需要增加时钟芯片和 EEPROM 芯片,外围电路的复杂性增加,这使得电路的稳定性和可靠性与方案 A 相比有所降低。方案 C:同时使用 FPGA 和单片作为控制器件。这样的方案主要是综合两种控制器件的优势,但是成本提高。本设计采用方案 C,原因是为了探索 FPGA 在控制功能方面的应用领域
39、,利用低端 FPGA 实现一些控制功能,不仅电路大大简化,而且成本也与单片机相当。2.2.2 水位控制模块方案的论证和选择方案 A采用超声波。用超声波实时监测水位的高度,因为本设计用到 DS18B20,可以根据温度用软件补偿因为温度变化而引起的超声波速度的变化,这样能较准确的实时监控热水器内水位的高度,因而可以使等水位维持在某个值附近。方案 B采用压力传感器。用压力传感器测量出热水器不装水时的重量,再测量出装入水后的重量(即先要用压力传感器设计成一个电子称) ,根据这个差值可以计算出液位的高度,此方式能十分准确的测出液位高度,因此可以通过电磁阀将水位稳定在某个值,但是传感器的成本较高,一般的压
40、力传感器一直在负重之下,时间长了误差增大,最终损坏。方案 C自制传感器。自己制作一个传感器测量出一个水位的最低值、测量出一个水位的最高值,当水位低于最低值时打开电磁阀,热水器进水;当水位达到水位的最高时,关闭电磁阀。这样能将水位维持在某个范围之内。同时自制的传感器简单,而且成本很低。比较上述几种方案,本设计采用方案 C。成本低,同时能满足设计要求。2.2.3 水温控制模块方案的论证和选择温度采集模块方案 A采用 AD590。AD590 的测温范围为-55+150。AD590 的电源电压范围为 4V30V。电源电压可在 4V 到 6V 范围变化,电流变化 1mA,相当于温度变化1K。AD590
41、可以承受 44V 正向电压和 20V 反向电压,因而器件反接也不会被损坏。但是 AD590 需要放大电路和 A/D 转换电路,电路较为复杂。方案 B12采用 DS18B20。DS18B20 能测量-55 摄氏度到 125 摄氏度的温度值,采用“一线总线” ,内嵌 A/D 转换,可直接与控制器件连接外围电路简单。两种方案比较,方案 B 能很好的满足我们的设计要求,而且电路比方案 A简单,同时成本较方案 A 要低的多,因此本设计采用方案 B。热电阻丝控制方式方案 A采用用 PWM 控制方式,通过改变 MOS 管或电力开关三极管的控制级信号的占空比来调整输出端电压的有效值,这种控制方式能使得温度稳定
42、在某个值附近,当时需要将交流电转换成直流电,即需要设计市电压的整流电路,还需要耦合器件和电力开关管,电路较为复杂,成本较高。方案 B:采用继电器。使用继电器控制热电阻丝的电源的开和关,当温度值低于最低值是继电器闭合,热电阻丝通电工作,当温度高于最高值是继电器断开,热电阻丝断电停止工作。这种方式的缺点是继电器断开和吸合的瞬间存在电弧,存在安全隐患,而且对继电器的寿命有影响,但是这种方式电路简单,实现方便,而且能很好的满足设计要求。综合考虑,本设计采用方案 B,方案 B 简单易行,可实现性强,但在实际设计时应注意做好绝缘保护的工作。2.2.4 定时开关控制模块方案的论证和选择方案 A采用可控硅。将
43、可控硅串入电路,通过控制的高低电平,来接通和断开,热水器的系统的电源,这样不存在电弧和电火花的现象,而且响应速度很快。方案 B采用继电器。将继电器接入系统电路,通过控制端来开启和关断电源,这样相对与可控硅而言,高压区和低压区的隔离效果好,但存在电弧和电火花。因为温度控制电路已经采用了继电器控制的方式,在这个模块中可以和水温控制模块共用继电器,以简化电路,节约成本,因此在这个模块的方案选择方案 B。2.2.5 时钟模块方案的论证和选择方案 A在 FPGA 中嵌入时钟。这样电路简化了电路,但还有要实现记录年月日的信息,这样用 FPGA 实现起来软件工作量大大的增加了。方案 B直接选用一种时钟芯片。
44、选用时钟芯片 DS1302 接在单片机上,能十分方便准确的记录年月日信息,而且电路也比较简单,这样用简单的硬件电路使得软13件工作量大大减少了,而且节约的控制器的资源,有利于整个系统的进一步扩展。综上,本设计采用方案 B。2.2.6 键盘模块方案的论证和选择方案 A使用独立键盘。使用四个独立键盘,这样电路十分的简单,但是软件的工作量有所增加。方案 B使用用 4x4 键盘。电路也十分简单,软件工作量有所减少,但是设计的成本提高。鉴于本设计用于实验探索研究,选用方案 B,在系统调试成功后或产品需要实际使用时则改用方案 A。2.2.7 显示模块方案的论证和选择方案 A使用 LED 显示。用 LED
45、显示亮度高,显示字迹清楚显眼,但是 LED 不能显示汉字,而且数码管多了,占用控制器件很多的端口,同时本设计中显示的内容较多,利用 LED 很难达到本设计要求的显示效果。方案 B使用 LCD12864 或 LCD1602。使用 LCD12864 或 LCD1602 都能满足本设计的要求,如果考虑成本因素,则选用 LCD1602,如果注重人性化,使得整个系统的操作和使用更加的方便,则选用 LCD12864。考虑到本设计是实验研究,因此选用方案 B 中的 LCD12864,如过要批量生产、实际应用这种产品,怎选用 LCD1602 或其他能满足设计要求的更经济显示器件。2.3 硬件系统框图和总体软件
46、系统流程图系统总体设计框图如下所示,本系统主要由两个大的模块构成,FPGA 控制模块和MCU 控制模块。14图 3 智能热水器系统设计总体框图下面是 FPGA 控制器的设计框图,编程时器件端口就是根据这个图设计的。图 4 FPGA 控制器设计总体框图单片机的控制器的设计框图如下图所示,下面的框图已经将 MCU 的 I/O 资源进行了分配,有关单片机模块的具体的电子线路就是根据这个系统框图设计的。图 5 MCU 控制器设计总体框图本系统使用了 4X4 的扫描键盘,下图是按键扫描程序所得到的特征值,每个按键都有唯一对应的一个特征值,根据这个唯一的特征值,可以确定是哪个按键被按下,并进行相应的按键处
47、理。15图 6 矩阵键盘特征值分布图程序流程图时编写程序时不能缺少的一个步骤,本系统在设计前,经分析设计了如下图所示的程序流程图,并根据此图编写单片机模块的 C51 程序,成功完成了设计要求实现的功能。系统上电进入主界面,进行按键扫描和相应的显示,当扫描到按键时进行相关的按键处理,如当扫描到的按键的特征值为 0x71 时,程序进入了校时界面,这个子程序的循环中依然进行按键扫描和相应的显示,当扫描的按键的特征值为 0xe8 时,程序从新回到主界面的状态。图 7 总体程序流程图当程序进入校时、定时和温度调节的界面时,按键的特征值分布如下右图所示, “ ”和“ ”分别表示调节量左移和右移,每按一下实
48、现调节量左移或右移一个单位;“ ”和“ ”分别表示增大和减少调节量,没按以下实现加一或减一。16图 8 校时、调温功能按键分布图及对应特征值2.4 硬系统总体电路图2.4.1 FPGA 模块电路图17图 9 FPGA 控制模块电路图2.4.2 单片机控制模块电路图图 10 单片机控制模块电路图18193 .硬件电路组装调试3.1 各模块的硬件组装3.1.1 FPGA 模块外围电路有自制传感器电路、继电器驱动电路(驱动电磁阀、控制电热阻丝的电源) 、与单片机通信控制口。自制传感器传感器如下图一所示,前端是两导体,后面是绝缘的导线。当A、B 之间有水时,就相当于用一根导线将 A、B 连接起来,再通
49、过如图二所示的电路就能将可以将 A、B 之间是否导通转换成高低电平:当 A、B 导通是输出端 Uo 为低电平,当 A、B 导通断开时 Uo 为高电平。图 11 自制水位传感器继电器电路图 12 继电器驱动电路LED 只是电路的通道状态,当电热阻丝通电时 LED 点亮。与单片机通信控制口:FPGA 和单片机的电平可以兼容,因此 FPGA 的 I/O 可以20直接与 MCU 的 I/O 口连接,不需要另外附加电平转换电路。但是两者间如果是用导线相连接的话,导线不宜过长。3.1.2 单片机模块单片机除了必备的保证系统正常工作电路外,还有 4x4 按键电路、LCD12864 的显示电路、与时钟芯片的连接电路、与传感器 DS18B20 的连接电路、与 FPGA 的通信口。图 13 矩阵键盘电路键盘的 8