杭州瑞利声电公司杭州310012
摘要:提出一种将单片机产生的方波信号转换成正弦波信号的方法。对产生的方波信号先采用电路积分,再通过低通滤波的方法可实现需要的正弦波信号,其中信号的频率、幅度等参数由软件调节。相关的试验结果证实该设计与理论比较相符。该设计产生的信号频率较低,在某些实际的电路调试中可以作为信号发生器使用,也可以作为某些探头的信号激励源。
关键词:单片机;方波信号;正弦波;信号源
在很多实际的电路应用中,正弦波信号并不能直接由单片机产生,因此常常需要将单片机输出的方波信号转换成正弦波信号,比如在石油行业的生产测井仪器中,有时为了作为激励源,所需的频率较低,并且波形为正弦波,因此常规的方波信号并不能满足实际的需要,且所需的频率有时是比较低的。
本文以生产测井仪器中电阻率仪为背景,通过波形变换以及移相电路和AD采样,检测生产井中的含水率大小,但是需要说明的是如果在含水率大于30%的情况下,该方法并不适用了。另外,由于激励源的频率较低,因此在RC移相电路中移相角度也会相对比较明显。
1基本原理
将方波信号转换成正弦波信号分两步:通过积分电路将方波转换成三角波,再将三角波信号通过低通滤波器转换成正弦波。图1所示是使用运算放大器LM324组成的方波转换成三角波线路[1]。图中电阻和电容的匹配构成积分电路,输入一个方波信号,输出就可得到一个三角波,设方波振幅为5V,周期为13ms(即频率为77Hz),脉冲占空比为50%的信号,输出就得到峰值为2.5V的三角波。仿真产生的三角波波形图如图2所示。
根据积分运算电路的有关理论,当给定一个方波信号时,通过求解某段时间内的积分值,所得的输出电压为:
(1)
R、C分别为输入电阻和积分电容。从而可得输出的三角波的峰值大小。
将三角波转换成正弦波常用的手段有滤波法和折线法,滤波法也称幂级数展开法。滤波法适用性比较强,可以适用于任何频率,而使用折线法适用的频率有一定的局限性。当频率比较高时,由于受到单片机时钟周期的限制,频率较高时,采用折线法得到的波形形态非常不好,利用滤波法则可以得到比较纯的正弦波;当频率较低时,两种方法皆可。本文采用的是基于滤波的方法。由于设计的频率为75Hz,因此采用的是低通滤波器。具体电路仿真电路及波形图见图3、图4。
将三角波展开为傅里叶级数可知,它含有基波3次、5次等奇次谐波,因此通过低通滤波器滤除高次谐波,可将三角波转换成正弦波。将三角波按傅里叶级数展开为
(2)
图3三角波转正弦波仿真电路
本设计中利用的单片机型号是AT89C51,以75Hz的信号为例进行阐述,但是在实际的应用过程中,我们需求的信号可能并不是本文中提到的75Hz,因此,需要根据实际的需要调整积分电路中的电阻和电容值,甚至有可能需要对运放进行重新选型以满足需要。如果频率并不为这个值,可以依据公式(1)来重新匹配电阻和电容的值,电阻和电容的乘积为75Hz频率下乘积值的倍数就可非常方便的进行调解[3]。在图4中红线表示通过单片机产生的方波信号,蓝色的为通过第一级运放所组成的积分电路产生的三角波,黄线表示通过第二级滤波电路产生的正弦波信号。
图4仿真波形图
2软件实现
本设计中利用89C51产生的频率为75Hz的方波信号,尽管输出频率固定,但是我们可以根据实际的需要通过对程序进行更改,就可以产生任何我们需要的频率的方波信号[2]。程序代码如下:
#include<reg51.h>
#defineucharunsignedchar
sbitP10=P1^0;//定义输出方波的端口
//延时函数,修改i或者j的值可以改变输出频率
voiddelay100us()
{
unsignedchari,j;
i=2;
j=15;
do
{
while(--j);
}while(--i);
}
voidmain()
{
while(1)
{
P10=0;
delay100us();
P10=1;
delay100us();
}
}
通过本设计,可以做成简单的正弦波信号源,该信号源由于输出频率低,对运放的性能要求不高,并且该运放的输出带载能力强,可以满足很多实际的需求,达到了设计的预期,方案设计合理。
3结束语
利用本电路,结合移相电路进行了相关的试验,与实际的理论是非常接近的。当在不同导电特性的介质中进行试验时,由于电阻率和介电常数的不同,利用此电路可以看到移相的角度会有比较明显的变化,因此利用此电路可以达到设计的初衷,也能在其他一些实际的电路设计与调试中得到应用。该设计所需的外设电路简单,易调试,可靠性较高,通用性也比较强。
参考文献
[1]华成英.模拟电子技术基本教程[M].北京:清华大学出版社,2010.
[2]赵光宙.信号分析与处理[M].北京:机械工业出版社,2001.
[3]秦曾煌.电子技术[M].北京:高等教育出版社,1990.