基于RFID的預(yù)付費電能表的研制
文章出處:http://bookmouse.cn 作者:單片機與嵌入式系統(tǒng)應(yīng)用 人氣: 發(fā)表時間:2011年10月30日
摘要
運用保密性好且物美價廉的RFID技術(shù)實現(xiàn)預(yù)付費電能表;著重介紹RFID本身及其與電能表的接口。作為核心部分的電能表,采用全數(shù)字電路來實現(xiàn),有效地提高了測量精度;同時采用可視化的液晶屏和交互式的鍵盤等,改善了人機界面。RFID和電能表的集合,改變了現(xiàn)在的電表付款方式,可以提高電力部門的工作效率,安全、可靠;是當(dāng)前電子式電能表的一種發(fā)展方向。
引言
隨著人均用電量的大幅度增加,推動了一戶一表制的使用。傳統(tǒng)的機械式電能表測量精度有限,會帶來較大誤差;當(dāng)用電量很大時,誤差將讓人難以接受。本文介紹的電子式預(yù)付費電能表是通過電能測量集成電路對電壓電流的取樣信號進行處理,并輸出與有功功率成正比的頻率信號;微處理器通過對脈沖計數(shù)來計算所消耗的電量。用戶將RFID卡片(預(yù)先在電力部門購買,卡片上充有定額的現(xiàn)金)靠近電能表,這時MCU通過射頻芯片讀取卡的金額,將其存儲到EEPROM,同時此卡清零。電能表將通過聲音和LCD顯示來提醒用戶充值。
1 硬件電路總體設(shè)計
通過對AD7755的電能測量,與以低功耗著稱的MSP430 MCU接口,再用DS1302作為時鐘,將數(shù)據(jù)儲存在24LC16 EEPROM中。用工作于13.56 MHz的MFRC500芯片來實現(xiàn)預(yù)付費卡片數(shù)據(jù)的讀取。硬件框圖如圖1所示。
1.1 電能計量模塊AD7755的特點和接口
AD7755是Analog Devices公司生產(chǎn)的電量計量集成電路,技術(shù)指標(biāo)超過了IEC1036規(guī)定的準(zhǔn)確度要求。值得一提的是,國內(nèi)現(xiàn)有替代產(chǎn)品,上海貝嶺的BL0932可以很好地替代AD7755。這里的AD7755工作于這種方式:電流和電量通過其互感器送入各輸入通道。電壓和電流通道上額定值要設(shè)計在最大輸出電壓的半刻度上,使電表能滿足過壓和過流的要求。把CF頻率輸出端接到單片機的端口,設(shè)置SCF=0,S1=0,S0=1,CF的最高輸出頻率為21.76 Hz,MCU對輸入脈沖進行計數(shù),計數(shù)值的大小即反映電能消耗的多少。本設(shè)計中,分流器電阻在340 μΩ條件下,表常數(shù)為3 200脈沖/kWh,即每kWh電產(chǎn)生3 200脈沖。從CF經(jīng)光耦輸出到MCU計數(shù)。
圖1 硬件框圖
1.2 MCU模塊MSP430
MSP430 MCU是TI公司的超低功耗16位單片機;采用精簡指令集;具有豐富的片內(nèi)外設(shè),功能強大,并且具有很低的電能消耗,特別適用于三表設(shè)計。在此選用帶有 LCD驅(qū)動和I/O豐富的MSP430F435。MSP430F435有80和100兩種封裝形式(在此選用小型化的80封裝)。MCU作為電路的核心模塊,要與各個外設(shè)打交道,不僅要負(fù)責(zé)計出AD7755所輸出的計量脈沖值,還要將其轉(zhuǎn)換為金額,并對各種外擴的接口芯片進行協(xié)調(diào)和處理。
1.3 時鐘模塊DS1302
要保證電能表時間的準(zhǔn)確性,時鐘電路還是必需的。在此選用Dallas公司推出的高性能、低功耗、帶RAM的實時時鐘芯片DS1302,可以對年、月、周、日、時、分、秒進行計時,且具有閏年補償功能,工作電壓寬達2.5~5.5 V。DS1302采用三線接口與MSP430單片機進行通信。這部分主要是對DS1302的串行信號和時鐘的模擬以及掉電保護電路設(shè)計。
1.4 外擴存儲器模塊24LC16
作為計量儀表需要有許多數(shù)據(jù)(如電流電壓的系數(shù)、分時計費表、累計計費表等)是變動的或可以通過正常手段修改的,但不能因系統(tǒng)中的干擾而改寫,更不能因停電等事件而丟失。串行EEPROM是當(dāng)前儀表設(shè)計中最合適的器件。這里選用Microchip公司生產(chǎn)的24LC16來實現(xiàn)這種功能。 24LC16是具有I2C接口的EEPROM。其容量為2048×8位,分為8個頁面,每頁256字節(jié)。由于MSP430F435不帶I2C接口,所以在此要對其進行I2C總線模擬。其主要困難還是延時。
液晶模塊和鍵盤以及RS232通信相對簡單,各個模塊之間通過MCU來控制。
2 RFID實現(xiàn)預(yù)付費的過程
RFID(Radio Frequency Identification,射頻識別),是一種非接觸式的自動識別技術(shù)。它通過射頻信號自動識別目標(biāo)對象并獲取相關(guān)數(shù)據(jù),識別工作無須人工干預(yù),可工作于各種惡劣環(huán)境;操作快捷方便。根據(jù)頻段不同,RFID分為低頻和高頻系統(tǒng): 低頻近距離RFID系統(tǒng)主要集中在125 kHz、13.56 MHz頻段;高頻遠距離RFID系統(tǒng)主要集中在頻段(902 MHz~928 MHz)915 MHz、2.45 GHz、5.8 GHz。
本設(shè)計采用Philips公司的13.56 MHz MFRC500 RFID芯片,Mifare Standard 1k智能卡的核心是Philips公司的Mifare1 IC S50系列微芯片。Mifare 1 IC智能卡內(nèi)建有高速的CMOS EEPROM和MCU等??ㄆ薎C微芯片及一副高效率天線外,無任何其他元件。卡片無電池,工作時的電源能量由卡片讀寫器天線發(fā)送電載波信號耦合到卡而產(chǎn)生電能,一般可達2 V以上,供卡片IC工作。Mifare1射頻卡所具有的獨特的Mifare RF非接觸接口標(biāo)準(zhǔn)已被制定為國家標(biāo)準(zhǔn)——ISO/IEC 14443 TYPE A標(biāo)準(zhǔn)。
MFRC500采用總線時序和單片機接口。由于MSP430總線不外擴,所以還要對其模擬總線時序,典型接法如圖2所示。
圖2 MFRC500接口圖
MFRC500采用寄存器寫數(shù)據(jù)和寫命令的形式來控制卡片數(shù)據(jù)的讀和寫。大概有以下步驟:
① 請求之應(yīng)答。Answer to Request(ATR) . Mifare卡片處在天線范圍內(nèi)時,讀寫器向卡發(fā)出REQUEST all(或REQUEST std)命令后,卡片ATR啟動,將卡片Block0的卡片類型(TagType)號共2字節(jié)傳送到讀寫器,這樣建立第一步聯(lián)系??ㄆ祷財?shù)據(jù) 0004H。
?、?AntiCollision模塊。防止卡片重疊,當(dāng)多張卡片一起放入天線范圍時,AntiCollision模塊的防重疊功能將被啟動。MFRC500將與每張卡片進行通信,取得每張卡的序列號。由于每張Mifarel卡片都具有唯一的序列號,不會相同,因此MFRC500可以通過序列號來區(qū)別,區(qū)分選中的卡片。AntiCollision模塊啟動時,卡片讀寫器將得到卡片的序列號(Serial Number)。序列號存儲在卡片的Block0中,共有5字節(jié)(實際用的是4字節(jié),另一個字節(jié)為序列號的校驗字節(jié))。返回值為卡片序列號。
③ Select Application模塊,主要用于卡片選擇。當(dāng)卡片與讀寫器完成了上述2個步驟,讀寫器要對卡片讀寫操作,必須對卡片進行"Select"操作,使卡片真正被選中。被選中的卡片將卡片上存儲在Block 0中的卡片容量"Size"字節(jié)傳送到讀寫器。當(dāng)讀寫器收到這一字節(jié)后,將明確對卡進行深入操作。讀寫器收到的字節(jié)可能是88H。
?、?nbsp; Authentication&Access Control模塊,認(rèn)證及存取模塊。在確認(rèn)了上述3個步驟后,確認(rèn)已經(jīng)選擇了一張卡后,在對卡進行讀寫之前,必須對其進行驗證。如果匹配,則允許進行下一步的Read/Write操作。Mifare 1卡片有16個扇區(qū),每個扇區(qū)都可分別設(shè)置各自的密碼,互不干涉,采用三重認(rèn)證方式。
做完上述所要求的步驟就可以對卡片進行讀寫了(以上步驟參看圖3便一目了然)。在這個電路中,天線的設(shè)計和寄存器操作是值得一提的,也是 MFRC500的難點所在。MFRC500的這種卡片安全性很高,不大可能破解,所以用于電能表是很安全的。RFID讀卡程序順序如下:
char PcdReset()//復(fù)位
char PcdConfig()//配置
void Init_reg()//初始化寄存器
char Picc_Reguest(unsigned char cmd ,unsigned char snr_num[])//發(fā)送請求到卡
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)//認(rèn)證
char Picc_Read(unsigned char data addr,unsigned char data dataum);//讀數(shù)據(jù)
char Picc_Write(unsigned char data addr,unsigned char data content);//寫數(shù)據(jù)到卡
圖3 RFID程序操作流程
結(jié)語
完成了硬件的設(shè)計后,主要就是如何協(xié)調(diào)各個子程序的工作了,在這里采取中斷方式來處理各種模塊。本課題已經(jīng)完成第1版的設(shè)計,且運行良好。