数字移相技术的分析和实现
_________________________________________________________________________________________________________
来自:武汉新电新技术公司 更新时间:2003年9月9日-17时31分
摘要:两个同频信号,特别是工频信号之间的移相,在电力行业的继电保护领域中是一个模拟、分析事故的重要手段,是校验各种有关相位的仪器仪表、继电保护装置的信号源。因此,移相技术有着广泛的实用价值。本文介绍两种基于单片机的数字移相方法,借以说明实现移相的原理。并对两种移相方法进行性能分析和比较。 关键词:移相,单片机,D/A转换,计数器。
一.两个同频信号之间的移相与实现方式
所谓移相是指两路同频的信号,以其中的一路为参考,另一路相对于该参考作超前或滞后的移动,即称为是相位的移动。两路信号的相位不同,便存在相位差,简称相差。若我们将一个信号周期看作是3600,则相差的范围就在00∽3600之间。例如在图1中,以A信号为参考,B信号相对于A信号作滞后移相φ0,则称A超前Bφ0,或称B滞后Aφ0。
图1 移相示意 |
要实现B信号对A信号的移相,通常有两个途径:一是直接对模拟信号进行移相,如阻容移相,变压器移相等,早期的移相通常采用这种方式。采用这种方式制造的移相器有许多不足之处,如:输出波形受输入波形的影响,移相操作不方便,移相角度随所接负载和时间等因素的影响而产生漂移等.在此不予讨论.另一个是随电子技术的发展,特别是单片机技术的发展而发展起来的数字移相技术,是目前移相技术的潮流。数字移相技术的核心是:先将模拟信号或移相角数字化,经移相后再还原成模拟信号。
数字移相主要有两种形式:一种是先将正弦波信号数字化,并形成一张数据表存入ROM芯片中,此后可通过两片D/A转换芯片在单片机的控制下连续地循环输出该数据表,就可获得两路正弦波信号,当两片D/A转换芯片所获得的数据序列完全相同时,则转换所得到的两路正弦波信号无相位差,称为同相。当两片D/A转换芯片所获得的数据序列不同时,则转换所得到的两路正弦波信号就存在着相位差。相位差的值与数据表中数据的总个数及数据地址的偏移量有关。这种处理方式的实质是将数据地址的偏移量映射为信号间的相位值。另一种是先将参考信号整形为方波信号,并以此信号为基准,延时产生另一个同频的方波信号,再通过波形变换电路将方波信号还原成正弦波信号。以延时的长短来决定两信号间的相位值。这种处理方式的实质是将延时的时间映射为信号间的相位值。
二.利用D/A转换实现移相
图2给出了一个设计实例。单片机为8031,D/A转换芯片采用两片8位字长的DAC0832,由于DAC0832的输出信号为电流型,故需加运算放大器将电流型信号转换成电压型信号。该设计中运算放大器采用双极型双运放4558。转换所用的数据为256个8位字长的数据,随程序一起存入ROM存储器中,即一个信号周期有256个转换值。
图2 D/A转换移相框图 |
进行D/A转换的程序段及正弦波的数值表如下:
程序清单:
MOV
R5,#00H;第一路正弦波起点地址的偏移量送R5 MOV
R1,#08H;第二路正弦波起点地址的偏移量送R1 LOOP:MOV A, R5
MOV DPTR,#TAB;取数据表首地址 MOVC
A,@DPTR;取第一路数据 MOV
DPTR,#0DFFFH;选通第一路DAC0832 MOVX
@DPTR,A;数据送第一路DAC0832 INC R5;
修改第一路地址的偏移量 MOV A,R1; MOV
DPTR,#TAB: MOVC A,@DPTR;取第二路数据
MOV DPTR,#0BFFFH:选通第二路DAC0832 MOVX
@DPTR,A;数据送第二路DAc0832 INC R1:
修改第二路地址的偏移量 MOV
DPTR,#7FFFH;选通两片DAC0832的转换端 MOVX
@DPIR,A;同时转换两路数据 AJMP LOOP TAB:DB
80,83,86,89,90,93,96 DB
99,9C,9F,A2,A5,A8,AB,AE DB
B1,B4,B7,BA,BC,BF,C2,C5 DB
C7,CA,CC,CP,D1,D4,D6,D8 DB
DA,DD,DF,E1,E3,E5,E7,E9 DB
EA,EC,EE,EF,F1,F2,F4,F5 DB
F6,F7,F8,F9,FA,FB,FC,FD DB
FD,FE,FF,FF,FF,FF,FF,FF DB
FF,FF,FF,FF,FF,FF,FE,FD DB
FD,FC,FB,FA,F9,F8,F7,F6 DB
F5,F4,F2,F1,EF,EE,EC,EA DB
E9,E7,E5,E3,E1,DF,DD,DA DB D8,D6f
D4,D1,CF,CC,CA,C7 DB
C5,C2,BF,BC,BA,B7,B4,B1 DB
AE,AB,A8,A5,A2,9F,9C,99 DB
96,93,90,8D,89,86,83,8O DB
80,7C,79,76,72,6F,6C,69 DB
66,63,60,5D,5A,57,55,51 DB
4E,4C,48,45,43,40,3D,3A DB
38,35,33,30,2E,2B,29,27 DB
25,22,20,1E,1C,1A,18,16 DB
15,13,11,10,0E,0D,0B,0A DB
09,08,07,06,05,04,03,02 DB
02,01,00,00,00,00,00,00 DB
00,00,00,00,00,00,01,02 DB
02,03,04,05,06,07,08,09 DB
0A,0B,0D,0E,10,11,13,15 DB
16,18,1A,1C,1E,20,22,25 DB
27,29,2B,2E,30,33,35,38 DB
3A,3D,40,43,45,48,4C,4E DB
51,55,57,5A,5D,60,63,66 DB
69,6C,6F,72,76,79,7C,80
此例中,数据表中数据共有256个,每两个相邻数据之间的相位差为3600÷256=1.40。我们只需改变R1中的值就可改变两路正弦波的相位差。程序中R1=8,故第一路正弦波滞后第二路正弦波1.40×8=11.20。
现将以这种方式实现移相的几个技术指标作如下分析:
1.波形失真度;正弦波的转换精度若不加其它的处理,则取决于D/A转换芯片的位数和数据表中数据的准确度。8位的D/A转换芯片其输入数据的范围是0-255,也就是说最多可将模拟量分为256级。在双级型的转换中,正、负半波被分为128级。
2.正弦波的周期;正弦波的周期由对数据表作一遍完整的转换所需要的时间决定。显然,单片机的速度、数据表中数据的个数以及程序的算法等因素都将影响正弦波的周期。上例中设8031的晶振频率为6MHz,则程序完成一个数据的转换所需要的时间是52us,故正弦波的周期为K×52
us×256=K×13312 us。K为转换下一个数据前等待的时间系数,当K=l时,为连续转换,此时正弦波的周期最短。
3.移相细度;移相细度(最小移动步长)取决于数据表中数据的个数,数据越多则移相细度越细。上例中数据表中数据的个数为256个,所以移相细度为3600÷256=1.40。若数据表中数据的个数为360个,则移相细度为3600÷360=10。表面上看,只要增加数据的个数,就可提高移相细度,但在不增加D/A芯片的位数的情况,单纯增加数据的个数,会使正弦波波形的失真度增加,并使正弦波的周期变长。在正弦波周期一定的情况下,数据表中数据的个数是有限制的。
三.利用单片机进行方波信号的移相
利用单片机进行方波信号的移相则是数字移相的另一个途经,已有多种成功之作,有些偏重硬件,有些偏重软件,总体说来,偏重硬件的精度较高,但制造及调试较复杂。偏重软件的结构简单,成本较低,但往往精度受影响。本文介绍一种己获得较为理想效果的设计。设计的原理框图如图3所示。
图3 方波移相框图 |
工作原理:作为参考信号的A,经整形后得到方波信号a,再利用锁相技术对a作3600倍频,并将此倍频信号作为单片机中CTC的计数脉冲,以此来产生相移和测量移相的实际值。由于计数脉冲是通过锁相环产生的,在锁相环允许的频率范围内,计数脉冲始终是a信号的3600倍,因此,可以看成是将a信号的一个信号周期分为了3600份,且允许a的频率可在一个小的范围内波动。若一个信号周期为3600,那么在一个信号周期内每个计数脉冲即代表0.10。我们只需以a信号为参考,延时若干个计数脉冲的时间来产生c信号即可做到移相,改变延时计数脉冲的个数即可改变移相值,亦可记录两个信号的上沿(或下沿)间的脉冲个数来获得两信号的相位差。正是由于锁相环的存在,才使得移相信号B与参考信号A的频率完全相同。比起由软件测得A信号的周期后再来产生B信号的方式来,其精度要高得多。锁相环倍频的频率愈高则移相的最小单位愈小,若作7200倍频,那么在一个信号周期内每个计数脉冲即代表0.050。
图4 移相时序 |
图4是以上述方式进行移相的时序图,设计数脉冲的频率是a信号的3600倍,那么从a信号的上沿开始经N个计数脉冲后产生c信号的上沿,则有a信号超前c信号
N×0.10。但我们需要的是A信号与B信号之间的移相。A信号与a信号的相位是相同的,但c信号与B信号的相位,由于波形转换电路的存在而不相同,其相位差视波形转换电路的参数而定。故A信号与B信号之间的实际移相值无法由N×0.10来计算。要获得A信号与B信号之间的实际移相值,可将B信号整形成b信号(两信号相位相同)后反馈给单片机,由单片机测量出a信号与b信号之间的计数脉冲个数n即可,实际移相值为n×0.10。改变N的值即可改变移相值。
要实现上述设计,除需要用锁相环产生计数脉冲外,还需要三个16位的计数器,分别用来计N,n及1800的值。笔者将8032中的计数器作如下分配:T0计N的值、T1计n的值、T2计1800的值。T0、T1及T2的启停全部由中断服务程序控制。接线如图3所示。具体是:
① a信号的上沿产生INT0中断,其中断服务程序分别将-N及0赋给TH0TL0和TH1TL1;然后使T0、T1开始计数。
② T0归零,其中断服务程序关闭T0;置P3.0;-1800赋TH2TL2;使T2开始计数。
③
T2归零,其中断服务程序清P3.0;关闭T2。
④
b信号的上沿产生INT0中断,其中断服务程序关闭T1;读取TH1TL1的计数值n.。
四.两种移相方式的性能比较
通过以上介绍,我们可以看到:以D/A转换方式实现的移相,虽然所用元件少,但输出信号的频率难以细调,特别是移相的最小单位太大
(1.40/步)。在50Hz频率下,要达到0.10/步移相细度难以办到。因此,该方式只适合于对频率要求不高,且移相角度固定的场合。以延时输出方波的方式实现的移相,其硬件电路比较复杂(锁相及波形变换电路)。输出信号的频率以参考信号的频率为准,而参考信号的频率则可以精确给定。移相的最小单位可小于0.10/步,这就为无级移相提供了基础。因此,该方式可用于对频率要求高,且需3600无级移相的场合。
参考资料
1.王秉时,移相技术的发展与移相器产品的进步,《电测与仪表》1998。3
2.沈德金,陈粤初等,MCS。51系列单片机接口电路与应用程序实例,北京航空航天大学出版杜
About Analysis and Implement of Digital Move-phase
Technology
Shen Weicong Liu Yiju
Abstract : The move-phase
between two signal with same frequency ,especially between power frequency
signals ,is as important method for imitating ,analyzing accident in a
relaying field in power industry ,and is a signal source for testing
various kinds of concerning phase . So,move-phase technology has practical
value widely .The article introduces two number move-phase method based on
single-chip so as to illustrate the principle for realization of
move-phase and make an analysis and comparison towards two move-phase
methods.
Keywords: move-phase single-chip D/A
conversion counter
|