第七组信号波形合成实验电路.docx

上传人:b****7 文档编号:9737389 上传时间:2023-02-06 格式:DOCX 页数:25 大小:1,004.64KB
下载 相关 举报
第七组信号波形合成实验电路.docx_第1页
第1页 / 共25页
第七组信号波形合成实验电路.docx_第2页
第2页 / 共25页
第七组信号波形合成实验电路.docx_第3页
第3页 / 共25页
第七组信号波形合成实验电路.docx_第4页
第4页 / 共25页
第七组信号波形合成实验电路.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

第七组信号波形合成实验电路.docx

《第七组信号波形合成实验电路.docx》由会员分享,可在线阅读,更多相关《第七组信号波形合成实验电路.docx(25页珍藏版)》请在冰豆网上搜索。

第七组信号波形合成实验电路.docx

第七组信号波形合成实验电路

信号波形合成实验电路设计

队员:

张秀山曹方雷汪亮祝文瑾

 

摘要:

本系统利用函数信号发生器MAX038产生300KHz方波,经过分频、滤波处理,得到10KHz、30KHz、50KHz三种正弦波并分别作为基波,三次谐波、五次谐波进行移相、叠加,最终得到一个近似方波信号。

该系统主要模块为:

方波振荡模块,分频模块,滤波模块,移相模块和加法器模块。

其中分频电路是利用数字芯片74LS90和CD4013搭建而成,分频性能突出。

滤波模块采用高性能集成运放OPA820,选频性能良好。

经测试,电路大部分指标达到或超过题目发挥部分的要求。

关键字:

分频谐波合成

 

一方案设计与比较

1.1方波振荡方案比较

方案一:

用UA741放大电路外接若干二极管、电阻电容。

方波发生电路只有两个暂态,即输出不是高电平就是低电平,而且两个暂态自动地相互转换,从而产生自激振荡。

因此,电压比较器就成为方波发生电路的重要组成部分。

为了使输出的高、低电平产生周期性变化,电路中用延迟环节来确定暂态的维持时间,并引入反馈来实现"自控"。

这种方案硬件电路复杂,可靠性差。

方案二:

由MAX038构成的方波信号源。

MAX083是一种精密高频波形发生器件。

将该器件结合外围元件就可以产生从0.1Hz~20MHz的低失真正弦波,三角波,矩形波等脉冲信号。

这些信号波形的频率和占空比可以由电流,电压或电阻控制。

该电路具有精密,低失真,低漂移,外围元件少的特点。

综合电路的复杂程度和稳定性的考虑,选择方案二。

1.2分频方案比较

方案一:

采用低温多晶硅工艺,构成工作容限大的分频电路。

构成分频电路的级联的单位分频电路之中,对初级单位分频电路附加电平移位器和电荷泵电路。

电荷泵电路基于点时钟信号将输入电压升压并生成升压电压,并向初级单位分频电路供给,初级单位分频电路用升压电压来驱动,因此提高了电流驱动能力。

通过提高被输入频率较大的点时钟信号的初级单位分频电路的驱动能力,能够增大分频电路的工作容限。

方案二:

74ls00四集成与非门与cd4013两D触发器集成芯片组合集成电路。

74ls90不仅可用于计数,还能用于分频。

通过改变引脚接法,来改变其进制。

cd4013不仅能二分频,还能对波形整形,使方波的占空比为50%。

通过两种芯片的级联和简单的外围电路,就能得到精准的分频信号。

基于价格和电路的繁复程度,选择方案二。

1.3滤波方案比较

方案一:

采用专门的可编程滤波芯片。

MAX26x系列芯片可完成此要求,其内部利用开关电容来实现中心频率的控制。

外围电路结构简单,程序控制方便。

但其直流偏移及本身开关电容特性引入的噪声不能忽略。

方案二:

采用状态变量可调滤波电路。

这种滤波电路截止频率与Q值受不同元件控制且互相没有影响。

可以用乘法型数模转换芯片代替电路中控制中心频率的电阻,通过程序改变DA输出以改变等效接入电阻达到中心频率程控的目的。

