找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13321|回复: 5
打印 上一主题 下一主题
收起左侧

基于单片机的IC卡智能水表控制系统设计论文

[复制链接]
跳转到指定楼层
楼主
ID:326551 发表于 2018-5-10 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

摘要

本文完成了系统的硬件电路设计和软件设计。硬件电路采用模块化设计,包括用水量检测电路、IC卡接口电路、电磁阀驱动电路、报警电路、LED显示电路等,详细分析了各模块的工作原理;系统软件采用汇编语言编制,给出了具体的程序流程图。

系统具有自动供停水、插卡智能识别、身份验证、掉电保护、LED显示、电磁阀门智能开关控制、防干扰、防拆卸等功能。


第1章  绪论

本章介绍了本研究课题的背景及意义,阐述了其发展状况。对当前水资源形势、传统水表和IC卡智能水表的特点及其水表的未来发展趋势作了概况。另外,简要说明了本文所做的工作。

1.1 本研究课题的背景及意义

环境与发展,是当今国际社会普遍关注的重大问题,保护环境是全人类的共同任务。水资源作为生态环境中的重要资源,是人类生活的生产中不可取代的资源,对一个国家的生存和发展也是极为重要的。水资源是一切生命的源泉,是人类不可缺少的物质条件,没有水人类就不能生存,没有水人类赖以自下而上的物质生产就不能发展。

由于历史的原因,我国大部分城市居民使用自来水,都是在区域性水站供水基础上,逐步发展成为以单位住宅区或以楼栋、单元为一户由自来水公司抄表收费的。目前,这种经营方式已越来越不适应社会主义市场经济发展的要求,成为人民物资生活迅速提高和供水企业落后的经营方式之间产生的主要矛盾。

    随着社会经济的发展和人们生活水平的日益提高,智能化电子产品已逐步深入家庭,我们提出了IC卡智能水表的方案。

IC卡智能水表是一种利用现代微电子技术、现代传感技术、智能IC卡技术对用水量进行计量并进行用水数据传递及结算交易的新型水表。这与传统水表一般只具有流量采集和机械指针显示用水量的功能相比,是一个很大的进步。IC卡智能水表除了可对用水量进行记录和电子显示外,还可以按照约定对用水量自动进行控制,同时可以进行用水数据存储的功能。由于其数据传递和交易结算通过IC卡进行,因而可以实现由工作人员上门操表收费到用户自己去营业所交费的转变。IC卡交易系统还具有交易方便,计算准确,可利用银行进行结算的特点。

IC卡智能水表及其管理系统的出现,将从根本上解决了已上问题。采用IC卡智能水表进行交易结算,不但实现了用水收费的电子化,而且还改变了先用水后收费的不合理状况,使的供水部门能预先收取部分费用,有利于公用事业的发展。IC卡智能水表具有成本低、可靠性高、使用寿命长及安全性好等优点,可提高居民用水收费的管理水平,确保供水部门能及时收取水费。因此,IC卡智能水表成为相关科研单位关注的重点,具有很好的经济效益与社会效益[1] [2]。

1.2 本研究课题的发展趋势

随着微电子技术的快速发展,加上国家相关政策的推动,民用计量仪表的智能化将是一个必然的发展方向。这不仅是中国的一种趋势,也将成为世界性的趋势。而在近十年里,单体式智能IC卡类仪表又将会是发展主流。
    从理论上说,网络式智能仪表系统应当是更好的一种计量管理模式,并且是最终发展方向。但是目前,由于网络式智能仪表系统的建立条件不成熟,且没有相关系统相配合,所以,单独在一个部门大规模推动建立网络式智能仪表系统的优点显现不出来。而且,仅仅为了提取用水信息就要构建一个信息网络,从经济角度讲也不合算。
  
    那么,现在普遍采用的单体式智能仪表模式与将来的网络化管理模式是否会发生冲突呢,我的看法是不会,相反,还会促进网络化管理模式的形成。因为,单体式智能仪表模式与将来的网络模式并不矛盾。因为不管什么网络模式,最终必须要有智能终端与其进行联结。现在采用的单体式智能仪表将来就可以作为网络管理系统的智能仪表终端。所以,它们不是一种冲突关系,而是一种相承关系。如果现在就能充分意识到这一点,并寻找合理的技术方案,在将来实现网络化时就会占有主动的地位。
  根据以上的分析,我认为,现在采用的单体式智能仪表发展模式是合理的,是适合现时需求并具有主流特征的。当然,在密集度较高的建筑群里采用的一线四表控制系统也是值得推广和具有合理发展前景的。

为了推动IC卡智能水表的发展,全国有许多研究机构投入力量对IC卡类智能产品进行了开发研究,很多自来水公司也积极参与了此项开发工作并成功的开发出了自己的产品。从理论角度看,IC卡智能水表已经进入了成熟期。但是,为什么现在IC卡智能水表的推动工作还很困难呢?这不难理解。因为从实际情况看,现在的IC卡智能水表确实还存在着许多影响其大规模推广使用的问题。这些问题集中起来主要是1. 价格太高;2. 质量不可靠;3. 存在安全隐患。

随着科学技术的不断发展, IC卡智能水表将会不断发展完善。比如,现在这种在老式水表上取信号的模式,将会由先进的水流量信号提取装置代替,机械计量和机械显示部分会被淘汰,而表和阀将会集中在一体等等。总的说来,IC卡智能水表是一种先进的计量仪表,对这种先进仪表的大规模推广使用将会有力促进中国供用水管理的现代化进程。中国在这个方面的超前发展会使这种计量模式得到优先完善,并有可能成为中国的一个有竞争力的产品出口到其它国家[2][3]。

1.3 本文的工作

详细分析课题任务,对IC卡智能水表的发展现状进行分析,并对现代传感器技术、IC卡技术和智能水表控制的原理进行了深入的研究,并将其综合。然后根据课题任务的要求设计出实现控制任务的硬件结构及其原理图和相关软件程序,并进行访真调试。下面对本设计的主要研究工作做个简述。

1. 根据设计要求,提出几种方案,对它们进行了全面的论证;

2. 根据系统需要,合理选择微处理器,并且详细地阐述了它的基本功能特性;

3. 介绍了相关现代传感技术,选择出信号采集的最佳方案;

4. 根据低功耗要求,对电磁阀的选择与设计进行了深入的研究;

5. 详细分析了E2PROM的工作原理;

6. 对IC卡技术做了简明扼要的分析,并对其软件的读写原理进行了详细的讨论;

7. 应用LED显示技术,可随时查询累计用水总量、可用水量;

8. 改进了普遍应用电源方案,详细地介绍了超级电容技术及其在本设计中的应用;

9. 对整个系统的软、硬件进行了深入的分析,并且绘制了相关硬件电路图、软件流程图,还编写了相关软件程序。

第2章 设计思想与方案论证

    本章对智能水表的设计思想做了详细的介绍,并在设计思想的基础上提出了三种智能水表的设计方案,还针对它们各自的工作原理和优缺点进行了简要分析。最终确定为采用基于AT89C2051单片机的IC卡智能水表方案。

2.1 设计思想

智能水表区别于传统的人工抄表就是应该具有一定的智能控制功能。针对目前供水部门与用户的实际情况,本设计对智能水表应该具有的功能提出了以下设计思想:

1. 统计功能:当用户插入有效卡时,将购买水量与剩余水量自动相加,并且存入E2PROM以防丢失;当用户用水时,将剩余水量与用水量 自动相减,并且存入E2PROM以防丢失。

2. 自动供停水功能:当剩余水量为0时,自动关闭阀门;购水后,阀门开启。

3. 显示功能:采用6位LED显示,可随时查询累计用水总量及可用剩余水量。

