论文信号波形合成.docx

上传人:b****1 文档编号:1334566 上传时间:2023-04-30 格式:DOCX 页数:29 大小:487.08KB
下载 相关 举报
论文信号波形合成.docx_第1页
第1页 / 共29页
论文信号波形合成.docx_第2页
第2页 / 共29页
论文信号波形合成.docx_第3页
第3页 / 共29页
论文信号波形合成.docx_第4页
第4页 / 共29页
论文信号波形合成.docx_第5页
第5页 / 共29页
论文信号波形合成.docx_第6页
第6页 / 共29页
论文信号波形合成.docx_第7页
第7页 / 共29页
论文信号波形合成.docx_第8页
第8页 / 共29页
论文信号波形合成.docx_第9页
第9页 / 共29页
论文信号波形合成.docx_第10页
第10页 / 共29页
论文信号波形合成.docx_第11页
第11页 / 共29页
论文信号波形合成.docx_第12页
第12页 / 共29页
论文信号波形合成.docx_第13页
第13页 / 共29页
论文信号波形合成.docx_第14页
第14页 / 共29页
论文信号波形合成.docx_第15页
第15页 / 共29页
论文信号波形合成.docx_第16页
第16页 / 共29页
论文信号波形合成.docx_第17页
第17页 / 共29页
论文信号波形合成.docx_第18页
第18页 / 共29页
论文信号波形合成.docx_第19页
第19页 / 共29页
论文信号波形合成.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

论文信号波形合成.docx

《论文信号波形合成.docx》由会员分享,可在线阅读,更多相关《论文信号波形合成.docx(29页珍藏版)》请在冰点文库上搜索。

论文信号波形合成.docx

论文信号波形合成

中国地质大学

2013年电子设计大赛

竞赛论文

 

参赛题目:

信号波形合成

成员:

 

信号波形合成实验电路

摘要:

本作品主要用于非正弦信号的分解与合成实验验证,包括电源电路模块,方波信号产生模块,放大、移相、波形合成模块、测量显示模块等。

通过1MHz晶振电路产生1MHz方波信号,经计数、分频得到10kHz方波信号,利用LC并联谐振(滤波器)分离出10kHz、30kHz、50kHz正弦波信号,然后对三个正弦波信号进行放大、移相加到加法器中合成方波信号。

把10kHz和30kHz正弦波信号送到减法器中合成三角波信号。

三个正弦波信号的幅度通过单片机采样,由液晶屏显示出来。

关键词:

方波信号,滤波器,正弦波信号,分解,合成

 

1作品简介

1.1设计目标

设计制作一个电路,能够产生多个不同频率的正弦信号,利用傅里叶原理产生以10KHz为基波,以奇次谐波为辅助谐波的信号,并将这些信号再合成为近似方波和其他信号。

电路示意图如图1所示:

图1信号波形合成电路示意图

1.2要求及指标

1.2.1基本要求

(1)方波振荡器的信号经分频与滤波处理,同时产生频率为10kHz和30kHz的正弦波信号,这两种信号应具有确定的相位关系;

(2)产生的信号波形无明显失真,幅度峰峰值分别为6V和2V;

(3)制作一个由移相器和加法器构成的信号合成电路,将产生的10kHz和30kHz正弦波信号,作为基波和3次谐波,合成一个近似方波,波形幅度为5V,合成波形的形状如图2所示。

图2利用基波和3次谐波合成的近似方波

1.2.2发挥部分

(1)再产生50kHz的正弦信号作为5次谐波,参与信号合成,使合成的波形更接近于方波;

(2)根据三角波谐波的组成关系,设计一个新的信号合成电路,将产生的10kHz、30kHz等各个正弦信号,合成一个近似的三角波形;

(3)设计制作一个能对各个正弦信号的幅度进行测量和数字显示的电路,测量误差不大于5%;

(4)其他。

2方案设计

2.1系统分析及整体方案

方波信号由基波成分和若干个谐波成分构成,即

,本作品根据这一理论原理制作而成。

本系统要包括了以下几个模块:

电源电路模块,方波信号产生模块,放大、移相、波形合成模块、测量显示模块,如图3所示。

本系统通过1MHz晶振电路产生1MHz方波信号,通过分频得到10kHz方波信号,经过三个不同频率的滤波器分离出10kHz、30kHz、50kHz正弦波信号,再对三个正弦波信号进行放大、移相加到加法器中合成方波信号。

