全天分段热水智能控制器的设计与实现
扫描二维码
随时随地手机看文章
摘要:针对传统的温控热水器资源利用率低、功能单一等缺点,设计了一种基于I2C和单总线通信的全天分段热水智能控制器。该控制器不仅可以根据用户的需要智能恒温,而且能实时显示实际温度,日历时钟以及循环泵的工作状态。并有实时快速加热、掉电保护等功能。本文详细介绍了系统构成以及软硬件实现过程。实践表明,该系统可靠性好、适应性强、性价比高,达到了预先的设计目标,具有很好的推广价值。
关键词:PIC16F72;单总线;I2C总线;DS18B20;PCF8563;LCD
传统的温控热水器大多把温度作为唯一的控制参数,系统利用温度传感器对环境温度进行实时监测并将温度设定值与测量值进行比较,只要测量值小于设定值就启动循环泵加热以达到满足用户需要的目的。这类热水器功能单一且浪费了大量的水、电资源。
一般情况下,家庭使用热水的时间点比较固定,基本可以分为早、中、晚3个时间段。针对这一情况,本设计采用Microchip的PIC16F72单片机为主控制器,根据DS18B20所采集的温度数据以及用户设置的时间段(3段)上下限数值和温度设定值对循环泵的启动和停止进行控制,实现对热水器水箱温度的有效控制。这样循环泵在其它时段便不会工作,节省了大量的电能。当用户需要在非设置时间段内使用热水时,可以按下加热键进行快速加热,从而保证了用户也能及时用到热水。显然这种控制器在满足用户需求的前提下显著增强了温控系统智能化程度,大大提高了资源利用率,给用户带来了真正的实惠。
1 总体设计及工作原理
全天分段热水智能控制器主要由单片机控制模块,温度采集模块,日历时钟模块、液晶显示模块、时间段上下限及预加热温度设置模块、电机驱动模块和外部存储模块等部分组成。其系统框图如图1所示。
单片机PIC16F72作为控制器的核心,快速响应各种给定信号和反馈信号,并发出相应的指令控制各个部分,保证整个系统有序工作。温度传感器检测热水器水箱温度并通过单总线送入到单片机中进行处理,时钟芯片及外部存储器通过I2C总线与单片机间进行通信。温度显示实时温度和设置温度。时间显示设置时段及系统时钟。在实际温度小于设置温度3度时,如果时间在设置的3段范围内,水泵启动,当实际温度大于设置温度时,水泵停止工作。加热键根据用户需要实现快速加热。
2 系统硬件设计
单片机选用微芯公司的PIC16F72,完全可以满足本系统中要求的采集、外部中断、控制、数据处理及存储空间的需要,在用PIC16F72设计系统时,首先要构成一个最小系统,单片机才能正常工作,即电源、晶振、复位缺一不可。本系统采用的是+5 V电源,晶振采用的是4 MHz和两个30 pF电容构成的无缘晶振,复位电路采用的是改进型RC复位电路,即在经典的RC复位电路基础上增加了一个二极管构成放电回路,这样不但可以避免电源毛刺造成系统不稳定,而且电源缓慢下降也能可靠复位。
2.1 温度采集电路
系统需要对热水器水箱温度进行测量控制,测温的关键是要选择合适的感温元件和合理的采集电路。文中采用的是美国DALLAS公司推出的单总线数字温度传感器DS18B20,与传统的热敏电阻不同,DS18B20将温度传感器与A/D转换器集成在一个芯片上,可直接将被测温度转换为全型数字信号直接供单片机处理,且具有结构简单、体积小、功耗低、用户可自行设定预警上下限温度等特点,因此使硬件设计大大简化,对应的硬件电路如图2所示。
传感器DS18B20测量温度范围为-55~125℃,完全满足系统要求。DS18B20通过一个单线接口发送或接受信息,因此从中央处理器到DS18 B20仅需连接一条线。在1s(典型值)内把温度变换为数字,以9位数字值方式读出温度,无需校准,即可提供工业级的测温范围和精度。
2.2 实时时钟及外部存储芯片
本系统实时时钟采用低功耗的CMOS时钟芯片PCF8563实现,它提供一个可编程时钟输出,一个终端输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。每次读写数据后,内嵌的字地址寄存器会自动产生增量,日历时间编码格式为BCD。PCF8563制作数字时钟编程简单,可靠实用,配合其超低维持功耗(典型值为0.25μA,Vdd=3.0 V,Tamb=25 C),当系统断电时,只需用一个后备电池就可以长时间掉电保持实时时间计时,本系统选用寿命长、性价比高、可靠性强的便携式纽扣电池CR2025。利用二极管的单向导电性实现了系统的掉电保护功能。当CPU正常运行时,系统电源为时钟芯片提供电源,其正常工作,当系统掉电时,纽扣电池为时钟芯片提供电源,其保持准确计时。如图3所示。
外部存储芯片选用的是AT24C02B,主要用于存储时间段上下限与设置温度数据,采用I2C总线进行读写数据和地址。
2.3 液晶显示电路
液晶用于显示温度、时间以及循环泵的工作状态(STOP或RUN),且提供了友好的人机交互界面,可方便输入需设置的时间段上下限和温度值。本系统选用的是编程简单,体积小,性价比很高的1 602,为了提高视觉效果和美观,采用的是白色背光,模块最佳工作电压为5.0 V,显示容量为16x2个字符,可分两排显示。对应的电路连接如图4所示。
2.4 按键模块
系统中共用4个按键,分别为设置键、增加键、减少键、加热键。设置键用于设置温度和时间;增加和减少键用于修改时间和温度数值;加热键用于任意时间需要加热时快速加热。按键在闭合及断开的瞬间均伴随有一连串的抖动,为了确保CPU对键的一次闭合或断开仅作一次处理,保证系统的可靠性,本设计在软件上加入了可靠的按键消抖程序。
2.5 继电器
综合考虑,本设计选用了直流输入控制,交流过零导通,过零关断输出型无触点固态继电器。与传统的电磁继电器相比,其在操作中不会产生电弧,因而具有高稳定性。本设计输入控制电压为5 V,该继电器对应的驱动电流只有15 mA左右,其启动性能平稳且提供了10 ms以下的开关速度,显著提高了系统数据的吞吐量。
3 软件的实现
程序设计是本设计的核心部分。整个程序包括主程序、按键处理子程序、I2C总线读写子程序、单总线读写子程序、定时器子程序、键中断服务子程序、按键消抖子程序、上电自检子程序和显示子程序等。
主程序流程图如图5所示,初始化主要是各I/O口、各寄存器、定时器的初始化,上电自检,开定时器和定时中断允许,显示LOGO,读时钟以及当前温度并显示等。然后判断标志位F是否等于1,若F=1,说明加热键按下,则CPU直接查询温度判断循环泵的启动或停止,当实际温度小于设置温度3度时,水泵启动且LCD显示对应的RUN,当实际温度大于设置温度时,水泵停止工作且LCD显示对应的STOP;若F=0,说明加热键没按下,则CPU先进行时间段判断,再进行温度判断,当时间在设置的三段范围内且实际温度小于设置温度3度时,水泵启动,否则水泵停止工作。
设定按键外部中断为高优先级,使主程序能实时响应按键处理,进行相应的操作。若长按设置键,则进入设置环节,否则有按键按下时则背光亮5秒钟,便于用户读取时间和温度,然后自动熄灭。键处理子程序是本设计的重点和难点。其流程图如图6所示。
单片机与DS18B20之间数据交换采用单总线,由于只有一根线通信,所以必须采用严格的主从结构,当主机呼叫从机时,从机才能应答,主机访问单线期间必须严格遵循单线命令的序列,如果命令序列混乱,单线器件不会响应主机。
单片机与时钟芯片PCF8563及外部存储器之间通信采用I2C总线,I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,最高传送速率100 kbps。各种被控制电路均并联在这条总线上,但每个电路和模块都有唯一的地址。本设计中的PCF8563和AT24C02B虽然挂在同一条总线上,其地址分别为0xa2和0xa0,彼此独立,互不相关。这点在编程时必须注意,很容易出错。I2C总线的优点是简单和有效。由于接口直接在组件之上,因此,I2C总线占用的空间非常小,减少了电路板的空间和器件引脚的数量,降低了成本。
系统采用单片机C语言编写,开发环境是Microchip的MPIAB IDE V8.50,在线调试及下载工具是ICD3。
4 结束语
文中从硬件和软件的角度出发,设计了一套基于PIC16F72单片机的温度智能控制系统。与传统的温控系统相比,本系统大大地提高了资源利用率,且元器件选择颇具考究,有很大创新,硬件结构简单、体积小巧,成本低廉、界面直观、安全可靠。并且在设计时考虑到以后扩展系统工程的需要,单片机留出了一定的控制引脚以便于外接其他功能模块。该控制器已经成功运用在小型即热式电热水器中。