物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于RFID的控制阀系统设计

作者:不详
来源:21ic
日期:2016-05-30 14:22:02
摘要:当前在中国的各类计量行业中,使用的计量表如水表、燃气表和热量表等,绝大多数均不带流量控制功能,经常的做法是先使用后交费,这样会给用户造成很多不便,因此预付费的计量表便应运而生。

  当前在中国的各类计量行业中,使用的计量表如水表、燃气表和热量表等,绝大多数均不带流量控制功能,经常的做法是先使用后交费,这样会给用户造成很多不便,因此预付费的计量表便应运而生。本文介绍了一种广泛应用于预付费卡表的RFID控制阀门,与其它各类表的控制阀门的方式相比,用RFID控制阀门的优势在于:

  1)在识别方面,使用RFID后,会使可识别的距离更灵活,具有无屏障阅读和穿透性,可以穿透非磁性材料,比如水、塑胶、混凝土等。

  2)在耐用性方面,RFID对水、油和腐蚀性较强的化学药品等具有很强的抵抗性;同时RFID将数据存在芯片中,芯片和外界没有直接接触,因此可以免受污损。

  3)在可重复使用方面,RFID标签则可以重复的修改、删除RFID内储存的数据,信息更新很方便。

  4)在数据的安全性方面,RFID承载的是电子式信息,其数据内容可经由密码保护,使其内容不易被伪造和变更。

  5)成本低廉,可加入LC振荡器到微控制器中来实现高性价比的收发器。

  6)可实现低功耗设计,尤其在接收端。

  1 系统硬件设计

  1.1 系统组成

  控制阀系统主要由6部分组成:电子标签、射频天线及调制电路、控制核心(MCU)、电机及其控制模块、LCD显示模块和蜂呜报警模块。

基于RFID的控制阀系统设计

  1)电子标签:本系统采用的电子标签是ATA5567射频卡,该射频卡由内置芯片、内置天线和EEPROM组成。射频卡中的EEPROM用于存储数据,其中数据可以反复的读取和擦除,读写次数不少于10万次,内置电线用于与射频天线进行通信。市面上常见的电子标签都是无源的,所以需要内置天线接收射频天线传递信息的同时,通过耦合来提供EEPROM读写数据所需要的能量。内置芯片用于接收命令并根据命令的内容决定数据的发送方式。

  2)射频天线及调制电路:射频天线主要用来与电子标签建立通信通路。调制电路一般包括:功率放大电路、检波电路和滤波放大整形电路3个部分。

  3)控制核心MCU:本系统采用台湾新唐科技Nano100系列超低功耗的32位内嵌ARM Cortex—MO核的MCU作为控制核心,其主要实现功能有:①通过CLKO输出125 KHz的载波。②通过TC0捕获调制电路输出的波形信息。③通过GPIO和ADC驱动直流有刷电机并在电机卡住时断电保护。

  ④通过MCU内部的LCD Driver驱动段码式LCD。⑤通过PWM控制蜂鸣器产生合适的报警声音。

  4)电机驱动及控制模块:通过H桥控制直流有刷电机的转动,电机卡住时将断电保护。

  5)LCD显示模块:通过MCU驱动段码式LCD以显示金额、开阀、关阀等信息。

  6)蜂鸣报警模块:通过PWM控制蜂鸣器产生适当的报警声音。

  1.2 天线及调制电路设计

  1)载波产生和天线驱动电路:由MCU的CLKO输出频率稳定的125 kHz的方波,经过三极管进行功率放大。之后的串联谐振电路中天线是漆包线绕制的线圈,电容采用的是精准的校正电容,加入功率放大和产生谐振的目的是获得最大的磁通量,从而产生最大的读卡距离。

  2)检波电路,滤除载波信号。

  3)放大电路,采用有低廉的LM358运算放大器进行两级电压放大。

  4)捕获及运算,该部分是在MCU内部完成的,由MCU中的Timer0工作在周期自由捕获模式,完成码元间隔时间的捕获,然后经过运算,得出各个Block的数值。

基于RFID的控制阀系统设计

  1.3 电机驱动设计

  主体电路是由4个三极管组成的H桥驱动电路,在同一时刻最多只有2个三极管处于导通状态,可以方便的控制电机的正传和反转,再电机卡住时,由于电流是正常工作时的6~7倍,所以通过MCU内部的ADC检测电阻上的电压值,如果数值满足条件,则会给电机断电,并视情况发生报警,以免电机烧毁和设备的损坏。

  2 系统软件设计

  本系统的软件设计主要由6个部分组成:1)读卡;2)写卡;3)GPIO控制电机和ADC过压检测;4)PWM驱动蜂鸣器;5)125 kHz载波产生;6)LCD显示。其中最主要的当属1)读卡和2)写卡了,完成读卡和写卡后,系统的躯干就有了,然后3),4),5),6)就是在躯干上添枝加叶,让这个系统完整起来。

  2.1 ATA5567卡片的读写规则

  ATA5567中的存储是330bit的EEPROM,一共有10个块(block),每个块有33bit,其中第一位为锁bit。一共分为两页,第一页包含8个block,编号分别为block0-block7。第二页包含2个block,为只读block,包含可回溯数据,由AIMEL公司规划。

  ATA5567的数据率和调制方式是由block0决定。

基于RFID的控制阀系统设计

  对于本系统而言,做了很多的尝试,找到了一种和MCU搭配比较合理的ATA5567配置方式。

  1)主控键值,需执行读写操作,所以主控键值选为8。

  2)比特率,综合MCU的性能和读ATA5567所用时间,取一个折中,选择的是RF/32,这样一个码元的周期