三个正弦波信号的幅度通过单片机采样,由液晶屏显示出来。

图3系统方框图

2.2设计方案论证

2.2.1方波信号发生器

方案一:

通过反相器、外加电阻和电容来产生频率可调、占空比可调的方波信号。

其优点电路简单,且有些芯片可以产生稳定的方波。

方案二:

利用单片机时钟信号,通过软件编程实现输出10kHz方波信号。

实现起来相对较容易,但若没有时间做本参赛题的发挥部分,大材小用了。

综合所述,由于频率稳定直接影响信号的方波信号的分解与合成,并从实际出法,所以选择方案二。

2.2.2滤波器

方案一:

无源滤波。

由无源元器(电阻、电容、电感)设计而成,电路简单,但是滤波效果不好,且产生较多的杂波。

方案二:

有源滤波。

由运算放大器、电阻和电容构成,无需电感器。

还可提供电压增益。

由于方波信号发生器输出的信号幅度较高(5V),从实际制作、调试方便和产生较好的滤波效果等角度考虑,所以选择方案二。

2.2.3移相电路

方案一:

有源移相电路。

在移相的同时,还可以得到一定的增益,移向效果好,角度范围大。

方案二:

RC电路移相。

电路简单,但每级RC电路理论极限移相90度。

由于三个正弦波是在同一个方波信号下滤波产生的,它们之间相的位差相对较小,故选择方案一。

2.2.4整流滤波电路

方案一:

采用精密整流、滤波电路。

整流、滤波效果好,可对低于二极管导通电压的信号进行整流、滤波。

但电路复杂。

方案二:

采用转换芯片将交流直接转换为直流,电路简单、易于制作。

由于任务要求对峰峰值为6V、2V、1.2V的正弦波信号进行整流、滤波,故选择方案二。

3.系统实现

3.1硬件电路(主要单元电路设计)

3.1.1电源电路

本设计系统共需要四种不同的直流电压,分别为+9V、-9V、+5V和+3.3V电压。

为了满足电路供电要求,我们把+9V、-9V、+5V电源使用同一个电路输出,如图4(a)所示;而3.3V电压的输出使用了TI公司REG1117稳压芯片,专门为后续单片机提供电压,如图4(b)所示。

(a)±9V、+5V电源电路(b)+3.3V电源电路

图4电源电路

3.1.2方波信号产生电路

图5方波信号产生

锁相环CD4046为数字PLL,内有两个PD、VCO、缓冲放大器、输入信号放大与整形电路、内部稳压器等。

它具有电源电压范围宽、功耗低、输入阻抗高等优点,其工作频率达1MHz,内部VCO 产生50% 占空比的方波,输出电平可与TTL电平或CMOS 电平兼容。

同时,它还具有相位锁定状态指示功能。

信号输入端:

允许输入0.1V左右的小信号或方波,经A1放大和整形,提供满足PD要求的方波。

 PDI由异或门构成,具有三角形鉴相特性。

它要求两个输入信号均为50%占空比的方波。

当无输入信号时,其输出电压为VDD/2,用以确定VCO的自由振荡频率PDI由异或门构成,具有三角形鉴相特性。

CD4046锁相环采用的是RC型压控振荡器,必须外接电容C1和电阻R1作为充放大元件。

当PL对跟踪的输入信号的频率宽度有要求时还需要外接电阻R2。

由于VCO是一个电流控制振荡器,对定时电容C1的充电电流与从9脚输入的控制电压成正比,使VCO的振荡频率亦正比于该控制电压。

当VCO控制电压为0时,其输出频率最低;当输入控制电压等于电源电压VDD时,输出频率则线性地增大到最高输出频率。

VCO振荡频率的范围由R1、R2和C1决定。

由于它的充电和放电都由同一个电容C1完成,故它的输出波形是对称方波。

一般规定CD4046的最高频率为1.2MHz(VDD=15V),若VDD<15V,则fmax要降低一些。

3.1.3分频电路

分频电路实现将某方波通过分频产生10KHz、30 KHz和50 KHz的新的方波。

 根据题意要求,在某特定频率的方波上要产生几个其他频率方波,可按照这些频率的最小公倍数×2为原则,题目要求的三个频率为10KHz、30KHz和50KHz,其公倍数为150KHz,再乘以2,则上述方波发生器为300KHz。

验证一下:

