低频数字式相位测量仪c11石油大学(华东)尚海燕曹善甫梁锴摘要本系统由两片独立的CPU组成。
用MSP430实现基本要求中的相位、频率、电压测量及其数字和图形显示功能;用AVRmega8515实现扩展要求中的数字式移相信号发生器及其设置频率和相位的功能。
本设计充分利用了MSP430的高速硬件捕获功能来实现频率和相位的测量,并利用AD转换器对数据进行进一步处理,在高低频段分别采用多次测量、滤波算法、矢量分解、偏移修正等算法消除干扰提高精度,采用了大屏幕液晶显示测量的详细信息。
利用AVRmega8515配合16.384MHz的高速晶振,采用软件DDFS实现双路数字式移相信号发生器,由于使用优化算法,实现了高达每秒655.36K次的双路相位计算,输出频率为20Hz-40.48KHz,可实现20Hz的步进,系统硬件结构简单,频率、相位稳定度高;采用数码管显示和按键设置频率及相位差。
移相网络安题目要求由常规的模拟器件组成。
本系统主要由相位测量、移相网络和数字式移相信号发生器三大模块组成。
一、方案比较与论证1 、相位测量部分方案一:传统的模拟法。
该方案采用倍频、计数、门控等电路。
此方法难以实现大频率范围的相位测量,精度低、稳定性差。
方案二:采用双通道高速A/D对输入的信号进行采集,然后FFT和基波的矢量分解的方法计算出这两个信号的基频和相位。
该方案精度高,算法简单,对畸变波形有一定的处理能力。
但要求在AD采集前作频率测量,在信号频率较高时,需要使用超高速AD转换器并且需要较高的计算能力,一般需要使用DSP进行信号处理。
硬件复杂,难度较高。
方案三:整形鉴相法。
将输入的两相位不同的正弦波通过比较器进行整形,变成方波。
然后将两方波进行异或比较输出,从而得到两输入信号的过零时间差和两信号的周期,通过计算获得信号的频率和相位。
该方案较简单,但普通单片机需要通过扩展外部电路,增强计时、计数能力才能达到满足题目要求的精度。
方案四:采用较高性能的混合信号处理器MSP430,采用方案三和方案二相结合的方式对输入信号进行处理,在高低频段混合采用矢量分解和两相比较器输出方波信号跳变时间的分析,准确计算出频率和相位差。
此方法由于使用了混合信号处理器MSP430,集成度高,片内包含多路高速且有缓冲存储能力的俘获单元,可以准确记录方波信号跳变时间,片内包括速度高达200k sps且有连续操作和缓冲存储能力的12位ADC,为扩展各项功能提供了支持。
软件部分实现了自动频率测量、相位测量、信号源电压测量、信号波形显示,用软件采用平均、矢量等算法进行多次复合测量消除噪声干扰、接触不良等引起的误差,并能在输入信号异常(如直流分量高、信号严重畸变、信号太小、输入信号超量称等)状态下自动报警,给出提示。
此方案硬件比方案二和方案三都简单,而且测量精度高,功耗低,体积小。
2、数字式移相信号的产生部分方案一:采用单片机的定时器产生数字信号,通过滤波或锁相等环节输出正弦信号。
该方案对单片机要求低,但产生的信号频率低,频率步进大,模拟部分产生较大相移,难以保证输出的相位精度,很难达到设计要求。
方案二:采用硬件直接数字频率合成(DDFS)技术产生数字信号。
直接频率合成方法具有频率转换时间短、近载频相位噪声性能好、精度高,产生的信号频率范围宽等优点,但由于需要采用地址,相位计算,访问存储器操作等环节,导致直接频率合成器结构复杂、体积庞大、成本高,功耗大。
而且即使使用大规模的PLD,也需要单片机来实现键盘、显示的控制等工作。
方案三:采用软件DDFS方法产生数字信号。
该方案硬件实现简单,产生的信号精度高,频率范围宽。
采用高速的AVR单片机,使用16.384MHz的晶体振荡器可实现软件DDFS算法,可以以655.36K的速度刷新双D/A,可实现20Hz的频率步进和从20Hz到40.96KHz的可移相的0~360度的信号输出。
完全可以满足题目的要求。
此方案由于使用了较高性能的单片机和充分优化的软件结构,在不降低系统性能的条件下,硬件简单、成本低、功耗低、可靠性高,具有较高的实用性。
3、模拟移相部分采用常见的模拟器件电阻,电位器,电容和运放的组合电路实现移相。
直接对模拟信号进行移相,如阻容移相,变压器移相等,早期的移相通常采用这种方式。
采用这种方式制造的移相器有许多不足之处,如:输出波形受输入波形的影响,移相操作不方便,移相角度随所接负载和时间等因素的影响而产生漂移等。
该方案由于使用模拟器件,因此精度不是很高,硬件系统比较复杂。
此类方案形式较多,但都难以消除作为模拟系统的弱点,在此不作详细讨论。
题目的基本要求部分既是采用此方案,我们按要求完成了这部分电路。
二、系统设计与计算1、数字式相位测量仪的设计总体设计:数字式相位测量仪的设计框图如图2-1所示。
使用高性能单片机MSP430F149为核心,前端的两路信号分别通过跟随器,直流耦合电路,提高了系统输入阻抗。
然后使用LM339比较器进行整形,输入到单片机的捕获端。
再令引一路信号,送给单片机的内部AD转换器。
通过单片机判断两通道的输入信号的上升沿和下降沿,对来自AD的数据进行处理,从而计算出两信号的相位差。
软件实现流程图:数字式相位测量仪的软件流程图如图2-2所示:图2-2 数字式相位测量仪的软件流程图器件的选择与计算:要使LM339比较器输出稳定,则要求其输入阻抗小于20K,而本题目要求系统输入阻抗大于100K,因此,在输入端我们选择使用一片LM324作为信号的输入缓冲,从而提高了系统的输入阻抗。
为了减少噪声的影响,在输入端我们使用200K的电阻接地。
如图2-3所示:图2-3 缓冲电路图LM339比较器比较容易受干扰,因此,在电源部分使用鉭电容,将未用输入端接固定电平,以保证LM339的稳定性。
LM339的输出为OC结构,使用时要接上拉电阻和分压电阻,使输出电平符合单片机要求。
如图2-4所示:如果使用施密特触发器可以是比较信号更稳定。
但这样影响相位的测量,因此本方案采用直接比较法,在软件中消除零点及噪声的干扰。
通过捕获处理后的两通道的方波,就可计算出频率和相位。
原理如图2-5所示:图2-5 相位计算示意图 计算公式为:tt∆=∆φ根据题目要求在20KHz 时,应保证2度的精度。
可计算出单片机的计时分辨精度为:6310*6.32360*10*20=Hz 当单片机的计时分辨精度优于3.6MHz 时,才能保证题目要求的精度。
我们使用的430F149使用8MHz 的晶振,足可以保证精度的要求。
以上是本方案的基本原理,实际使用中采用噪声消除和零点平移修正来减少系统误差。
本方案采用24位计时器,可以保证在被测信号周期为2秒时不会溢出。
可以满足对被测信号的最低频率要求。
误差分析:此方案中采用计时和鉴相处理。
其中计时部分使用单片机系统时钟。
此时钟来自于晶振,其误差很小可以忽略。
鉴相部分精度取决于从信号输入端到单片机捕获端通过的跟随器、电压比较器所产生的相位差和时间滞后。
本方案使用了直流耦合,使得由跟随器产生的相移误差几乎为零。
而两通道的电压比较器的时间滞后相同,为130ns 。
此外,本设计中使用单片集成的运放和比较器,一致性好,不会对测量结果产生影响。
由于输入信号和运放、比较器固有特性都可能产生零点偏移,使比较器的输出不平衡。
如果单边沿检测,显然影响精度。
本方案使用上下边沿都检测,然后通过计算来修正由零点漂移引起的误差。
2、数字式移相信号发生器的设计实现的基本原理:DDFS原理:DDFS的基本原理框图如图2-6所示。
图2-6 DDFS 的基本原理图DDFS包括信号幅值计算单元、存储正弦数据表的ROM存储器、DAC和输出滤波器组成。
正弦波的信号幅值以数据表的形式存储在ROM存储器中,由信号幅值计算单元以恒定的速度进行相位累加计算,计算出当前时刻的输出正弦信号的相位,然后用此相位在ROM种查得应送往DAC的数值。
通常使用的相位累加器由N位加法器与N位累加寄存器级联构成。
每来1个时钟脉冲,加法器将频率控制数据与累加寄存器输出的累积相位数据相加,把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上1个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下1个时钟的作用下继续与频率控制数据相加。
这样,相位累加器在参考时钟的作用下,进行线性相位累加,当相位累加器累积满量时就会产生1次溢出,完成1个周期性的动作,这个周期就是DDS合成信号的1个频率周期,累加器的溢出频率就是DDS输出的信号频率。
用相位累加器输出的数据作为取样地址,对正弦波波形存储器进行相位-幅值转换,即可在给定的时间上确定输出的波形幅值。
数模转换及低通滤波器:DAC将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号,低通滤波器用于滤除不需要的取样分量,以便输出特定频率段及平滑的正弦波信号。
按照Nyquist准则,最高输出频率可达0.5fc。
但考虑到实际低通滤波器性能的限制,实际最高输出频率一般取为40%fc。
通过对DDFS原理的分析,我们发现DDFS核心的是相位累加器、相位计算和ROM查表算发,通过CPU和软件完全可以完成同样的工作,本题需要输出移相信号,需要使用两路同频DDFS。
经过理论计算和软件测试,我们选用了A VRmega8515单片机,使用优化算法实现了图2-6的算法,实现了高达每秒655.36K次的双路相位计算。
软件DDFS与硬件DDFS的基本原理是相同的,同样输出频率下效果完全相同。
但软件DDFS用高性能的单片机来代替过去用PLD、ROM和单片机才能实现的功能。
从而使得操作更灵活、硬件电路更简单。
总体设计:数字式移相信号发生器的总体设计框图如图2-8所示:图2-8 数字式移相信号发生器的设计框图器件选择及相关的计算:题目要求频率范围在20Hz-20KHz,步进20Hz可得:频控字K从最低输出频率到最高输出频率变化至少20KHz/20Hz=1000,因此至少使用10位计数器。
从单片机的存储能力和计算能力考虑,使用16位无符号整形表示K,使用范围1-2048,即实际使用11位。
根据要求,为了在最高频率20KHz时输出平滑波形,使用32点输出,因此选择了具有665.36KHz的DA输出速度的DA0800器件。
在此频率下,在输出20.48KHz信号时保持32点输出,波形相当平滑。
最高可以输出40.96KHz信号。
在软件DDFS计算过程中,移位和计算ROM表的地址比较耗时,为了提高计算速度,使用了空间换时间的方法,在ROM表中连续构造每周波2048点的正弦表3个。
通过这种方法,减少了计算地址移位的时间和避免了B相相位叠加后溢出的问题。
通过优化,AVR CPU可以在25机器周期内完成两通道DDFS计算并送DA输出。