4. 报警功能:当剩余水量减少到一定量时,报警提示用户购水。
  5. 掉电自动保护数据功能:掉电后,数据依然可以被保存。当恢复供电后,数据自动恢复。

6. 一户一卡的功能:通过设立用户信息和用户校验码的方式实现一户一卡。即一个水表只能使用一个用户专用卡,插入其他卡片无效。
  7. 欠电自动关闭系统的功能:当电池电压或电池容量掉到规定数值后,意味着电池可能已经快没有电了,此时,水表应会自动将阀门关闭并使系统处于休眠状态,并报警提示。
  8. 防拆卸功能:在表体和接头管件上设置铅封口并可进行防伪铅封处理,以防止随意拆卸水表的行为。即使被拆卸后,单片机立即关闭阀门,以防偷水。

2.2 方案比较

   针对上述设计思想,提出了三种智能水表的设计方案。下面对它们的工作原理及其优缺点进行了简要地分析。

1. 方案一:脉冲发讯集中抄收式智能水表系统

工作原理:由表具不断发出脉冲信号,经采集器对脉冲信号进行采集、累加、存储和数据上传。

优点:发讯式集抄系统目前在国内已普遍采推广应用方便,价格较低,只要生产厂商、系统集商严格把好每一环节的质量关,且发讯不随时间产生疲劳损伤,此系统不失为一种可供选择的、适于一定历史时期的过渡产品。

缺点:(1) 初始化及维护工作量大;(2) 磁铁强磁场干扰;(3) 电能耗费。

2. 方案二:基于CAN总线的智能水表自动抄收系统

工作原理:自动抄收系统主要由小区管理中心计算机(主控机)、水表数据采集器、采集服务器、中继站等几个部分组成,是一种智能化多用户能耗集中自动抄收系统。其原理是将原能耗计量表的流量转换为脉冲信号,经信号传输线至系统总线,由接口电路通过有线传输或主机直接抄读,最后经微机管理,实现耗能数据的自动处理。

优点:CAN现场总线的方式来传送数据,以克服市场已有传送方式所存在的不足之处,其传送方式可实现10公里范围的小区抄收工作,同时性能比同类系统稳定可靠。采用点对点、一点对多点、全局广播等几种方式,数据收发灵活,可实现全分布式多机系统,且无主从机之分,便于实现设备异常主动报警。节点故障自动关闭,不影响网络性能,提高了系统的稳定性,且不关闭总线即可任意挂接或拆除节点,方便了系统的调试和维护。

缺点:前期经济投入太多,需要大量的专业网络维护人员,维护工作量大。设计过于复杂,太难,且不容易实现[4]。

3. 方案三:基于89C2051单片机的IC卡智能水表系统

工作原理:以接触IC卡或非接触射频卡作为媒介,将各种信息输入表中控制系统来自动开关阀门(供水或停水),由用户到自来水公司网点先预购买水量,再将用水量通过IC卡输入表中控制系统,等水量用尽即自动关阀并中断水的供应,报警器在设定水量用完之前会自动报警以提醒用户购水,达到“先买水、后用水”的目的。

优点:在用户不缴费的情况下可自动断水,有效控制收费单位的资金回笼,不需要人工上门抄表、收费,减少抄表员。

缺点:(1) 电磁阀在长期开启状态下由于水垢和水中杂质而影响阀门关闭,使用户在不缴费的情况下继续用水,而收费单位还一无所知,一旦发现也无法向用户追缴多用水费;(2) IC卡表也是由发讯脉冲进行累加计量,如果人为强磁干扰或强电瞬间电击,也会造成芯片损坏,从而无法计量;(3) 锂电池在长期使用中是否能达到设计年限还有待考证,到期后由谁负责更换是个问题。

随着微电子技术、现代传感器技术的快速发展,以上该方案的缺点我们通过可行的具体方案基本可以解决了。该方案所设计的IC卡智能水表主要由开关阀门控制模块、流量采样模块、微处理器、电源模块、IC卡读写模块、数据存储器模块、显示模块等组成[2]。

2.3 方案选择

从投入成本来看,方案二需要建立一整套的网络系统,所需设备多,前期所需经济投入最大,方案一次之,方案三最低。

从设计的难易程度来看,方案三融合了微电子技术、现代传感器技术、IC卡技术等,这些技术都已经相当成熟,最容易实现,方案二最难,方案一次之。

从维护成本来看,方案二是由一个专用的网络系统组建而成,需要专业的网络技术维护人员,它的维护成本最高,方案一次之,方案三最低。

从长期效益来看,随着技术的成熟,社会各行各业网络化进程的加速,方案二必定是今后的发展趋势,它所达到的效益最佳,方案三次之,方案一最差。

综合考虑以上三种方案,根据现在的各种实际情况、现有技术水平和设计要求,我们选择了第三种方案基于89C2051单片机的IC卡智能水表系统来进行设计。

第3章  IC卡智能水表的硬件设计

本章是本文的核心内容,主要介绍的是系统硬件部分的设计。我们采用了模块化的设计方法,针对系统的工作原理和各个硬件模块的原理和电路进行了具体的介绍。还对各种器件的选择(如微处理器、传感器等)做了详细的分析。

3.1 主系统的构成

根据设计要求,所要设计的系统除了解决最基本的正常供水还应具有一定的智能功能。主系统的框架图如图3.1所示。由图中可以看出,系统由这样一些功能模块组成:微处理器、流量传感器、信号处理模块、IC卡接口电路、E2PROM数据存储电路、显示电路、报警电路、电源模块、电磁阀驱动电路以及其他辅助电路。所有模块的设计均考虑了低功耗的要求,本系统采用外接3节5号电池供电,内部采用超级电容作为备用。系统时钟采用外接晶振方式,约为6MHz。

                                     图3.1  主系统框图

IC卡智能水表工作原理:首先由用户购买IC卡(即用户卡),并携IC卡至收费工作站交费购水,工作人员将购买水量等信息写入卡中。用户将卡插入IC卡水表,卡表内单片机识别IC卡密码并确认无误后,将卡中购买水量与表内剩余水量相加后,写入卡表内存储器,同时必须将IC卡内购水值清零。当用户用水时,由流量传感器采进来的信号以脉冲形式触发单片机的外部中断,换醒单片机,进行用水处理。

用户在用水过程中,卡表内剩余水量相应减少。当剩余水量低于一定量,如5m3,卡表报警提示用户购水。当E2PROM中存储的水量用完时,单片机自动关闭电磁阀。用户只有重新购水,才能使电磁阀打开。此外,在发生人为故意破坏时,阀门也会关闭[2]。

3.2 微处理器

    微处理器是本设计中的核心器件。我们一般都选用单片机来进行控制。下面给出了对它的选型与功能介绍。

3.2.1 单片机的选型

单片机的选型从以下几个方面考虑:

1. 单片机的系统适应性

适应性指单片机能否完成应用系统的控制功能,它主要从以下几个方面体现。

(1) 单片机的CPU是否有合适的处理能力。

(2) 单片机是否有系统所需要的I/O端口数。

(3) 单片机是否含有系统所需的中断源和定时器。

(4) 单片机片内是否有系统所需的外接口。

(5) 单片机的极限性能是否能够满足要求。

2. 单片机的市场供应情况

3. 单片机的可开发性

本设计系统至少需要14个I/O端口数,其中需要2个外部中断源,一个全双工串行通信口,需要2K字节可重擦写程序存储器。

结合上述选型依据,虽然其通用的80C51系列的单片机具有电源电压适应范围宽、抗干扰能力和驱动能力强、价格便宜等特点。然而对本设计来说,根据其系统所要应用的需要:主要是其应用的引脚、应用所需要的容量以及在制作过程中所要考虑的体积、价格及供应等因素。显然AT89C2051单片满足I/O端口数、所需要的容量等要求。AT89C2051单片机与80C51单片机相比具有体积小、价格低等优点。同时AT89C2051单片机和80C51单片机是完全兼容的,它与80C51的显著区别在于它内部有一个闪存。另外考虑到在调试过程中实验器材的现实情况,本设计系统将选用AT89C2051单片机作为主控芯片。