300KHz频率30分频得10KHz,10分频30KHz,6分频50KHz。

 采用十进制计数分配器CD4017配合D触发器CD4013实现分频为上述3个频率的方波,CD4017默认10分频,下图中二极管正极连接位置决定分频系数。

对于CD4013,所起的作用是将由CD4017分频后非50%占空比调节为50%。

设计电路见图3所示,300KHz输入信号送CD4017的CLK(14pin),输出信号从CD4013的Q端送出。

 图6 分频器电路 

该图中由于D2接CD4017的Q3,因此实现将300KHz 3分频,为 300KHz/3=100KHz 

再经后级CD4013进行2分频,获得了 100KHz/2=50KHz 的频率。

 对于30KHz和10KHz的分析计算方法相同,不再细述。

3.1.4滤波电路

滤波电路的作用是从300kHz的方波信号中得到10kHz、30kHz、50kHz正弦波信号。

本系统中选用有源LC带通滤波电路,如

图7带通电路

电路设计时,低通与高通滤波电路串联就可以构成带通滤波电路,条件是低通滤波电路的截止频率大于高通滤波的截止频率,两者覆盖的通路就构成了带通响应。

在选用元器件时,应当考虑由于元器件的误差对传递函数造成的影响;考虑到已知A1的增益=1.586,A2的增益=2.515;同时要尽量使运放同相输入端和反向输入端对地电阻相等,同相比例放大电路的电压增益就是有源低通或者高通的电压增益。

当f0=10kHz时,f=1/2πRC;将高通和低通的电容都取为103pF(为了满足运放电路的电阻不宜选择过大或者过小,一般为几千欧至几十千欧比较合适)。

取低通截止为10kΩ,高通截止频率为8kΩ,R1和R17可调。

图7中,R7=(A1-1)R15,取R15=4.7kΩ,R8=7.9kΩ;同理,当f0=30kHz时,R1=R4=5.25kΩ,R10=R17=5.73kΩ可调,C==102pF。

取R15=12.95kΩ,R8=15.9kΩ;同理当f0=50kHz时,R1=R4=3.18kΩ可调,R10=R17=24kΩ可调,C=102nF。

取R15=10kΩ,R8=10kΩ。

为了取得更好的滤波效果,在每一级滤波后面加上RC滤波电路,频率按照上面的公式计算。

3.1.5放大电路

放大电路的作用是把得到10kHz、30kHz、50kHz正弦波信号的幅度进行放大,得到峰峰值为6V、2V、1.2V的正弦波信号。

本系统选用了TI公司OPA227、082CD这两种集成运放作为放大电路的核心[2]。

10kHz,30kHz,50kHz均采用如图8所示的电路图。

由于输入信号为20mV左右,前面加上跟随器的原因是因为跟随器的输入电阻趋于无穷大,该电路几乎不从信号源吸收电流,因此当负载变化时,输出电压几乎不变,从而消除负载变化对输出电压的影响。

图8调幅电路

3.1.6移相电路

移相电路的作用是使三个正弦波信号在同一个相位叠加,我们以10kHz正弦波信号为基准,对30kHz、50kHz正弦波信号进行移相。

移相电路采用有源移相电路,如图12所示。

移相角φ=

,最大移相角为90°。

具体电路参考附总电路图。

30kHz正弦波信号的移相电路R取10kΩ,C取10pF;50kHz正弦波信号的移相电路R取10kΩ,C取1pF。

图12移相电路

3.1.7加法电路

加法电路作用是对10kHz、30kHz、50kHz三个正弦波信号进行合成方波信号,电路如图13所示,采用TI082CM。

其中AV=-1,前面加上跟随器的原因是因为跟随器的输入电阻趋于无穷大,该电路几乎不从信号源吸收电流,因此当负载变化时,输出电压几乎不变,从而消除负载变化对输出电压的影响。

U0=-(Ui1*R6/R1+Ui2*R6/R4+Ui3*R6/R5);当R1=R4=R5=R6的时候,就是这三个信号相加,合成方波。

图13加法电路(方波合成电路)

3.1.8减法电路

减法电路作用是对10kHz、30kHz正弦波信号进行合成三角波信号,电路如图14所示,采用TI082CM。

其中AV=-1,其他和加法合成电路一样,只是将加了一个反向器,将30k的正弦波进行反向后才能够合成正弦波,因为三角波是由一次基波和多次谐波合成的,且每个相邻的正弦波是反向的。

