基于51单片机的低频信号发生器的设计与仿真

2011-10-09 09:46逯久鑫樊军庆
电子设计工程 2011年16期
关键词:失真度正弦波子程序

逯久鑫,彭 旋,樊军庆

(海南大学机电学院 海南 儋州 571737)

单片机是在20世纪70年代中期发展起来的一种大规模集成电路芯片,是由中央处理器(CPU)芯片、ROM芯片、RAM芯片和I/O接口以及其他外围电路等通过印刷电路板上总线连接成一体的完整的计算机系统。具有成本低、体积小、性能稳定等特点。信号发生器是一种在生产实践和科技领域中都有着广泛应用的一种信号源。传统的正弦信号源根据实际需要一般价格昂贵,低频输出时性能不好且不便于自动调节,工程实用性较差。现利用单片机的优越特性制作一种体积小,使用方便的低频信号发生器。以AT89C51单片机为核心结合低速D/A,通过设计与编程实现了锯齿波、方波、正弦波的产生及其自由切换以及实现频率、相位的可调与多相波的同时输出。

1 方案设计

设计电路如图1所示,由波形的控制端口控制何种波形的输出并使连接在P0口的相应指示灯亮。信号数据由P0口输出,经低速D/A、放大电路、滤波电路最后输出。频率的调整信号由P2口输入,经过改变相应的延时子程序改变输出波的频率,相位的调整信号由P2口输入。而信号的幅值是通过改变连接在D/A上的滑动变阻器而改变D/A的参考电压来实现的[2]。

图1 电路图Fig.1 Circuit diagram

1.1 产生波形的原理

由D/A的模拟输出公式 Vout=B×VR(VR为常数,由参考电压 VREF=Vref+-Vref-决定;B 为数字量,常为一个二进制数,由单片机输出给D/A)可知:当改变数字量B时,D/A产生一个相应的Vout。如果单片机输出给D/A的B1值由延时子程序保持一段时间(如1/2周期T)后再突变为另一个数值B2并保持相同一段时间之后再变回B1,循环上述程序即可产生一个方波;当B3在00H~0FFH线性变化为B4时(如以 00H开始,每相隔一定的时间用“INC”指令加1,直至等于B4=0FFH)再突变回B3,此时Vout也产生一个线性值,同样循环上述程序便可产生锯齿波;同理,如果将正弦波对应的二进制码放在单片机的存储区,通过“MOVC A,@A+DPTR”不断取数据送P0端口,则在滤波输出端可得到正弦波信号[3]。此时由D/A转换出的波形信号是一种离散信号。既所获得的信号不是连续的模拟信号,而是由一个个离散的点组成的离散信号。所以,为了使输出的波形信号尽量减少失真,必须要获得准确的波形数据。为此,需要对模拟信号进行离散化处理[4]。这里以正弦信号为例进行说明。如图2所示,正弦信号是由D1,D2,D3……DN这种的点组合成的离散信号。为了减小输出信号的失真度,必须保证组成信号离散点的个数,使其尽可能的接近正弦波以满足失真度满足使用要求。根据不同的采样的多少计算出相应的失真度如表1所示。由表1可知,采样点越多,失真度越小[5]。离散时取得的采样点越多,数值量化的位数越多,则用DAC复现的波形精度越高。但是这时由于选取的点过多的话会影响单片机的输出速度(会直接影响得到的波形的频率)。由于离散点的原始数据存在于程序的表格中,离散点取的过多会使表格占用单片机内存过多。

图2 正弦波形的离散化Fig.2 Sine wave discretization

表1 采样点与失真度之间的关系Tab.1 Relationship between sampling points and the distortion degree

1.2 波形频率与相位的调整

由图2所示,由于得到的信号[6]是由一个个的离散点组成的离散信号。此时,一个点与另一个点之间的时间间隔△t1主要是由延时子程序(其中也包括单片机执行每个命令所使用的时间)所控制的。以取256个点为例,正弦波的周期T=256×△t1当延时子程序所控制的时间间隔△t1正弦波周期T也就有相应的时间变化。所以基于上述原理,通过在单片机的P2.0与P2.1两端口设两个独立按键来实现延时子程序所控制的时间间隔△t1的增大与减少进而实现波形频率的可调。以正弦波为例,当需要改变波形的初始相位时即改变波形在t=0时刻的值。由图2所示,可看出初始设定的正弦波在t=0时刻的值为零。这时单片机从查表程序中取出的是以零对应的表中数据,然后依次向外输送之后表中的数据,由此推知,如果在t=0时输出与图2中D1的值所对应的程序表中的数据,这时在t=0时刻的值就由0变为了D1,也就可以看出,正弦波形向左移动了一个单位。

1.3 波形幅值的调整

由D/A的模拟输出公式Vout=B×VR。当Vout与B为常量时,改变VR的大小可以相应改变Vout,即改变波形的幅值。由电路图1可以看出,Vref是由外部电源提供一个+5 V的电压,这里通过串联一个滑动变阻器R1。通过改变滑动变阻器R1的大小改变VR,当VR线性变化时也就实现了波形幅值的连续可调。

1.4 三波异相的同时输出

