1 引言
在实验室和工业部门,正弦波信号发生器被广泛用作测量仪器的信号源。正弦波信号发生器按制造技术可以分成模拟式和数字合成式两类,与模拟式发生器相比,数字合成式发生器产生的信号具有极好的幅值和稳定的频率,加之频率,相位和幅值可调,所以这类发生器得到了越来越广泛的应用,目前三相正弦波信号发生器比较少,而实验室和工业部门又经常需要(如三相交流标准电源)。这类信号发生器要严格保证3个正弦波之间的相位差为120度,传统的模拟技术难以做到这一点。本文采用了一种低成本的直接数字波形合成的方式,利用单片机发出的频率脉冲经计数器芯片后与5片存入数据点的EPROM2732组合,再经D/A转换后来产生三相正弦波信号。
2 工作原理
直接数字波形合成技术[1]的基本原理是设法将波形在采样点的值依次通过数模转换器(MDAC)转换成模拟量输出。在本文设计的超低频信号发生器中,波形生成的基本原理如图1所示,其基本环节由计数器(Counter)、只读存储器(EPROM)、数模转换器(MDAC)和滤波器组成,如下图所视:
将正弦波函数在一个周期内的值按等距采样N点,然后进行离散化函数求值,即有
再将D(i)按一定的比特数(取决于后面所用MDAC的位数)取整,从而得到:
式中,n-数模转换器MDAC的位数;
INT-取整函数。
然后把Dint(i)数值依次存入EPROM中。EPROM的地址线接到计数器的输出端,其数据线接到MDAC数据线的输入端。当计数器在计数脉冲的驱动下开始计数时,就会依次选中EPROM的0单元、1单元、……N单元地址,从而将其中数据依次取出送到MDAC的数据线上,经过MDAC转换后,从其输出就能得到相应幅值的模拟信号。当计数器计满N个数时,就得到一个周期的正弦波信号。如果N太小,该正弦波可能会出现阶梯。把此阶梯信号经滤波器滤波后,便可得到平滑的正弦波信号[2]。计数器循环往复不断计数,即可得到连续的正弦波信号。其他周期信号波形的合成可依据同样原理产生。
输出信号的频率由下式决定:
式中,fout-输出信号频率;
fCLK-计数脉冲频;
N-信号在一个周期内的采样点数。
输出信号的幅值Vm由MDAC的参考电压Vref决定。
由此可见,当周期信号在一个周期内的采样点数确定后,输出信号的频率仅取决于计数频率。因此,选用高性能的晶体振荡器来产生计数脉冲,可保证输出信号达到很高的精度。
3 计数器的设计
由于计数器后所接的程序存储器我们采用的是EPROM2732为4KB容量、12条地址线,所以计数器设计为两片74393级联的方式,使12条输出线接到5片EPROM2732的地址线上,这样就可以使EPROM中的地址依次加1并输出对应的存储值,连接方式如下图:
FOUT为单片机提供的稳定频率源,由于本设计为输出工频信号所以FOUT范围是1.44Mhz-2.52Mhz,经D/A转换与滤波后可输出40Hz-60Hz频率信号。FOUT接入CP脉冲输入端后Q0、Q1、Q2、Q3开始依次加1计数,将Q3再接入下一级的CP以此类推总共接四组,最后一组的Q3接地所以总计可输出12位循环累加计数器并可作为12条地址线接到EPROM2732上。
4 只读存储器EPROM2732的组合设计
由于我们设计输出三相交流正弦波信号源,这就要使三组正弦波之间具有120度的相位差这就要在出使预制地址时在时序上控制。系统设计为5片EPROM2732组合的方式来产生三组正弦波型号并相差120度相位[3],5片2732的地址线输入均为从2片74393级联后输出的12条计数器线,对5片EPROM的数据存储方式如下:
2732芯片A:0-359.9 高八位
2732芯片B:120-119.9高八位
2732芯片C:0-359.9低四位 120-119.9低四位
2732芯片D:240-239.9高八位
2732芯片E:240-239.9低四位+空位+240-239.9符号位+120-119.9符号位+0-359.9符号位
按照这样的存储方式来把数据放入每一个存储单元后在同一个地址输入信号的作用下就可以产生相差120度的三组正弦波信号。
5 程序存储器中数据点的计算
要将3600个点取正弦值并转换为十六进制数存入EPROM中是课题的技术难点,我们采用Excel表格中的VBA编程方法来对数据进行计算,可快速计算出3600个数据并以16进制的表示方式直观的显示在每一个Excel表格中,这种方法是本设计的一大亮点。
VBA是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。由于微软Office软件的普及,人们常见的办公软件ffice软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等,本设计采用VBA在Excel中的宏操作功能来对数据进行计算,代码如下:
Dim a As Long
Dim a1 As String
Dim s As String
Dim s1 As String
Dim T As Double
For i = 2 To 3600
s = ""
s1 = ""
str1 = "c" + CStr(i)
If CDbl(Range(str1).Value2) >= 0 Then
fhw = "0"
num = CDbl(Range(str1).Value2)
Else
fhw = "1"
num = -1 * CDbl(Range(str1).Value2)
End If
b = Int(num)
T = num - b
Do
a = b Mod 2
a1 = CStr(a)
s = a1 & s
b = b \ 2
Loop Until b = 0
c = 9
Do
T = T * 2#
If T > 1 Then
T = T - 1
s1 = s1 & "1"
Else
s1 = s1 & "0"
End If
c = c - 1
Loop Until c <= 0
Range("e" & CStr(i)).Value2 = s
Next
End Sub
6 实验结果
将数据全部存储后74393与2732开始工作,输出端产生预先存入的数据,目前仍为数字信号还要进行D/A转换,我们采用高精度数模转换器AD565[4]进行转换,AD565为12位输入恰好符合设计要求,滤波器的设计部分只需采用普通的隔直滤波器就可以达到要求,整体测试结果如下:
频率输出范围:40.000Hz-60.000Hz
波形失真度:<0.5%
频率稳定度:Δf<10-6Hz
三相幅值对称度:优于±0.05%
三相相位对称度:优于±0.1°。
从测试结果可以看出使用该方法所产生的三相基准正弦波信号直流分量小,频率幅值稳定,波形畸变小,达到了预期的要求。
7 结束语
本文所提出的采用数字合成来生成三相基准正弦波信号的方法克服了采用模拟正激振荡来产生正弦波稳定性差、精度不高和对工频抑制能力差等缺点。具有频率精确度高、波形失真小、幅值稳定、电路结构简单、同时可输出三相基准正弦波信号且三相对称度好等优点,是各种测量控制电路中理想的单相和三相基准正弦波信号源。本文作者将其应用在三相交流标准电源的研制中,取得了良好的效果。
参考文献:
[1] 杨丽君,张彪.智能数字式低频信号发生器[J].仪表技术,1999,(2):19-20.
[2] 王江,杨敏.一个基于DSP的数字合成正弦波发生器[J].仪表技术,1999,(2):9-11.
[3] 吕勇军,吕胜军,赵顾明.程控高精度信号发生器的设计[J].电测与仪表,1998,(3):14-15.
[4] 鞠阳.一种新型程控正弦信号发生器[J].仪表技术,1998,(3):9-13.
作者简介:张博(1982-),男,工程师,主要从事电测量智能化仪器仪表研发。