填充计数式相位测量的分析与实现
_________________________________________________________________________________________________________
来自:武汉新电新技术公司 更新时间:2003年9月9日-17时32分
摘要:填充计数式相位测量是相位测量中常用的一种测量方法,其测量精度除与被测信号的取样通道、幅值和频率有关外,还与计数脉冲的频率有关。本文详细地分析了被测信号的频率和计数脉冲的频率与测量精度之间的关系。并介绍一种以单片机为核心,配以TTL外围芯片,实现宽频率范围内的相位测量的设计,该设计在实际应用中获得理想效果。 关键词:相位,相位测量,计数脉冲。
About the phasic measure with filling pulse of analyze and
implement
一. 填充计数测量相位的原理
要获得两个同频信号间的相位值有多种实现方法。较为常用的一种是采用过零鉴相法,这种方法的基本要点是:将两个同频被测信号整形为两个方波信号,其前后沿分别对应于被测信号的正向过零点和负向过零点,然后测量出这两个同频方波的前沿(或后沿)之间的时间差比例,即为这两个被测信号之间的相位差,简称相差。
而要获得这个时间差比例,通常采用填充计数法,其基本原理见图1,设A,B为两路同频待测的正弦波信号,两信号经整形后形成A'和B'两路方波,若A'的两个前沿之间(一个信号周期)的计数脉冲的个数为N个,A'与B'的两个相邻前沿之间的计数脉冲的个数为n个,则A,B两路之间的相位差为:
二.计数脉冲频率与相位计算精度的关系
从上述方法测量相位的原理来看,要获得两个同频信号间的相位差,只要获得两个计数值N和n,通过(1)式计算即可。那么相位计算的分辩率就为3600/N
,也就是表示相差的最小单位。当被测信号的频率一定时,计数脉冲的频率就决定了相位测量的精度。如在一个信号周期内所获得的计数脉冲的个数为360个,则获得相差的最小单位是3600/360=10(可看作是每个脉冲代表10)。若在一个信号周期内所获得的计数脉冲的个数为3600个,则获得相差的最小单位就为3600/3600=0.10(可看作是每个脉冲代表0.10)。由此可见在一个信号周期内所获得的计数脉冲的个数越多,则获得相位差的最小单位也就越小,精度也就越高。要达到0.10以上的精度,则计数脉冲的频率必须是被测信号频率的3600倍以上。设被测信号频率为fx,计数脉冲频率为fa
,则设计时应满足:
fa>3600×fx (2)
三.利用MCS-51系列单片机片内资源实现相位测量的分析
由于需要进行计算,目前市场上流行的相位表,多数为单纯利用MSC─51系列机片内资源实现计数与计算。在典型的MSC-51系列单机片内,有2个16位的定时/计数器(CTC0,CTC1),5个中断源,时钟频率为3.8-12MHz
,这些都为实现相位差的测量与计算提供了一定的硬件基础。可利用片内2个定时/计数器,(CTC0,CTC1)分别记录前面所述的N和n的计数值。将CTC0,CTC1设置为定时方式(计片内机器周期数)。两个外部中断INT0,INT1,设置成下沿触发方式,并将上述A',B'两个方波信号接至INT0,INT1的输入端。利用INT0和INT1的中断服务程序来控制CTC0,CTC1的启动与停止,以此来获取N和n的计数值。
由于MCS-51系列单片机的最高工作频率为12MHZ,故CTC0,CTC1的最高计数频率为1MHz。16位字长的CTC0和CTC1计数范围是0ー65535。对于1MHz的计数频率而言,输入信号的频率响应范围的下限是:在一个信号周期内CTC的计数从零计到最大65535,而每一计数脉冲的周期是1μS(1MHz的计数脉冲)。故CTC从零计到最大值所需时间是:65535
*
1μS=65535μS,因而,输入信号的最低频率约为1/0.065535=15.26Hz。频率响应的上限是:虽然在一个信号周期内CTC的计数值大于零即可计算,但为了使计算结果具有足够的精度(至少0.10),故记录N值的CTC在一个信号周期内的计数值必须大于3600(因3600/3600=0.10)而CTC从零计数到3600所需时间为3600*1μS=3600μS。由此可得输入信号的最高频率约为1/0.0036=277.78Hz。
在最高的输入信号频率下,每一个计数脉冲即代表0.10机器每多计或少计一个脉冲就意味着带来一个0.10的误差。另外由于CTC的启停是由中断服务程序来控制的,那么CTC启停时刻不能绝对代表信号的下沿时刻,故误差是不可避免。当信号频率较低时,其误差尚可忽略。当信号频率越接近最高响应频率,其单片机所带来的误差就越不可忽略。以这样的方式构成的相位计,实际上的最高响应频率仅在100Hz左右。
四.高频计数的实现
从以上分析得知,若仅利用单片机的资源来实现相差的测量,是无法以高精度测得较高频率信号的相位差的。其关键所在是计数频率已无法再提高。鉴于这点笔者考虑到不用单片机内部的CTC计数,而是采用廉价的74系列芯片搭成高速计数,锁存电路。当计数值锁定这后,再读入单片机进行计算和显示。
具体实现的电路图如图2所示。高速计数器由4片74LS191串联组成16位计数器。计数脉冲的输入由一个触发器控制,触发器设计成自锁式,即由被测的周期信号A'锁定一个完整的信号周期后,封锁计数脉冲的输入
,不再响应后一个周期,待单片机处理完该周期内的数据后,由单片机先对计数器清零,然后解除触发器的封锁,系统才继续采集下一个信号周期的数据。周期计数锁存器(记N值)由74LS373(U8),(U7)组成,相差计数锁存器(记n值)由74LS373(U6),(U5)组成,其中(U5),(U7)锁存低8位数据,(U6)
,(U8)锁存高8位数据,当A'信号的上沿来临时,由触发器打开U10门,开始计数。当B'
信号的上沿来临时,锁存U6,U5(获得n值)。当A'信号的上沿再次来临时,锁存U8,U7(获得N值)。并封锁触发器。通知单片机依次读入U5,U6,U7,U8的锁存值进行计算。高频振荡源采用高精度晶体振荡器,以提供高精度的计数脉冲。
|
考虑到硬件资源的充分利用,硬件设计时将某些部件设计成公用,如相差计数和周期计数共用一个计数器。由于0≤n≤
N,故相差信号(B'信号的上沿)必定会在一个信号周期内的某个时刻出现,可利用这一信号将相差计数值n从计数器上浮获而锁入相差计数锁存器。当一个完整的周期结束时(A'信号的上沿再次出现),锁存周期计数值N(见图3)。
五.计数脉冲频率的设置与实现
如前面所述16位计数器的计数范围是0--65535。根据(1)式要获得足够的细度,在某一信号频率下计数范围应在[3600,65535]区间内。由于计数器的计数值与被测信号的频率成反比,与计数脉冲的频率成正比。即在某一固定的计数脉冲频率下,被测信号的频率越低(周期越长)则一个周期内所获得的计数脉冲的个数越多。反之越少。或在某一个固定的被测信号的频率下,计数脉冲的频率越多,则在一个信号周期内所获得的计数脉冲的个数就越多,反之就越少。若计数值为C,被测信号频率为fx,计数脉冲频率为fa,则有下式:
由于是16位的计数器,C值应满足3600 < C <
65525在某一个fa下,被测信号频率fx就会被限制在一定的范围内。即
fa |
|
fa |
(4) |
|
< fx < |
|
65536 |
|
3600 |
也就是fx的下限为 fa÷65535 Hz,上限是fa÷3600
Hz,从(4)式中可以看出某个fa,所对应fx其范围是有限的。要做到fx有一个较宽的频范围,单靠16位的计数器,用一个fa是不行的。故笔者在设计时,将计数脉冲源设计成有多档振荡频率的信号源,兼顾被测信号的低频区和高频区。由单片机根据读取的N值和计数器的溢出信号,通过电子开关U11,自动切换。当读取的N值太小时,切换到较高的计数频率,当计数器有溢出时,就切换到较低的计数频率。为了简单说明笔者将fa设为2M和10M两档。根据(4)式分析入下:
当fa=2M时: fx的下限为
2×106÷65535=30.5Hz
fx的上限为 2×106÷3600=555.6Hz
当fa=10M时:fx的下限为
10×106÷65535=152.6Hz
fx的上限为 10×106÷3600=2777.8Hz
从以上分析来看,从152.6Hz到
555.6Hz,两档计数频率应对这一频率区的被测信号是重叠的,即在该频率区内,这两档计数频率都满足(4)式,这个重叠区的存在是必要的,它保证了自动切换计数脉冲频率的操作不发生振荡。但重叠区不必这么大,在实际应用中,为了保证测量精度可通过程序将重叠区限制在200Hz至250Hz
这个范围内。
参考文献
1.张友德,赵志英,涂时亮编,单片微型机原理、应用与实验,复旦大学出版社。1993
|