3.2.2 单片机AT89C2051简介

AT89C2051是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含2k bytes的可反复擦写的只读程序存储器(Flash)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储的技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。

功能特性概述:

AT89C2051提供以下标准功能:2K字节Flash闪速存储器,128字节内部RAM,15个I/O口线,两个16位定时/计数器,一个5向量两极中断结构,一个全双工串行通信口,内置一个精密比较器,片内振荡器及时钟电路。同时,AT89C2051克将至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

图3.2是AT89C2051的引脚结构图,有双列直插封装(DIP)方式和方行封装方式。

3.2.3 晶振与复位电路的设计

单片机内部带有时钟电路,因此,只需要在片处通过XTAL1、XTAL2引脚接入定时控制单元(晶体振荡和电容),即可构成一个稳定的自激振荡器。

振荡器的工作频率一般在1.2~12MHz之间,当然在一般情况下频率越快越好。可以保证程序运行速度即保证了控制的实时性。一般采用石英晶振作定时控制元件;在不需要高精度参考时钟时,也可以用电感代替晶振;有时也可以引入外部时脉信号。

C1、C2虽然没有严格要求,但电容的大小影响振荡器的振荡的稳定性和起振的快速性。在设计电路板时,晶振,电容等均应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。

在本设计中,我们采用的外接晶振频率约6MHz,因此机器周期约2μs。

RESET引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即两个机器周期)以上。如使用频率为6MHZ的晶振,则复位信号持续时间应超过4μs才能完成复位操作。产生复位信号的电路图如下所示[5]。

图3.3 复位电路和时钟电路

3.3 传感器的选择

转化基于传统水表流量检测原理,在本设计中采用将传统的机械转动计量方式转化为电脉冲信号的方案。因此,需要找到一种可以将机械位移为电脉冲信号的传感器。

3.3.1 霍尔接近开关传感器

集成式霍尔开关传感器是基于霍尔效应原理,当霍尔效应片垂直于磁场时,对霍尔效应片施加控制电流时,在垂直于电流和磁场方向上就产生电动势,称之为霍尔电动势。由霍尔片和处理电路构成了集成化霍尔开关传感器,其基本原理是将由霍尔效应片所产生的电动势由内部差分放大器进行放大,然后被送往施密特触发器。当外加磁场的强度小于霍尔开关的磁场工作强度时,差分放大器的输出电压不足以开启施密特触发器,霍尔开关处于关闭状态。当外加磁场的强度大于霍尔开关的磁场工作强度时,差分放大器的输出电压达到或大于施密特触发器的开启电压阈值,霍尔开关处于开启状态。

    集成式霍尔开关传感器的主要优点是:可靠性强、抗干扰性能好、温度特性优良、电源电压范围宽、输出电流能力强、兼容性好、能与CMOS集成电路直接接口,动作响应时间短以及体积小巧、寿命长和使用方便等。

    但是,从对上述对霍尔开关传感器的原理描述中可以看出,霍尔开关传感器中必须对霍尔效应片输入控制电流、同时其内部还有差分放大器等具有较大功耗的器件,典型的集成式霍尔开关传感器耗电为mA级,因此,霍尔开关传感器不适合应用在本低功耗设计中。

3.3.2 光电检测传感器

    当光照射在半导体材料的PN结上时PN结的两侧将产生光生电动势,如外部用导线连接,将有光电流流过,通常的光电检测传感器都是基于这一原理。

    目前的光电检测传感器就是利用上述原理,以光电二极管为例,把发光二极管和光电二极管相对放置便组成了光电检测电路,当被检测物体通过二者之间时,由于光电二极管所接受的光的强度发生变化,其产生的光电动势也发生变化,将这种变化进行放大和处理,就能产生反映有无物体通过二者之间的电压脉冲信号。

然而,由于在此结构中必须用到发光二极管(对于不需要发光二极管的光电检测传感器,功耗得到了降低,但是,其容易收到环境光线变化的影响,可靠性和检测精确度较低),因此,其功耗电也较高,不宜用在本低功耗设计中。

3.3.3 Wiegand(韦根)传感器

1. Wiegand传感器组成

Wiegand传感器由三部分组成:(1)Wiegand线;(2)检测线圈,将其缠绕在Wiegand线上,或放置在Wiegand线附近;(3)磁铁。常用结构示意如图3.4所示。

图3.4  Wiegand传感器组成

2. Wiegand传感器工作原理

Wiegand线是由一根铁磁材料制成的永磁体,由外壳和内芯组成,如图3.5所示。在强磁场的作用下,内芯与外壳有相同的磁极性。将Wiegand线放在与线芯极性相反的外部弱磁场附近,能使线芯的极性发生改变,线放在与线芯极性相反的外部弱磁场附近,能使线芯的极性发生改变,而外壳的极性不变。随着外磁场强度的增加,外壳的极性也随之发生变化,这样置于Wiegand线附近的线圈就能检测出极性的转换,并产生电压脉冲输出。通常Wiegand线与检测线圈是装配在一起构成Wiegand组件。

3. Wiegand传感器工作方式

根据Wiegand线外部磁场引入的方式不同,Wiegand传感器有两种驱动方式:非对称驱动方式和对称驱动方式。非对称驱动方式开始把Wiegand组件置于一种称为渗透磁场的强磁场中,此时Wiegand线的外壳和内芯按同一方向极化,如图3.6(a) 所示;再把组件置于一种称为复位磁场的弱磁场中,此时内芯的极性反向,而外壳的极性不变,如图3.6(b) 所示;然后把组件置于渗透磁场中,Wiegand线内芯与外壳的极性又恢复到图3.6(a)的情况,由于Wiegand线中磁场的变化,导致在检测线圈中一个周期内产生单一方向的电压脉冲,如图3.6(c)所示。

图3.6  非对称驱动方式

在对称驱动方式中,采用两块磁场强度大小相等但极性相反的磁铁,一块磁铁首先将Wiegand线的外壳和内芯按同一方向进行渗透,如图3.7(a)所示;再将Wiegand线切换到第二块磁铁,在这过程中,首先线芯的极性改变,如图3.7(b)所示;然后外壳的极性发生改变,这一作用在检测线圈中产生一个方向的电压脉冲输出,如图3.7(c) 所示;接着,再将Wiegand线转回到第一块磁铁,首先内芯的极性改变为起始的极性,如图3.7(d) 所示;其次外壳的极性也随之改变为起始的极性,这一过程产生相反方向的电压脉冲输出如图3.7(e) 所示[6]。

图3.7  对称驱动方式

4. WG系列韦根传感器原理及其特点

WG系列韦根传感器是利用韦根效应制成的一种新型磁敏传感器。其工作原理是传感器中磁性双稳态功能合金材料在外磁场的激励下,磁化方向瞬间发生翻转,从而在检测线圈中感生出电信号,实现磁电转换。

它具有以下特点:

(1) 传感器工作时无须使用外加电源,适用于微功耗仪表,如电子水表、电子气表和其它智能型仪表。

(2) 使用双磁极交替触发工作方式,触发磁场极性变化一周,传感器输出一对正负双向脉冲电信号,信号周期为磁场交变周期。

(3) 输出信号幅值与磁场的变化速度无关,可实现“零速”传感。

(4) 无触点、耐腐蚀、防水,寿命长。

(5) 利用电话线、同轴线可实现电信号远传。