设计中采用DAC0830来代替本滤波电路中的相关控制电阻,通过单片机控制DAC0830来改变其输出电流关系,从而改变等效接入电阻而达到程控的目的。

方案三:

二阶巴特沃斯带通滤波器。

二阶巴特沃斯滤波带通滤波电路是最简单也是最常见的滤波电路,该滤波器的幅频响应在通带中具有最大平坦度,且电路简单易操作。

综和比较后,选择方案三。

1.4移相方案比较

方案一:

同步信号,正弦信号通过过零比较器变为相位与周期一致的同步方波,上升沿与下降沿检验电路检验出同步方波的上升沿和下降沿,产生的两个尖脉冲分别对应同步信号正负半周的触发信号。

采用该触发信号启动计数器进行减法计数,A/D转换器输出值置为计数器的初值,当减法计数器为0时则产生移相后的尖脉冲,减法计数器的启动和停止脉冲之间的相位差,即对应于脉冲群与正弦波之间的相位差Δα。

方案二:

RC移相电路主要是基于电容器的电流超前电压90度这一特性再结合有源器件构成。

该电路外围电路简单,便于实行操作。

经过综合考虑,选择方案二。

二理论分析与计算

2.1方波的合成与分解

任何电信号都是由各种不同频率、幅度和初相的正弦波迭加而成的。

对周期信号由它的傅里叶级数展开式可知,各次谐波为基波频率的整数倍。

数学上可以证明方波可表示为:

图1.135次谐波分解与合成图

通过一个选频网络可以将电信号中所包含的某一频率成份提取出来。

将被测方波信号加到分别调谐于其基波和各次奇谐波频率的一系列有源带通滤波器电路上。

从每一有源带通滤波器的输出端可以用示波器观察到相应频率的正弦波。

本实验所用的信号是300KHz的方波,而用作选频网络的3种带通滤波器的输出频率分别是10KHz、30KHz、50KHz。

在理想情况下,偶次谐波应该无输出信号,始终为零电平,而奇次谐波则具有很好的幅度收敛性,理想情况下奇次谐波中一、三、五次谐波的幅度比应为1:

1/3:

1/5。

但实际上因输入方波的占空比较难控制在50%,且方波可能有少量失真以及滤波器本身滤波特性的有限性都会使得偶次谐波分量不能达到理想零的情况。

2.2三角波的合成

三角波可以表示为:

在这里将得到的三个正弦波进行波形幅度上的调整,将基波,三次,五次谐波进行1.5倍,-0.5倍,0.3倍放大,得到幅值为4.5V,-0.5V,0.18V正弦波,

三硬件电路设计

3.1系统框图

 

图2.硬件框图

本系统经过方波振荡电路产生一个300KHz的双极性方波,经过数字电路分别进行分频,得到频率为10KHz、30KHz、50KHz的脉冲,再分别进行电容隔离,滤波,得到三个相位不同的正弦波,再经过移相电路,使三个正弦波相位一致,并通过单片机编程将三个正弦波的幅值检测并显示出来。

最后将所得的三个正弦波送到加法器中,合成一个近似方波和三角波,其中近似方波频率为10KHz,波形幅度为5V。

3.2主要模块电路

3.2.1分频电路

此电路中所用的74LS90具有计数功能,分频就是基于此种功能。

74ls90不仅可用于计数,还能用于分频。

如6进制计数器即6分频电路。

一片7490可构成最大进制计数器是十进制。

若分频数大于10,则要用两片或多片级联。

计数功能采用反馈清零法,但得到的波形占空比并不为50%。

在此就可以用D触发器进行整形。

D触发器不仅能对波进行整形,还能进行二分频。

该电路就是对300KHz的方波分别进行3分频,5分频,15分频后,再将所得波形用D触发器进行二分频并整形,得到目标波形(原理图请见附录中图13)

3.2.2滤波电路

二阶巴特沃斯带通滤波器的Q值越小,则带通越小,也就能得到我们所需频率的波(整体原理图请见附录中图16)主要数据计算公式为:

