频谱分析仪模拟式.docx

上传人:b****5 文档编号:3360152 上传时间:2022-11-22 格式:DOCX 页数:17 大小:265.10KB
下载 相关 举报
频谱分析仪模拟式.docx_第1页
第1页 / 共17页
频谱分析仪模拟式.docx_第2页
第2页 / 共17页
频谱分析仪模拟式.docx_第3页
第3页 / 共17页
频谱分析仪模拟式.docx_第4页
第4页 / 共17页
频谱分析仪模拟式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

频谱分析仪模拟式.docx

《频谱分析仪模拟式.docx》由会员分享,可在线阅读,更多相关《频谱分析仪模拟式.docx(17页珍藏版)》请在冰豆网上搜索。

频谱分析仪模拟式.docx

频谱分析仪模拟式

2011年电子设计竞赛暑期培训试题

频谱分析仪(仪器仪表类)

作者:

辅导教师:

摘要

本系统是采用外差式原理设计并实现的频谱分析仪。

系统实现功能为在输入信号幅值为

时对其频率测量范围为10~20MHz的信号进行频谱分析,信号经前置放大器AD603处理,与利用DDS芯片(AD9850)信号合成技术和倍频来获得10KHz步进的扫频信号相乘,用AD835做混频器,通过滤波器取出各个频点的值,再进行放大、有效值转换、AD采样送至ATmega16单片机处理并由LCD320*240的大显示频谱图及其相关参数。

关键字:

频谱分析仪混频DDS滤波有效值转换

 

1.系统方案选择和论证

1.1方案论证与选择

方案一:

快速傅里叶变换(FFT)。

这种频谱分析仪采用数字方案直接由模数转换器对输入信号采样,再经过FFT变换处理后获得频谱分布图。

它的频率范围受到ADC采样速率的FFT的运算速度的限制。

为获得良好的一起线性度和分辨率,ADC的采样速率至少为输入信号的两倍。

对FFT运算器件也有很高的要求,一般采用数字信号处理器件(DSP)。

这种方法的优点是硬件电路简洁,主要依靠软件运算,可以提高分辨率,但是高速AD和高速FFT运算器件,价格昂贵。

方案二:

扫频法。

这种频谱分析仪采用外差原理,由本机振荡器产生一定步进频率的扫频信号与输入信号相乘,然后由适当的滤波器将差频分量滤出以代表相应频点的幅度。

这种方法的特点是扫频范围大,较数字方法成本较低廉,但是这种方法对硬件电路要求高,各个模块的性能需要精心设计,整体调试难度大。

根据现有的水平的成本上考虑,我们采用方案二实现频谱分析仪的设计。

1.2系统基本方案

系统设计基本框图如图1所示:

图1系统设计基本框图

1.3各模块方案选择与论证

(1)前置放大器

基于对前置放大器增益带宽积的考虑:

因为输入信号频率为10MHz~20MHz,峰峰值为

,而混频器的输入要求信号峰峰值为1V,故需要前置放大器将输入信号放大2934dB。

经过对不同型号的带宽放大器分析比较,选择AD公司的可变增益带宽放大器AD603作为前置放大器:

当其带宽取0~40MHz时,增益在0~40dB间可调,满足题目要求。

(2)混频电路

混频电路采用以乘法器AD835为主要器件的电路构成,AD835可以实现250MHz带宽内的混频,这能够完全满足题目的要求,而且其输出幅度在不同频率时幅度相对稳定,外围电路相对比较简单,不需要进行复杂的调试,只需要对Z输入的直流信号进行相对调制即可。

(3)本振电路

采用直接数字合成器件AD9850,AD9850稳定度高,输出频率精确,内部包含输入寄存器、数据存储器、数字合成器(DDS)、10位高速DA转换器和高速比较器,在外接125MHz晶振是最大输出信号70MHz的正弦信号。

本题妖气的输入信号频率为10MHz-20MHz,AD9850产生的信号能够满足扫频信号的频率(10MHz-20MHz)要求。

AD9850直接通过单片机控制,产生范围频率为9.995MHz—20.005MHz、步进为10kHz的扫频信号。

(4)滤波电路

1.本设计要求的频谱分辨率为10KHz,所以每个扫描点的间隔为10KHz。

以此为频率中心点,左右各5KHz范围内为有效值,所以每个滤波器需要5KHz的带宽。

MAX297为8阶开关电容滤波器,可以实现截止频率为0.1~50KHz的可调,能够满足题目要求。

