![]() |
|
||||||||||||||
| | 网站首页 | 文章中心 | 下载中心 | ARM技术交流社区 | 供求信息 | 在线咨询 | 数据手册 | | ||
|
||
|
||||||||
| 基于CS5451A的三相多功能电能表设计 | ||||||||
作者:北高智科… 文章来源:电子工程专辑 点击数: 更新时间:2006-9-15 ![]() |
||||||||
随着电子技术的飞速发展,电能表的集成度越来越高,在三相多功能电表市场上,主要有两种架构:电能计量芯片加微控制器;A/D转换芯片加微处理器。第一种方案成本比较低,功能主要取决于电能芯片,微控制器不能进行复杂的数据处理,所以不具有谐波分析功能。第二种方案可以通过复杂的数据处理,实现非常多的功能。本文主要介绍基于CS5451A+TMS320F2801的三相多功能电表设计。 CS5451A是Cirrus Logic公司为能源测量工业设计的高度集成的Δ-Σ A/D转换器。CS5451A在一个芯片上集成了6个Δ-Σ A/D转换器、滤波器和一个与微控制器或DSP相联接的串行接口。CS5451A与一个变流器或可测量电流的分流器和电阻分割器或测量用变压器直接连接。同时该产品已被初始化和功能完全设置,并包括一个参考电压。 硬件设计 图1所示为本方案的硬件框图,本方案按功能可分成以下几个模块: 电压转化模块是一个电阻网络,用分压电阻的方法,把三相电压信号转化成三个400mV的信号,经过阻容滤波送入CS5451A(见图2)。
![]() 图2:采用电阻网络的电压转化模块。 电流转化模块是通过电流互感器,把0-6安的三相电流信号转化成三个400mV的信号,经过阻容滤波送入CS5451A(见图3)。
CS5451A模块功能是把输入的六通道电压电流信号转化成数字信号输出。CS5451A与TMS320F2801通过SPI口连接,每隔250微秒主动发出一组数据。 TMS320F2801有两个SPI接口,一个作为从SPI接收CS5451A数据,另一个作为从SPI与MCU通讯。24C04用来保存设置数据和校准数据。 软件设计 软设计分两大部份,TMS320F2801的软件和MCU软件。 MCU软件主要是从TMS320F2801种读取数据、显示和与PC机通讯,本文不作介绍。 TMS320F2801的软件实现对CS5451A的数据采集、电量计算、谐波分析、与89C52 通讯、脉冲输出。软件主流程如图4。 外部中断用来捕捉CS5451A的同步信号,在捕捉到同步信号以后,初始化并启动SPIA模块,SPIA模块在接收到12个字节数据以后产生中断,把数据保存到缓存中。流程如图5。
电能计算方法 电压有效值: 电流有效值: 有功功率: 无功采用移相90度算法,In+t是移相90度后的电流值 谐波分析方法 由于电网频率是变化的,采样频率固定,所以每个周波采集到的瞬时值个数是不固定的。要进行64点FFT计算,必须把采集到的瞬时值转化成64点瞬时值,转化方法有多种,本设计采用的是拉格朗日二次差值法,精度比线性差值法高,计算量也可以达到要求。
/* 拉格朗日定理(lagrange): 若函数f(x)满足:(1)f(x)在闭区间[a,b]上连续;(2)f(x)在开区间(a,b)可导; 则在开区间(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是要抽取的点数,本系统进行64点FFT计算,Points取64 float fft_buf[128]; // 保存CS5451A采集的128点数据 float dataR[128]; // 保存抽出来的64点数据 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;j<3;j++)
{
p=1;
c=1;
for( k=0;k<3;k++)
{
if(k==j)continue;//判断是否为同一个数
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;
}
}
本方案中数据运算量很大,对TMS320F2801的要求很高,所以FFT计算和电量计算程序用汇编语言编写,程序编写这里不作介绍。 |
||||||||
| 文章录入:armopen 责任编辑:armopen | ||||||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | ||||||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 基于uITRON操作系统的嵌入式 基于FA526处理器SoC平台的Li 基于TMS320C64x实现LFM信号的 基于5G8038的函数发生器设计 基于单片机的嵌入式SNMP代理 基于WISHBONE总线的FLASH闪存 一种基于PHS移动台的PHS/GSM 基于CAN的电源控制系统设计 基于虚拟存储的嵌入式存储系 CSD在GSM-R手持终端的实现 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系我们 | 友情链接 | 版权申明 | 网站公告 | |||
|