U0=-(Ui1*R6/R1-Ui2*R6/R4+Ui3*R6/R5);当R1=R4=R5=R6的时候,就是这三个信号相加,合成三角波。

图14减法电路(三角波合成电路)

3.1.9整流滤波检测电路

由于任务要求检测的信号幅度较高,故采用AD637集成有效值转换器电路,并由单片机采样、处理、显示正弦波幅度的大小,如图16所示。

 

图16整流滤波检测电路

3.2软件设计

3.2.1软件流程图

软件流程图如图17所示。

图17软件流程图

3.3.2软件程序

软件程序见附录2。

4系统性能测试与分析

4.1测试仪器

示波器、数字万用表

4.2性能测试

4.2.1.测试方法

用示波器分别测量10kHz、30kHz、50kHz正弦波信号的波形、峰峰值和合成后的方波信号的三角波信号的波形、峰峰值及三个正弦波信号的频谱分析。

4.2.2测量内容

1.用示波器分别测量10kHz方波信号的波形,如图18所示。

2.用示波器分别测量10kHz、30kHz、50kHz正弦波信号的波形、峰峰值及相位关系,如图19~22所示。

 

图1810kHz方波信号图1910kHz正弦波信号图2030kHz正弦波信号

 

图2150kHz方波信号图2210kHz、30kHz正弦波信号的相位比较

3.用用示波器分别测量合成后的方波信号、三角波信号的波形、峰峰值,如图23、24所示

 

图23合成后的方波信号图24合成后的三角波信号

4.对示波器对30kHz正弦信号的幅度进行测量,与峰峰值数字显示电路的值进行比较,如表1所示。

表1正弦波信号幅度的测量

示波器测量值(V)

峰峰值数字显示电路显示值(V)

6.08

6.00

2.10

2.00

1.26

1.20

4.2.3误差分析

1.由于在万能板上进行焊接,对于频率相对比较高的信号影响较大,可能产生波形的抖动和频率的波动。

2.在元器件参数选择上也存在一定的误差,测量值与标称测量值不同或是没有我们需要的元器件,采用各式方法合成的器件。

5总结与展望

从测量的波形、数据看,本系统基本实现了题目中的各个要求。

同时,本次比赛也极大地提高了我们的实践操作能力和团队协作能力。

由于时间关系,系统仍有待进一步完善,精度需要进一步提高、测量信息需要进一步扩展,三角波可增加高次谐波成分进行合成等。

 

附录1:

电路总图

附录2:

软件程序

#include//锁存器****

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitst=P3^0;//ADC0809端口定义

sbiteoc=P3^2;

sbitoe=P3^1;

//sbitdabc=P1^4;

sbitale=P3^7;

sbitkey0=P2^0;

sbitkey1=P2^1;

sbitkey2=P2^2;

sbitkey3=P2^3;

sbitLCD_RS=P3^3;//数据/命令选择端(H/L)

sbitLCD_RW=P3^4;//读/写选择端(H/L)

sbitLCD_EN=P3^5;//使能信号

sbitLCD_PSB=P3^6;//并/串选择(H/L)

ucharad_0809;

uintad_data,ad_data1,ad_data2,ad_data3;

//ucharnumber=0;

