基于RFID的预付费电能表的研制
文章出处:http://www.singbon.com 作者:单片机与嵌入式系统应用 人气: 发表时间:2011年10月30日
摘要
运用保密性好且物美价廉的RFID技术实现预付费电能表;着重介绍RFID本身及其与电能表的接口。作为核心部分的电能表,采用全数字电路来实现,有效地提高了测量精度;同时采用可视化的液晶屏和交互式的键盘等,改善了人机界面。RFID和电能表的集合,改变了现在的电表付款方式,可以提高电力部门的工作效率,安全、可靠;是当前电子式电能表的一种发展方向。
引言
随着人均用电量的大幅度增加,推动了一户一表制的使用。传统的机械式电能表测量精度有限,会带来较大误差;当用电量很大时,误差将让人难以接受。本文介绍的电子式预付费电能表是通过电能测量集成电路对电压电流的取样信号进行处理,并输出与有功功率成正比的频率信号;微处理器通过对脉冲计数来计算所消耗的电量。用户将RFID卡片(预先在电力部门购买,卡片上充有定额的现金)靠近电能表,这时MCU通过射频芯片读取卡的金额,将其存储到EEPROM,同时此卡清零。电能表将通过声音和LCD显示来提醒用户充值。
1 硬件电路总体设计
通过对AD7755的电能测量,与以低功耗著称的MSP430 MCU接口,再用DS1302作为时钟,将数据储存在24LC16 EEPROM中。用工作于13.56 MHz的MFRC500芯片来实现预付费卡片数据的读取。硬件框图如图1所示。
1.1 电能计量模块AD7755的特点和接口
AD7755是Analog Devices公司生产的电量计量集成电路,技术指标超过了IEC1036规定的准确度要求。值得一提的是,国内现有替代产品,上海贝岭的BL0932可以很好地替代AD7755。这里的AD7755工作于这种方式:电流和电量通过其互感器送入各输入通道。电压和电流通道上额定值要设计在最大输出电压的半刻度上,使电表能满足过压和过流的要求。把CF频率输出端接到单片机的端口,设置SCF=0,S1=0,S0=1,CF的最高输出频率为21.76 Hz,MCU对输入脉冲进行计数,计数值的大小即反映电能消耗的多少。本设计中,分流器电阻在340 μΩ条件下,表常数为3 200脉冲/kWh,即每kWh电产生3 200脉冲。从CF经光耦输出到MCU计数。
图1 硬件框图
1.2 MCU模块MSP430
MSP430 MCU是TI公司的超低功耗16位单片机;采用精简指令集;具有丰富的片内外设,功能强大,并且具有很低的电能消耗,特别适用于三表设计。在此选用带有 LCD驱动和I/O丰富的MSP430F435。MSP430F435有80和100两种封装形式(在此选用小型化的80封装)。MCU作为电路的核心模块,要与各个外设打交道,不仅要负责计出AD7755所输出的计量脉冲值,还要将其转换为金额,并对各种外扩的接口芯片进行协调和处理。
1.3 时钟模块DS1302
要保证电能表时间的准确性,时钟电路还是必需的。在此选用Dallas公司推出的高性能、低功耗、带RAM的实时时钟芯片DS1302,可以对年、月、周、日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5 V。DS1302采用三线接口与MSP430单片机进行通信。这部分主要是对DS1302的串行信号和时钟的模拟以及掉电保护电路设计。
1.4 外扩存储器模块24LC16
作为计量仪表需要有许多数据(如电流电压的系数、分时计费表、累计计费表等)是变动的或可以通过正常手段修改的,但不能因系统中的干扰而改写,更不能因停电等事件而丢失。串行EEPROM是当前仪表设计中最合适的器件。这里选用Microchip公司生产的24LC16来实现这种功能。 24LC16是具有I2C接口的EEPROM。其容量为2048×8位,分为8个页面,每页256字节。由于MSP430F435不带I2C接口,所以在此要对其进行I2C总线模拟。其主要困难还是延时。
液晶模块和键盘以及RS232通信相对简单,各个模块之间通过MCU来控制。
2 RFID实现预付费的过程
RFID(Radio Frequency Identification,射频识别),是一种非接触式的自动识别技术。它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境;操作快捷方便。根据频段不同,RFID分为低频和高频系统: 低频近距离RFID系统主要集中在125 kHz、13.56 MHz频段;高频远距离RFID系统主要集中在频段(902 MHz~928 MHz)915 MHz、2.45 GHz、5.8 GHz。
本设计采用Philips公司的13.56 MHz MFRC500 RFID芯片,Mifare Standard 1k智能卡的核心是Philips公司的Mifare1 IC S50系列微芯片。Mifare 1 IC智能卡内建有高速的CMOS EEPROM和MCU等。卡片除了IC微芯片及一副高效率天线外,无任何其他元件。卡片无电池,工作时的电源能量由卡片读写器天线发送电载波信号耦合到卡而产生电能,一般可达2 V以上,供卡片IC工作。Mifare1射频卡所具有的独特的Mifare RF非接触接口标准已被制定为国家标准——ISO/IEC 14443 TYPE A标准。
MFRC500采用总线时序和单片机接口。由于MSP430总线不外扩,所以还要对其模拟总线时序,典型接法如图2所示。
图2 MFRC500接口图
MFRC500采用寄存器写数据和写命令的形式来控制卡片数据的读和写。大概有以下步骤:
① 请求之应答。Answer to Request(ATR) . Mifare卡片处在天线范围内时,读写器向卡发出REQUEST all(或REQUEST std)命令后,卡片ATR启动,将卡片Block0的卡片类型(TagType)号共2字节传送到读写器,这样建立第一步联系。卡片返回数据 0004H。
② AntiCollision模块。防止卡片重叠,当多张卡片一起放入天线范围时,AntiCollision模块的防重叠功能将被启动。MFRC500将与每张卡片进行通信,取得每张卡的序列号。由于每张Mifarel卡片都具有唯一的序列号,不会相同,因此MFRC500可以通过序列号来区别,区分选中的卡片。AntiCollision模块启动时,卡片读写器将得到卡片的序列号(Serial Number)。序列号存储在卡片的Block0中,共有5字节(实际用的是4字节,另一个字节为序列号的校验字节)。返回值为卡片序列号。
③ Select Application模块,主要用于卡片选择。当卡片与读写器完成了上述2个步骤,读写器要对卡片读写操作,必须对卡片进行"Select"操作,使卡片真正被选中。被选中的卡片将卡片上存储在Block 0中的卡片容量"Size"字节传送到读写器。当读写器收到这一字节后,将明确对卡进行深入操作。读写器收到的字节可能是88H。
④ Authentication&Access Control模块,认证及存取模块。在确认了上述3个步骤后,确认已经选择了一张卡后,在对卡进行读写之前,必须对其进行验证。如果匹配,则允许进行下一步的Read/Write操作。Mifare 1卡片有16个扇区,每个扇区都可分别设置各自的密码,互不干涉,采用三重认证方式。
做完上述所要求的步骤就可以对卡片进行读写了(以上步骤参看图3便一目了然)。在这个电路中,天线的设计和寄存器操作是值得一提的,也是 MFRC500的难点所在。MFRC500的这种卡片安全性很高,不大可能破解,所以用于电能表是很安全的。RFID读卡程序顺序如下:
char PcdReset()//复位
char PcdConfig()//配置
void Init_reg()//初始化寄存器
char Picc_Reguest(unsigned char cmd ,unsigned char snr_num[])//发送请求到卡
char Picc_SelectCard(unsigned char cmd ,unsigned char snr_cardsnr[]);//选择卡
char Picc_Anticoll(unsigned char cmd ,unsigned char snr_num[])//防冲突
char Picc_Auth(unsigned char data block,unsigned char data secret_key)//认证
char Picc_Read(unsigned char data addr,unsigned char data dataum);//读数据
char Picc_Write(unsigned char data addr,unsigned char data content);//写数据到卡
图3 RFID程序操作流程
结语
完成了硬件的设计后,主要就是如何协调各个子程序的工作了,在这里采取中断方式来处理各种模块。本课题已经完成第1版的设计,且运行良好。