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