经测量得到,从30分频后的方波信号中滤出10kH的正弦波,其峰峰值为6.16V,通频带宽为1kHz,中心频率为10.11kHz,增益为1.2V/V。

图3.幅频,相频特性图

对10kHZ信号进行滤波所的信号的幅频特性(蓝线)及相频特性(红线)图;-3db带宽为:

9.327kHz~10.72kHz

图4.频率-延时图

在10kHz位置,滤波使信号延时,改变了信号相位。

得到30KHz与50KHz的正弦波原理与上述相似,在此不做赘述。

3.2.3三角波合成电路

将移相之后的正弦波经过幅值调整处理之后,得到幅值比为1:

-1/9:

1/25的正弦波,将所得正弦波送到加法器三个信号输入端进行叠加,即得到所需三角波。

所使用的主要芯片为OP37。

OP37是一种低噪声,非斩波稳零的双极性运算放大器。

它具有非常低的输入失调电压,所以OP37在很多应用场合不需要额外的调零措施。

OP37同时具有输入偏置电流低和开环增益高的特点,这种低失调、高开环增益的特性使得OP37特别适用于高增益的测量设备和放大传感器的微弱信号等方面。

宽的输入电压范围与高达110dB的共模抑制比和高输入阻抗的结合,在同相电路阻态中提供了很高的精度,即使在很高的闭环增益下,也能保持极好的线性和增益精度(原理图请参照附录中图15)

3.2.4方波振荡电路

该电路主要以芯片MAX038为主(原理图请见附录中图12)

MAX038是一种精密度高,低失真,高频率波形发生器件。

该芯片只需要个别外围元件就能产生从0.1Hz~20MHz的低失真正弦波,三角波,矩形波等脉冲信号。

这三种波形波形由波形设定端A0,A1控制,其编码如下表所示(其中X表示任意状态,1为高电平,0为低电平):

A0

A1

波形

X

1

正弦波

0

0

方波

1

0

三角波

表1.A0和A1编码表

这些波形的频率和占空比可以由电流,电压或电阻控制,所以MAX038实质上也是一种RLC变换器件。

为了简化电路,引脚DADJ接地,使该信号发生器各种波形的占空比固定为50%。

MAX038的输出频率由IIN,FADJ端电压和主振荡器COSC的外接电容器CF三者共同确定。

当UFADJ=0V时,输出频率f0=IIN/CF,IIN=Uin/Rin

=2.5/Rin;当UFADJ≠0V时,输出频率f=f0(1-0.2915UFADJ)。

3.2.5加法器

图5.加法器电路原理图

此电路即为一个简单的同向加法电路。

将三个输入信号同时加到运放同向端,其输入输出电压的关系为:

令R1=R2=R3=10KΩ,Rf=2R=20KΩ,则有:

输出电压Vo=Vi1+Vi2+Vi3

3.2.6移相电路

图6.RC移相图

在R-C串联电路中,若输入电压是正弦波,则电路中各处的电压、电流都是正弦波。

从相量图可以看出,输出电压相位引前输入电压相位一个φ角,如果输入电压大小不变,则当改变电源频率f或电路参数R或C时,φ角都将改变,而且A点的轨迹是一个半圆。

同理可以分析出,以电容电压作为输出电压时,输出电压相位滞后输入电压相位一个φ角。

因此,不论以R端或C端作输出,其输出电压较输入电压都具有移相作用,这种作用效果称RC移相。

再结合有源器件,就构成了RC有源移相电路(电路原理图请参照附录中图14)

四软件设计

软件部分以MSP430F149单片机为控制核心,通过AD采样,利用冒泡法,将峰值检测出。

再配合复位键的使用,确保被检测出的电压值是稳定的,以此实现对幅值的稳定显示(具体程序请参见附录)

 

图7.程序流程图

 

五系统测试和数据分析

5.1测试仪器

TDS2012B数字示波器

5.2测试方法

分别测量经滤波处理后的基波,三次谐波和五次谐波的峰峰值以及频率,然后测量合成电路产生的近似方波和三角波的频率以及峰峰值,并配以检测图形。

