基于MSP430单片机的多路水表采集与远传系统

2014-08-22 07:18王学水池金波王岩庆
枣庄学院学报 2014年5期
关键词:水表采集器中断

王学水,池金波,王岩庆

(山东科技大学 电子通信与物理学院,山东 青岛 266590)

0 引言

随着我国城镇化进程的持续推进,水资源的消耗量日益增加,实现水资源的有效管理和理性使用是社会可持续发展的必然选择.对于安装有多块水表的用户和单位,通过对水表的实时监测,并把数据传送到上位机进行分析整理,可以及时发现并处理漏水和过量用水现象,能够在有限人力成本支出条件下带来可观的经济效益和社会效益.

MSP430系列单片机由于其代码执行效率高,速度快,内部外设丰富,性能稳定,可在工业级运行环境下可靠工作,特别是其超低功耗特性使其可以在电池供电条件下长时间运行等特点使其越来越受重视,用它开发的产品也越来越多[1].本采集器设计中突出“单片”解决问题的理念,充分利用MSP430单片机丰富的内部外围模块和可供选择的多种低功耗模式,简化了硬件结构,相对于通过外接相同功能的电路模块构成的系统大大提高了系统的稳定性和抗干扰能力,同时降低了成本和功耗.

1 总体结构

1.1 硬件总体结构

硬件总体结构如图1所示,由水表采集器、网络转化器和局域网组成.网络转换器通过RS-485总线挂接多块水表采集器,将数据按照TCP/IP协议通过网络交换机进入局域网,从而使任意连入该局域网的计算机都能在上位机软件支持下实现数据的收发、汇总和分析[2].采集器中微控制器是MSP430F4152单片机,周围有水表采集电路、显示电路、电源电路和通信接口.在有外部电源时,整个采集器由外部电源供电,采集器的水量信息采集、显示和通信功能都处于正常工作状态,MCU通过外电源检测电路实时检测外电源有无.当外电源掉电时采集器由法拉电容供电,MCU关闭通信和显示功能,只保留水量采集功能,最大限度降低系统功耗.在法拉电容供电电压小于2.2V时单片机内部的SVS模块产生一个POR复位信号,避免因为电压过低时对FLASH操作导致内部数据不可预测.

图1 硬件系统总体结构

1.2 采集器主程序

下面以C语言加注释说明的形式给出了系统的主函数程序.看门狗模块设置成1S定时复位,看门狗计数器清零语句分布在各个中断子程序和语句较多的函数中;定时器A0设置成1S定时中断,在此中断程序中首先检测外部电源,据此屏蔽或使能某些模块;在必要的初始化操作完成后只保留ACLK,进入低功耗模式LPM3,各种功能函数都是在中断子程序中实现的.这种实现方式与查询方式相比,大大降低了功耗,增强了对事件的实时处理能力.

void main( void )

{

WDTCTL=WDT_ARST_1000; //看门狗1S定时

InitCLK(); //主系统时钟1.114MHz;设置FLASH时序

发生器频率1114/3=371KHz

SVSCTL=VLD0+VLD1+SVSON; //2.2V电源电压监测

InitialTimera0(); //初始化定时器A0

InitEX1(); //P1 P2端口外部中断设置

FlashToRAM(); //数据由FLASH移入到RAM

InitConfig(); //设置系统波特率,水表分辨率,表号等参数

P6DIR&=~BIT3; //220V电源检测端口设置成输入状态

_EINT(); //开总中断

WDTCTL=WDT_ARST_1000; //看门狗计数器清零

LPM3; //CPU进入低功耗模式3,只有ACLK工作

}

2 水量采集部分

2.1 硬件电路

干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,如图2(a)所示,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃管.管中装有两个铁质的弹性簧片电板,内部充有惰性气体.平时玻璃管中的两个簧片是分开的.当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通.外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了.水表转一圈,两侧干簧管各吸合一次,与地导通,当端口接入上拉电阻时,干簧管吸合导致下降沿触发外部中断.据此,对同一块水表的两侧干簧管一个接P1.X端口,另一个接P2.X端口,当一个干簧管脉冲经过后,另一个干簧管有脉冲发生时,软件认为水表转了一圈,中断子程序根据中断标志位对相应水表数据进行处理.为增强抗干扰能力,提高稳定性,在端口上接入了滤波电容和二极管,如图2(b)所示.

