单片机 功率因数的测量 实习报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安科技大学

学院: 电气与控制工程学院

专业名称: 测控技术与仪器0801

设计题目: 功率因数的测量

姓名:

学号:

指导教师:

功率因数的测量

1. 系统功能

功率因数是供用点网络的一个重要参数,它是衡量电力系统是否经济运行

的一个重要指标,所以准确测量功率因数在电力系统中具有重要的意义。在正弦电路中,可以通过测量电压、电流间的相位差,计算出功率因数,并根据电流滞后或者超前电压,判断出负载是感性还是电容性的,但在波形严重失真的电力系统或非正弦电路中,由于电压、电流波形发生畸变,谐波电压、电流间也产生无功功率,因此用测量相位差的方法无法准确地测量功率因数。所以,功率因数的精确测量在电力系统的运行、调度中是非常重要的。

2. 测量原理与设计

2.1测量原理

对于某一正弦信号,周期性地出现过零点,测出过零点的时间即可以测出该信号的相角。

通过电压互感器和电流互感器得到低压交流信号,然后通过整形电路将交流信号转换为TTL 方波脉冲。相位差的计算原理是利用输入两路信号过零点的时间差,以及信号的频率来计算2路信号的相位差。 两路信号的相位差:︒⨯∆=︒⨯∆=

360/360T

Fk

N T t ϕ ,其中,∆N 为两路信号的上升沿分别触发计数器的差值,Fk 为单片机时钟频率,T 为输入信号的周期。

2.2系统硬件设计

下图是以STC-51单片机为核心的功率因数测量系统硬件结构图。该测量系统主要由电流互感器、电压互感器、整形修正电路、单片机、LED 显示器和通信接口等组成。

2.3 输入整形电路

输入整形电路如下图所示,主要功能是完成信号的隔离、波形变换和相角修正。为了消除测量端电压、电流互感器结构上的差异而产生的输出电压、电流附加移相角,需要采用电压、电流活儿变送器隔离(其跟随电网电压或负载电流的变化时间仅为1us),以保证相角差的实时测量精度。

在 LM393 的输入端加了两个IN4108稳压二极管将输入信号控制在-0.7V—+0.7之间,经过零比较器将正弦信号转变成方波;用C0和触发器CD4854去除高频信号,滤除谐波干扰;通过2个施密特整形触发器,得到TTL方波信号。

3.软件程序

#include

#include

#include

#include

sbit SCL=P0^3; //移位

sbit RCL1=P0^1; //RCL1,RCL2位锁存

sbit RCL2=P0^2;

sbit SDATA=P0^0; //数据位

unsigned char code led1[ ]={0xc0,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0x38,0x39}; //0~9,r,l,c

unsigned char code led2[ ]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7, 0xb8,0xb9}; //

unsigned char a1,a2,a3,a4,a5; //a1~a5

unsigned char Data_595;

unsigned int n_LED,yy;

unsigned int count_zheng,zheng;

unsigned int count_yu,yu;

float shijiancha=0;

float xiangjiao,gonglvyinshu;

bit data test_begin=0;

bit bit_v1=0;

bit bit_v2=0;

#define k00 0x8000

#define k01 0x4000

#define k02 0x2000

#define k03 0x1000

#define k10 0x0800

#define k11 0x0400

#define k12 0x0200

#define k13 0x0100

#define k20 0x0080

#define k21 0x0040

#define k22 0x0020

#define k23 0x0010

void timecha( )

{

yu=TL1;

count_zheng=zheng;

count_yu=yu;

shijiancha=(count_zheng*200+(count_yu-56))*12/11.0592;

}

void xiangweicha( )

{

if(shijiancha<=5000)

{

if(shijiancha==0)

a5=10; //阻性

else

a5=11; //感性

xiangjiao=shijiancha*18/1000;

xiangjiao=(xiangjiao/180)*3.1415926;

if (xiangjiao<=0.04)

gonglvyinshu=1;

else

gonglvyinshu=cos(xiangjiao);

}

else

{

if ((shijiancha>15000)&&(shijiancha<=20000))

{

a5=12; //容性

xiangjiao=(20000-shijiancha)*18/1000;

xiangjiao=(xiangjiao/180)*3.1415926;

if (xiangjiao<=0.04)

{

gonglvyinshu=1;

}

相关文档
最新文档