background image

UInt sin_a_H = 255 * sin_a;
fwrite(fp,“% f \ n”,sin_a_H);

b.

Matlab

语言

12]

设计。 程序如下:

close all;
clear all;
ts = 0.01 / 180;
T = 0;
for I = 1:180;
num1 = 255 * sin(2 * pi * 50 * T);
a(I) = round(num1);
b = dec2hex(a(I),2);
e = ‘0x’;
d{I,1}=strcat(e,b);
T = T + ts;
end

c.

采用半周期正弦波进行

180

分频离线采样,计算

其幅值后按序排成数据表存入单片机的

EPROM

中。

2.1.2

基于最优时间的软件锁相技术的实现原理

本软件锁相技术的实现过程是由

2

个中断完成

的:正弦波读表程序周期定时器中断(定时器周期为

T

P_x

,为变化量);捕获中断。 前者不断地从一个正弦

数据表格中依次循环读出表格数据

Data

x

),并记录

对应的表格地址号

x

,而后者的每次捕获中断中检查

当前由正弦波查表程序周期定时器中断读出的表格
地址号

x

,根据

x

的值和

180

差值来调整

T

P_x

,以达到

闭环锁相的目的。

这种软件锁相技术可以快速跟踪电网的频率变

化,能够在

1

个周期内跟踪上电网频 率 , 而 且 输 出

基 准 正 弦 波 的 频 率 与 电 网 的 频 率 误 差 始终控制在

1.8

f

osc

× 10

6

%

f

osc

为单片机时钟频率)以内,如果单片

机 的 时 钟 频 率 大 于

18 MHz

, 那 么 输 出 基 准 正 弦 波

的频率误差将小于

0.001

,即 频 率 跟 踪 精 度 将 大 于

99.9 %

,这完全可以满足工程精度 需要。 具体实现

框图如图

3

所示。

当第

1

次捕获中断产生时,启动正弦波读表程序

周期定时器中断,并且从正弦表格读取第

1

个数据

(即零电角度的数据

DATA

0

)开始读取)。

捕获中断响应边沿触发,即在电网电压过零点产

生中断。 当第

2

次捕获中断产生时,这时会出现

3

情况(如图

4

所示,图中

u

为与电网同频同相的方波,

u

1

为频率过大或中断周期

T

P_x

过 小 时 波 形 ,

u

2

为 同

步波形,

u

3

为频率过小或过大时波形)。

1

种是

u

1

波形,出现这种情况说明正弦波读

表程序周期定时器

T

P_x

过小,即捕获中断产生时读表

指针号

x > 180

,这时要增大

T

P_x

的值,如式(

2

)所示:

T ′

P_x

= T

P_x

+ ΔT

P_x

2

其中,

T ′

P_x

为新的周期定时器值,

ΔT

P_x

为增加的

量。

ΔT

P_x

的值可以通过以下公式计算:

ΔT

P_x

= INT

x - 180

180 x

× 10

-2

× f

osc

!

"

3

其中,

ΔT

P_x

为整数。

2

种 是

u

2

波 形 ,出 现 这 种 情 况 说 明 正 弦 波

读 表程序周期定时器

T

P_x

值符合要求,无需更改

T

P_x

的值。

3

种是

u

3

波形,出现这种情况说明正弦波读

表 程 序 周期 定 时 器

T

P_ x

过 大 ,即 捕 获 中 断 产 生 时

读表指针号

x < 180

,这时要减小

T

P_x

的值。 如式(

4

所示:

T ″

P_x

= T

P_x

- ΔT ′

P_x

4

其 中 ,

T ″

P_x

为 新 的 周 期 定 时 器 值 ,

ΔT ′

P_x

为 减

少 的 量。

ΔT ′

P_x

的值可以通过以下公式计算:

ΔT ′

P_x

= INT

180 - x

180 x

× 10

-2

× f

osc

!

"

5

其中,

ΔT ′

P_x

为整数。

2.2

与电网电压信号同步的基准正弦电路程序

边 沿 捕 获 中 断 服 务 子 程 序 的 流 程 图 如 图

5

示。 通 过 边 沿 中 断 模 式 与 读 表 指 针 的 差 值 来 不 断

取样

u

i

正弦波 /

方波转换

软件滤
波算法

边沿捕捉

鉴相程序

修改中断

周期 T

P_x

读入当前基
准电压相位

3

软件锁相技术原理框图

Fig.3 Block diagram of software phase lock technique

5

边沿捕获中断服务子程序流程图

Fig.5 Flowchart of edge - capture interrupt subroutine

返回

写入 T ′

P_x

,并

读表指针清零

写入 T ″

P_x

,并

读表指针清零

T ′

P_x

= T

P_x

+ ΔT

P_x

T ″

P_x

= T

P_x

- ΔT ′

P_x

x - 180 < 0?

读入正弦波数据表读表指针 x

对读入的电网半周期值进行判断,以消除毛刺影响

读入 T2 定时器的值,该值为电网半周期时间值

保存状态寄存器值,清除中断向量

边沿捕捉中断服务子程序

Y

N

O

O

O

O

4

不同的

T

P_x

输出不同的正弦波形示意图

Fig.4 Sinusoid waveforms for different T

P_x

u

u

1

u

2

u

3

t

t

t

t

郑翔骥,等: 基于软件锁相技术的光伏并网系统基准正弦电路

6