2.扫频信号的滤波,经过试验发现对本系统有影响的噪声有DDS输出信号中的噪声,因此在扫频信号后面加以滤波器截止频率为30MHz。

(5)有效值检测

有效值检测采样高精度的有效值检测器件AD637,先将峰值转换为有效值,再进行采样。

AD637的误差为0.5mV+0.1%

读数,在

电源供电条件下最大输入信号可达4V,能够满足本题的要求。

(6)控制电路

为减少系统的复杂程度和可靠性,我们采用ATmega16单片机作为控制电路,它内部自带AD,速度快。

(7)显示电路

由于设计方案中需要显示信号的频谱,所以用LCD320*240大屏作显示。

2.系统的设计与实现

2.1系统的硬件组成部分

2.1.1本振电路

扫频信号部分采用专用DDS芯片AD9850。

AD9850输出频率的计算公式为

其中

为32位控制字,

=125MHz。

由于

故其输出频率范围

本设计考虑到高频噪声,在扫频信号后面加以截止频率为30MHz的低通滤波器,故最终AD9850输出频率范围为

原理图如图2所示:

图2AD9850电路

2.1.2前级放大电路

根据前面对题目的分析以及受运算放大器的带宽限制,决定采用两级放大电路对输入信号进行放大,使其达到预定的要求。

第一级放大电路采用300MHz带宽的运放AD8011对输入信号进行放大,放大10倍。

第二级采用可控增益放大器AD603进行放大,放大5倍。

题目要求系统的输入阻抗为50欧姆,根据要求设计的具体电路如图3所示:

图3前级放大电路

由图可知:

其中

为运放的输入电阻一般为

为平衡电阻。

通过调节电位器

为10倍,

为5倍,这样两级一共放大

即34dB。

2.1.3混频电路

混频电路采用的是以AD835为核心器件而搭建的电路,AD835最高工作频谱为250MHz,外围电路简单,可靠性高。

具体电路如图4所示:

图4混频电路

输出信号

其中

将扫频信号加在8脚

端,输入信号加在1脚

端,而且输入信号的幅值不宜过大,需要控制在-1~+1V直接。

为了能使AD835能够更好的工作,在正负电源两端加电容去耦,同时加0欧姆电阻,防止高频信号干扰。

图中有Z=X2=Y2=0;设输入信号Y1为

扫频信号X1为

则输出信号

一般希望得到一个中频信号,通常采用带通滤波器取出所需要的边带,即可得到中频电压

对于本系统而言,希望得到的中频信号频率为10K。

2.1.4滤波电路

题目要求频谱的分辨率为10KHz,所以每个扫描点的间隔为10KHz,一次频率点为中心,左右各5KHz范围内位有效值,所以滤波器需要5KHz的带宽。

MAX297是一个8阶低通椭圆型快关电容滤波器,采用输入时钟频率控制输出截止频率的方法实现模拟信号和数字信号的滤波。

MAX297的截止频率和时钟的比为

,由截止频率为5KHz以及

可得

实际取

经测试器截止频率为5.6KHz。

设计的电路如图所示5。

图5低通滤波电路

2.1.5有效值检测电路

有效值检测电路时采用AD637为主要器件所搭建的电路,其典型接法如图6所示。

图6有效值检测电路

AD637转换建立时间

,转换出信号纹波

,转换出信号的直流误差

,对于转换要求是建立时间短,纹波小,误差小,最终考虑取

,即

2.1.5控制、显示电路

控制电路选择C8051f120单片机作为主控器件,其最小系统如附录所示。

显示电路使用LCD800*600液晶屏作为显示界面,通过单片机控制显示内容。

3.软件设计

控制DDS产生扫频信号,DDS每输出一个频率与输入信号进行相乘,将相乘的结果用滤波器取出,处理,经AD采样送至单片机。

系统软件流程如下:

图7系统软件流程图

4.系统测试

4.1测试条件和测试仪器设备

系统容易受到温度、高频信号和强磁场的干扰,测试时必须在室温、无高频信号源及无强磁场干扰的条件下进行,并要确保供电电源的稳定性,测试仪器设备如下表1所示。

表1测试使用的仪器设备

序号

名称、型号、规格

数量

备注

出厂编号

1

Tektronix示波器

1

Tektronix

C039070

2

函数信号发生器EE16428

1

南京新联电子设备有限公司

001398

3

数字万用表UT58E

1

UNI-T

3050030633

4.2测试方法和结果

(1)频谱测试