ucharcodedis0[]={"幅值测量:

(V)"};

ucharcodedis1[]={"1:

频率[10KHZ]"};

ucharcodedis2[]={"2:

频率[30KHZ]"};

ucharcodedis3[]={"3:

频率[50KHZ]"};

ucharcodedis4[]={"幅值:

"};

ucharcodedis5[]={"[10KHZ]"};

ucharcodedis6[]={"[30KHZ]"};

ucharcodedis7[]={"[50KHZ]"};

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/*******************12864*******************/

/*************写指令数据到LCD************/

//RS=L,RW=L,E=高脉冲,D0-D7=数据

voidwrite_cmd(ucharcmd)

{

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

P1=cmd;

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

/*************写显示数据到LCD************/

//RS=H,RW=L,E=高脉冲,D0-D7=数据

voidwrite_dat(uchardat)

{

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P1=dat;

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

ucharread_date()//读数据

{

uintreadvalue;

P1=0xff;

LCD_RS=1;

LCD_RW=1;

LCD_EN=0;

LCD_EN=1;

readvalue=P1;

delay

(1);

LCD_EN=0;

returnreadvalue;

}

voidlcd_set_dot(unsignedcharx,unsignedchary)

{

ucharx_byte,x_bit;//在横坐标的哪一个字节,哪一个位

uchary_byte,y_bit;//在纵坐标的哪一个字节,哪一个位

uchartmph,tmpl;

x_byte=x/16;//算出它在哪一个字节(地址).注意一个地址是16位的

x_bit=x%16;//(取模)算出它在哪一个位

y_byte=y/32;//y是没在哪个字节这个说法.这里只是确定它在上半屏(32行为一屏)还是下半屏.0:

上半屏1:

下半屏

y_bit=y%32;//y_bit确定它是在第几行

write_cmd(0x34);//打开扩展指令集.绘图显示关闭

write_cmd(0x80+y_bit);//先写垂直地址

write_cmd(0x80+x_byte+8*y_byte);//水平坐标.下半屏的水平坐标起始地址为0x88.(+8*y_byte)就是用来确定在上半屏还是下半屏

read_date();//先空读一次

tmph=read_date();//读高位

tmpl=read_date();

write_cmd(0x80+y_bit);//读操作会改变AC,所以重新设置一次

write_cmd(0x80+x_byte+8*y_byte);

if(x_bit<8)//如果x_bit位数小于8

{

write_dat(tmph|0x01<<(7-x_bit));//写高字节。

因为坐标是从左向右的.而GDRAM高位在左,低位在右

write_dat(tmpl);//原数据送回

}

else

{

write_dat(tmph);//原数据送回

write_dat(tmpl|0x01<<(15-x_bit));

}

write_cmd(0x36);//打开绘图显示

write_cmd(0x30);//回到基本指令集,毕竟ST7920是以字符为主的

}

 

voidlcd_displayclr()//使用图形模式时,应对所有GDRAM写0x00才算清屏,清屏命令(write_cmd(0x01))是对使用自带字库显示时用的

{

uchari,j,k;

write_cmd(0x34);//打开扩展指令集,绘图显示关

write_cmd(0x36);//打开扩展指令集,绘图显示开

for(i=0;i<2;i++)//分上下两屏写

{

for(j=0;j<32;j++)

{

write_cmd(0x80+j);//写Y坐标

delay

(1);

if(i==0)//写X坐标

{

write_cmd(0x80);

delay

(1);

}

else//写下半屏

{

write_cmd(0x88);

delay

(1);

}

for(k=0;k<16;k++)//写一整行数据

{

write_dat(0x00);

delay

(1);

}

}

}

write_cmd(0x30);//关闭扩展指令集

}

 

voidlcd_init()

{

LCD_PSB=1;//并口方式

write_cmd(0x30);//基本指令操作(8位数据)

delay(5);

write_cmd(0x0c);//显示开,关光标

delay(5);

write_cmd(0x01);//清除LCD的显示内容

delay(5);

}

voidfsin1()

{

floatx,y;

ucharx1,y1;

for(x=0;x<(4*3.1415);x+=0.1)

{

y=2*sin(x);

x1=10*x;

y1=31-(10*y+0.5);//对y值进行四舍五入

lcd_set_dot(x1,y1+10);

}

}

voidfsin2()

{

floatx,y;

ucharx1,y1;

for(x=0;x<(4*3.1415);x+=0.1)

{

y=1*sin(3*x);

x1=10*x;

y1=31-(10*y+0.5);//对y值进行四舍五入

lcd_set_dot(x1,y1+10);

}

}

voidfsin3()

{

floatx,y;

ucharx1,y1;

for(x=0;x<(4*3.1415);x+=0.1)

{

y=0.5*sin(5*x);

x1=10*x;

y1=31-(10*y+0.5);//对y值进行四舍五入

lcd_set_dot(x1,y1+10);

}

}

/*************************AD0809*********************/

voidad0809()

{

ale=1;

ale=0;

oe=0;//以下三条指令为起动AD0809

st=0;

delay

(2);

st=1;

st=0;

while(eoc==0);//等待转换结束

oe=1;//取出读得的数据

ad_0809=P0;

oe=0;

}

voiddisplay1()

{

uinti;

write_cmd(0x80);

i=0;

while(dis0[i]!

='\0')

{

write_dat(dis0[i]);//显示字符

i++;

}

write_cmd(0x90+1);

i=0;

while(dis1[i]!

='\0')

{

write_dat(dis1[i]);//显示字符

i++;

}

write_cmd(0x88+1);

i=0;

while(dis2[i]!

='\0')

{

write_dat(dis2[i]);//显示字符

i++;

}

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2