由于WG系列韦根传感器具有以上的众多的特点,特别是其几乎不需要外界能量的输入。因此,选择它作为本低功耗设计的传感器。在这里,我们选择了南京艾驰电子科技有限公司的WG系列韦根传感器产品,其型号为WG101。具体使用方法为:在水表的计量齿轮上安装小磁钢,当用户用水,齿轮转动,小磁钢将会转过Wiegand丝传感器,这时传感器产生一个高电平脉冲信号,经过整形、放大处理后输入至单片机进行计数计量。选择此传感器作输入信号测量的传感器,既满足了准确计量的基本要求,又满足了低功耗设计的需要,是本低功耗设计的重要组成部分。

3.4 信号处理模块的设计

    WG系列WG101韦根传感器所产生的正向脉冲信号一般为1V~2V之间。为了保证系统能更加稳定的工作,必须对传感器所产生的脉冲信号进行放大、整形处理。我们采用下面的一个简单电路(如图3.8所示)可以很好的达到脉冲信号的放大、整形作用。经过处理后的电平信号,送单片机的外部中断(P3.2)进行计数处理。当计满N(N表示为设定的转数值),用水总量加1,剩余水量减1(“1”在本设计中代表0.1m3的水)。

由于WG系列韦根传感器使用双磁极交替触发工作方式(即对称驱动方式),当水表叶轮转动一周,触发磁场极性变化一周,韦根传感器输出一对正负双向脉冲电信号。当韦根传感器输出为正向脉冲时,NPN管导通,脉冲检测信号W_IN输出为高电平;当韦根传感器输出为负向脉冲时,NPN管截止,脉冲检测信号W_IN输出为低电平。即水表叶轮转动一周,脉冲检测信号W_IN存在一个由高到低的跳变。由于我们设定外部中断(P3.2)为跳变触发方式,即电平发生由高到低的跳变时触发。因此,水表叶轮转动一周,外部中断产生一次中断[5]。

图3.8  信号处理电路图

3.5 电磁阀的选择与设计

    对于水表而言,阀门是被控对象,控制着进水的开/关状态。目前可控制的阀门主要是电磁阀,但常规的电磁阀是靠电的通/断来控制阀门的开/关的,即要让阀门一直关着,就必须一直通电,因此耗电较大,不符合本水表低功耗的要求。因此,必须对现有电平开关式电磁阀进行改进,采用双稳态电磁阀,即阀门的开/关控制由电脉冲来实现。使得对阀门开/关只需瞬时供电,从而减少耗电量。在这里我们选择:执行机构采用继电器HRS2H-S-DC3V,驱动带自锁的脉冲电磁阀MP15A-3V,两者仅需+3V电源供电。正常供水情况下,电磁阀自锁于常开状态,驱动机构不消耗电能,只有当购买的吨位数用完时,才由固态继电器驱动电磁阀关闭开关,并自锁于常闭状态,重新购水插卡后,再次送电开启。

当水量为零时,控制阀自动关闭,水路即被切断,此时用户须重新持卡购水。在正常情况下控制阀处于接通状态,只有当特殊事件发生时,控制阀才从接通状态变为关闭状态。三种事件状态下控制阀的通断情况如图3.9所示[7]。

图3.9  控制阀的关断情况

值得注意的是,由于继电器和脉冲开关电磁阀都是较大容量的感性负载,因而在切断这些感性负载时,会产生很大的电流和电压变化率,从而形成瞬变噪声干扰,成为系统中电磁干扰的主要原因,引外,继电器通断所造成的电火花和很强的电弧也产生了很大的电磁干扰。因此,在系统中必须设计相应的抗干扰电路来消除此电磁干扰,本系统所采用的抗干扰措施主要有以下两点:

1. 采用光电耦合器进行隔离(如图3.10所示)

当P1.1输出为高电平时候NPN管Q1导通,在光电耦合器SW-GD(型号为4N25)中的发光二级管发光,三级管导通。此时,电阻R10上就存在一个高电平使NPN管Q1导通。继电器即得电产生动作。D1为续流保护的作用。

图3.10  光电耦合器隔离电路

从图3.10中可以看出,单片机控制的I/O口和继电器控制端口之间用光电耦合器进行了隔离,这样,由于继电器通断所造成的电火花和电弧就不会影响到单片机系统了[8]。

2. 在电磁阀供电端跨接压敏电阻抗干扰

    压敏电阻是一种非线性电阻性元件,它对外加的电压十分敏感,外加电压的微小变动,其阻值会发生明显的变化,因此电压的微增量可引起大的电流增量。

  压敏电阻又分为碳化硅压敏电阻、硅压敏电阻、锗压敏电阻以及氧化锌压敏电阻,其中较为常用的是氧化锌(ZnO)压敏电阻,其电气性能如图3.11所示。

图3.11  氧化锌压敏电阻的电气性能

从图3.11中可以看出。压敏电阻具有类似稳压管的非线性特性,在一般工作电压(外加电压低于临界电压值)下,压敏电阻呈高阻状态,仅有uA数量级的漏电流流过压敏电阻,相当于开路状态。当有电压(当电压达到临界值以上)时,压敏电阻即迅速变为低阻抗(响应时间为毫微秒数量级),电流急剧上升,电阻急剧下降,过电压以过电电流的形式被压敏电阻吸收掉,相当于过电压部分被短路。当浪涌过电压过后,电路电压恢复到正常工作电压,压敏电阻又恢复到高阻状态。可以利用压敏电阻的上述特性来吸收各种干扰过电压。由于ZnO压敏电阻特性曲线较陡,具有漏电流很小、平均功耗小、温升小、通流容量大、伏安特性对称、电压范围宽、体积小等优点,可广泛用于直流和交流回路中吸收不同极性的过电压。

在本设计中的具体使用方法为将压敏电阻并联到电磁阀的供电电压上,这样,电磁阀开关所产生的浪涌过电压就被压敏电阻所吸收了。压敏电阻的使用大大降低了电磁阀开关所造成的电磁干扰对单片机系统的影响。

3.6 片外数据存储器的设计

在系统的设计过程中,考虑到智能水表在使用过程中可能出现失电的情况。当这种情况发生时,系统应该保存失电前的一些数据。比如,存储用户设定的水量系数N(转/吨),累计用水总量和剩余水量等。而这些数据如果存储在单片机的数据存储器中,单片机失电重启动后存储的相关数据已经消失了。为了完成此功能,必须在单片机外部加一个E2PROM,完成这些数据的存储。本设计系统中加入了I2C总线的E2PROM。

I2C总线简介:I2C总线由PHILIPS提出,是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接 。

其协议定义的I2C总线数据格式如下:

开始

7/10器件地址

R/

ACK

SUBADD

ACK

DATA

ACK

……

停止


AT24C01是美国ATMEL公司的低功耗CMOS串行E2PROM,它是内含128×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点[2] [9]。在系统中,用AT24C01存储用户的设定水量转数N、水表检测脉冲数M、累计用水总量和剩余水量等。当系统断电以后,系统将把有用的信息保存在AT24C01中,使其不被丢失。其实际电路连接图如图3.12所示:电阻R24、R25为上拉电阻。由于我们只用一片E2PROM,所以A2=A1=A0=0。它的工作原理我们将在第四章详细介绍。

图3.12 AT24C01与单片机接口电路

3.7 IC卡及其接口电路的设计

下面简要介绍AT24C0X系列的IC卡的基本特性与引脚功能,并分析AT24C0X与AT89C205l单片机的在本设计中的具体接法。

3.7.1 基于AT24C0X系列的IC卡

AT24C0X系列IC卡是美国ATMEL公司生产的存储式IC卡。产品型号有AT24C01/

02/04/08/16/32/64,存储容量分别为1kbits/2 kbits /4 kbits /8 kbits /16 kbits /32 kbits /64 kbits;2.5~5V低电压供电;双线串行接口;双向数据传送;支持ISO/IEC7816-3同步协议;写/擦除次数>1 000 000次;数据保存期>100年。它是目前国内使用最多的IC卡之一。

