简易电能质量检测装置设计方案文档格式.docx
《简易电能质量检测装置设计方案文档格式.docx》由会员分享,可在线阅读,更多相关《简易电能质量检测装置设计方案文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
对进行离散傅里叶变换得到基波分量的频谱系数。
==
对正弦输入信号可证明(3)
是输入信号的基波频谱系数,k为小于N的正整数,代表第k
次的采样。
由式
(1)﹑
(2)和(3)三式可得出与的关系。
=
对于x次谐波,同样可得其复数振幅的实部和虚部:
,
对另一路输入的交流电流信号可同样应用上述公式求出x次谐波分量的复数振幅的实部和虚部…。
2.2.2交流电压有效值﹑电流有效值﹑有功功率、无功功率和视在功率的计算。
设、、、分别为基波或x次谐波交流电压、电流、有功功率、无功功率(x=0时,表示基波,x=1、3、5.....时,表示对应的谐波),则有:
总的输入信号的有效值,有功、无功功率,功率因数为:
,,
上两式可采用近似计算公式
,,其相对误差为。
三、系统软件设计
系统软件流程见附录Ⅳ。
四、系统的检测方法及理解
4.1测试仪器及测试方法
测试仪表:
函数信号发生器/计数器,数字万用表,示波器
测试方法:
用函数信号发生器产生正弦信号波作为电压信号波输入,此电压信号经移相电路移相后作为同一路的电流信号输入,经采样送单片机处理后显示,将显示的各数值同示波器观察值和万用表侧得值作比较,计算出各误差值。
4.2基本部分测试结果及分析
4.2.1交流电压有效值和交流电流有效值测试结果如下表1
4.2.2功率测试结果如下表2
视在功率PF=cosΦ=P/S
4.3发挥部分测试结果及分析
4.3.1交流电压输入频率的测试结果如下表3
五、小结
在本次设计中我们仔细分析了电路图的排版结构,用最适合的方式接线,大大缩小了电路的规模,使系统内部的干扰及串扰大大降低,这使系统调试的难度降低。
通过对器件的仔细挑选,我们力图使硬件系统简单化,在不降低系统参数的条件下降低成本。
现分析设计过程中系统产生误差的原因:
(1)单片机输出PWM误差。
(2)采样电阻精度误差。
(3)A/D采样电路转换误差和量化误差。
(4)整个系统版由手工焊接完成,布线时无法避免线路之间和外界的电池干扰。
(5)功率的测量是由电压、电流的测量值间接计算所得,由于误差的累计效应会使有功功率、无功功率和视在功率与理论值存在误差。
经过多日努力,我们的设计基本完成了题目要求,由于仿真软件的限制,可能效果不是非常理想。
本次设计极大的锻炼了我们各方面的能力,虽然我们遇到很多困难和障碍,但是合作与努力,困难与希望并存。
通过本次设计,我们深刻体会到共同协作和团队精神的重要,也强烈的意识到课本知识与实际相结合的重要性。
我们将继续努力争取更大的进步。
附录Ⅰ主要元器件清单
元器件
型号
数目
单片机
C8051F340
1
整流桥
KBP310
变压器
220V10W
12V*2
三端稳压芯片
L7809CV
KA7909
HT7533
L7805CV
集成运放
LM353
2
LM311P
与非门芯片
74HC00
三端稳压管
LM385B2-2.5
高速二极管
IN4148
8
液晶显示模块
12864F
电解电容
2200uF25V
220uF25V
10uF25V
100uF25V
1uF25V
3
电容
0.1uF
13
1uF
电阻
1kΩ
10kΩ
5
510Ω
2kΩ
12kΩ
4
按钮
电感
10uH
电位器
0~10kΩ
附录Ⅱ总程序图
附录Ⅲ数据表
表1电压有效值和电流有效值测试结果
输入电压有效值(V)
测得电压有效值(V)
测量误差(%)
允许误差(%)
是否满足要求
1.20
1.204
0.33
是
2.42
2.429
0.037
3.81
3.79
0.5
输入电流有效值(A)
测得电流有效值(A)
0.48
0.482
0.42
1.23
1.236
1.96
1.968
0.408
表2功率测试结果
输入(峰值)
各功率理论值
各功率测得值
各功率测量误差(%)
电压/V
电流/A
P/W
Q/var
S/W
P
Q
S
0.456
0.342
0.57
0.448
0.344
0.572
1.2
0.53
1.45
1.778
2.384
2.98
表3交流输入电压信号频率测试结果
输入频率实际值
输入频率测得值
测量误差
允许误差(%)
是否满足要求
46Hz
46.001Hz
0.001Hz
49Hz
49.0004Hz
0.0004Hz
51Hz
51.0007Hz
0.0007Hz
54Hz
54.0009Hz
0.0009Hz
附录Ⅳ主程序源代码
#include<
c8051f340.h>
#include"
intrins.h"
math.h"
table.h"
12864.h"
stdio.h>
sbitkey2=P0^3;
//基本和发挥部分多个界面切换
sbitkey1=P0^4;
//基本发挥切换,开关形式1=基本部分;
0=发挥部分
sbitkey3=P0^2;
//发挥部分谐波显示/波形显示切换
/********************************************************************
*常量及全局变量定义
********************************************************************/
#defineSYSCLK000000
#defineADC_CLK1600000
#defineK15
#defineK11.07
#definewavek0.0491
#definefeqk1.00806
intcodevxiebo[6]={1270,5,422,3,252,1};
intcodeixiebo[6]={1271,4,421,4,250,3};
floatdoudong;
unsignedintvmax=0;
unsignedintimax=0;
unsignedcharmaxindex=0;
unsignedintvmin=0;
unsignedintimin=0;
unsignedcharminindex=0;
unsignedcharkeynum=0;
/*显示*/
longxdatac[6];
//有效值
longxdatav[6];
intvxiebozx[6];
intixiebozx[6];
unsignedintluxiebozx;
unsignedintlixiebozx;
//floatxdatavxieboyx[6];
floatxdataixieboyx[6];
floatxdatavxbyx;
floatxdataixbyx;
floatidatavta;
floatidataita;
floatidatacosvalue;
floatidatasinvalue;
floatidatacostemp;
longidatapw;
longidataqw;
longidatasw;
floatpf;
longidatafeq;
//////////////////
sbitkey=P1^0;
sbitmode=P1^1;
unsignedintj=0;
unsignedinttime=0;
//unsignedintcos=0;
unsignedintcounter0=0;
unsignedintcounter1=0;
unsignedinti=0;
unsignedinttime0=0;
unsignedinttime1=0;
longtemp=0;
unsignedinttemp1=0;
unsignedinttemp_th0=0;
bitflag=0;
bitwaveflag=0;
bittimeflag=0;
bittime_get_flag=0;
//bitoverflag=0;
bitint0flag=0;
bitadfin_flag=0;
unsignedintxdataad_v0[129];
//电流采样
unsignedintxdataad_v1[129];
//电压采样
unsignedintidataUmax_last,Umin_last,Imax_last,Imin_last;
//历史电压电流最值
unsignedcharidatakey1_lishi;
//发挥部分按键次数记录
unsignedcharidatakey_lishi;
//基本部分按键次数记录
*函数声明
voidOSCILLATOR_Init();
//内部振荡器初始化
voidPORT_Init();
//端口初始化函数
voidADC_Init();
//AD初始化函数
voidADC_Enable();
//AD使能函数
voidADC_Disable();
////AD除能函数
voidtimer2_Init();
//定时器初始化程序
voidTimer0_Init();
voidExt_Interrupt_Init();
voidTimer1_Init();
voidDelay_us(unsignedinttimes)
{
unsignedinti;
for(i=0;
i<
times;
i++)
{
_nop_();
//调用NOP,延时1us
_nop_();
}
}
voiddisplay_NUmber(char*st,unsignedintnumber)
chara[3];
a[3]='
\0'
;
lcddisplay(st);
a[2]=number%10+48;
number/=10;
a[1]=number%10+48;
a[0]=number%10+48;
lcddisplay(a);
voidW_Display()//功率显示
WriteCommand(0x01);
//清屏
Delay_us(3000);
startp(0);
display_NUmber("
U:
"
v[keynum]/2);
Delay_us(10);
startp(3);
lcddisplay("
V"
);
startp(4);
//电流
I:
startp(5);
WriteData(c[keynum]/2/100+0x30);
WriteData(c[keynum]/2/10%10+0x30);
//"
."
WriteData(0x2E);
WriteData(c[keynum]/2%10+0x30);
startp(7);
A"
startp(16);
S:
sw/4);
if(pf>
=100)
pf=99;
startp(20);
F:
0."
pf);
startp(8);
P:
pw/4);
startp(12);
Q:
qw/4);
voidmax_display()//最大值最小值显示界面
WriteCommand(0x01);
//比较最值
if(key_lishi==1)//第一次,人为赋最值
Umax_last=v[keynum];
Umin_last=v[keynum];
Imax_last=c[keynum];
Imin_last=c[keynum];
if(v[keynum]>
Umax_last)//最大电压改变
Umax_last=v[keynum];
}
if(v[keynum]<
Umin_last)//最小电压改变
Umin_last=v[keynum];
if(c[keynum]>
Imax_last)//最大电流改变
Imax_last=c[keynum];
if(c[keynum]<
Imin_last)//最小电流改变
Imin_last=c[keynum];
//显示
WriteData(key_lishi+0x30);
//5组编号
startp(4);
组"
//最大电压
Umax"
Umax_last/2);
//最小电压
Umin"
Umin_last/2);
//最大电流
Imax"
startp(10);
WriteData((Imax_last/2)/100+0x30);
WriteData((Imax_last/2)/10%10+0x30);
WriteData((Imax_last/2)%10+0x30);
Imin"
startp(14);
WriteData((Imin_last/2)/100+0x30);
WriteData((Imin_last/2)/10%10+0x30);
WriteData((Imin_last/2)%10+0x30);
startp(24);
//实时电压
startp(28);
startp(29);
c[keynum]=123;
WriteData((c[keynum]/2)/100+0x30);
//WriteData(0x31);
WriteData((c[keynum]/2)/10%10+0x30);
WriteData((c[keynum]/2)%10+0x30);
//发挥部分谐波显示界面
voidxiebo_display()
//频率
f:
startp
(1);
WriteData(feq/100+0x30);
WriteData(feq/10%10+0x30);
WriteData(feq%10+0x30);
"
key1_lishi+1);
//N
//次谐波
次"
//电压谐波含量
电压谐波"
startp(21);
WriteData((int)vxiebozx[key1_lishi]/1000+0x30);
WriteData((int)vxiebozx[key1_lishi]/100%10+0x30);
WriteData((int)vxiebozx[key1_lishi]/10%10+0x30);
WriteData((int)vxiebozx[key1_lishi]%10+0x30);
Delay_us(10);
////电流谐波含量
电流谐波"
startp(13);
WriteData((int)ixiebozx[key1_lishi]/1000+0x30);
WriteData((int)ixiebozx[key1_lishi]/100%10+0x30);
WriteData((int)ixiebozx[key1_lishi]/10%10+0x30);
WriteData((int)ixiebozx[key1_lishi]%10+0x30);
//本次谐波电