摘要 介绍了IC卡智能水表的硬件设计和软件流程。该表具有较高的可靠性、稳定性和使用寿命,可实现预付费供水、远程传输和远程控制。
0 引言
IC卡预付费水表是以传统水表为母表,用单坐上琴心机实现用水控制的新型仪表。该仪表的单坐上琴心机控制电路需在原水表的基础上重新设计控制盒并与水阀组装在一起。为了提高IC卡水表精密性、可靠性和稳定性,在设计中采用了人性化设计理念。在降低功耗、提高使用寿命、降低成本的同时,不但能实现预付费,还能实现远程控制和信息的远程传输。
采用Microchip公司新推出的单片机PIC16C72,以实现水表的智能化,该水表具有自动计数、自动供水断水、自动保存数据、自动报警、限制日用水量等功能。
1 硬件设计
图1是系统的硬件原理框图,主要包括PIC16C72单片机、掉电检测电路、脉冲采样电路、存储器、IC卡接口、阀门控制电路、显示电路和电源电路等。为了降低功耗,芯片全部选用CMOS低功耗器件。
图1硬件原理框图
1.1 单片机
PIC16C72 是一种带2K存储器的低电压、高性能8位单片机,低功耗的闲置和掉电工作模式。该芯片的主要特征是:2.0-6.0V宽工作电压,低功耗状态电流小于5 A,自还上电复位电路,内设电子看门狗,配有异步串行通信口,提供2个定时计数器,全部指令为单字节指令,采用ASIC结构;内部有程序加密形状,保密性高。一次性编程芯片价格十分低廉,适用于研制与批量生产。
1.2 掉电存储器
EEPROM电可擦除存储器是系统中的关键电路。它不仅可保证停电时系统所有数据的可靠保存,还能防止程序意外跑飞造成RAM区数据丢失,它是提高系统可靠性的关键。本系统EEPROM采用AT93C46,它的存储容量为1024位,内部为128×8位或64×16位。93C46为串行三线SPI操作芯片,在时钟时序的同步下接收数据口的指令。指令码为9位十进制码,具有7个指令,人心所向读、擦写使能、擦除、写、全擦、全写及擦除禁止。该芯片擦写时间快,有擦写使能保护,可靠性高,擦写次数可达100万次,非常适用于数据量不大的水表系统。图2给出了93C46与单片机的接线图。
图2 93C46与单片机接线图
1.3 IC卡接口电路
IC卡选用西门子公司生产的SLE4442,该芯片内部设有硬件逻辑判断电路,数据区分为用户区、密码区、存储区等,存储区数据访问需先比较密码,在密码比较错误4次后芯片自锁,有较高的安全等级。
图3为CPU与IC卡的接线图,图中采用I2C总线形式,支持ISO/7816-3同步舆协议。在实际使用中,为防止插入铁片等异物,VDD应用CPU口单独控制。IC卡存储器内可存储用户码。购水度数或金额等数据,在每次拉入IC卡时,开关S被闭合,通过中断口单片机被唤醒并读IC卡。在确认IC卡为合法时,读取其中水度数并与表内相加,这样IC卡就代替了过去人工抄表收费的全部工作。
图3 CPU与IC卡接线图
1.4 显示电路
系统为降低功耗,采用LCD显示,而PIC16C72没有驱动LCD能力,因此采用HT162LCD驱动专用芯片。该芯片可在静态或动态方式下工作,最大可驱动128像素,睡眠状态电流小于9 A,与单片机连接只需3个口线。
1.5 其它
①脉冲采样。水表中有机械转轮,采用于簧管与磁铁配合,可完成脉冲采样,CPU在测试脉冲时需加软件防抖动程序。
②掉电检测电路。采用HT7039芯片,只需消耗1 A电流可完成电池失压检测。这里也可使用MAX810等芯片。
③电源。系统采用外接三节5号电池供电。其内部备用1.2Ah锂电池,使用时外接电池接好后,系统供水,若外接电池失压,立即关阀,备用电池确保阀门安全关闭。单片机睡眠后静态电流在10 A以下,普通电池可使用1年以上。
2 软件设计
软件由主程序、掉电中断程序、脉冲中断程序和IC卡中断程序组成,图4、图5、图6和图7分别为4个程序的软件流程图。
图4 主程序流程图
图5 掉电中断流程图
图6 脉冲中断流程图
图7 IC卡中断流程图
主程序主要完成水量多少及关阀判断,平时处于睡眠状态。当表内剩余水量秋5m3时,表内蜂鸣器发出提示音,以提醒用户水量剩余不多,请速购水。表内剩余量为0时,切断阀门,停止供水,从而完成用水必须先交费的方式。掉电中断程序是CPU在检测到电池失压后,将RAM区的所有数据写入EEPROM中,以保证下次上电安全读出。IC卡中断程序在用户插入IC卡时,读取卡中数据,并对数据的合法性进行判别后,执行购水量的累加,并打开阀门恢复供水。脉冲中断是最简单的程序,保证水量的正确计算。3个中断均可唤醒CPU,主程序在被唤醒后,执行一次程序后进入睡眠状态。
在设计中注意了低功耗设计。可将存储器、IC卡电源口用CPU控制,每当读写时才供电,不仅可降低功耗,而且防止IC卡口插入铁片造成电源短路情况发生。
为防止水阀长时间不工作造成锈死,可每隔一段时间CPU自动形状阀一次,防止阀门生锈。