AT24C0X系列IC卡的引出端符合ISO/IEC7816-2标准。C1:VCC,工作电压;C3:SCL(CLK),串行时钟;C5:GND;C7:SDA(I/O),串行数据(输入/输出);C2,C6:NC,未接。IC卡引脚如图3.13所示,其中引脚T,P为微动开关的两触点。此微动开关在无IC卡状态时,处于断开状态;有卡插入时,IC卡卡座上的微动开关动合,因此,此开关往往是用来判断是否插IC卡的传感器件[2]。

图3.13  IC卡示意图

3.7.2 IC卡的接口电路的设计

24系列为低功耗COMS E2PROM 器件,使用单+5v电源,电源电压范围为2.5~6V,

内有高压泵电路,写入、擦除操作由内部定时器自动完成,具有擦除/写入周期10万次寿命和数据安全保存100年的有效期,二线串行接口,和各类微处理器接口十分简单等特点。本设计的AT89C205l单片机与IC卡240X接口如图3.14所示。图中IC-CARD为标准IC卡座,其T、P端用作到位检测开关,将T端连接89C2051的外中断输入脚P3.3()。由于引脚T,P为微动开关的两触点,所以,当有IC卡插入时,微动开关闭合,P1.5脚电平被拉低,单片机通过判读P1.5脚,做好读卡准备,无卡时,P1.5脚为高。P1.6、P1.7用作数据线(SDA)和时钟线(SCL),用软件模拟时序的方法来实现对IC卡的读写。当有IC卡插入时,P1.5脚电平被拉低,单片机通过判读P1.5脚,做好读卡准备,无卡时,P1.5脚为高。R19、R20、R21为限流电阻[2] [10]。

图3.14  IC卡接口电路

3.8 人机交互接口的设计

人机互交接口包括了报警电路与显示电路的设计。下面具体给出了在本设计中采用的报警电路和显示电路,并分析了它们的工作原理。另外,还对显示电路在本系统中应用的显示原理进行了详细的分析。

3.8.1 报警电路的设计

根据系统需要,我们设计了一个报警电路。当剩余水量不足、电池欠压等情况下,都需要报警。本报警电路很简单,我们采用1个NPN型三级管,1个蜂鸣器和1个电阻组成。如下图3.15所示,当P1.4输出一个高电平时,NPN型三级管Q4导通,蜂鸣器马上得电发声,产生报警[11]。

图3.15  报警电路

3.8.2 显示电路的设计

显示电路作为水表的输出接口,显示剩余水量、用水总量等信息。它们的有效工作时间都比较短。用户看完后,没有必要让它一直显示;为此,可水表上装一个开关按钮提供信号。即按一下按钮时,水表开始显示剩余水量;再次按下按钮时,水表显示用水总量;再次按下按钮时,水表显示关闭。如显示10s后,按钮没有动作,亦使它们停止工作,从而达到节电的目的。

在小型的控制系统中,通常用LED数码管作为显示器件。LED数码管的显示方式通常可分为2种:静态方式和动态方式。静态显示方式的优点是亮度高、没有闪动、稳定,缺点是功耗大、占PCB面积大、成本高。为了在人机对话设计中降低硬件成本,节约单片机的I/O口资源,我们采用将通过串行动态扫描,即位码和段码交替发送的方式设计了一种新颖的显示模块,经调试,效果良好。

图3.16  串口显示电路图

显示电路的具体电路如图3.16所示。它由单片机AT89C2051,2片74HC164,6个LED数码管,6个220欧姆左右的限流电阻组成。74HC164是8位串入并出移位寄存器。它的每一个输出管脚具有+/-20mA的驱动能力。对于小型LED数码管,还要串联200~360Ω的限流电阻。本设计提出的动态显示电路采用2片74HC164,可以驱动1~8只共阴极数码管,这里我们采用6位显示。其中一片U3作为段码驱动,另一片U1作为位码驱动。2片74HC164采用级联方式连接,只占用单片机AT89C2051的2个I/O端口。位码驱动U1的数据输入端口、时钟输入端口分别连接AT89C2051的RXD和TXD端口。段码驱动U3的数据输入端口、时钟输入端口分别连接位码驱动U1的Q7和AT89C2051的TXD端口。选择AT89C2051的串行口方式为0方式,即移位寄存器方式。如果要求在6位LED数码管的最低位显示一个字符时,首先从DMbufer中取出要显示的数,通过译码表译出这个字符的段码值并将段码值写入U3中。根据这个字符在LED、显示器的位置(这里为最低位)。确定它的位码值是FEH(1111 1110)将位码值写入WMbuffer中(注意:段码驱动U3为高电平有效、位码驱动U1为低电平有效)。在显示程序中,首先将位码值写入串行数据寄存器(SBUF)。在AT89C2051TXD端口的时钟作用下,AT89C2051RXD端口送出这个字符的位码值到段码驱动U3。当AT89C2051送完一个字节的位码值后,发送中断标志位TI置位。检测到TI=1后,清零TI,接着将段码写入SBUF,AT89C2051再送段码值到段码驱动B,同时段码驱动U3的位码值被送入位码驱动U1中,延时2ms,即可显示这个字符了。如果要求在低二位显示第2个字符,则WMbufer(1111 1110)不带进位位左移一位(1111 1101)并送WMbufer。再通过译码表取得第2个字符的段码值送入U3,重复上述过程即可。以上过程循环N次,即可完成1~6位字符的显示工作。在主程序中循环调用显示程序,反复扫描LED数码管,使之达到近似静态的显示效果[5][12][13]。

3.9 电源的设计

    电源是电路部分的动力源,象是飞机的发动机,人的心脏。电源的质量如何直接决定电路是否能正常工作。在本设计中,我们采用的是外接3节5号电池供电。为了保证系统的正常工作及其安全性,我们设计了一套可行的电池能量检测方案和备用电源方案。下面进行了详细的介绍。

3.9.1 电池能量的检测

如果想要做出合理的电源管理方案,就需要单片机能够随时检测电路中电池的能量(具体表现是实际的电压值)。但是在本设计中,单片机判别电池的能量,由于不用象手机那样随时显示电池的容量,根据水表的特殊性,只要检测到一个固定值,给用户一个报警提示就可以了,这个电量值的选择需要满足一个量,即让用户再有三天的余量,加上关阀电量就可以了。

低电压检测对单片机系统来讲是个十分重要的问题,它在某种程度上起到了保障系统可靠运行,避免数据出错的作用,智能水表的设计中同样如此。具体地讲,应该在系统掉电到一个门限电压(该门限电压应高于CPU的最低运行电压)时,通过相应的电压检测电路把信号传递给CPU,CPU及时对系统进行软件复位。电压检测器可以选用合泰公司的HT70XX系列产品,此产品价位较低,而且规格十分齐全。在这里我们选用芯片HT7039来监视系统供电电平Vcc,它对电压变化十分敏感,在Vcc大于3.9V时,芯片输出高电平,当Vcc低于3.9V时,芯片输出马上变为低电平,从而可以迅速的判断系统是否掉电。系统除了有灵敏的电源监控之外,还可以采用3.6V的锂电池作为后备电源来支持阀的动作,在正常工作时,锂电池不参与供电,仅在掉电后提供阀工作的电源,以保证掉电后的一系列正常动作[14]。