5.3相关测试数据

测量量

数据

f/KHz

Vpp/V

测量值

理论值

测量值

理论值

一次谐波

10.11

10

6.16

6

三次谐波

30.21

30

1.88

2

五次谐波

50.51

50

1.232

1.2

合成方波

10.09

10

10.32

10

合成三角波

10.07

10

11.13

11

 

表2.测量数据记录表

测量结果图形请参照附录中图8至图11和图17至图19。

5.4结果分析

由图8可以得到方波信号源产生一频率为300.6KHz的双极性方波,图9至图11为此方波分别进行30分频,10分频,6分频后所得到的频率为10.0278KHz,30.0858KHz,50.0688KHz的单极性脉冲。

图17为移相后基波与三次谐波之间的相位关系,图19为移相后基波与五次谐波之间的相位关系,图18为合成的近似方波,其幅度为5.16V,误差小于5%。

六总体结论

综合上述各部分的测试结果:

本设计圆满地完成了题目基本部分的要求,还较好地完成了题目发挥部分的要求,合成的近似方波与方波相似程度较高。

在每个模块都能正常工作的情况下,整块连调时候会出现“共地”问题,导致整块电路会有一个50Hz的工频干扰,改进措施是系统地线不能出现环路,所有地线最好接在一个点,包括单片机的数字地和模拟地。

 

七附录:

图8.方波振荡源产生的波形图

图9.分频后得到的10KHz脉冲的波形图

 

图10.分频后得到的30KHz脉冲的波形图

图11.分频后得到的50KHz脉冲的波形图

图12.方波振荡电路原理图

图13.分频电路原理图

图14.移相电路原理图

图15.三角波合成原理图

图16.滤波电路原理图

图17.基波和三次谐波波形图

图18.合成方波图

 

图19.基波和五次谐波图形

 

软件程序:

#include"msp430x14x.h"

#defineuintunsignedint

#defineucharunsignedchar

#defineulongunsignedlong

#defineRS_HIGHP4OUT|=BIT0//指令数据选择信号

#defineRS_LOWP4OUT&=~BIT0

#defineRW_HIGHP4OUT|=BIT6//读写信号

#defineRW_LOWP4OUT&=~BIT6

#defineE_HIGHP4OUT|=BIT7//使能信号

#defineE_LOWP4OUT&=~BIT7

#defineBUSY_OUTP2DIR|=BIT7

#defineBUSY_INP2DIR&=~BIT7

#defineBUSY_DATAP2IN&BIT7

ucharData1[16]={"V1=0.0VV2=0.0V"};

ucharData2[16]={"V3=0.00V"};

ucharlink[10]={"0123456789"};

ucharBit[8]={0,0,0,0,0,0,0,0};//数码管各位显示的数字

uintmax=0;

uintmax1=0;

uintmax2=0;

ulongmaxget=0;

ulongmaxget1=0;

ulongmaxget2=0;