基于RFID的控制阀系统设计

  3)调制方式,一般选择曼切斯特的调制方式。

  4)AOR是按请求应答,主要的作用是防碰撞机制。当有多张ATA5567卡靠近应答器时,可以实现每张卡的逐次读取。

  5)最大块,为了保证信息的完整性和保护密码不被窃取,最大块取6。

  6)PWD,为了防止ATA5567被恶意改写,密码是一定需要的,即该位为1。

  7)ST是为了方便以同步头的方式实现数据的读取。

  2.2 ATA5567数据的存储和编码格式

  对于ATA5567能操作的其实只有block0-block7,这几块的格式是一样的,只不过block0作为控制块,block7作为密码块,所以实际上真正能存储用户数据的只有block1-block6,共有6个块。

  ATA5567的编码方式设定为曼切斯特编码。曼切斯特编码是基带传输中广泛应用的一种数据传输编码方式,这种编码通常用于局域网传输,是一种自同步法编码方式。在数据信号的波形中既有同步时钟信号又有数据信号。在调制电路输出的波形中,数据“1”对应着曼切斯特编码(下面简称“曼码”)电平的上跳沿,数据“0”对应着曼码电平的下跳沿。在所接收的一系列曼码数据,注意空跳变,假定两个相邻bit的间隔时间是1P。若两个相邻bit代表的数据极性相同(同为0或者同为1),那么在这两个bit传送之间,会出现一个预备性的非数据跳变。

基于RFID的控制阀系统设计

  根据上跳,下跳和空跳来分辨数据是“0”或者“1”,通过下图的图解可以发现,如果通过定时器捕获,最少会得到两种时间间隔,一种为一个整传送周期(256/μs),另一种为半个传送周期(128μs)

  2.3 ATA5567写卡规则

  在ATA5567卡片内部有一个写解码器,该解码器采用脉冲间隔编译码技术。在写卡期间,写解码器会检查写数据流是否有效,并检测场中断间隔。

基于RFID的控制阀系统设计

  写卡的首要工作是确定写卡的时间间隔,结合上表中官方给出的数据和现场实践,选择时间如表1所示。

基于RFID的控制阀系统设计

  确定写卡时间间隔之后,还要确定写卡的命令。在使用一张从市场上买的新卡前,首先要做的就是在Block7当中写入32位秘钥数据,然后初始化Block0为0x800880d8,写卡的命令及格式如下。

  1)标准写命令格式如表2所示。

基于RFID的控制阀系统设计

  此时的写卡为“Standard Write”模式,由于能操作的只有第0页,所以p取0;

  2)保护写命令格式如表3所示。

基于RFID的控制阀系统设计

  初始化block0之后,写卡操作变为“Protected Write”模式,具体操作与“Standard Write”模式类似,唯一的不同点便是在写入数据之前必须先写入block7中存储的秘钥,如果秘钥不对,则卡进入其他状态,这里不再赘述。

基于RFID的控制阀系统设计

  2.4 ATA5567读卡规则和算法实现

  对于ATA5567,读卡命令如表4所示。

基于RFID的控制阀系统设计

  由于PWD位已经置为1,所以选择第一种格式,写命令与之前讲述的写数据类似,此处不再讲述。

  发完写命令后,Nano110单片机会捕获到数据,这些时间间隔数据是获取二进制数据来源。根据ATA5567数据的存储和编码格式,读卡算法如下:

  算法的核心是ReadNumber()函数的实现,由于在发送完命令之后,ATA5567会根据发送命令中的地址信息,循环发送所选地址存储是数据。由于每个block中存储了32 bit的数据,实际上转换为曼码对应的波形最多有64个跳变,所以采集到的128个数据中一定至少有一个所需数据的完整遍历。这时同步码也包括在128个数据之中,通过同步码来确定block中数据的起始位。同步码的波形如图8所示。

基于RFID的控制阀系统设计

  同步码在所捕获的数据中体现为:256或128,128,384,128(单位均为μs)。用图4中的表示方式,上面的数据对应的时长分别为1P或0.5P,0.5P,1.5P,0.5P。因为在实际中的波形经过调制后不可能为完美的方波,波形的好坏与标签和天线的距离有很大关系,此外还跟所选器件的精度、MCU的定时器捕获精度有关,所以允许捕获的数据有误差。定时器捕获数据完成后,要进行解码,这里定义了两个数组array[128],bit_array[32],前者用来存放捕获的数据,后者存放解码后的数据,找到同步码形后1.5P的时长对应array[bitnum],bitnu m1的初始值为0。

  程序执行完毕后,bit_array[]数组中就存储了某个block对应的32bit的数据,这些数据是二进制数据,可以根据需要将其转换为十进制或者十六进制的数据,因为需要在各个block中存储时间、日期、金额、流量(热量)等信息,这里需要将其转换为十进制数据。

  3 结束语

  文中主要针对预付费的表类(热表、水表、气表、电表),提出了一种低成本、低功耗、高可靠性的解决方案。由于篇幅所限,着重介绍了无需解码芯片的RFID解码电路的构成,提出了一种针对ATA5567的高效的编解码方案,这是整个系统架构的核心。对于系统而言,大部分时间处于非工作状态,可以使其进入PowerDown模式(ARM架构MCU具有的功能),以节省电力。另外出于对数据备份和保护的目的,可以在系统里加入单独的存储单元,如SPI-Flash或者EEPROM,以期在设备损毁等场合尽最大可能的减少用户的损失。在某些场合下,如果需要组网,除了使用RS-485外还可以使用以太网或者无线方式(如433 MHz),这样就可以实现与局域管理系统进行实时对接。