图2 水量采集接口

2.2 水量采集程序设计

以X水表为例,P1.X端口外部中断程序和P2.X端口外部中断程序共同完成水表X的水量采集,两中断子程序以变量“水表X标志”相联系,判断相关操作是否执行.下面是两个中断程序的程序框图.通过两个中断处理程序进行数据采集可以有效避免外界磁场造成的干扰,克服水锤现象造成的数据不准确,保证了数据精度和可靠性.

图3 水量采集程序框图

3 显示电路

为了显示水表表号和对应的用水量信息,采用数码管驱动芯片TA6932驱动8位数码管,图3显示了两个数码管的驱动电路,其余数码管接法相同.MSP430F4152单片机通过P3.0,P3.1,P3.2端口向TA6932中写入数据.为了符合TA6932芯片的电平标准以保证数据的有效传输和尽可能降低功耗,在端口上接入接有+5V电源的上拉电阻.若使单片机输出逻辑“1”,只要把相应端口设置为输入状态,此时对应的MSP430单片机端口呈现高阻态,上拉电阻把端口置高,TA6932芯片读入逻辑“1”;单片机输出逻辑“0”时,把相应端口置0,上拉电阻的阻值保证了灌电流小于单片机管脚允许的最大灌电流;在空闲状态时把端口设置为输入,此时呈现高阻态进而降低功耗.

图4 TA6932和八位数码管电路连接图

4 通信接口

因为所要检测的水表数量较多,水表采集器的数量也较多且较分散,而RS-485总线具有设计成本低、网络能力强、传输距离远、传输速度快等优点,所以设计中采用RS-485总线标准[3],电路图如图4所示.图中所示“(+3.6V或+5V)”表示如果所选RS-485芯片工作电压是+3.6V就接入V1(MS430单片机工作电压),如果是+5V就接+5V,PCB板上预留有两个电源的焊盘供选择.因为该芯片也是TTL电平标准,虽然与MSP430单片机的工作电压不一样,但TTL电平互相兼容,可以直接通信.9012和9013都是作为开关管使用,当P5.6为“0”时,开关导通,V1给RS-485芯片供电;如果P5.6为“1”,在V1=+3.6V时,开关截止,RS-485芯片不工作,进而降低功耗,如果V1=+5V,因为基极与发射极正偏,此时开关也可能导通,但此时有外电源供电,功耗问题可以忽略.

图5 RS-485通信模块接口电路

5 电源电路

根据功能要求和所选芯片的电气特性可以确定:TA6932芯片和MAX485芯片需要+5V电源供电,这部分电源通过外接220V交流电,通过变压器变压,二极管IN4007整流,电容滤波和7805芯片稳压最终得到稳定的+5V电源,如图5所示;MSP430F4152芯片和需要实时测量的水表所接上拉电阻部分需要+3.3V供电,这部分电源通过LM317芯片和合适阻值的调节电阻得到+3.6V左右的稳定电源,匹配的调节电阻阻值计算得到的是339Ω[4],同时给法拉电容充电;当外电源断电时,法拉电容作为储备电源给系统供电[5];在+5V与GND之间串联接入两个1MΩ电阻,P6.3端口接入两电阻中间,用于检测外电源有无.当P6.3端口监测到外电源掉电后,程序中自动保留水表监测部分,而通信模块和显示模块全部被禁用,系统功耗降至最低,从而最大限度延长储备电源使用时间.当外电源再次接通后,法拉电容再次充电,R40(10Ω)的作用是限流,防止法拉电容充电时电流过大将其烧坏,D5的作用是防止法拉电容向LM317电路漏电,造成电量损失.

图6 电源电路

6 数据存储

