P87LPC767的LF频段中远距离RFID读写器系统设计*
2018-09-07,,
,,
(海南热带海洋学院 海洋信息工程学院,三亚 572022)
引 言
RFID射频识别技术属于自动识别技术中的一种,也是物联网技术中的核心技术之一,其原理是通过无线射频方式产生电磁场或者是交变磁场,然后对场内的电子标签进行非接触式的数据通信[1-2]。常见的RFID系统中主要有低频LF频段系统、高频HF频段系统、超高频UHF频段系统和微波频段系统,各频段系统的特征不尽相同[3-4]。本文针对LF频段RFID展开研究,该频段RFID系统具备相关国际标准,电子标签的形式较为多样,相关基站芯片的种类也较多,对常规建筑物、木材、石板等穿透力较强,但市面上该频段RFID阅读器识别距离普遍较短,阅读器产生的磁场强度不够,磁场分布不均,可能导致移动电子标签的“丢卡”现象,无法适用于中远距离的射频识别需求[5-6]。基于此类问题,本文设计了一种大电流高电压的射频前端谐振电路,改进了天线线缆材料,优化了曼彻斯特解码程序,综合提升了RFID识别距离和解码响应速度。
1 读写器总体结构设计
常见的LF频段RFID读写器系统均基于电感耦合模型设计,该耦合方式类似于变压器装置,读写器上电后会产生高频交变磁场,激励信号频率一般是125 kHz,如果特定频段的电子标签进入了磁场就能感应磁场产生电压,感应电压就可以用于电子标签内部的工作[7-8]。读写器一般具备3个必要组成部分,即读写器接口、读写器主板和天线线圈,接口负责与后级设备连接,用于传输电子标签信息或者接收控制指令。读写器主板一般包含天线驱动电路、微控制器处理电路、信号处理与放大电路及电源电路。读写器天线线圈一般设计在产品外形框内部,根据实际需求可变化外形及长度,多以矩形和圆形为主,用于产生交变磁场和耦合标签信号,也是影响距离参数的重点之一,基于此模型设计的读写器结构框图如图1所示。
图1 读写器结构框图
硬件电路中含有多个功能单元,重点设计了电源、高品质因数的射频前端电路、衰减补偿的检波放大电路以及声光指示电路、单片机处理电路和读写器功能接口电路。读写器部分主要完成对LF频段电子标签的数据通信和读写标签数据,具备调制、解调和解码功能。
2 读写器硬件单元设计
2.1 读写器天线设计
实物天线采用了5圈外径约为3.25 mm的涤纶聚氨酯漆包线绕制而成,每一圈涤纶聚氨酯漆包线内部又是由600股线径0.1 mm的涤纶聚氨酯漆包线合成的。实物设计的天线线圈把多股漆包线按计算后的矩形位置束合在一起,形成众多圆周表面以降低集肤效应,使高频电阻下降而提高天线线圈的品质因素。在设计时先选定矩形线圈外形,用理论计算讨论线圈的最佳尺寸,再配合仿真工具,经过多次绕制测试,也更换过多次天线材料,最终设计了一款长宽均为23 cm、天线感量为14.015 μH,天线损耗电阻值为0.056 2 Ω的天线线圈作为读写器天线,制作实物如图2所示。
图2 天线线圈实物图
2.2 射频前端电路设计
射频前端电路中包含天线线圈接入部分、电容阵列部分、天线线圈信号功率放大部分和基频滤除部分以及谐振信号单向整流电路部分,电路原理如图3所示。左侧部分的多圈图形即为天线线圈,天线与C4、C5、C6、C23、C24、C25等CBB电容组成串联谐振电路,中间的C15和C16是保留的电容焊盘,可以用来微调谐振参数。C6电容的非接地端接出信号分为两路:第一路是将自举放大后的谐振信号Net_A送至包络检波电路,第二路是经过LC滤波电路去除基频后再单向整流送至单片机处理单元中。U3、U4、U5和U6是4个MOS管组成了桥式驱动单元,P20、P18、P19和P1电气网络来自单片机处理单元,传输了单片机产生的互补式125 kHz驱动信号。
图3 射频前端电路原理图
2.3 包络检波电路设计
包络检波是利用二极管的单向导电特性和检波负载RC的充放电过程来提取调制信号的,经过了包络检波变换后的信号与之前高频调幅的信号是相似的,两种信号的包络变化是同步的,这种电路就是本章需要设计的射频后级包络检波器。包络检波电路如图4所示,该电路是一个典型的无源包络检波电路单元,读写器射频前端输出的调幅信号其实就是Net_A,该信号进入了由二极管和相关阻容器件所构成的无源包络检波电路单元中,D7、D6、D10、D11就是检波二极管,信号经过这些二极管的时候负半周的信号被消去,只剩下了正半周信号能过通过电路到达后级,这时如果利用低通滤波器对每个信号周期取平均值,就可以提取得到射频信号中混杂的原始基带低频信号。
这个过程利用了包络检波电路的解调和检波功能。在原理图中,Net_A电气网络为射频前端网络的输出信号,Net_B电气网络为图4中包络检波后的信号输出,P14连接到了单片机处理单元,作为信号反馈和天线谐振状态检测。
图4 包络检波电路原理图
2.4 读写器主控制器电路设计
图5 P87LPC767单片机核心电路原理图
读写器主控制器单元部分采用了Philips公司生产的P87LPC767单片机,该单片机核心主要负责天线线圈射频前端电路的谐振状态检测,以及接收数据的解码和与第一个单片机单元的数据交互,其电路原理图如图5所示。电路中包含了基本的信号放大电路和单片机控制器核心电路,U11为单片机芯片P87LPC767,电气网络P4为U11单片机芯片的复位信号输出网络,该复位电路既能上电自动为U11单片机芯片提供复位操作,又可以根据用户的实际情况采用手动方式对U11单片机芯片P87LPC767进行复位操作。U12、U13、U14和U15主要是对X1X和X2X网络信号进行二次放大,便于单片机检测射频前端状态。其中,619和718均是国产三极管,BAV99W是二极管。
3 读写器软件设计
本文设计和实现的LF频段RFID读写器软件部分主要实现的功能包括:基于单片机处理单元产生射频125kHz信号、产生无源蜂鸣器激励信号、检测射频前端谐振电路状态、解析EM4100芯片的Manchester编码、封装数据帧格式以及初始化串口资源向后台发送电子标签信息。软件部分的设计重点在Manchester编码上。
EM4100芯片的内部已经固化了一组64位数据,64位数据中包含了8位版本号和厂家的编号,剩下的32位数据就是芯片电子标签的ID序列了,芯片内部固化的64位数据开头是由9个“1”组成的同步头,这个同步头非常重要,在解码程序中就需要检测同步头以获得有效和完整的数据编码[9-10]。同步头之后是10组4位的电子标签数据,最前的两组一共是8位,表示版本号和厂家编号,后面的8组就是ID序列,每组4位数据后面还有偶校验位。最后一组4位数据是对前面的10组数据各列的偶校验结果。当电子标签进入天线场获得能量后就会连续传出数据编码到读写器。
按照Manchester编码的组成规律、EM4100信号数据的同步头规则以及每一位数据的持续时间,就可以在程序上构建解码算法,可以用单片机的定时计数器捕获外部编码数据,然后检测波形的跳变边沿,判断每位的时间宽度和边沿跳变的时间就能得到编码所对应的二进制数据,再将数据进行提取和组合,最后得到有效的电子标签ID卡号序列。
在程序的实现上采用了软件精确延时方法,编写了Delay384μs()延时函数提供精确的384 μs延时间隔,该时间间隔只要在256~512 μs之间即可,不能超过512 μs,因为传输1位数据的持续时间不超过512 μs,必须在其持续范围内去检测。利用C语言编写的Manchester编码延时法解码核心代码如下:
ulong GetRead_Card(){ //读取卡号功能函数
{
while(1)//进入死循环
{
if(TOUT==10)return 0;
//判断10次同步头失败后返回“0”
else TOUT++;Find_NO=0;
while(ManchesterCode==0)
//等待64位序列中的“1”
{
if(Finde_NO==TIME_OF)break;else Finde_NO++;
}
if(Finde_NO==100)continue;
//结束本次主循环
else Finde_NO=0;
delay ();
//延时等待下一个码元数据
if(ManchesterCode)
//确定高电平起始头
{
for(i=0;i<8;i++)
//限时判断起始位有效性
{ Finde_NO=0;
while(ManchesterCode)
{
if(Finde_NO==TIME_OF)
//时间溢出则退出
{ERROR_bit=1;break;}
else Finde_NO++;
}
delay(); //延时等待下一个码元数据
if(ManchesterCode&&ERROR_bit==0);
//判定下一位电平及时间溢出情况
else break;
}
if(ERROR_bit) //时间溢出,退出本次主循环
{ERROR_bit=0;continue;}else;
if(i==8) //开始接收起始位之后数据
{
ERROR_bit=0;Finde_NO=0;
while(ManchesterCode)
{
if(Finde_NO==TIME_OF)
//时间溢出错误
{ERROR_bit=0;break;}else Finde_NO++;
}
if(ERROR_bit)
//若数据错误则退出本次主循环
{ERROR_bit=0;continue;}else;
何必这样的奔逃呢,前路也是在下着雨,张开我的伞来的时候,我这样漫想着。不觉已走过了天潼路口。大街上浩浩荡荡地降着雨,真是一个伟观,除了间或有几辆摩托车,连续地冲破了雨仍旧钻进了雨中地疾驰过去之外,电车和人力车全不看见。我奇怪它们都躲到什么地方去了。至于人,行走着的几乎是没有,但在店铺的檐下或蔽阴下是可以一团一团地看得见,有伞的和无伞的,有雨衣的和无雨衣的,全都聚集着,用嫌厌的眼望着这奈何不得的雨。我不懂他们这些雨具是为了怎样的天气而买的。
COLP[0]=0;COLP[1]=0;COLP[2]=0;
COLP[3]=0;COLP[4]=0; //清零列校验
}
}
}
在Manchester编码的解码核心代码中,i变量是无符号字符型用于表示起始位的计数值,Finde_NO是时间溢出的计数值,ERROR_bit是时间溢出标志,row和col为行列变量,ROWP为行校验变量,COLP[5]为列校验变量,data是数据变量,temp是无符号长整型变量,用来装载卡号,TOUT是搜索次数变量。
4 读写器实物设计及测试
读写器实物设计包括PCB设计及器件装贴,读写器实物如图6所示。在设计之中,实物电源线不能连接成环路,在设计电源模块电路时反复检查了电源网络,确保了电源非环路布线,同时还对电源线进行了加粗处理。单片机的串口通信线路避开了射频125 kHz的信号线路和外围石英晶体振荡器线路,以防止信号打扰导致的串口乱码。对PCB中单片机处理模块进行了敷铜,以确保单片机处理核心不会收到干扰。尽量缩短了单片机射频125 kHz的信号线路到达2SK2962功放电路的走线,在走线过程中避免接近MCP6002运算放大器电路。
图6 LF频段RFID读写器实物
在实际的测试中,随机对5套成品LF频段RFID读写器进行了射频距离测量,射频距离的长短都不一致,但是大都满足70~100 cm的范围,经过环境测试和参数分析可以得出导致差异的原因,其原因主要是因为射频前端电路中元器件的性能差异及手工绕制天线线圈的寄生参数影响。
在谐振电路中采用的谐振电容容值精度是10~20%,这个精度范围内对谐振频率影响较大。另外手工绕制的天线线圈测试得到的参数也有较大差异,在实测过程中只能进行挑选和读写器匹配后才能配套使用。
将读写器与上位机联调时,在串口调试助手的串口数据接收窗口中有6次数据的接收过程,前三次刷卡时采用了十六进制数据显示格式,接收到的数据是数据串为(02 30 31 30 42 37 44 31 35 42 44 0D 0A 03)H,后面的三次刷卡是采用了ACSII码数据显示格式。通过对不同格式的接收数据的比对可以发现,读卡6次所接收到的数据在各自格式下均是相同的。实测中使用的电子标签实物及串口调试数据如图7所示。
图7 LF频段电子标签实物及实测数据
结 语
本文设计和实现了一款LF频段RFID读写器,使用无源电子标签的射频识别距离可达70~100 cm,该读写器适合于中远距离应用场合。设计采用了Philips半导体公司的P87LPC767单片机作为核心控制器,构建了射频数据处理单元,二次开发者可以将本系统进行功能裁剪或者增加相关外设,构成多接口数据交互的嵌入式组件。
龙顺宇(硕士),主要研究方向为嵌入式应用、单片机智能、物联网技术应用。