基于AT73C500/501專用芯片組的電參量測量模塊
關(guān)鍵詞:電參量測量 專用芯片組 AT73C500/501 參數(shù)校準(zhǔn) AVR單片機(jī)
近向年來,國外許多IC設(shè)計(jì)制造公司推出了系列電參量(針對(duì)工頻電網(wǎng)的電壓、電流、有功、無功、頻率等參數(shù))測量的專用芯片,如CS5460A、ADE7755、AT73C500/501等。利用它們可以方便實(shí)現(xiàn)單相、三相電能表的設(shè)計(jì),達(dá)到很高的測量精度,同時(shí)大幅降低產(chǎn)品成本。
這些不同的電參量測量芯片功能各有側(cè)重,性能各有所長。我們?cè)谑褂眠@些芯片過程中,發(fā)現(xiàn)不少特殊問題,并針對(duì)這些特點(diǎn)設(shè)計(jì)了通用的智能電參量測量模塊。本文根據(jù)實(shí)際應(yīng)用AT73C500/501過程中出現(xiàn)的問題,對(duì)該芯片的應(yīng)用進(jìn)行了深入探討,給出相應(yīng)解決辦法;同時(shí),設(shè)計(jì)了高效的電參量測量模塊校準(zhǔn)軟件,實(shí)現(xiàn)電參量測量模塊自動(dòng)、快速生產(chǎn)調(diào)試。
圖1
1 AT73C500/501芯片簡介
1.1 芯片性能指標(biāo)
AT73C500/C501為美國Atmel公司2000年推出的電能測量專用芯片組。其中AT73C501為A/D變換芯片用于測量前端信號(hào)采樣;AT73C500為DSP芯片,根據(jù)AT73C501的采樣數(shù)據(jù)完成電參量的計(jì)算。使用這兩種芯片配合工作測量三相電參數(shù)個(gè)有如下特點(diǎn):
*滿足IEC1036一級(jí)精度要求;
*使用外部溫度補(bǔ)償?shù)膮⒖茧娫矗瑵M足IEC687的0.5和0.2級(jí)精度;
*測量三相有功功率、無功功率、視在功率和電能;
*測量功率因數(shù)、電網(wǎng)頻率、電壓和電流有效值;
*多相或單相運(yùn)行;
*接口靈活,具有8位微處理器接口、8位狀態(tài)輸出、8路脈沖輸出;
*支持增益和相位校準(zhǔn);
*支持低端非線性校準(zhǔn);
*啟動(dòng)電流可編程;
*最大可測帶寬1kHz;
*單+5V供電;
*校準(zhǔn)數(shù)據(jù)可以從串行EEPROM讀取,也可以由外接微處理器讀取。
1.2 AT73C500/501芯片簡介
AT73C501是28引腳PLCC封裝的六路Sigma-Delta A/D變換器。AT73C501內(nèi)部包含六路16位A/D變換器、1個(gè)參考電壓發(fā)生器、1個(gè)電源電壓監(jiān)視單元和1個(gè)時(shí)鐘單元。每路A/D變換器都由高性能、過采樣的Sigma-Delta調(diào)制器和數(shù)字均分濾波器組成。
芯片的AIN1、AIN3、AIN5為電流采樣通道輸入,AIN2、AIN4、AIN6為電壓采樣通道輸入,所有六路A/D輸入都是單端輸入,簡化了外圍設(shè)計(jì)。其它主要引腳有:
ACK—采樣數(shù)據(jù)輸出準(zhǔn)備好;
OX、XI—接外部晶體3.2768MHz,提供工作時(shí)鐘;
CLK—提供DSP AT73C500工作時(shí)鐘輸出;
CLKR—串行總線數(shù)據(jù)輸出時(shí)鐘;
FSR—輸出采樣的幀信號(hào);
DATA—串行總線采樣數(shù)據(jù)輸出。
AT73C500為44引腳PLCC封裝的新型電能測量專用DSP芯片,具有一個(gè)高效的數(shù)字信號(hào)處理器(DSP)內(nèi)核,DSP技術(shù)的使用,使AT73C500具有其它電能測量芯片所沒有的一些特點(diǎn)和復(fù)雜功能。主要引腳如下;
B0~B7—MCU總線;
B8~B15—狀態(tài)、工作模式總線;
IRQ1—接AT73C501的ACK,外部采樣數(shù)據(jù)中斷請(qǐng)求;
CLK—時(shí)鐘輸入,3.2768MHz;
STROBE、BRDY、RD/WR、ADDR0、ADDR1—AT73C500和外部MCU的數(shù)據(jù)傳輸接口信號(hào);
SOUT0—時(shí)鐘輸出給外部串行EEPROM;
SOUT1—串行輸出,作為AT73C500的片選信號(hào)或外部EEPROM的數(shù)據(jù)輸入(DI);
SIN—串行數(shù)據(jù)輸入,接收AT73C501或外部EEPROM的數(shù)據(jù)輸入(DO);
SCLK—串行位時(shí)鐘輸入來自AT73C501。
2 智能電參量采集模塊設(shè)計(jì)
我們?cè)O(shè)計(jì)的智能電參量采集模塊,用于低壓變壓器在線監(jiān)測設(shè)備中。測量模塊作為關(guān)鍵的臺(tái)變運(yùn)行監(jiān)測部件,要求設(shè)計(jì)成通用性強(qiáng)的采集模塊。這樣,可以方便地和現(xiàn)有的各種設(shè)備接口,擴(kuò)展現(xiàn)有設(shè)備的功能。應(yīng)具有造價(jià)低,可靠性強(qiáng),便于維護(hù)等優(yōu)點(diǎn)。針對(duì)功能需求,在綜合對(duì)比幾種電能量測量芯片的價(jià)格、性能、系統(tǒng)實(shí)現(xiàn)難易程度等幾方面的基礎(chǔ)上,我們采用AT73C500/501設(shè)計(jì)了智能電參量采集模塊。
2.1 智能電參量采集模塊前端原理
電參量采集模塊前端以AT73C500/501為核心,由信號(hào)取樣電路、邏輯電路及其它元器件測量單元結(jié)構(gòu)共同組成。三相電壓信號(hào)分別使用電阻分壓器的互感器提取。被測三相電流由一次電流1.5A或6A、二次電流5mA、二次負(fù)荷20Ω的電流互感器轉(zhuǎn)化為電壓信號(hào)。
圖1為測量采集模塊原理。
選擇AT73C500的工作模式時(shí),由于校準(zhǔn)數(shù)據(jù)直接影響測量精度,而且每次復(fù)位后AT73C500都要重新讀入校準(zhǔn)數(shù)據(jù),如果AT73C500使用微處理器模式,導(dǎo)入校準(zhǔn)數(shù)據(jù)的握手協(xié)議過于復(fù)雜,需要單片機(jī)軟件干預(yù);因此從可靠性角度考慮,AT73C500被設(shè)置成EEPROM模式,將校準(zhǔn)數(shù)據(jù)從EEPROM AT93C46中讀出,同時(shí),單片機(jī)也能對(duì)AT93C46內(nèi)的校準(zhǔn)數(shù)據(jù)讀寫。
前端測量電路工作流程:上電復(fù)位后,單片機(jī)對(duì)AT73C500復(fù)位,然后AT73C500進(jìn)行初始化工作。首先將RD/WR寫高,狀態(tài)/模式總線上的四個(gè)三態(tài)門被選通,AT73C500通過BUS12至BUS15讀入模式信息。在判斷工作模式為EEPROM模式后,AT73C500向狀態(tài)/模式總線的最低位(BUS8)寫低電平,經(jīng)邏輯譯碼電路(GAL20V8)后產(chǎn)生初始化信號(hào)CS1。CS1信號(hào)選通串行EEPROM AT93C46,AT73C500讀出存儲(chǔ)在AT93C46中的校準(zhǔn)數(shù)據(jù)。校準(zhǔn)數(shù)據(jù)讀出以后,AT73C500向BUS8寫高電平,經(jīng)鎖存后CS1變成高電平,初始化階段結(jié)束,測量單元開始正常的測量工作。AT73C501開始通過同步串行總線向AT73C500傳送采樣結(jié)果。
AT73C500的計(jì)算結(jié)果有兩種輸出方式:一種是以數(shù)據(jù)的形式輸出,另一種是以脈沖的形式輸出。兩種方式共和數(shù)據(jù)總線,因此使用邏輯譯碼電路(GAL20V8)區(qū)分。當(dāng)有一包數(shù)據(jù)要輸出時(shí),AT73C500向狀態(tài)總線的BUS9寫高電平脈沖,經(jīng)鎖存后產(chǎn)生數(shù)據(jù)就緒信號(hào)DATRDY。DATRDY信號(hào)用于智能外接單片機(jī)線上數(shù)據(jù)就緒,此時(shí)ADDR0為低電平,無脈沖輸出。數(shù)據(jù)輸出結(jié)束后,DATRDY變?yōu)榈碗娖健?shù)據(jù)總線輸出脈沖時(shí),DATRDY始終為低電平;同時(shí),DR/WR為低電平,ADDR0為高電平。
2.2 AT73C500數(shù)據(jù)采集接口單元設(shè)計(jì)
2.2.1 單片機(jī)選型
對(duì)智能電參量采集模塊的各項(xiàng)數(shù)據(jù)進(jìn)一步加工處理和與外部通信等功能,一般要由單片機(jī)來完成。前端測量單元的測量結(jié)果由AT73C500的數(shù)據(jù)總線送出。AT73C500的數(shù)據(jù)總線為并行總線??偩€上數(shù)據(jù)傳輸速度非???,其中鎖存信號(hào)STROBE的脈寬僅為153ns。基于速度、成本上的考慮,選用美國Atmel公司的精簡指令集(RISC)AVR單片機(jī)AT90S8535實(shí)現(xiàn)接口單元的功能。AT90S8535內(nèi)部有8KB Flash程序存儲(chǔ)器,512B SRAM,使用8MHz的晶振,每條指令的執(zhí)行時(shí)間僅為125ns。
2.2.2 接口邏輯控制電路
由于AT73C500/501有多種工作模式和數(shù)據(jù)傳輸方式,同時(shí)系統(tǒng)有1片EEPROM AT93C46存儲(chǔ)器,保存校準(zhǔn)參數(shù)信息。AT93C46必須能夠由單片機(jī)讀寫,還要能由AT73C500讀取系數(shù)??紤]到還有其它的復(fù)雜數(shù)據(jù)控制接口信號(hào),因此,采用1片PLD GAL20V8實(shí)現(xiàn)復(fù)雜邏輯功能和數(shù)據(jù)、地址譯碼。圖2為接口邏輯控制電路。
2.2.3 單片機(jī)數(shù)據(jù)采集接口單元
測量單元的測量結(jié)果通過并行數(shù)據(jù)總線高速輸出,因此,如何準(zhǔn)確及時(shí)地接收總線上的數(shù)據(jù)是接口單元要解決的首要問題。
AT73C500數(shù)據(jù)總線時(shí)序中有兩個(gè)不利于數(shù)據(jù)接收的問題。
AT73C500數(shù)據(jù)總線時(shí)序中有兩個(gè)不利于數(shù)據(jù)接收的問題。
一是數(shù)據(jù)寫到總線選通STROBE信號(hào)低電平寬度太窄,不利于單片機(jī)捕捉。這個(gè)問題即使使用了AVR單片機(jī)依然不能忽視。如果AT90S8535采用查詢普通I/O口的辦法捕捉STROBE脈沖,查詢一次至少要執(zhí)行兩個(gè)單周期指令或執(zhí)行一條兩周期指令,執(zhí)行時(shí)間最少為250ns,超過了STROBE低電平的寬度(153ns),因此丟失數(shù)據(jù)的可能性非常大。為了準(zhǔn)確地捕捉STROBE信號(hào),該信號(hào)被連接到AT90S8535外中斷0的輸入引腳(1NT0)。當(dāng)INT0引腳上的STROBE信號(hào)觸發(fā)了INT0中斷請(qǐng)求時(shí),通用中斷標(biāo)志寄存器GIFR中的INTF0位被置1,AT90S8535通過查詢INTF0位,判斷是否出現(xiàn)STROBE信號(hào)。使用這種方法STROBE低電平狀態(tài)由單片機(jī)硬件捕捉,不存在丟失STROBE事件的可能性,只要在下一次中斷申請(qǐng)出現(xiàn)以前將INTF0位清除即可。
圖3
另一個(gè)不利于數(shù)據(jù)接收的問題是,兩個(gè)STROBE信號(hào)之間的時(shí)間過短,最短時(shí)間間隔只有11個(gè)時(shí)鐘周期(3.2768MHz)。針對(duì)這種情況,考慮到數(shù)據(jù)包有效時(shí)的信號(hào)DATARDY可以利用,將DATARDY接到INT1引腳,利用DATARDY和STROBE的關(guān)系,進(jìn)行數(shù)據(jù)接收,硬件連接如圖3所示。
3 智能電參量采集模塊軟件設(shè)計(jì)
電參量采集模塊軟件主要是單片機(jī)AT90S8535的控制軟件。軟件主要的功能是完成對(duì)AT73C500/501的配置,測量數(shù)據(jù)的處理;同時(shí),利用外部通信接口傳輸采集的數(shù)據(jù),響應(yīng)外部設(shè)備的各種查詢,校準(zhǔn)數(shù)據(jù)設(shè)置操作。程序設(shè)計(jì)的難點(diǎn)在于對(duì)AT73C500測量數(shù)據(jù)的采集。
采集程序初始化時(shí),只允許INT1中斷(由數(shù)據(jù)包準(zhǔn)備好標(biāo)志DATARDY觸發(fā))。當(dāng)DATARDY有效,進(jìn)入INT1中斷時(shí),在中斷內(nèi)允許INT0中斷(由數(shù)據(jù)寫到總線選通STROBE信號(hào)觸發(fā))。這樣,在INT1中斷程序內(nèi),查詢到STROBE引起的中斷有效標(biāo)志INTF0后,馬上讀出AT73C500寫到總線的數(shù)據(jù)。然后,清除INTF0,等待接收下個(gè)數(shù)據(jù),直到把1個(gè)完整數(shù)據(jù)包16個(gè)字節(jié)全部接收完成,再退出INT1中斷。由于每包數(shù)據(jù)之間有至少20ms的間隔時(shí)間可供AT90S8535處理,這樣接收完成1包數(shù)據(jù)后,在20ms的時(shí)間內(nèi)由AT90S8535完成對(duì)包數(shù)據(jù)的分析,依次完成6包數(shù)據(jù)的接收處理。
關(guān)鍵的數(shù)據(jù)包中斷接收代碼程序如下:
interrupt[EXT_INT1]void ext_int1_isr(void)
{
#asm("cli") //禁止所有中斷
CIMSK=0x40; //禁止int1,允許int0
strobe1:
if(GIFR==0)goto strobe1;//等待第1個(gè)數(shù)據(jù)選通信號(hào)有效
temp_pack0=PINB; //syncls讀出同步數(shù)據(jù)1
GIFR=0xc0;BRDY=0;
strobe2:
if(GIFR==0)goto strobe2;//等待第2個(gè)數(shù)據(jù)選通信號(hào)有效
temp_pack1=PINB; //syncms讀出同步數(shù)據(jù)2
GIFR=0xc0;BRDY=0;
…………
strobe16:
if(GIFR==0)goto strobe16;//等待第16個(gè)數(shù)據(jù)選通信號(hào)有效
temp_pack15=PINB;
BRDY=0;GIMSK=0x80;GIFR=0xc0;//讀寫16個(gè)字節(jié),完成1包數(shù)據(jù)接收
#asm("sei")
}
在設(shè)計(jì)調(diào)試電參量測量模塊過程中發(fā)現(xiàn)很多問題。最嚴(yán)重的問題是在測量過程中,當(dāng)在AT73C501信號(hào)輸入端出現(xiàn)電壓類峰脈沖干擾時(shí),AT73C500/501芯片組出現(xiàn)死機(jī)現(xiàn)象。具體表現(xiàn)為AT73C500不再向數(shù)據(jù)總線發(fā)送測量數(shù)據(jù)。同時(shí)AT73C501迅速升沿發(fā)燙,而此時(shí)芯片組的復(fù)位控制信號(hào)不再起作用,單片機(jī)無法控制AT73C500/501;只有模塊停電,再上電之后,才能恢復(fù)正常工作。這種故障在實(shí)際的工業(yè)控制中是必須要解決的。
針對(duì)此現(xiàn)象,我們經(jīng)過反復(fù)實(shí)驗(yàn),采用軟件和硬件相結(jié)合的辦法,圓滿解決了這個(gè)問題。
硬件方面:
*在模塊的供電電源上串接電源濾波器,消除從電源側(cè)引入的干擾;
*AT73C501的6路單端A/D輸入端接入EMI磁珠,同時(shí)輸入端并接雙向肖特基保護(hù)管,對(duì)輸入的超出輸入范圍的信號(hào)限幅,保護(hù)內(nèi)部電路;
*AT73C500/501芯片組的供電由晶體管電子開關(guān)控制,在發(fā)生故障時(shí),可由單片機(jī)及時(shí)切斷電路,實(shí)現(xiàn)重新上電。
軟件方面:
*增加軟件看門狗,由AT73C500的數(shù)據(jù)包傳輸中斷不斷清除,一旦出現(xiàn)故障,沒有數(shù)據(jù)包傳輸中斷,則看門狗復(fù)位系統(tǒng);
*軟件對(duì)采集的數(shù)據(jù)進(jìn)行合理性分析,出現(xiàn)異常非法測量數(shù)據(jù)時(shí),復(fù)位AT73C500/501芯片組;
*軟件定時(shí)對(duì)AT73C500的校準(zhǔn)參數(shù)進(jìn)行重裝載,防止AT73C500內(nèi)部寄存器校準(zhǔn)系統(tǒng)系數(shù)失效。
采用以上措施,使電參量測量模塊的可靠性大大提高。使因此測量模塊的現(xiàn)場安裝運(yùn)行的臺(tái)變監(jiān)測設(shè)備運(yùn)行年1來年,穩(wěn)定可靠,獲得用戶好評(píng)。