用水量信息需要实时监测,实时保存,为了能使数据掉电不丢失,需要找到合适的存储模块.MSP430F4152单片机内部集成了16K+256B的FLASH存储空间,保存时间为10-100年不等,除去必要的程序代码,数据表格存储,尚有大量空间可供用户存储信息.FLASH存储器分为主存储区(main memory)和信息存储区(information memory),主存储区一段(segment)是512Byte,信息存储区一段(segment)是128Byte,FLASH是按段擦除的,擦除次数为100-100000次[6].FLASH存储器在数据存储时只能把“1”改写成“0”,不能把“0”改写成“1”,只有擦除操作能把整段(segment)改写成“0”.据此,用“0”的个数对应于水表转的圈数,把擦除次数降到最低,理论上实现了有限擦除次数上的无限数据存储,这种方法用在记录水表脉冲个数上很适用.

以字节为单位向FLASH存储器中写入数据、读出数据和以段为单位对FLASH进行擦除是本程序有关FLASH存储器应用中的基础和核心[7].对于擦除完尚未写入数据的任意段,读其中任意字节都是“FF”,即该字节中的8位全是“1”.如果忽略数据的具体意义,只关注和控制字节中“0”的个数,当“0”的个数逐次增1时是很容易控制的(读出该数后左移一位再存入原地址字节中).把FLASH中的某一未使用的段中的“0”(bit)的个数对应于某块水表从被采集以来转的圈数(乘以分辨率就是水量),水表转一圈该段中“0”的个数加1,以位(bit)为单位实现该段中“0”的个数递增也就实现了用水量的数据递增和存储.系统上电复位时,从水表对应的FLASH存储器段中读出“0”的个数,乘以分辨率后存入RAM中该水表的对应变量中.以上是本设计中数据存储的算法思想,理论上和实践中都是可行的.

7 网络转换器简介

NETCOM-10SI/MI 是广州致远电子有限公司开发的一款工业级以太网串口转换设备,它内部集成了TCP/IP 协议栈,用户利用它可以轻松实现嵌入式设备的网络功能,节省人力物力和开发时间,使产品更快的投入市场,增强竞争力.该产品用于串口与以太网之间的数据传输,可方便的为串口设备增加以太网接口.可用于串口设备与PC 机之间,或者多个串口设备之间的远程通信[8].

8 总结

本采集器是基于MSP430F4152单片机的简单系统,以水表水量采集功能为中心,以计算机技术为基础进行数据处理和传输,以软硬件相结合的方式实现预设功能,实际使用中性能稳定,运行良好,达到了设计目的.图6显示了应用本采集系统对山东科技大学B1公寓楼1号水表的日用水量监测的统计结果,通过各个时间段的用水量可以判断是否有管道漏水现象,对其及时发现并处理,可有效杜绝浪费.对于小批量生产,使用本设计有其优势,如容易实现,开发周期短.对于大批量应用中,可以进一步使用MSP430F4152单片机内部LCD段式液晶驱动模块驱动段式液晶屏取代数码管显示,有降低功耗的意义也有节约成本的意义.

图7 B1公寓1号水表日用水量统计直方图

[1]马贺凯.超低功耗热量表的研制[D].青岛:山东科技大学,2011:12-14.

[2]张志伟,王学水,王岩庆.基于单片机的楼宇供暖节能系统的设计[J].单片机开发与应用,2009,25(9-2):95-96,159.

[3]程凯,孙克怡,曹伟,等.RS-485总线理论的应用与分析[J].中国海洋大学学报,2003,5:753-758.

[4]冯平,张治中.基于可调式稳压器LM317 的直流稳压电源[J].电子测试.2009,(5):70-73,89.

[5]林茂疆,鄢萍,易润忠,等.基于法拉电容的智能仪器仪表掉电保护方案[J].电源技术,2010,34(12):1292-1295.

[6]MSP430x4xx Family User's Guide[K].Texas Instruments.http://www.ti.com.

[7]沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2008:211-220.

[8]王岩庆.高校用水计量与远传管理系统的设计[D].青岛:山东科技大学,2010:25-30.

猜你喜欢
水表采集器中断
COVID-19大便标本采集器的设计及应用
水表检定装置不确定度分析计算的相关思考
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
防冻水表
基于Cortex-M4的油气管道微功耗数据采集器软件设计应用
多传感器通道多点数据并行高速采集器设计
降雨径流采集器的无功损耗分析及节能电路设计
跟踪导练(二)(5)
千里移防,卫勤保障不中断