实际使用过程中通常会遇到要使用多波同时输出,为了实现这种功能可以使用3块低速D/A转换器(包括其后的放大电路与低通滤波电路)连接在同一单片机上。虽然一块单片机不能同时向3块D/A输出其所需要的数据,但可以通过单片机向D/A的控制端口输送不同的控制信号,是其中的一块D/A工作另两块不工作,并向其中的工作的D/A输送数据,然后关闭第一块D/A开放第二块,以此进行循环。三波的幅值是由各D/A的参考电压Vref决定,参照1.3中叙述的方法,可以改变各自的幅值。这里笔者通过单片机给通过P3.0,P3.1,P3.2 3接口连接相应3块D/A的控制端口。由程序控制P3.0,P3.1,P3.2 端口,依次使 P3.0,P3.1,P3.2 处于低电平,另外两个端口处于高电平(连接高电平端口的D/A处于不工作状态)。使单片机向3块D/A逐个输送数据便可实现3波同时输出。但由于单片机的主频限制,这时会使输出波的频率大大下降。

1.5 数模(D/A)转换部分

D/A转换部分选用的是DAC0832。DAC0832是CMOS工艺制造的8位单片D/A转换器,属于R-2RT型电阻网络的8位D/A转换器,建立时间150 ms,为电流输出型,并且片内带输入数字锁存器[7]。DAC0832与8031接成的是直通方式。由单片机的P0口直接把信号送达 “八位DAC寄存器”,ILE接+5 V,XFER、WR2接地以及 WR1与 CS分别接单片机的WR与P3.0(当使用多片D//A产生3相信号时,另外两个与P3.1与P3.2相接)相接。为提高波形质量和负载能力,后级处理采用低通滤波器和功率放大电路。滤波电路采用一阶低通滤波器,其阻带特性衰减太慢,一般为-20 dB/10,所以这种电路适用于对低频信号滤波特性要求不高的场合。

2 程序流程图

主程序的流程图如图3所示。子程序流程图如图4所示。

图3 主程序流程图Fig.3 Flow chart of main program

图4 子程序流程图Fig.4 Subroutines flowchart

3 软件仿真

在Protues绘制电路图,加载单片机程序,有如下仿真。

1)不同波形的仿真,如图5所示。

图5 不同的波形仿真Fig.5 Different waveform simulation

2)不同频率的波形,以正弦波为例,如图6所示。

图6 不同频率的波形Fig.6 Waveforms of different frequency

3)改变滑动变阻器来改变波形的幅值以正弦波为例,如图7所示。

图7 不同幅值的波形Fig.7 Waveform of different amplitude

4)三相正弦波波同时输出以正弦波为例,如图8所示。

图8 三相正弦波Fig.8 Three-phase sine wave

4 结 论

由以上仿真结果可以表明,以单片机为核心制作的小型低频的信号发生器[8]不仅成功的产生了方波、锯齿波、正弦波以及多钟波型的共同产生,并且实现了频率与相位的可调,而且波形并无明显失真现象。

不足之处就是笔者以12 MHz的晶振进行仿真,得到的信号频率很低。理论上提高晶振的频率或是使用更高速的单片机可以改善低频的现象。

[1]李道霖,韩绪鹏,肖春芳.正弦信号发生器的设计与实现[J].电子设计工程,2010,18(12):165-169.

LI Dao-lin,HAN Xu-peng,XIAO Chun-fang.Design and implementation of sinusoidal signal generator[J].Electronic Design Engineering, 2010,18(12):165-169.

[2]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.

[3]雷发禹,宾淼林,李永枧,等.基于单片机的信号发生器设计与仿真[J].邵阳学院学报:自然科学版,2009,6(3):39-43.

LEI Fa-yu, BIN Miao-lin, LI Yong-jian,et al.The design and simulation of signal generator based on MCU[J].Journal of Shaoyang University:Natural Science Edition,2009,6(3):39-43.

[4]徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,2004.

[5]徐阳,钟宝荣.基于单片机的低频信号发生器设计[J].长江大学学报:自然科学版,2008,5(3):71-73.

XU Yang,ZHONG Bao-rong.Design of a microcontrollerbased low frequency signal generator[J].Journal of Yangtze University:Natural Science Edition, 2008,5(3):71-73.

[6]李婷婷.绝缘子放电声信号研究及污秽度预测[J].陕西电力,2010,38(3):38-41.

LI Ting-ting.Study on acoustic emission signal of insulator and ESDD forecasting[J].Shaanxi Electric Power,2010,38(3):38-41.

[7]唐丽丽,何刚,文小森.基于89C51的信号发生器设计与实现[J].仪表技术与传感器,2007(2):76-78.

TANG Li-li,HE Gang,WEN Xiao-sen.Design and implement of signal generator based on 89C51[J].Instrument Technique and Sensor,2007(2):76-78.

[8]安平花,薛安成,毕天姝.调速系统引入远方信号抑制区域低频振荡可行性研究[J].陕西电力,2009,37(4):1-5.

AN Ping-hua,XUE An-cheng,BI Tian-shu.Feasibility study on governor-side damping controller for inter-area low frequency oscillation of power system with remote signal[J].Shaanxi Electric Power,2009,37(4):1-5.

猜你喜欢
失真度正弦波子程序
单相正弦波变频电源设计与实现
采用BC5016S的纯正弦波逆变器设计及制作
浅谈信号衰减对于民航地空通信信号质量的影响
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
基于蒙特卡罗法的失真度测量不确定度分析
基于嵌入式技术的电网同步正弦波发生装置研究
交流电失真度测量方法研究与实现
西门子840D系统JOG模式下PLC调用并执行NC程序
简化编程与子程序嵌套的应用