3.9.2 超级电容的应用
   传统的智能水表在控制水阀开启和关断时,普遍采用的方法是内装锂电池。锂电池的优点是重量轻、能量大、自放电率低等。虽然如此,由于智能水表都没有设计再充电电路,锂电池使用到一定时间后,将无法为控制电路提供能量,不得不更换电池。上门为用户更换电池或水表,这对于水表生产厂家和自来水公司来说都是一件繁琐的事情。更危险的是,电池电量不足的情况出现是随机的,如果不精确和及时的监测电池电量,将无法可靠地关断水阀,造成无法计费、逃水现象等情况出现。这是内部安装了锂电池的智能水表的致命缺点,直接影响到它的推广和使用。针对这一问题,水表生产厂家设计了很多方案,如:尽量降低功耗,在静态时控制漏电流在10μA以内,保证电池可以连续使用5年以上,这对电路的设计和元器件的选型提出了更高的要求,增加了设计难度和成品检测的工序,如加上可靠的电池电量监测电路,也会使成本增加。
    为了解决这一制约智能水表发展的瓶颈问题,已有不少厂家尝试了一种全新的方案,那就是用超级电容(Super-Capacitor)代替锂电池应用于智能水表。超级电容是近几年才批量生产的一种无源器件,性能介于电池与普通电容之间,具有电容的大电流快速充放电特性,同时也有电池的储能特性,并且重复使用寿命长,放电时利用移动导体间的电子(而不依靠化学反应)释放电流,从而为设备提供电源,见图3.17

以美国库柏(Cooper)超级电容为例,与锂离子电池进行比较,有如下一些明显特性:
  1. 超低串联等效电阻(ESR),功率密度(Power Density)是锂离子电池的数十倍以上,适合大电流放电,(一枚4.7F电容能释放瞬间电流18A以上)为水表控制电机阀或电磁阀的可靠开启提供了保障。
  2. 超长寿命,充放电大于50万次,是锂离子电池的500倍,是镍氢和镍镉电池的1000倍,如果对超级电容每天充放电20次,连续使用可达68年。
  3. 可以大电流充电,充放电时间短,对充电电路要求简单,无记忆效应。
  4. 免维护,可密封。
  5. 温度范围宽-40~+70℃,普通电池是-20~60℃。
  与内装锂电池的智能水表相比,这种方案是用超级电容替换锂电池封装在水表中,同时外接干电池供电。平时干电池提供水表电路所需能量和对超级电容的充电,在需要开启水阀时,由外接干电池提供能量将水阀开启;在需要关断水阀时,如果外接电池不能提供能量将水阀关断,那么超级电容将在此刻提供能量来关断水阀。如同一个储水箱,平时将水存储起来,在停水时才起作用。
               

图3.18是应用示意图。正常情况下,电池通过电阻R14、二级管D1向负载和超级电容充电。电阻R14的作用是限制电流过大,因为超级电容内阻很小,充电时电流较大可能造成电池损坏。二级管D1防止反向电流。当电池电压过低,或突然断电时(如取下电池),由超级电容继续为电路提供电源,同时,超级电容存储的能量足以关断阀门。

这种方案明显优于以前的设计,优点如下:将电池从水表中分离出来,从而可以不考虑电池寿命对水表的影响,大大延长了水表的使用时间;另一方面,超级电容的大电流放电特性保障了水阀关断的可靠性,在外接干电池电量不足时,仍能利用存储在超级电容上的能量将水阀关断;以前一味追求的漏电流指标,主要是为了保障电池的使用寿命,改用超级电容后,漏电流指标变得不再重要。如果电池电量不足,用户可以随时更换。这样,不仅使电路设计简化,减少产品的出厂检验工序,还使产品的成本降低[15]。
    这种方案克服了现阶段智能水表的缺点,为智能水表的发展找到了一条新的途径。目前国内已有多家水表生产厂应用该方案,实践证明,它是切实可行的。所以本设计亦采用了这种方案。在本设计中,我们选用了深圳市索普康电子有限公司的超级电容,其型号为5R5H105、产品规格为3.3V0.22F。

3.10 检测模块的设计

    检测模块主要对以下四种情况进行检测 (1) 水表被拆卸;(2) 电池欠压或取出电池;(3) 有按键按下;(4) 有IC卡插入。当有以上四种情况之一时,外部中断(P3.5)产生中断。当产生中断后,中断程序马上依次检测P3.6口(F_KEY)、P3.2口(V_MONI)、P3.3口(OPEN_D)、P1.5口(SW_T),如图3.19所示,以确认是哪种情况产生的中断后作出相应处理。该电路由一个电压检测器HT7039、两个与非门、一个或非门、一个常闭开关和一个常开开关组成。例如,当电池欠压或取出电池时,HT7039输出为低电平,U8输出为高电平,那么U9输出为低电平(即P3.5为低电平),产生中断。其他情况同理可得[11] [14]。

第4章 IC卡智能水表的软件设计

本软件我们用MCS-51汇编语言编制,采用了结构化,模块化的程序设计方法。它由主程序、外部中断0子程序、外部中断1子程序、IC卡与片外数据存储器的读写软件设计、显示子程序等模块组成。本章还给出了详细的流程图。具体程序见附录B。

4.1 主程序的设计

主程序主要完成系统的初始化,各种情况的判断如电压情况、按键是否按下、水量判断等,在适当情况下还要进行显示、关闭阀门等操作,平时处于睡眠状态。当表内剩余水量小于5 m3时,表内蜂鸣器发出提示报警,以提醒用户剩余水量不多,请速购水;当表内剩余水量为0 m3时,切断阀门,停止供水,直到新的水量被购来为止。从而达到用水必须预先交费的目的,省去了人工抄表收费环节。主程序的流程图如图4.1所示[16-18]。具体程序见附录B。

4.2 外部中断0子程序

外部中断0子程序也即水表脉冲计量程序,它只要是对用户水量进行处理。当用户在进行用水操作时,由流量传感器产生的脉冲信号使进入中断响应程序。

根据机械水表的测量原理,水的流量与水表齿轮的转速可以近似成一定的线性关系。显然,水表齿轮所转的圈数与传感器产生的脉冲信号是一一对应的关系。根据这一原理,我们可确定流量的计算公式为:

                                                              (4.1)

在式(4.1)中,Q为流量,单位为m3 ;K为基表系数,单位为m3/r;N为转数,单位为r。在这里,由于K(基表系数)是一个常数。因此,Q与N是一一对应关系。我们采用了6位数据显示,其中只含有一位小数。当Q为0.1 m3时,由于K已知,N即可以求出。在本系统编程中,我们设定M为测得脉冲数,N为Q为0.1 m3时对应的转数值,“剩余水量-1,用水总量+1”中的“1”表示0.1 m3的水量[3]。其具体流程图如图4.2所示。具体程序见附录B。

图4.2  外部中断子程序

4.3 外部中断1子程序

以下四种情况均可以使产生中断 (1) 水表被拆卸;(2) 电池欠压或取出电池;(3) 有按键按下;(4) 有IC卡插入。当产生中断后,中断程序马上依次检测P3.6口、P3.2口、P3.3口、P1.5口(原理图见总电路图中检测模块),以确认是哪种情况产生的中断后作出相应处理。其具体流程图如图4.3所示,具体程序见附录B。

图4.3  外部中断子程序

4.4 IC卡的读写软件设计

系统软件设计的流程应为确认有卡插入后,延时,待IC卡供电电路稳定,读IC卡标志位,并与系统中保存的标志比较,确认后,读数据区。为提高可靠性,IC卡中的数据在两个不连续区作备份,第二组数据作校验。为防止有损坏的字节和其它因素影响数据不可靠,建议将每次写入的数据再读出比较,判断写入的数据是否正确,从而达到保证

对IC书写操作的无误。下面详细地介绍了它的工作原理。

4.4.1 SDA和SCL信号

SDA和SCL双向总线采用I2C-bus(inter-intergrad circuit bus)汇流总线技术,所有的控制命令和数据传输均由这两条双向总线执行,采用SDA和SCL,两条总线就可实现对E2PROM进行读写,并且在读写过程中其信息传递的波特率可以从0到100kbps,其数据传输及时钟脉冲时序图如图4.4所示。

图4.4  数据传输及时钟时序图

