本论文以智能IC卡水表系统为研究对象,重点探讨了基于MSP430F413型超低功耗单片机在低功耗智能仪表上的应用与开发。论文首先提出利用IC卡技术智能水表系统的总体设计方案;设计了系统控制的硬件电路结构和研究了软件控制流程的实现,采用软硬件结合的方法,对系统的低功耗、抗干扰性设计及安全性问题作了一定的分析与研究。
MSP430F413简介
TI公司MSP430 F413系列单片机是一种超低功耗的混合信号控制器,其中包括一系列器件,它们针对不同的应用而由各种不同模块组成。它们具有16位RISC结构,CPU的16个寄存器和常数发生器使MSP430微控制器能达到最高的代码效率。灵活的时钟源可以使器件达到最低的功率消耗。数字控制的振荡器(DCO)可使器件从低功耗模式迅速唤醒,在小于6μs的时间内被激活到正常的工作方式。MSP430F413系列单片机的16位定时器是应用于工业控制如纹波计数器、数字化电机控制、电表、水表和手持式仪表等的理想配置,其内置的硬件乘法器大大增强了其功能并提供了与软硬件相兼容的范围,提高了数据处理能力。
智能水表的工作原理
本文设计的智能水表的工作原理:用户先购买IC卡(用户卡),并携带IC卡至收费工作站交费购水,工作人员将购水量等信息写入卡中。用户将卡插入IC卡水表表座内时,IC卡水表内单片机识别IC卡密码,校验并确认无误后,将卡中购水量与表内剩余水量相加后(初次使用时,剩余水量为零),写入IC卡水表内的存储器,进而控制电阀开通阀门供水。
用户在用水过程中,带磁感器的叶轮在水流的冲击下转动,通过磁传递,带动上表罩上的梅花齿轮转动并使多极齿轮转动,实现机械累计计量,每当计量到0.01m3时由位于0.01m3处的计量传感器向单片机发出同步的计量脉冲信号,此时,MSP430F413将输入的有效脉冲计入并计算用水量,IC卡水表内剩余水量就会相应的减少一个计量单位,累计用水量就会增加一个计量单位,LCD显示屏上显示剩余水量等相关用水数据。当剩余水量低于一个定量时(有一个事先设定好的最低剩余水量值),IC卡水表的报警系统启动(蜂鸣器响起),提醒用户及时到供水部门再次购水,这时,LCD显示屏上显示“请购水”字样。当剩余水量为-1时,单片机驱动电阀自动关闭,切断水源,停止供水并报警。在用户重新购水读卡存入后,再开通电阀供水。在正常情况下,阀门处于开通状态,当遇到剩余水量为-1或者电池电压小于3V等其他特殊情况时阀门会由开通变为关闭状态。
系统方案设计
本文设计的智能水表系统主要由微处理器、流量传感器、电动阀门、IC卡读/写器、LCD液晶显示及电源等组成,
图1 智能水表的原理框图
硬件结构图如图1所示。
1 系统硬件的设计
图2 系统硬件原理框图
系统硬件原理框图如图2所示。
① 电源低电压检测电路
本系统采用三节干电池4.5V作为供电电源,使用一段时间后,干电池会放电,为了保证整个系统,特别是阀门的正常工作,需要对电源进行实时检测,当电能不能满足系统要求时,及时报警提醒用户更换电池,以免造成不必要的麻烦。
为提高智能水表运行的可靠性和安全性,设计中采用电源电压实时监测电路。如图3所示。电压检测芯片采用日本理光R3111H301C低电压检测芯片,R3111H301C输出电压为3.0V,最大工作电流为3.0μA,一般情况下的工作电流仅为1.0μA,高精度集成,完全满足系统低功耗设计的要求。当电源电压正常时,芯片的输出脚输出为高电平;当电源电压小于3.0V时,输出脚输出低电平,即P1.1输出低电平,P1.1下降沿中断有效,单片机检测到该信号时即转入中断服务程序处理,这时LCD液晶显示“换电池”字样,同时蜂鸣器报警提示用户更换电池,MSP430F413内部基本定时器使能中断,定时1s检测电压是否回升,如果回升蜂鸣器再次发出一声警报提示,LCD液晶上的“换电池”显示字样清除。如没有回升,则关闭阀门,直到用户更换电池,才再次开启阀门供水。由于MSP430F413工作用电压是3.0V,所以需要一个电压转换芯片将4.5V电压转换成3.0V供MSP430F413和其他外围模块使用,本电路中用的是RH5RL30AA—电压调整芯片,它具有高精度的输出电压,工作电流极低只有1.1μA。
② 脉冲采集电路
本系统中水表的基表采用符合ISO 4064B标准的旋翼式冷水水表。该表计数机构与测量机构经磁耦合传动,采用干簧管传感器计量发讯,每流经0.01m3水时产生一个脉冲。为了有效防止各种可能的干扰抖动而产生的多计数现象,本设计中采用双干簧管双脉冲通过由电容和电阻组成的防抖电路输入单片机计数,当两个脉冲输入段依次有脉冲输入的时候才产生一个有效脉冲计数,两个脉冲有互锁功能,P1.3和P1.4作为脉冲输入端。每输入一个脉冲,在存储器中减去相应水量。表内设有磁保护装置,具有较强的抗外磁干扰能力。
③ 阀门控制电路
阀门控制是水表控制系统中一个很敏感的部分,关启阀门的可靠性差,将会给供水部门带来很大的问题。本系统采用的是电动球阀,工作电压3V,工作时电流仅50mA。设计中利用直流电机带动半球阀正转或反转的方式来控制阀门的开启和关闭。利用MSP430F413单片机的P6.6和P6.7来控制阀门的正反转动,利用MSP430F413内部比较器(P1.6CA0,P1.7CA1)检测堵转电流来控制电机运行。当电机正常工作时,CA0>CA1,一旦堵转,电流迅速增大,CAOUT=0,来通知MSP430F413电机转到位。定时器定时1s检测电机是否到位,有效地解决阀门关闭不可靠问题。当正向端输入高电平,反向端输入低电平时,阀门开启;反之,阀门闭合。当单片机P6.7口输入低电平、P6.6口输入高电平时,正向端(ON)输出高电平,反向端(OFF)输出低电平,开启阀门,开启到位时,由单片机P1.5口输入检测信号,动作停止;反之,正向端输出低电平,反向端输出高电平,关闭阀门,同样由单片机P1.5口输入关闭到位检测信号。
2 系统软件的设计
图4是主程序流程图。单片机上电复位后主程序采用顺序执行的方法,逐个扫描各个自定义标志位,检查是否有动作发生,若有发生则转入相应子程序处理,处理完后回到主程序,继续扫描其后的标志位,最后进入低功耗状态,等待下一次中断唤醒,唤醒后同样循环一遍,又进入低功耗状态。由于各信号以中断的方式进入的,所以要特别注意中断的优先级及中断的嵌套问题。采用模块化方法设计各个子程序。根据不同功能,定义了不同的功能模块。明确入口出口,相互之间的调用关系,以供调用。主要软件模块有:IC卡读写模块,液晶显示模块,计量模块,FLASH读写模块,低电压保护模块等。上电后首先对系统进行初始化。初始化包括对内部存储器单元清零、特殊功能寄存器置初值、液晶显示的设置等。接着进入主循环,判断故障、电源电压是否正常等,若一切正常则开阀供水。无论在什么情况下只要有低电压信号出现,系统就提示欠压,蜂鸣器报警,液晶显示,提示用户更换电池:当剩余水量低于设定值时,系统液晶显示提醒用户“请购水”,如果用户没有及时购水重新插卡充值,当剩余水量为负时,系统控制阀门关闭,停止供水。
图3电源低电压检测电路
图4 系统软件设计流程图
3 系统低功耗的设计
在单片机控制系统中,系统的功耗往往和电源电压的大小成一定比例关系,电源电压高,系统的功耗相应的也会增大,因此在功耗要求很严格的智能水表控制系统中,在保证功能的前提下,尽量选择低的电源电压。本系统中选用三节碱性干电池4.5V供电。本文所设计的智能水表的能耗主要由三部分构成:第一部分是控制器中单片机(CPU)液晶正常运行时的持续性能耗,这是主要的功耗;第二部分是IC卡水表执行机构(电阀)动作时的瞬时能耗;第三部分是IC卡水表一些辅助功能如声音报警等的能耗。上述智能水表能耗的第一、二部分占了总能耗的95%以上。因此,在设计时主要考虑:选择低功耗电动阀;选择低功耗器件(CMOS型);选择低的工作电压和低的工作频率;软件设计时选择低功耗的系统运行模式。
4 系统抗干扰的设计
本系统中抗干扰设计从两方面来考虑,一是在硬件设计上采取适当的措施来抑制和消除干扰,例如采用电磁干扰滤波器,如图5所示。另一方面是从系统软件设计上采取一定措施来提高系统的抗干扰能力,即使系统受到干扰,也能自动地快速恢复正常上作。如:尽量减少中断源,采用中断与查询相结合的方法,保持尽.可能短的中断开放时间,随开随关;在程序关键的地方人为地插入空操作指令,保护CPU在受到干扰,程序“弹飞”时指令不被拆散等软件措施。
图5 电磁干扰滤波器在系统中的应用