uintADCBuf[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

uintADCBuf1[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

uintADCBuf2[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

//20个数据的和

ulongSum=0;

ulongVBuf=0;//电压扩大10000000的值

ucharCount=0;

ucharnum=0;

//延时子程序

DelayMS(uintms){

uinti;

while(ms--){

for(i=0;i<800;i++);

}

}

//测试LCD忙碌状态

voidLcdBusy(){

RS_LOW;

RW_HIGH;

E_HIGH;

_NOP();_NOP();

BUSY_IN;

while(BUSY_DATA);

BUSY_OUT;

E_LOW;

}

//写入指令到LCD

WriteCommand(ucharCommand){

LcdBusy();

RS_LOW;

RW_LOW;

E_HIGH;

_NOP();_NOP();

P2OUT=Command;

_NOP();_NOP();

E_LOW;

}

//写入字符数据到LCD

WriteData(ucharData){

LcdBusy();

RS_HIGH;

RW_LOW;

E_HIGH;

_NOP();_NOP();

P2OUT=Data;

_NOP();_NOP();

E_LOW;

}

//LCD初始化设定

LcdInit(){

WriteCommand(0x38);//8位数据端口,2行显示,5*7点阵

DelayMS(5);

WriteCommand(0x0c);//开启显示,无光标

DelayMS(5);

WriteCommand(0x06);//AC递增,画面不动

DelayMS(5);

WriteCommand(0x01);//清屏

DelayMS(5);

}

 

//时钟初始化函数

voidInitClock(void){

BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启LFXT1工作在低频模式ACLK不分频最高的标称频率

DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率

do{

IFG1&=~OFIFG;//清除振荡器失效标志

for(uinti=255;i>0;i--);

}while(IFG1&OFIFG);//判断XT2是否起振

BCSCTL2=SELM1+SELS;//MCLKSMCLK时钟源为TX2CLK不分频

}

//端口初始化函数

voidInitPort(void){

P2SEL=0x00;//P2口所有引脚设置为一般的IO口

P4SEL=0x00;//P4口所有引脚设置为一般的IO口

P2DIR=0xFF;//P2口所有引脚设置为输出方向

P4DIR=0xFF;//P4口所有引脚设置为输出方向

}

//ms级延时子程序

voidDelayMs(uintms){

while(ms--){

for(uinti=0;i<800;i++);

}

}

//ADC12初始化

voidInitADC12(void){

P6SEL=0x07;//P6.0为模拟输入

ADC12CTL0&=~ENC;//ENC设置为0从而修改ADC12寄存器

ADC12MCTL0=INCH_0+SREF_2;//参考电压为VeREF+和AVss输入通道A0

ADC12MCTL1=INCH_1+SREF_2;//通道A1

ADC12MCTL2=INCH_2+SREF_2+EOS;

ADC12CTL1=CSTARTADD_0+SHP+CONSEQ_3+ADC12SSEL_0+ADC12DIV_0;//起始地址ADCMEM0,采样脉冲由采样定时器产生,单通道多次转换,内部时钟源不分频

ADC12CTL0=MSC+ADC12ON;//采样信号由SHI仅首次触发,打开ADC12模块

}

//计算电压值

voidGetV(void){

inta=0;intb=0;

maxget=max*((2.5*10000000)/4095.0);

maxget1=max1*((2.5*10000000)/4095.0);

maxget2=max2*((2.5*10000000)/4095.0);

a=maxget/10000000;

b=maxget%10000000/1000000;

Data1[3]=link[2*a+(2*b)/10];

Data1[5]=link[(2*b)%10];

Data1[12]=link[maxget1/10000000];

Data1[14]=link[maxget1%10000000/1000000];

Data2[3]=link[maxget2/10000000];

Data2[5]=link[maxget2%10000000/1000000];

Data2[6]=link[maxget2%1000000/100000];

}

//定时器A初始化

voidInitTimerA(void){

TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK增计数清除TAR

CCTL0=CCIE;//CCR0中断允许

CCR0=20000;//时间间隔20ms

}

//定时器A中断

#pragmavector=TIMERA0_VECTOR

__interruptvoidTimerAINT(void){

ADC12CTL0&=~ENC;

ADCBuf[Count]=ADC12MEM0;

ADCBuf1[Count]=ADC12MEM1;

ADCBuf2[Count]=ADC12MEM2;

if(ADCBuf[Count]>=max)max=ADCBuf[Count];

if(ADCBuf1[Count]>=max1)max1=ADCBuf1[Count];

if(ADCBuf2[Count]>=max2)max2=ADCBuf2[Count];

Count++;

if(Count==20){

GetV();

Count=0;

max=0;

max1=0;

max2=0;

}

ADC12CTL0|=ENC+ADC12SC;//使能ADC转换

}

voidmain(){

uchari;

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

InitClock();

InitPort();

InitTimerA();

LcdInit();//Lcd初始化

InitADC12();

_EINT();//打开中断

while

(1){

WriteCommand(0x80);//定位在第一行第一个位置

for(i=0;i<16;i++)WriteData(Data1[i]);

WriteCommand(0x80|0x40);//定位在第二行第一个位置

for(i=0;i<16;i++)WriteData(Data2[i]);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1