开关量输出经过扩展后,由于外部负载为电磁阀感性负载,所以选用高压高电流达林顿管阵列ULN2803A直接驱动负载,同时增加了D5~D9作为续流二极管。续流二极管均为并联且在线圈的两端,当线圈通过电流时,会在其两端产生感应电动势。当电流消失时,其感应电动势会对ULN2803A产生反向电压。当反向电压高于ULN2803A反向击穿电压时,会造成ULN2803A损坏。但由于续流二极管并联在线圈两端,当流过线圈中的电流消失时,线圈产生的感应电动势通过二极管和线圈构成的回路做功而消耗掉了,从而保护了ULN2803A的安全。
2.3 数据保存
由于不同的用户设定的参数不一样,这些参数在没有修改前要永久保存,在系统中要求保存的参数有:定时开/关机的时间、定时开/关制热的时间、水温度设定值。这些参数可以通过外扩铁电存储器来保存,但将会增加控制系统成本。由于ATMEGA16L自身带有512 B的EEPROM,擦写次数达100 000次。考虑到这些参数不会频繁地被修改,所以用单片机内部的EEPROM就能够满足参数保存的要求。同时在程序设计中尽量减少了对EEPROM进行读写R的次数,只在上电时对EEPROM进行读,参数改变时对EEPROM进行写,按每天总共读写10次计算,可以使用27年。
2.4 水位检测装及控制方案
水位的检测是通过在水箱中竖直安装一根中空管(里面分别装有高/低水位干簧管),中空管外面套有一个浮动的磁环装置,与水位同时升降。当磁环和相应干簧管在同一高度时,干簧管闭合,单片机检测到信号后,执行相应控制。如检测到低水位信号时,单片机输出启动净化水的信号,打开进水阀门,同时为了避免由于硬件误检测带来误控制,在启动净化水的同时会启动制水时间,在规定时间内没有达到高水位信号时,LCD屏则显示机器故障或者提示停水了,机器自动停机;当检测到高水位信号时,关制水,启动杀菌消毒装置对新制的水进行处理。
3 控制系统软件设计
净水机的软件设计采用模块化设计思想,以主程序为核心,设计了各功能模块子程序,使大量的功能在子程序中实现,简化了软件设计结构。子程序模块主要包括:定时处理子程序、系统故障检测处理子程序、温度处理子程序、键盘管理子程序、数据存储子程序、显示子程序等。所有程序采用基于ICCAVR编译器,用C语言编写。系统主程序流程图如图5所示。
以ATmega16L单片机为核心的控制系统净水机成本低、抗干扰能力强、运行稳定可靠。杀菌消毒过程使用臭氧、紫外线杀菌消毒两种方法。通过对经净水机处理水的水质进行检测,可以满足GB19298-2003、生活饮用水卫生标准GB5749-2006的要求。目前该净水器已为企业带来了巨大的经济效益。