,,
(海南熱帶海洋學院 海洋信息工程學院,三亞 572022)
RFID射頻識別技術屬于自動識別技術中的一種,也是物聯網技術中的核心技術之一,其原理是通過無線射頻方式產生電磁場或者是交變磁場,然后對場內的電子標簽進行非接觸式的數據通信[1-2]。常見的RFID系統中主要有低頻LF頻段系統、高頻HF頻段系統、超高頻UHF頻段系統和微波頻段系統,各頻段系統的特征不盡相同[3-4]。本文針對LF頻段RFID展開研究,該頻段RFID系統具備相關國際標準,電子標簽的形式較為多樣,相關基站芯片的種類也較多,對常規建筑物、木材、石板等穿透力較強,但市面上該頻段RFID閱讀器識別距離普遍較短,閱讀器產生的磁場強度不夠,磁場分布不均,可能導致移動電子標簽的“丟卡”現象,無法適用于中遠距離的射頻識別需求[5-6]。基于此類問題,本文設計了一種大電流高電壓的射頻前端諧振電路,改進了天線線纜材料,優化了曼徹斯特解碼程序,綜合提升了RFID識別距離和解碼響應速度。
常見的LF頻段RFID讀寫器系統均基于電感耦合模型設計,該耦合方式類似于變壓器裝置,讀寫器上電后會產生高頻交變磁場,激勵信號頻率一般是125 kHz,如果特定頻段的電子標簽進入了磁場就能感應磁場產生電壓,感應電壓就可以用于電子標簽內部的工作[7-8]。讀寫器一般具備3個必要組成部分,即讀寫器接口、讀寫器主板和天線線圈,接口負責與后級設備連接,用于傳輸電子標簽信息或者接收控制指令。讀寫器主板一般包含天線驅動電路、微控制器處理電路、信號處理與放大電路及電源電路。讀寫器天線線圈一般設計在產品外形框內部,根據實際需求可變化外形及長度,多以矩形和圓形為主,用于產生交變磁場和耦合標簽信號,也是影響距離參數的重點之一,基于此模型設計的讀寫器結構框圖如圖1所示。

圖1 讀寫器結構框圖
硬件電路中含有多個功能單元,重點設計了電源、高品質因數的射頻前端電路、衰減補償的檢波放大電路以及聲光指示電路、單片機處理電路和讀寫器功能接口電路。讀寫器部分主要完成對LF頻段電子標簽的數據通信和讀寫標簽數據,具備調制、解調和解碼功能。
實物天線采用了5圈外徑約為3.25 mm的滌綸聚氨酯漆包線繞制而成,每一圈滌綸聚氨酯漆包線內部又是由600股線徑0.1 mm的滌綸聚氨酯漆包線合成的。實物設計的天線線圈把多股漆包線按計算后的矩形位置束合在一起,形成眾多圓周表面以降低集膚效應,使高頻電阻下降而提高天線線圈的品質因素。在設計時先選定矩形線圈外形,用理論計算討論線圈的最佳尺寸,再配合仿真工具,經過多次繞制測試,也更換過多次天線材料,最終設計了一款長寬均為23 cm、天線感量為14.015 μH,天線損耗電阻值為0.056 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 射頻前端電路原理圖
包絡檢波是利用二極管的單向導電特性和檢波負載RC的充放電過程來提取調制信號的,經過了包絡檢波變換后的信號與之前高頻調幅的信號是相似的,兩種信號的包絡變化是同步的,這種電路就是本章需要設計的射頻后級包絡檢波器。包絡檢波電路如圖4所示,該電路是一個典型的無源包絡檢波電路單元,讀寫器射頻前端輸出的調幅信號其實就是Net_A,該信號進入了由二極管和相關阻容器件所構成的無源包絡檢波電路單元中,D7、D6、D10、D11就是檢波二極管,信號經過這些二極管的時候負半周的信號被消去,只剩下了正半周信號能過通過電路到達后級,這時如果利用低通濾波器對每個信號周期取平均值,就可以提取得到射頻信號中混雜的原始基帶低頻信號。
這個過程利用了包絡檢波電路的解調和檢波功能。在原理圖中,Net_A電氣網絡為射頻前端網絡的輸出信號,Net_B電氣網絡為圖4中包絡檢波后的信號輸出,P14連接到了單片機處理單元,作為信號反饋和天線諧振狀態檢測。

圖4 包絡檢波電路原理圖

圖5 P87LPC767單片機核心電路原理圖
讀寫器主控制器單元部分采用了Philips公司生產的P87LPC767單片機,該單片機核心主要負責天線線圈射頻前端電路的諧振狀態檢測,以及接收數據的解碼和與第一個單片機單元的數據交互,其電路原理圖如圖5所示。電路中包含了基本的信號放大電路和單片機控制器核心電路,U11為單片機芯片P87LPC767,電氣網絡P4為U11單片機芯片的復位信號輸出網絡,該復位電路既能上電自動為U11單片機芯片提供復位操作,又可以根據用戶的實際情況采用手動方式對U11單片機芯片P87LPC767進行復位操作。U12、U13、U14和U15主要是對X1X和X2X網絡信號進行二次放大,便于單片機檢測射頻前端狀態。其中,619和718均是國產三極管,BAV99W是二極管。
本文設計和實現的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是搜索次數變量。
讀寫器實物設計包括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單片機作為核心控制器,構建了射頻數據處理單元,二次開發者可以將本系統進行功能裁剪或者增加相關外設,構成多接口數據交互的嵌入式組件。

龍順宇(碩士),主要研究方向為嵌入式應用、單片機智能、物聯網技術應用。