基于CS5451A的三相多功能電能表設(shè)計
隨著電子技術(shù)的飛速發(fā)展,電能表的集成度越來越高,在三相多功能電表市場上,主要有兩種架構(gòu):電能計量芯片加微控制器;A/D轉(zhuǎn)換芯片加微處理器。第一種方案成本比較低,功能主要取決于電能芯片,微控制器不能進行復(fù)雜的數(shù)據(jù)處理,所以不具有諧波分析功能。第二種方案可以通過復(fù)雜的數(shù)據(jù)處理,實現(xiàn)非常多的功能。本文主要介紹基于CS5451A+TMS320F2801的三相多功能電表設(shè)計。
CS5451A是Cirrus Logic公司為能源測量工業(yè)設(shè)計的高度集成的Δ-Σ A/D轉(zhuǎn)換器。CS5451A在一個芯片上集成了6個Δ-Σ A/D轉(zhuǎn)換器、濾波器和一個與微控制器或DSP相聯(lián)接的串行接口。CS5451A與一個變流器或可測量電流的分流器和電阻分割器或測量用變壓器直接連接。同時該產(chǎn)品已被初始化和功能完全設(shè)置,并包括一個參考電壓。
TMS320C28x系列數(shù)字信號控制器是業(yè)界第一款32位基于DSP的控制器,具有板載Flash存儲器和高達150MIPS的性能,它們針對于工業(yè)自動化、數(shù)字電源、汽車控制以及高級傳感應(yīng)用。C28x內(nèi)核是世界上最高性能控制優(yōu)化內(nèi)核,提供計算帶寬來實時處理許多復(fù)雜的控制算法,如無傳感速度控制、隨機PWM以及功率因數(shù)校正。C28x還提供了足以與一般MCU相匹敵的C代碼效率,與C2000系列中的當前器件完全代碼兼容。
硬件設(shè)計
圖1:基于CS5451A+TMS320F2801的三相多功能電表框圖。
圖1所示為本方案的硬件框圖,本方案按功能可分成以下幾個模塊:
電壓轉(zhuǎn)化模塊是一個電阻網(wǎng)絡(luò),用分壓電阻的方法,把三相電壓信號轉(zhuǎn)化成三個400mV的信號,經(jīng)過阻容濾波送入CS5451A(見圖2)。
圖2:采用電阻網(wǎng)絡(luò)的電壓轉(zhuǎn)化模塊。
電流轉(zhuǎn)化模塊是通過電流互感器,把0-6安的三相電流信號轉(zhuǎn)化成三個400mV的信號,經(jīng)過阻容濾波送入CS5451A(見圖3)。
圖3:通過電流互感器把0-6安的三相電流信號轉(zhuǎn)化成三個400mV的信號。
CS5451A模塊功能是把輸入的六通道電壓電流信號轉(zhuǎn)化成數(shù)字信號輸出。CS5451A與TMS320F2801通過SPI口連接,每隔250微秒主動發(fā)出一組數(shù)據(jù)。
TMS320F2801有兩個SPI接口,一個作為從SPI接收CS5451A數(shù)據(jù),另一個作為從SPI與MCU通訊。24C04用來保存設(shè)置數(shù)據(jù)和校準數(shù)據(jù)。
軟件設(shè)計
軟設(shè)計分兩大部份,TMS320F2801的軟件和MCU軟件。
MCU軟件主要是從TMS320F2801種讀取數(shù)據(jù)、顯示和與PC機通訊,本文不作介紹。
TMS320F2801的軟件實現(xiàn)對CS5451A的數(shù)據(jù)采集、電量計算、諧波分析、與89C52
通訊、脈沖輸出。軟件主流程如圖4。
初始化系統(tǒng)配置寄存器,包括系統(tǒng)頻率設(shè)置、Flash寄存器初始化、SPIA和SPIB的使能。SPIA用來接收CS5451A的數(shù)據(jù),SPIB用于89C52通訊。
外部中斷用來捕捉CS5451A的同步信號,在捕捉到同步信號以后,初始化并啟動SPIA模塊,SPIA模塊在接收到12個字節(jié)數(shù)據(jù)以后產(chǎn)生中斷,把數(shù)據(jù)保存到緩存中。流程如圖5。
圖4:軟件主流程圖。 |
電能計算方法
電壓有效值:
電流有效值:
有功功率:
無功采用移相90度算法,In+t是移相90度后的電流值
諧波分析方法
由于電網(wǎng)頻率是變化的,采樣頻率固定,所以每個周波采集到的瞬時值個數(shù)是不固定的。要進行64點FFT計算,必須把采集到的瞬時值轉(zhuǎn)化成64點瞬時值,轉(zhuǎn)化方法有多種,本設(shè)計采用的是拉格朗日二次差值法,精度比線性差值法高,計算量也可以達到要求。
圖5:中斷處理流程圖。 |
/*
拉格朗日定理(lagrange):
若函數(shù)f(x)滿足:(1)f(x)在閉區(qū)間[a,b]上連續(xù);(2)f(x)在開區(qū)間(a,b)可導(dǎo);
則在開區(qū)間(a,b)必存在S,使得f(b)-f(a)=f'(s)(b-a)。
拉格朗日二次插值公式:
已知曲線上三點(x0,y0),(x1,y1),(x2,y2),則該二次曲線為:
L(x)=(x-x1)(x-x2)f(x0)/(x0-x1)(x0-x2)+(x-x0)(x-x2)f(x1)/(x1-x0)(x1-x2)+(x-x0)(x-x1)f(x2)/(x2-x0)(x2-x1);
*/
//Ta是周期值
//Points是要抽取的點數(shù),本系統(tǒng)進行64點FFT計算,Points取64
float fft_buf[128]; // 保存CS5451A采集的128點數(shù)據(jù)
float dataR[128]; // 保存抽出來的64點數(shù)據(jù)
void DataChange(float Ta,int Points)
{
int i,j,k;
int index; //offset;
float p=1.0;//初始化p
float c=1.0;
float yE=0;
float m;
int T0=25; //To單位為10us.
for(i=0;i index=(floor((i*Ta*100)/(Points*T0))); //若所求的點為已知點則跳過. if((i*Ta*100)/(Points*T0)-floor((i*Ta*100)/(Points*T0))==0) { dataR[i]=fft_buf[index]; continue; } //用lagrange計算出所求的點. for(j=0;j3;j++) { p=1; c=1; for( k=0;k3;k++) { if(k==j)continue;//判斷是否為同一個數(shù) m=index+k; m=m*T0*Points; p=p*(Ta*i*100-m); p=p/Points; c=c*((index+j)*T0-(index+k)*T0); } //求和 yE=yE+p*fft_buf[index+j]/c; } dataR[i]=yE; yE=0; } } 本方案中數(shù)據(jù)運算量很大,對TMS320F2801的要求很高,所以FFT計算和電量計算程序用匯編語言編寫,程序編寫這里不作介紹。
評論