测试方法:

用高频信号源输出信号信号幅值为

,频率在1MHz~20MHz范围内任意频率,将信号接入频谱仪,然后简易频谱仪对信号进行标定见下表:

表2:

频谱标定带宽数据表

序号

带宽/MHz

序号

带宽/MHz

1

0.995~2.245

9

10.995~12.245

2

2.245~3.495

10

12.245~13.495

3

3.495~4.745

11

13.495~14.745

4

4.745~5.995

12

14.745~15.995

5

5.995~7.245

113

15.995~17.245

6

7.245~8.495

14

17.245~18.495

7

8.495~9.745

15

18.495~19.745

8

9.745~10.995

16

19.745~20.995

观察大屏,测试结果如表3所示。

表3:

频谱测试数据表

输入信号频率(MHz)

输入信号幅值(mV)

实测信号频率(MHz)

误差

1.0

68.2

1.02

0.20%

3.0

68.2

3.01

0.33%

5.0

68.2

5.03

0.60%

7.0

68.2

7.04

0.57%

9.0

68.2

9.03

0.33%

11.0

68.2

11.04

0.36%

13.0

68.2

13.05

0.38%

15.0

68.2

15.05

0.33%

17.0

68.2

17.06

0.35%

19.0

68.2

19.07

0.36%

20.0

68.2

20.07

0.35%

5.结论

这个题目感觉比较难,之前一直没有彻底搞通原理,就按照现成的方案制作各个模块,在调前置放大器AD811时也遇到了问题,发现放大增益不好控制。

现在改用AD603。

在各个模块调试好后,在一起联调时,又不能工作了,后来发现滤波电路也存在问题,又改用两级滤波,这时又出现有效值处理后的幅值太小。

经过两级反向放大后,终于出来正常的频谱了!

经过三天的努力,虽然整个系统仍有许多不足之处,但我们基本上完成了题目要求的基本部分和发挥部分,而且分辨率5K带宽还超出了题目的要求。

能在液晶上显示操作提示等,提供了较好的人机界面。

限于时间短暂,显示平均噪声电平功能和指标没有时间实现。

参考文献:

[

]谢自美.电子线路设计实验测试.武汉:

华中科技大学出版社,2006

[

]谭浩强.C语言程序设计(第三版).北京:

清华大学出版社,2008

[

]高吉祥.全国大学生电子设计竞赛培训系列教程.北京:

电子工业出版社,2007

[

]黄智伟.全国大学生电子设计系统设计.北京:

北京航空航天大学出版社,2006

[5]张洪润,张亚凡.单片机原理及应用.北京:

清华大学出版社.2005.

[6]赵亮,侯国锐.单片机C语言编程与实例,北京:

人民邮电出版社.2003.

[7]康华光.电子技术基础(模拟部分).北京:

高等教育出版社,2006

附录:

附件1:

系统主程序

//**********************************//

/*工程说明:

控制DDS扫频信号,与模拟硬件电路进行共振产生混频信号,AD进行实时采样

通过320_240显示对应频谱波形*/

/*编写时间:

2011-08-09*/

/*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*/

#include

#include

#include

#include"320_240.h"

#include"ADC.h"

#include"DDS.h"

#defineUintunsignedint

#defineUcharunsignedchar

#definekey0PINC4

#definekey1PINC5

#pragmainterrupt_handlerTIME_0_PIPEI:

20//定时器0比较匹配中断序号

Ucharflag;//标志位

Uintadmax,admin,adpp;//最大值,最小值,峰峰值;

Uintxx,yy;//用来显示坐标的参数

Uinta0,a1;

doublev0;//AD采样变量

unsignedlongintfreq,freq1;

unsignedintgetdata[250];//存储采样点数

//externflag_AD;

/////////////////////////////////////////////////

voidDelay_ms(Uintz);

voiddelay_us(unsignedinttt);

voidjiemian(void);//界面静态显示

voidsao_pin(void);

voiddisplay_Xzuobiao();//显示频率

voiddisplay_Yzuobiao();//显示幅值

voidtimer0();

voiddisplay_Fdds(void);//显示DDS频率

////////////////////////////////////////////////

voidmain(void)