IC卡的读写其实也就是对IC卡片内E2PROM进行读写。所以在AT24CXX系列IC卡的应用中,与逻辑控制有关的引出端线只有2条:SCL和SDA。所有的地址、数据及读/写控制命令等信号均从SDA端输入/输出。为了区分SDA线上的数据、地址、操作命令以及各种状态的“开始”与“结束”,卡片内设计了多个逻辑控制单元。其中,启动与停止逻辑单元产生控制读/写操作的“开始”和“停止”标志信号。

“开始”状态:当SCL处于高电平时,SDA从高电平转向低电平,即产生“开始”标志信号;

“停止”状态:当SCL处于高电平时,SDA从低电平转向高电平,即产生“停止”标志信号,如图4.7所示。

            

SDA和SCL通常各自通过一个电阻拉到高电平。当SCL为高电平时,对应的SDA上的数据有效;而当SCL为低电平时,允许SDA上的数据变化。

数据输入/输出应该应答逻辑单元产生数据输入/输出操作应答信号。操作时所有的地址和数据均为8位码串行输入/输出于卡片。卡片每收到一个8位码长的地址码或数据字后,都以置SDA线为低电平方式“确认”应答信号。其波形如图4.8所示。

图4.8  输入输出的确认时序

4.4.2 IC卡的写操作

在器件地址码之后,紧跟着的是字节地址码。地址码长度为8位。时序中的数据为写字节时,由IC卡读/写器中的单片机在SDA发送一个8位码长的数据;卡片每收到一个数据字节后,都要通过SDA回送一个“确认”信号(ACK)。写操作时序如图4-9所示。

图4.9  写操作时序

4.4.3 IC卡的读操作

    读操作有3种:立即地址读、随机地址读及顺序地址读;

立即地址读:如果最后1次操作的地址在n,则现行地址为n+1。其时序如图4.10中的第2部分;

图4.10  读操作时序

随机地址读:从选定的地址单元开始读,时序如图4.10所示。时序中器件地址和字地址概念同写操作,不同的是,IC卡读/写器中的单片机在给出数据字地址码之后,不发任何数据字,而是在卡片发出“确认”应答之后,又发出一个“开始”状态,进入“立即地址读”操作;单片机读入1个数据后,使SDA处于高电平,随后产生一个“停止”状态,结束本次操作。

顺序地址读 :可以从“立即地址读”和“随机地址读”开始。当IC卡读/写器中的单片机收到第1个数据字后,不发“停止”状态,而是回答一个“确认”信号。一旦卡片收到单片机发出的“确认”信号,则将卡片内地址计数器的地址自动加1,并将此地址单元中的数据从SDA线上串行输出。只要单片机收到数据字后回答“确认”信号,顺序读操作就继续进行,直到单片机送出“停止”信号为止。

在本设计的软件编程中,我们采用了随机地址读和顺序地址读两种操作方式。

4.4.4 IC卡芯片的控制字节和器件寻址

   控制字节的的配置如表4.1与图4.11所示。控制字节是跟随在主器件发出的开始条件后面,器件首先接收到的字节。控制字节的前四位由4位控制码组成,当控制码为1010时,表示对IC卡的和写操作。

表4.1  控制字节的配置

操作

控制码

块选择

