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