摘要:两个同频信号之间的移相,是电子行业继电保护领域中模拟、分析事故的一个重要手段,利用移相原理可以制作校验各种有关相位的仪器仪表、继电保护装置的信号源。因此,移相技术有着广泛的实用价值。本文介绍两种基于单片机的数字移相方法,借以说明实现移相的原理,并对两种移相方法进行性能分析和比较。
关键词:移相 单片机 D/A转换 计数器
两个同频信号之间的移相与实现方式
所谓移相是指两种同频的信号,以其中的一路为参考,另一路相对于该参考作超前或滞后的移动,即称为是相位的移动。两路信号的相位不同,便存在相位差,简称相差。若我们将一个信号周期看作是3600,则相差的范围就在0°~360°。
要实现移相,通常有两个途径:
一是直接对模拟信号进行移相,如阻容移相,变压器移相等,早期的移相通常采用这种方式。采用这种方式制造的移相器有许多不足之处,如:输出波形受输入波形的影响,移相操作不方便,移相角度随所接负载和时间等因素的影响而产生漂移等.在此不予讨论.另一个是随电子技术的发展,特别是单片机技术的发展而兴起的数字移相技术,是目前移相技术的潮流。数字移相技术的核心是:先将模拟信号或移相角数字化,经移相后再还原成模拟信号。
数字移相主要有两种形式:
一种是先将正弦波信号数字化成,并形一张数据表存入ROM芯片中,此后可通过两片D/A转换芯片在单片机的控制下连续地循环输出该数据表,就可获得两路正弦波信号,当两片D/A转换芯片所获得的数据序列完全相同时,则转换所得到的两路正弦波信号无相位差,称为同相。当两片D/A转换芯片所获得的数据序列不同时,则转换所得到的两路正弦波信号就存在着相位差。相位差的值与数据表中数据的总个数及数据地址的偏移量有关。这种处理方式的实质是将数据地址的偏移量映射为信号间的相位值。
另一种是先将参考信号整形为方波信号,并以此信号为基准,延时产生另一个同频的方波信号,再通过波形变换电路将方波信号还原成正弦波信号。以延时的长短来决定两信号间的相位值。这种处理方式的实质是将延时的时间映射为信号间的相位值。
利用D/A转换实现移相
图1 给出了一个设计实例。单片机为8031,D/A转换芯片采用两片8位字长的DAC0832,由于DAC0832的输出信号为电流型,故需加运算放大器将电流型信号转换成电压型信号。该设计中运算放大器采用双极型双运放4558。转换所用的数据为256个8位字长的数据,随程序一起存入ROM存储器中,即一个信号周期有256个转换值。
在进行D/A转换的程序中,数据表中数据共有256个,每两个相邻数据之间的相位差为360o÷256=1.4o。我们只需改变R1中的值就可改变两路正弦波的相位差。程序中R1=8,故第一路正弦波滞后第二路正弦波1.4o×8=11.2o。
利用单片机进行方波信号的移相
利用单片机进行方波信号的移相则是数字移相的另一个途经,已有多种成功之作,有些偏重硬件,有些偏重软件。总体说来,偏重硬件的精度较高,但制造及调试较复杂;偏重软件,的结构简单,成本较低,但往往精度受影响。本文介绍一种己获得较为理想效果的设计。设计的原理框图如图2所示。
工作原理:作为参考信号的A,经整形后得到方波信号a,再利用锁相技术对a作3600倍频,并将此倍频信号作为单片机中CTC的计数脉冲,以此来产生相移和测量移相的实际值。由于计数脉冲是通过锁相环产生的,在锁相环允许的频率范围内,计数脉冲始终是a信号的3600倍,因此,可以看成是将a信号的一个信号周期分为了3600份,且允许a的频率可在一个小的范围内波动。若一个信号周期为360o,那么在一个信号周期内每个计数脉冲即代表0.1o。我们只需以a信号为参考,延时若干个计数脉冲的时间来产生c信号即可做到移相,改变延时计数脉冲的个数即可改变移相值,亦可记录两个信号的上沿(或下沿)间的脉冲个数来获得两信号的相位差。正是由于锁相环的存在,才使得移相信号B与参考信号A的频率完全相同。比起由软件测得A信号的周期后再来产生B信号的方式来,其精度要高得多。锁相环倍频的频率愈高则移相的最小单位愈小,若作7200倍频,那么在一个信号周期内每个计数脉冲即代表0.05o。
图3是以上述方式进行移相的时序图,设计数脉冲的频率是a信号的360o倍,那么从a信号的上沿开始经N个计数脉冲后产生c信号的上沿,则有a信号超前c 信号 N×0.1o。但我们需要的是A信号与B信号之间的移相。A信号与a信号的相位是相同的,但c信号与B信号的相位,由于波形转换电路的存在而不相同,其相位差视波形转换电路的参数而定。故A信号与B信号之间的实际移相值无法由N×0.1o来计算。要获得A信号与B信号之间的实际移相值,可将B信号整形成b 信号(两信号相位相同)后反馈给单片机,由单片机测量出a信号与b信号之间的计数脉冲个数n即可,实际移相值为n×0.10。改变N的值即可改变移相值。
要实现上述设计,除需要用锁相环产生计数脉冲外,还需要三个16位的计数器,分别用来计N,n及180o的值。笔者将8032中的计数器作如下分配:T0 计N的值、T1计n的值、T2计180o的值。T0、T1及T2的启停全部由中断服务程序控制。接线如图2所示。具体是:
① 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.4o/步)。在50Hz频率下,要达到0.1o/步移相细度难以办到。因此,该方式只适合于对频率要求不高,且移相角度固定的场合。
以延时输出方波的方式实现的移相,其硬件电路比较复杂(锁相及波形变换电路)。输出信号的频率以参考信号的频率为准,而参考信号的频率则可以精确给定。移相的最小单位可小于0.1o/步,这就为无级移相提供了基础。因此,该方式可用于对频率要求高,且需360o无级移相的场合
|