读/写(R/

1010

快地址

1

1010

块地址

0


由于对IC卡而言,A2,A1,A0地址线均为0;因此,综合上面所叙:写地址为0A0H,读地址为0A1H[2] [10]。

图4.11 控制字节的配置

4.4.6 IC卡处理程序流程图

IC卡的处理程序由外部中断触发产生的(如图4.3所示)。该程序首先判断是管理卡还是用户卡,再做出相应的处理。如果是管理卡,则进行清除不良记录;如果是用户卡,则必须先核对用户名和密码是否正确,再进行IC卡的读写操作与开阀处理。在本设计中,我们是通过比较IC卡与片外数据存储器E2PROM两者对应的用户名信息单元和密码存储单元的内容是否相同来实现的。

其具体程序流程图见图4.12所示,具体程序见附录B。

图4.12 IC卡处理程序流程图

4.5 片外数据存储器读写软件设计

片外数据存储器E2PROM读写的目的主要是掉电中断程序使CPU在检测到电池失压后,将RAM 区的所有数据写入E2PROM中,以保证下次上电时安全读出。上面4.4节所详细介绍的IC卡的读写其实也就是对IC卡片内E2PROM进行读写,即对IC卡的读写和对E2PROM读写的操作原理是一样的。所以,在这里我们不在重复介绍E2PROM进行读写工作原理。

值得注意的是,IC卡和片外数据存储器都是使用的美国ATMEL公司的低功耗CMOS串行E2PROM,型号均为AT24C01,但是它们的使用目的和存储内容不同。IC卡是用户与供水部门之间交易的媒介,它存储的是用户的基本信息、效验密码还有用户本次所购水量等;而片外数据存储器是用来实时地保存用户的有用数据,防止系统在运行中掉电丢失。

4.6 显示子程序

要显示的数据有剩余水量、用水总量,分别存储于连续的几个数据存储器之中。在本设计具体编程时,剩余水量存储于3D-3EH中;用水总量存储于39-3BH中。由总电路图(附图1)可知其采用了串行口方式0,所以要用时只要将串行口设置为方式0,然后在脉冲的配合下从高位到低位一个个的移入SUBF寄存器中即可[12]。其具体程序见附录B。

第5章关于IC卡智能水表的关键问题及解决办法

本章提出了IC卡智能水表两个关键的问题即低功耗问题与安全性问题。这两大问题是保证系统能长久地可靠运行并进行全面推广的关键所在,关系到供水部门和使用者的切身利益。下面给出了可行的解决办法。

5.1 IC卡智能水表的低功耗问题               

本设计的IC卡智能水表电源部分采用3节干电池供电。而电池的容量也非常有限,如果需要经常更换电池,肯定会给用户带来很多的不便,势必对该水表的推广带来了很大的麻烦。经常更换电池还为窃水提供了可能。因此水表的功耗问题成为设计的重点和难点。

5.2 低功耗解决方案

IC卡的能耗由3部分构成:第一部分是控制器单片机(CPU)、LED显示正常运行时的持续性能耗是主要的功耗;第二部分是卡表招待机构(电磁阀)动作时的瞬时能耗;第三部分是IC卡表一些辅助功能如声音报警等的能耗。

上述IC卡表能耗的第一、二部分占了总能耗的95%以上。由于这两部分能耗从特征上来说是完全不同的类型,给选择合适的电源增加了难度。用户可以通过定期更换电池,维持IC卡水表正常运行,但同时也给IC卡留下了技术安全的两大隐患。第一大隐患是严重的,让用户自行更换电池,意味着控制器将有更多机会遭受劣质电池的侵袭,造成元器件的损坏、控制器失效及大量的维修损失。第二大隐患是致命的更换电池为技术性窃水提供了可能。我们知道,电控阀依靠电池执行开/关阀动作。通常设计者在电路中都采取了断电自动关阀的技术保护措施。其基本原理就是通过大容量电容、限流电阻及三极管开关组成一个储能电路,电压正常时,电池向储能电容充电,一经检测到电压不正常,电容放电使阀门关闭。而更换电池时,控制电路虽发出关闭信号,但储能电容已无法提供关闭阀所需的能量,阀门就此处于永久开启的状态。不少使用干电池的IC卡,安上述方法试验三四次后,均能将阀门打开。解决此问题的办法是前面提到的采用超级电容方案。

为了尽可能降低IC卡水表运行时的功耗,延长干电池的使用时间,本设计系统考虑从以下几个途径来实现。

1. 选择低功耗电磁阀

电磁阀是IC卡智能水表的重要部件,我采用了新型双稳态脉冲式电磁阀,电源电压低。正常供水情况下,电磁阀处于常开状态,驱动机构不消耗电能;只有当购买的吨位数用完时,电磁阀关闭并自锁于常闭状态。它具有启动水压低、防堵性能好及关闭可靠等特点。

2. 选择低功耗器件

除选用低功耗的微处理器外,其他器件也必须为低功耗型,如CMOS器件,而且参数的选用也必须注意低功耗。其重点是:

(1) 采用低功耗器件。

(2) 采用LED显示作为显示接口。采用LED显示相关信息,并且平常处于关闭状态。设置相应的控制按钮,控制按钮由防水盖控制。用记需要查询时,打开防水盖,按钮闭合,才显示剩余水量等信息。

(3) 一般情况下,让芯片处于低功耗睡眠模式(SLEEP MODE)。

3. 选择低的工作电压和低的工作频率

随着半导体技术的不断发展,集成电路的电源电压呈现出下降趋势。现在许多的CMOS电路都提供低电压设计。常用5V的CMOS器件大多都提供3V的使用电压。低电压不仅便于使用电池,也可以降低电流消耗。在便携式设备设计中,为降低功耗大量使用了各种低电压器件。降低时钟频率,可节省能源,并使单片机执行速度减慢。

5.3 IC卡智能水表的安全性问题

IC卡智能水表的推广应用,取决于以下两个主要因素:1.水表的可靠性;2.水表的安全性。水表的可靠性是从水表的功能和性能来说的;水表的安全性主要是从水表的数据防盗(即窃水)、IC卡数据的防非法复制等角度来说的。由于水表的安全性可关自来水公司的直接利益,进而关系到IC卡水表的推广应用,因此,IC卡水表的安全性问题是必须认真考虑的一个问题。

5.4 安全性问题解决方案

1. 售水用IC卡(用户卡)的安全性

由于本智能水表采用普通24C01系列IC卡,因此,对IC卡信息的加密与解密是决定IC卡安全性的关键。具体办法是:用户卡在每次购水时,均由上位机根据剩余水量等信息随机生成3B的密码因子存入IC卡,以此对IC卡信息进行动态加密;卡表内的加密与解密程序读取IC卡信息后,进行逆向处理,达到解密目的,然后对数据进行相应处理。采用这种方法后,可有效防止IC卡的非法复制与数据非法修改,保证IC卡的安全性。

2. 表内信息的安全性

表内信息的安全性由以下2种措施来保证;

(1) IC卡的有效认证

卡表自动识别有效IC卡,按预定程序与IC卡进行双向传输,1次读入全部信息,表内内存的信息1次写入IC卡。设置的读/写密码保证1表只有一张用户卡配对使用。

(2) 防拆卸功能

若用户私自拆卸水表,S1闭合,状态由高到低触发中断,中断服务程序将开盖行为记录到表内的E2PROM中,并立即关断进水开关。只有自来水公司管理人员用管理卡才能消除这种不良记录。

第6章系统调试

系统调试也是一个关键性的环节,它是理论设计到实际应用的一个过渡。本章简要地阐述了系统硬件调试和软件调试,及其调试现象。

6.1 调试设备

PC一台,80C51单片机实验台,万用表,示波器,导线若干等

6.2 硬件调试

硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。由于实验室没有AT89C2051,在这里我们用AT89C51代替。

硬件调试可分为静态调试与动态调试两步进行。

1. 静态调试

    静态调试是在用户系统未工作时的一种硬件检测。

    本系统在静态调试中的步骤如下:

    第一步:目测。检查外部的各种元件或者是电路是否有断点。

    第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。

    第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值。

    第四步:联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。

2. 动态调试

    动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。在本设计中,由于该系统采用了模块化的设计,所以动态调试采用了分模块调试的办法。调试过程中,分为信号处理模块、显示电路模块、报警电路模块、电源模块模块、电磁阀驱动电路模块等进行了分别调试。

6.3 软件调试

软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。在本系统中,软件的调试部分包括各类程序的调试,如主程序、外部中断0子程序、外部中断1子程序、显示子程序等。

6.4 调试现象

调试是一个很痛苦的过程,起初调试结果十分不理想。

例如,硬件调试方面,在电磁阀驱动电路模块中,P1.1变为高电平后,继电器不动作,开关K1不闭合。通过检查程序、接线、各个元件等均正确无误。但是经过多次实验,继电器依然不动作。后来,在曹老师的指导下,发现可能是电路图6.1有问题。在电路图6.1中光电耦合器SW-GD应该根本就不能驱动继电器的动作。发现问题后,马上对图6.1进行了改正,改为第三章中的图3.10所示。在实验室经过调试,改正后的电路效果很好,完全符合本设计要求。

图6.1  光电耦合器隔离电路

经常几天的努力,在实验室老师的指导和同学的帮助下,调试结果终于基本达到了设计任务的要求。

总     结

基于单片机的IC卡智能水表控制系统,使用逻辑加密IC卡,实现了用水收费的电子化。本设计采用89C2051单片机控制,全自动运行,成本较低,使用方便,运行可靠,管理简单,保护功能齐全。整个系统结构紧凑、所用芯片少、控制精度高。在IC卡接口电路、片外数据存储器接口电路、显示电路上都采用了串行方式,从而减小了单片机口线的使用,也使使用口线小的单片机成为可能,节约了成本开支,并减小了PCB版的大小;电源电路采用3节干电池,外加超级电容作为备用电源,经济实惠而且性能稳定,使用年限长。

本系统最大的优点是采用了低功耗的设计和采取了很多有效措施来增强了系统的安全性。在低功耗的设计方面,大部分芯片均采用了微功耗COMS芯片;采用低功耗电磁阀,而且阀门的开/关控制由单片机输出电脉冲实现,只需瞬时供电,减少耗电量;选用了工作时无须使用外加电源WG系列韦根传感器,大大降低了使用功耗,等等。在安全性的设计方面,使用了逻辑加密IC卡,必须核对用户信息和密码正确才能读取有效数据;单片机控制的I/O口和继电器控制端口之间用光电耦合器进行了隔离,这样,由于继电器通断所造成的电火花和电弧就不会影响到单片机系统了;应用超级电容作为备用电源,有效地防止系统掉电时用户进行偷盗水的操作,等等。

当然本系统也存在一些缺点。例如,在显示方面,没有采用液晶显示,所以该系统不能显示阀门状态、电池状态等图形文字信息,不过采用LED显示成本较低,适合大众要求;在控制方面,没有实现阶梯水价功能,对用户的用水收费只能按照一个统一的标准收取;在安全性方面,未能编制出对IC卡信息进行加密与解密的应用程序。

总的来说,上述设计能够较好的完成设计任务,基本实现了设计要求。但是由于本人能力有限,设计中难免存在一定的缺陷,还请各位专家批评指正。随着水资源的日益紧张,IC卡智能水表因其特有的优点(如先“先收费后供水”、解决人工抄表的麻烦等),必将成为水表中的主流,有着很大的市场前景。





完整的Word格式文档51黑下载地址内含源码

基于单片机的IC卡智能水表控制系统设计[附程序 图].doc (2.32 MB, 下载次数: 148)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:481306 发表于 2019-3-16 22:38 | 只看该作者
感谢分享
回复

使用道具 举报

板凳
ID:662319 发表于 2019-12-12 12:13 | 只看该作者
感谢大佬分享
回复

使用道具 举报

地板
ID:488604 发表于 2020-9-1 10:51 | 只看该作者
你好,请问一下,电磁阀那里假设卡住了,会不会有过流保护?
回复

使用道具 举报

5#
ID:772864 发表于 2021-3-30 22:47 来自手机 | 只看该作者
有元器清清单嘛
回复

使用道具 举报

6#
ID:906077 发表于 2021-4-16 14:05 | 只看该作者
有电路图讲解吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表