{

floata,b;

Uinti,j;

freq1=995000;//0.995MHz

xx=0;yy=0;//xx,yy赋初值

//admax=65535;admin=0;

DDRB|=BIT(0)|BIT

(1)|BIT

(2)|BIT(3);//DDS的控制及数据口

DDRC&=~BIT(4);

PORTC|=BIT(4);

TCCR0=0x04;

//1024分频设置

TCNT0=0x00;//寄存器初始值设置

OCR0=0xff;//比较匹配值的设置(但是最大不能超过0xff,因为T/C0是8位定时器)

TIMSK|=BIT(OCIE0);//开启T/C0输出比较匹配中断使能

SREG|=BIT(7);//开启总中断允许位

ad9850_reset_serial();

Delay_ms(50);

LcmInition();//液晶屏初始化

LcmClear();//清屏

jiemian();//界面静态显示

while

(1)

{

if((PINC&(1<

{

Delay_ms(50);

while((PINC&(1<

freq1=freq1+1250000;

freq=freq1-1250000;

if(freq1==20005000)

{

freq1=995000;

}

}/**/

//ad9850_wr_serial(0x00,freq);

//freq=freq+5000;

getdata[xx]=mega16_ad0();

//Delay_ms(30);

//xx++;

Linexy(xx,190-getdata[xx]*0.04884,xx,190-getdata[xx+1]*0.04884,1,2);//

//Delay_ms(10);

//display_Yzuobiao(getdata[xx]);

/*if(freq==freq1)

{

freq=9995000;

}

if(xx==249)

{

xx=0;

//Delay_ms(30);

LcmClear2();//用来清除已显示的波形

}*/

//display_Yzuobiao();

display_Fdds();//显示DDS频率

/*ad9850_wr_serial(0x00,3000);

if(xx<999&&yy<999)

{

xx++;yy++;

display_Xzuobiao(xx);

display_Yzuobiao(yy);

Delay_ms(100);

}

ad9850_wr_serial(0x00,freq);

Delay_ms(10);

freq=freq+10000;

if(freq==20005000)

{

freq=9995000;

}*/

}

}

voidTIME_0_PIPEI()

{

ad9850_wr_serial(0x00,freq);

freq=freq+5000;

xx++;

if(xx==249)

{

freq=freq1-1250000;

xx=0;

//Delay_ms(30);

LcmClear2();//用来清除已显示的波形

}

/*if(xx==249)

{

xx=0;

//Delay_ms(30);

LcmClear2();//用来清除已显示的波形

}*/

TCNT0=0x00;//寄存器初始值重新设置

}

voidDelay_ms(Uintz)

{

Uintx,y;

for(x=0;x

for(y=0;y<1141;y++);

}

voiddelay_us(unsignedinttt)

{

while(tt--);

}

voidjiemian(void)//界面静态显示

{

Uintx,y;

Linexy(0,0,252,0,1,1);

Linexy(0,239,252,239,1,1);

Linexy(0,240,253,240,1,1);

Linexy(0,0,0,240,1,1);

Linexy(252,1,252,239,1,1);

Linexy(253,0,253,240,1,1);

for(y=0;y<240;y=y+30)//画8条横线

{

Linexy(0,y,253,y,1,1);

}

for(x=0;x<250;x=x+25)//画10条竖点线

{

Linexy(x,0,x,239,1,1);

}

circle(314,5,5,8,1);//8画圆0擦圆

circle(314,234,5,8,1);

//PutWordInGraph_zuo();

PutWordInGraph_you();

}

voidsao_pin(void)

{

ad9850_wr_serial(0x00,freq);

Delay_ms(10);

freq=freq+10000;

if(freq==20005000)

{

freq=995000;

}

}

voiddisplay_Xzuobiao(void)//显示频率

{

displaynumber(29,64,a1/100);

displaynumber(30,64,a1%100/10);

displaynumber(31,64,a1%10);

}

voiddisplay_Yzuobiao(void)//显示幅值

{

doubletemp0;

temp0=adpp*2.56/1024;

a0=temp0*100;

displaynumber(32,80,a0/100);

displaynumber(33,80,a0%100/10);

displaynumber(34,80,a0%10);

}

voiddisplay_Fdds(void)//显示DDS频率

{

Uinttemp;

temp=freq/1000;

displaynumber(32,128,temp/10000);

displaynumber(33,128,temp%10000/1000);

displaynumber(34,128,temp%1000/100);

displaynumber(35,128,temp%100/10);

displaynumber(36,128,temp%10);

}

/*for(xx=0;xx<250;xx++)

{

a=sin(4*xx*0.0175);

yy=190-a*50;

//Point(xx,yy,1);

//Linexy(xx,yy,xx,yy,1);

Delay_ms

(1);

}*/

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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