射频宽带放大器
摘 要:本系统采用宽带电压反馈运放OPA690、压控增益放大器VCA810以及宽带电流反馈放大器THS3001结合的方式,实现了增益可调的射频宽带放大器。系统主要由四个模块构成:前置放大电路、压控增益放大电路、后级放大电路、单片机显示控制模块。压控增益放大电路以VCA810为核心,实现60dB的可调节范围;使用THS3001等运放进行电压放大使最大有效值达到1V;整个电路波形稳定、无明显失真,噪声电压小,通频带内增益平坦,较好得完成了基本部分和发挥部分的要求。
关键词:射频放大、宽带放大、压控增益、单片机控制
Abstract
Adopting a combination of wideband voltage-feedback amplifier OPA690, voltage-controlled gain amplifier-VCA810, wideband current-feedback amplifier THS3001, the system can achieve a RF(RF-Radio frequency)broadband amplifier with adjustable gain. The system is consisted of four blocks: pre-amplifier circuit, voltage-controlled gain amplifier circuit, the latter amplifier circuit, MCU display control module. With a core of VCA810, the VGA circuit can achieve 60dB of gain adjustment range. Applying THS3001 etc. amplifier gains 1V of maximum effective value. The whole system has a feature of stable distortionless waveform, low noise and high
gainflatness complete the design tasks, both the basic part and extended part.
Keywords: Radio frequency amplification、bandwidth amplification、voltage controlled gain、single chip microcomputer control
目录
一、系统方案…………………………………………………………………………………………………............4
1.1方案比较与选择…………………………………………………………………………………………........4
1.1.1前置放大电路………………………………………………………………………………………….........4
1.1.2 压控增益放大电路…………………………………………………………………………………........4
1.1.3 后级放大电路…………………………………………………………………………………………........4
1.2方案描述…………………………………………………………………………………………………….........5
二、理论分析与计算………………………………………………………………………………………...........6
2.1 宽带放大器设计………………………………………………………………………………………........6
2.2 频带内增益起伏控制………………………………………………………………………………………..6
2.3 射频放大器稳定性……………………………………………………………………………………………6
2.4增益调整…………………………………………………………………………………………………………….6
三、电路与程序设计…………………………………………………………………………………………………7
3.1电路设计…………………………………………………………………………………………………………….7
3.1.1前置放大电路与电路原理图…………………………………………………………………………..7
3.1.2压控增益放大电路与电路原理图…………………………………………………………………..7
3.1.3 后级放大电路与电路原理图……………………………………………………………………… ...8
3.2程序的设计…………………………………………………………………………………………………………9
四、测试方案与测试结果…………………………………………………………………………………… .10
4.1测试仪器…………………………………………………………………………………………………………..10
4.2 测试方法及数据……………………………………………………………………………………………..10
4.3 测试结果及析……………………………………………………………………………………..………….11
五、总结………………………………………………………………………………………………………………....12 附录1:元器件表……………………………………………………………………………………………………12
附录2:幅频特性显示与波形显示............................................................................12 附录3:总电路图……………………………………………………………………………………………………15 附录4:源程序 …………………………………………………………………………………………………….15
一、系统方案
1.方案比较与选择
(1)前置放大电路
方案一:选用分立元件搭建电路,可以输出较大电压,但需采用多级高频电路,电路比较复杂,工作点难于调整,容易产生自激振荡,难以保证带宽,故不选用此方案。
方案二:使用多级放大器实现放大,采用同相输入形式,多级放大电路的对数增益等于其各级对数增益的对数和。此方案原理简单,易于调试,能够满足题目中输入阻抗和线性度的要求,故选取此方案。
综上所述,选择方案二。
(2)压控增益放大电路
方案一:采用可编程放大器思想,通过程序调节放大倍数,使A/D转换器满量程信号达到均一化,大大提高测量精度,但由于难以满足高频率的指标,控制的数字量和电压增益不成线性关系,故不采用此方案。
方案二:采用程控电位器作为反馈电阻,由于电压增益的调节范围较大,需要电阻值的调节量很大,增加了电路的复杂程度,易影响分布的电容,造成电路的不稳定,故放弃此方案。
方案三:选用集成压控放大器作为增益控制,其增益与控制电压成线性关系,通过单片机输出数字信号到D/A芯片转换出相应的控制电压,实现精确的数控,且外围电路简单,便于调试,故选用此方案。
综上所述,选择方案三。
(3)后级放大电路
方案一:采用晶体管单端推挽放大电路,通过多级深度负反馈扩展通频带,级联可用直接耦合方式,但直接耦合的多级放大电路调试繁琐,电路不够稳定,且对电源电压的要求较高,所以放弃此方案。
方案二:选用多级运放实现放大,可以输出较高电压,但由于要与前置放大电路和压控增益放大电路级联,本身也要级联,带宽缩减,波形容易失真并产生自激振荡,所以放弃此方案。
方案三:选取单片集成宽带运算放大器。避免了本身级联使得带宽缩减,波形不易失真,且该方案电路较简单,容易调试,故采用本方案。
综上所述,选择方案三。
2.方案描述
系统框图如下图1所示,系统主要由四个模块构成:前置放大电路、压控增益放大电路、后级放大电路、单片机显示控制模块。前级放大电路增益为20dB,由两级OPA690 组成,保证输入阻抗匹配。放大后的信号通过VCA810再次进行放大,其中由单片机对VCA810输入-2~0V的控制电压以涵盖0~20dB 的增益调节范围。在压控增益放大电路再接一级后级放大电路,设置后级放大电路的增益为20dB,整个电路就能实现0~60dB的增益调节。
图1 系统框图
二、理论分析与计算
1.宽带放大器设计
本系统的宽带放大器主要体现在前置放大电路与后级放大电路,分别采用OPA690和THS3001两种运放。OPA690是宽频带、低温漂运放;THS3001是电流反馈运放,其带宽达到420MHz,两者对单位增益稳定都有很大作用。增益带宽积一定,为了扩展通频带,两个电路的放大倍数均设置为20dB,加上中间压控增益电路的可调节增益范围-40~40dB,则整个电路的增益调节范围达到80dB。
2.频带内增益起伏控制
随着频率的增高,放大器的增益会随之下降,通过补偿电容即在电阻两端并联电容(如下图2所示),当频率增高时,阻抗减小,电路的放大倍数增加,从而实现相位补偿和增益补偿,使信号在通频带内的增益更加平坦,并调整反馈电阻,将放大器的增益在通频带内的起伏降至最低。
图2 电容补偿图
3.射频放大器稳定性
由于本系统放大倍数非常大,芯片的增益带宽积越大越容易引起自激振荡,所以在运放的连接中,反馈电阻尽量靠近输入引脚,接地端并联旁路电容,级联采用阻容耦合,布线要短且尽量减少弯折。在输入级,将整个运放用较粗的地线包围,缩短地线回路,吸收高频信号减少噪声,增加电路的稳定性。
4.增益调整
增益控制部分以VCA810为核心,其通频带为25MHz,增益调节范围为-40~40dB,输入控制电压为0~-2V,增益控制精确到±1.5 dB。题目要求电压的最大增益要大于等于 60dB,且在0~60dB内可调,而中间级采用的压控增益放大器 VCA810对输入电压和输出电压均有限制,所以,必须合理分配各级放大器的放大倍数。前置放大电路增益设置为 20dB,则前置放大电路和VCA810级联可实现
-20~60dB 的增益调节范围。由于输入电压有效值小于等于1mV,为了提高 VCA810 的输入电压和进一步提高系统最高增益,VCA810下一级增加增益为20dB 的后级放大电路,则系统增益调节范围为 0~80dB。
三、电路与程序设计
1.电路设计
(1)前置放大电路
电路如下图3所示。设置前置放大电路,采用宽频带、低漂移运放OPA690,在±5V双电源供电下,组成二级级联的同相宽带放大器。在其同相输入端并联 51Ω电阻到地,实现阻抗匹配。反馈电阻经过多次调试确定分别为560Ω和800Ω,反相输入端阻抗则由电阻与电容构成,频率增加,阻抗减小,而第一级同相电路的增益Av1为Av1=1+R4/Z1(Z1为R1、R2、C1构成的阻抗),从式中很容易看出增益也随之增大。两级之间采用一样的电路网络,第二级的增益Av2为Av2=1+R8/Z2(Z2为R5、R6、C4构成的阻抗),则整个前级放大电路的增益为Av=Av1*Av2,实现20dB以上的放大。
图3 前置放大电路
(2)压控增益放大电路
电路如下图4所示,系统压控增益放大电路以VCA810为核心,其带宽达到35MHz,增益-40dB至+40dB连续可调,最高的增益线性度为±0.3dB/V。采用单
片机程控DA转换输出电压,来控制VCA810的电压增益,同时可手动按键更改电压增益。结合前级放大电路的增益20dB,整个电路则实现0~20dB连续可调。
图4 压控增益放大电路
(3)后级放大电路
电路如下图5所示,与前置放大电路相似,采用宽带电流反馈放大器THS3001在±5V双电源供电下,构成同相宽带放大器,为了与输出阻抗匹配,在输出端串联一个50Ω的电阻。反馈电阻接入1.8kΩ,该放大电路的增益Av3=1+R16/Z3(Z3为R14、R15、C9构成的阻抗),实现20dB以上的增益。
图5 后级放大电路
2.程序设计
由于本环节中单片机只需具备控制增益和液晶显示的功能,所以软件设计比较简单。启动单片机后进入增益控制及显示界面,可以通过按键调节增益,步进0.4dB,并将控制电压和增益显示在液晶屏上。如下图6为软件流程图。
图6 软件流程图
四、测试方案与测试结果
1.测试仪器
(1)VC9802A+型数字式万用表
(2)RS-1303DQ电源
(3)GDS-815C数字存储示波器
(4)EE1461 DDS合成信号发生器
(5)SP3060型数字合成扫频仪
2.测试方法及数据
(1)放大器最大增益与最小信号
输入端加1MHz正弦波,调节电压和增益测得波形不失真最大输出电压有效值。 输入有效值:1mV
预置增益:60dB
输出有效值:1V
(2)放大器输入阻抗与输出阻抗
电路设计的输入阻抗为50Ω,测得输出阻抗为50Ω。
(3)输出端噪声
在Av≥60dB时,将输出端短接,输出端噪声电压的峰峰值UoNpp为90mV,达到UoNpp≤100mV的要求。
(4)幅频特性测试
放大器宽带预置100MHz显示,最大起伏为0.98dB。测试数据如下表1,测试的采样波形图及幅频特性见附录2。
表1 通频带为100MHz的幅频特性
3.测试结果分析
(1)放大器的最大增益大于60dB,输入电压的有效值小于1mV,最大的输出有效值大于等于1V且增益在0~60dB连续可调,波形也无明显失真,达到题目的指标要求。
(2)电路设计的输入阻抗等于50Ω,输出阻抗等于50Ω,满足题目的指标要求。 (3)在增益大于60dB的前提下,噪声电压小于100mV,满足题目对噪声的指标要求。在测试噪声电压时,由于测试环境中有大量的电子设备,干扰较大,屏蔽盒不够完善,如果对整个电路加强屏蔽,噪声电压会更小。
(4)由表1知,通频带内的电压增益起伏小于1dB,3dB的带宽也满足题目所要的范围,达到题目的指标要求。由于示波器本身的仪器误差,使得读出的数据与理想的数据有些微出入,如果使用更为精密的仪器,读出的数据将更为准确。 (5)单片机显示控制了电压的增益,自制屏蔽罩大幅度减少了噪音,符合题目中发挥部分的其他。
五、总结
本设计圆满地完成了基本部分的要求,较好地完成了题目发挥部分的要求,
但仍存在一定的发展空间。例如由于最后一级电路放大高频特性的限制,如果继续改善补偿电路,可使通频带内的增益起伏降低至0.5dB内;另外,若将电路板做成PCB板,合理的布局以及采用大面积覆铜等措施,可以使噪声电压降到更低,进一步提系统的性能。
附录: 1.元器件表
射频宽带放大器元器件清单 元件名称 规格 数量 备注 运算放大器 OPA690 2 VCA810 1 THS3001 1 可调电阻 10k 1 电路板 2
2.幅频特性显示与波形显示
图7 0dB幅频特性
图8 10dB 幅频特性显示
图9 20dB幅频特性显示
图10 1MHz达到的峰峰值波形图
图11 20MHz不失真波形图
3.总电路图
4源程序
#include #include #define uchar unsigned char #define uint unsigned int
#define PCF8591 0x90 //PCF8591 地址 #define uchar unsigned char #define uint unsigned int
typedef unsigned char BYTE; //用BYTE代替unsigned char typedef bit BOOL; // 用BOOL代替bit BOOL lcd_bz();
sbit LCD_RS = P2^6; //复位端 sbit LCD_RW = P2^5; //写数据端 sbit LCD_EP = P2^7; //使能端
sbit K1=P1^0; sbit K2=P1^1;
sbit SCL=P2^1; //串行时钟输入端 sbit SDA=P2^0;
//串行数据输入端
void delay1(int ms);
void lcd_wcmd(int cmd); void lcd_pos(BYTE pos); void lcd_wdat(BYTE dat); void lcd_init();
unsigned char code cdis1[] = {"VOLTAGE: V"}; unsigned char code cdis2[] = {"GAIN: dB"}; unsigned char data display1[] = {0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char data display2[] = {0x00, 0x00, 0x00, 0x00, 0XFF};
/****************延时函数************************/ void delay1(int ms) { int i;
while(ms--)
{
for(i = 0; i
_nop_(); _nop_(); _nop_(); _nop_(); } }
}
/****************测忙函数************************/
BOOL lcd_bz()
{ BOOL result; LCD_RS = 0; LCD_RW = 1; LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_();
result = (BOOL)(P0 & 0x80); LCD_EP = 0; return result;
}
/****************写命令函数************************/ void lcd_wcmd_8bit(int cmd) { while(lcd_bz()); LCD_RS = 0; LCD_RW = 0; LCD_EP = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
/****************LCD写入命令函数********************/ void lcd_wcmd(int cmd) { while(lcd_bz()); LCD_RS = 0;
LCD_RW = 0;
LCD_EP = 0; _nop_(); _nop_();
P0 = cmd; //高4位传入 _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0;
P0 = (cmd&0x0f)
}
/****************显示位置设定函数******************/
void lcd_pos(BYTE pos) { lcd_wcmd(pos | 0x80);
}
/****************写数据函数************************/
void lcd_wdat(BYTE dat) { while(lcd_bz()); LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
P0 = dat ; //高四位传入 _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0;
LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
_nop_();
_nop_();
_nop_();
_nop_();
P0 = (dat&0x0f)
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 0;
}
/****************LCD初始化函数********************/ void lcd_init()
{
lcd_wcmd_8bit(0x38); delay1(1);
lcd_wcmd_8bit(0x38); delay1(1);
lcd_wcmd_8bit(0x28);
delay1(1);
lcd_wcmd(0x28);
delay1(1);
lcd_wcmd(0x0c);
delay1(1);
lcd_wcmd(0x02);
delay1(1);
lcd_wcmd(0x01);
delay1(1);
}
/****************DA变换延时函数********************/ void delay()
{;;}
/****************延时z ms函数**********************/ void delay_1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************IIC开始函数***********************/ void start()
{
SDA=1;
delay();
SCL=1;
delay();
SDA=0;
delay();
}
/****************IIC停止函数***********************/ void stop()
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
/****************IIC应答函数***********************/ void respons()
{
uchar i;
SCL=1;
delay();
while((SDA==1)&&(i
i++;
SCL=0;
delay();
}
/****************IIC初始化函数*********************/ void init()
{
SDA=1;
delay();
SCL=1;
delay();
}
/****************写入一字节函数********************/ void write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i
{
temp=temp
SCL=0;
delay();
SDA=CY;
delay();
SCL=1;
delay();
}
SCL=0;
delay();
SDA=1;
delay();
}
/*****************写数据函数***********************/ void write_add(uchar control,uchar date)
{
start();
write_byte(PCF8591);
respons();
write_byte(control);
respons();
write_byte(date);
respons();
stop();
}
/*************电压及放大倍数显示函数***************/ void play(unsigned int b)
{
unsigned char n ;
unsigned int gain ,voltage;
voltage=b*2;
gain=b*4;
for (n = 0; n
{
display1[n] = voltage % 10+0x30;
voltage = voltage / 10;
}
display1[3]=display1[2];
display1[2]=0x2e;
display1[4]=0x2d;
for (n = 0; n
{
display2[n] = gain % 10+0x30;
gain = gain / 10;
}
display2[4]=display2[3];
display2[3]=display2[2];
display2[2]=0x2e;
lcd_pos(0x09);
for (n = 4; n != 0xff; n--)
lcd_wdat(display1[n]);
lcd_pos(0x47);
for (n = 4; n != 0xff; n--)
lcd_wdat(display2[n]);
}
/*********************按键K1***********************/ char Pressed1(void)
{
while(P1==0XFE);
delay_1ms(60);
if (P1!=0XFE)
return 1;
else
return 0;
}
/*********************按键K2***********************/
char Pressed2(void)
{
while(P1==0XFD);
delay_1ms(60);
if (P1!=0XFD)
return 1;
else
return 0;
}
/*********************总程序***********************/ void main()
{
unsigned char m;
uchar a=50;
init();
lcd_init();
lcd_pos(0x00);
for (m = 0; m
lcd_wdat(cdis1[m]);
lcd_pos(0x40);
for (m = 0; m
lcd_wdat(cdis2[m]);
while(1)
{
write_add(0x40,a);
delay_1ms(5);
if(Pressed1()) a++;
if(Pressed2()) a--;
if(a>100)a=100; if(a
}
射频宽带放大器
摘 要:本系统采用宽带电压反馈运放OPA690、压控增益放大器VCA810以及宽带电流反馈放大器THS3001结合的方式,实现了增益可调的射频宽带放大器。系统主要由四个模块构成:前置放大电路、压控增益放大电路、后级放大电路、单片机显示控制模块。压控增益放大电路以VCA810为核心,实现60dB的可调节范围;使用THS3001等运放进行电压放大使最大有效值达到1V;整个电路波形稳定、无明显失真,噪声电压小,通频带内增益平坦,较好得完成了基本部分和发挥部分的要求。
关键词:射频放大、宽带放大、压控增益、单片机控制
Abstract
Adopting a combination of wideband voltage-feedback amplifier OPA690, voltage-controlled gain amplifier-VCA810, wideband current-feedback amplifier THS3001, the system can achieve a RF(RF-Radio frequency)broadband amplifier with adjustable gain. The system is consisted of four blocks: pre-amplifier circuit, voltage-controlled gain amplifier circuit, the latter amplifier circuit, MCU display control module. With a core of VCA810, the VGA circuit can achieve 60dB of gain adjustment range. Applying THS3001 etc. amplifier gains 1V of maximum effective value. The whole system has a feature of stable distortionless waveform, low noise and high
gainflatness complete the design tasks, both the basic part and extended part.
Keywords: Radio frequency amplification、bandwidth amplification、voltage controlled gain、single chip microcomputer control
目录
一、系统方案…………………………………………………………………………………………………............4
1.1方案比较与选择…………………………………………………………………………………………........4
1.1.1前置放大电路………………………………………………………………………………………….........4
1.1.2 压控增益放大电路…………………………………………………………………………………........4
1.1.3 后级放大电路…………………………………………………………………………………………........4
1.2方案描述…………………………………………………………………………………………………….........5
二、理论分析与计算………………………………………………………………………………………...........6
2.1 宽带放大器设计………………………………………………………………………………………........6
2.2 频带内增益起伏控制………………………………………………………………………………………..6
2.3 射频放大器稳定性……………………………………………………………………………………………6
2.4增益调整…………………………………………………………………………………………………………….6
三、电路与程序设计…………………………………………………………………………………………………7
3.1电路设计…………………………………………………………………………………………………………….7
3.1.1前置放大电路与电路原理图…………………………………………………………………………..7
3.1.2压控增益放大电路与电路原理图…………………………………………………………………..7
3.1.3 后级放大电路与电路原理图……………………………………………………………………… ...8
3.2程序的设计…………………………………………………………………………………………………………9
四、测试方案与测试结果…………………………………………………………………………………… .10
4.1测试仪器…………………………………………………………………………………………………………..10
4.2 测试方法及数据……………………………………………………………………………………………..10
4.3 测试结果及析……………………………………………………………………………………..………….11
五、总结………………………………………………………………………………………………………………....12 附录1:元器件表……………………………………………………………………………………………………12
附录2:幅频特性显示与波形显示............................................................................12 附录3:总电路图……………………………………………………………………………………………………15 附录4:源程序 …………………………………………………………………………………………………….15
一、系统方案
1.方案比较与选择
(1)前置放大电路
方案一:选用分立元件搭建电路,可以输出较大电压,但需采用多级高频电路,电路比较复杂,工作点难于调整,容易产生自激振荡,难以保证带宽,故不选用此方案。
方案二:使用多级放大器实现放大,采用同相输入形式,多级放大电路的对数增益等于其各级对数增益的对数和。此方案原理简单,易于调试,能够满足题目中输入阻抗和线性度的要求,故选取此方案。
综上所述,选择方案二。
(2)压控增益放大电路
方案一:采用可编程放大器思想,通过程序调节放大倍数,使A/D转换器满量程信号达到均一化,大大提高测量精度,但由于难以满足高频率的指标,控制的数字量和电压增益不成线性关系,故不采用此方案。
方案二:采用程控电位器作为反馈电阻,由于电压增益的调节范围较大,需要电阻值的调节量很大,增加了电路的复杂程度,易影响分布的电容,造成电路的不稳定,故放弃此方案。
方案三:选用集成压控放大器作为增益控制,其增益与控制电压成线性关系,通过单片机输出数字信号到D/A芯片转换出相应的控制电压,实现精确的数控,且外围电路简单,便于调试,故选用此方案。
综上所述,选择方案三。
(3)后级放大电路
方案一:采用晶体管单端推挽放大电路,通过多级深度负反馈扩展通频带,级联可用直接耦合方式,但直接耦合的多级放大电路调试繁琐,电路不够稳定,且对电源电压的要求较高,所以放弃此方案。
方案二:选用多级运放实现放大,可以输出较高电压,但由于要与前置放大电路和压控增益放大电路级联,本身也要级联,带宽缩减,波形容易失真并产生自激振荡,所以放弃此方案。
方案三:选取单片集成宽带运算放大器。避免了本身级联使得带宽缩减,波形不易失真,且该方案电路较简单,容易调试,故采用本方案。
综上所述,选择方案三。
2.方案描述
系统框图如下图1所示,系统主要由四个模块构成:前置放大电路、压控增益放大电路、后级放大电路、单片机显示控制模块。前级放大电路增益为20dB,由两级OPA690 组成,保证输入阻抗匹配。放大后的信号通过VCA810再次进行放大,其中由单片机对VCA810输入-2~0V的控制电压以涵盖0~20dB 的增益调节范围。在压控增益放大电路再接一级后级放大电路,设置后级放大电路的增益为20dB,整个电路就能实现0~60dB的增益调节。
图1 系统框图
二、理论分析与计算
1.宽带放大器设计
本系统的宽带放大器主要体现在前置放大电路与后级放大电路,分别采用OPA690和THS3001两种运放。OPA690是宽频带、低温漂运放;THS3001是电流反馈运放,其带宽达到420MHz,两者对单位增益稳定都有很大作用。增益带宽积一定,为了扩展通频带,两个电路的放大倍数均设置为20dB,加上中间压控增益电路的可调节增益范围-40~40dB,则整个电路的增益调节范围达到80dB。
2.频带内增益起伏控制
随着频率的增高,放大器的增益会随之下降,通过补偿电容即在电阻两端并联电容(如下图2所示),当频率增高时,阻抗减小,电路的放大倍数增加,从而实现相位补偿和增益补偿,使信号在通频带内的增益更加平坦,并调整反馈电阻,将放大器的增益在通频带内的起伏降至最低。
图2 电容补偿图
3.射频放大器稳定性
由于本系统放大倍数非常大,芯片的增益带宽积越大越容易引起自激振荡,所以在运放的连接中,反馈电阻尽量靠近输入引脚,接地端并联旁路电容,级联采用阻容耦合,布线要短且尽量减少弯折。在输入级,将整个运放用较粗的地线包围,缩短地线回路,吸收高频信号减少噪声,增加电路的稳定性。
4.增益调整
增益控制部分以VCA810为核心,其通频带为25MHz,增益调节范围为-40~40dB,输入控制电压为0~-2V,增益控制精确到±1.5 dB。题目要求电压的最大增益要大于等于 60dB,且在0~60dB内可调,而中间级采用的压控增益放大器 VCA810对输入电压和输出电压均有限制,所以,必须合理分配各级放大器的放大倍数。前置放大电路增益设置为 20dB,则前置放大电路和VCA810级联可实现
-20~60dB 的增益调节范围。由于输入电压有效值小于等于1mV,为了提高 VCA810 的输入电压和进一步提高系统最高增益,VCA810下一级增加增益为20dB 的后级放大电路,则系统增益调节范围为 0~80dB。
三、电路与程序设计
1.电路设计
(1)前置放大电路
电路如下图3所示。设置前置放大电路,采用宽频带、低漂移运放OPA690,在±5V双电源供电下,组成二级级联的同相宽带放大器。在其同相输入端并联 51Ω电阻到地,实现阻抗匹配。反馈电阻经过多次调试确定分别为560Ω和800Ω,反相输入端阻抗则由电阻与电容构成,频率增加,阻抗减小,而第一级同相电路的增益Av1为Av1=1+R4/Z1(Z1为R1、R2、C1构成的阻抗),从式中很容易看出增益也随之增大。两级之间采用一样的电路网络,第二级的增益Av2为Av2=1+R8/Z2(Z2为R5、R6、C4构成的阻抗),则整个前级放大电路的增益为Av=Av1*Av2,实现20dB以上的放大。
图3 前置放大电路
(2)压控增益放大电路
电路如下图4所示,系统压控增益放大电路以VCA810为核心,其带宽达到35MHz,增益-40dB至+40dB连续可调,最高的增益线性度为±0.3dB/V。采用单
片机程控DA转换输出电压,来控制VCA810的电压增益,同时可手动按键更改电压增益。结合前级放大电路的增益20dB,整个电路则实现0~20dB连续可调。
图4 压控增益放大电路
(3)后级放大电路
电路如下图5所示,与前置放大电路相似,采用宽带电流反馈放大器THS3001在±5V双电源供电下,构成同相宽带放大器,为了与输出阻抗匹配,在输出端串联一个50Ω的电阻。反馈电阻接入1.8kΩ,该放大电路的增益Av3=1+R16/Z3(Z3为R14、R15、C9构成的阻抗),实现20dB以上的增益。
图5 后级放大电路
2.程序设计
由于本环节中单片机只需具备控制增益和液晶显示的功能,所以软件设计比较简单。启动单片机后进入增益控制及显示界面,可以通过按键调节增益,步进0.4dB,并将控制电压和增益显示在液晶屏上。如下图6为软件流程图。
图6 软件流程图
四、测试方案与测试结果
1.测试仪器
(1)VC9802A+型数字式万用表
(2)RS-1303DQ电源
(3)GDS-815C数字存储示波器
(4)EE1461 DDS合成信号发生器
(5)SP3060型数字合成扫频仪
2.测试方法及数据
(1)放大器最大增益与最小信号
输入端加1MHz正弦波,调节电压和增益测得波形不失真最大输出电压有效值。 输入有效值:1mV
预置增益:60dB
输出有效值:1V
(2)放大器输入阻抗与输出阻抗
电路设计的输入阻抗为50Ω,测得输出阻抗为50Ω。
(3)输出端噪声
在Av≥60dB时,将输出端短接,输出端噪声电压的峰峰值UoNpp为90mV,达到UoNpp≤100mV的要求。
(4)幅频特性测试
放大器宽带预置100MHz显示,最大起伏为0.98dB。测试数据如下表1,测试的采样波形图及幅频特性见附录2。
表1 通频带为100MHz的幅频特性
3.测试结果分析
(1)放大器的最大增益大于60dB,输入电压的有效值小于1mV,最大的输出有效值大于等于1V且增益在0~60dB连续可调,波形也无明显失真,达到题目的指标要求。
(2)电路设计的输入阻抗等于50Ω,输出阻抗等于50Ω,满足题目的指标要求。 (3)在增益大于60dB的前提下,噪声电压小于100mV,满足题目对噪声的指标要求。在测试噪声电压时,由于测试环境中有大量的电子设备,干扰较大,屏蔽盒不够完善,如果对整个电路加强屏蔽,噪声电压会更小。
(4)由表1知,通频带内的电压增益起伏小于1dB,3dB的带宽也满足题目所要的范围,达到题目的指标要求。由于示波器本身的仪器误差,使得读出的数据与理想的数据有些微出入,如果使用更为精密的仪器,读出的数据将更为准确。 (5)单片机显示控制了电压的增益,自制屏蔽罩大幅度减少了噪音,符合题目中发挥部分的其他。
五、总结
本设计圆满地完成了基本部分的要求,较好地完成了题目发挥部分的要求,
但仍存在一定的发展空间。例如由于最后一级电路放大高频特性的限制,如果继续改善补偿电路,可使通频带内的增益起伏降低至0.5dB内;另外,若将电路板做成PCB板,合理的布局以及采用大面积覆铜等措施,可以使噪声电压降到更低,进一步提系统的性能。
附录: 1.元器件表
射频宽带放大器元器件清单 元件名称 规格 数量 备注 运算放大器 OPA690 2 VCA810 1 THS3001 1 可调电阻 10k 1 电路板 2
2.幅频特性显示与波形显示
图7 0dB幅频特性
图8 10dB 幅频特性显示
图9 20dB幅频特性显示
图10 1MHz达到的峰峰值波形图
图11 20MHz不失真波形图
3.总电路图
4源程序
#include #include #define uchar unsigned char #define uint unsigned int
#define PCF8591 0x90 //PCF8591 地址 #define uchar unsigned char #define uint unsigned int
typedef unsigned char BYTE; //用BYTE代替unsigned char typedef bit BOOL; // 用BOOL代替bit BOOL lcd_bz();
sbit LCD_RS = P2^6; //复位端 sbit LCD_RW = P2^5; //写数据端 sbit LCD_EP = P2^7; //使能端
sbit K1=P1^0; sbit K2=P1^1;
sbit SCL=P2^1; //串行时钟输入端 sbit SDA=P2^0;
//串行数据输入端
void delay1(int ms);
void lcd_wcmd(int cmd); void lcd_pos(BYTE pos); void lcd_wdat(BYTE dat); void lcd_init();
unsigned char code cdis1[] = {"VOLTAGE: V"}; unsigned char code cdis2[] = {"GAIN: dB"}; unsigned char data display1[] = {0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char data display2[] = {0x00, 0x00, 0x00, 0x00, 0XFF};
/****************延时函数************************/ void delay1(int ms) { int i;
while(ms--)
{
for(i = 0; i
_nop_(); _nop_(); _nop_(); _nop_(); } }
}
/****************测忙函数************************/
BOOL lcd_bz()
{ BOOL result; LCD_RS = 0; LCD_RW = 1; LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_();
result = (BOOL)(P0 & 0x80); LCD_EP = 0; return result;
}
/****************写命令函数************************/ void lcd_wcmd_8bit(int cmd) { while(lcd_bz()); LCD_RS = 0; LCD_RW = 0; LCD_EP = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
/****************LCD写入命令函数********************/ void lcd_wcmd(int cmd) { while(lcd_bz()); LCD_RS = 0;
LCD_RW = 0;
LCD_EP = 0; _nop_(); _nop_();
P0 = cmd; //高4位传入 _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0;
P0 = (cmd&0x0f)
}
/****************显示位置设定函数******************/
void lcd_pos(BYTE pos) { lcd_wcmd(pos | 0x80);
}
/****************写数据函数************************/
void lcd_wdat(BYTE dat) { while(lcd_bz()); LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
P0 = dat ; //高四位传入 _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0;
LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
_nop_();
_nop_();
_nop_();
_nop_();
P0 = (dat&0x0f)
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 0;
}
/****************LCD初始化函数********************/ void lcd_init()
{
lcd_wcmd_8bit(0x38); delay1(1);
lcd_wcmd_8bit(0x38); delay1(1);
lcd_wcmd_8bit(0x28);
delay1(1);
lcd_wcmd(0x28);
delay1(1);
lcd_wcmd(0x0c);
delay1(1);
lcd_wcmd(0x02);
delay1(1);
lcd_wcmd(0x01);
delay1(1);
}
/****************DA变换延时函数********************/ void delay()
{;;}
/****************延时z ms函数**********************/ void delay_1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************IIC开始函数***********************/ void start()
{
SDA=1;
delay();
SCL=1;
delay();
SDA=0;
delay();
}
/****************IIC停止函数***********************/ void stop()
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
/****************IIC应答函数***********************/ void respons()
{
uchar i;
SCL=1;
delay();
while((SDA==1)&&(i
i++;
SCL=0;
delay();
}
/****************IIC初始化函数*********************/ void init()
{
SDA=1;
delay();
SCL=1;
delay();
}
/****************写入一字节函数********************/ void write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i
{
temp=temp
SCL=0;
delay();
SDA=CY;
delay();
SCL=1;
delay();
}
SCL=0;
delay();
SDA=1;
delay();
}
/*****************写数据函数***********************/ void write_add(uchar control,uchar date)
{
start();
write_byte(PCF8591);
respons();
write_byte(control);
respons();
write_byte(date);
respons();
stop();
}
/*************电压及放大倍数显示函数***************/ void play(unsigned int b)
{
unsigned char n ;
unsigned int gain ,voltage;
voltage=b*2;
gain=b*4;
for (n = 0; n
{
display1[n] = voltage % 10+0x30;
voltage = voltage / 10;
}
display1[3]=display1[2];
display1[2]=0x2e;
display1[4]=0x2d;
for (n = 0; n
{
display2[n] = gain % 10+0x30;
gain = gain / 10;
}
display2[4]=display2[3];
display2[3]=display2[2];
display2[2]=0x2e;
lcd_pos(0x09);
for (n = 4; n != 0xff; n--)
lcd_wdat(display1[n]);
lcd_pos(0x47);
for (n = 4; n != 0xff; n--)
lcd_wdat(display2[n]);
}
/*********************按键K1***********************/ char Pressed1(void)
{
while(P1==0XFE);
delay_1ms(60);
if (P1!=0XFE)
return 1;
else
return 0;
}
/*********************按键K2***********************/
char Pressed2(void)
{
while(P1==0XFD);
delay_1ms(60);
if (P1!=0XFD)
return 1;
else
return 0;
}
/*********************总程序***********************/ void main()
{
unsigned char m;
uchar a=50;
init();
lcd_init();
lcd_pos(0x00);
for (m = 0; m
lcd_wdat(cdis1[m]);
lcd_pos(0x40);
for (m = 0; m
lcd_wdat(cdis2[m]);
while(1)
{
write_add(0x40,a);
delay_1ms(5);
if(Pressed1()) a++;
if(Pressed2()) a--;
if(a>100)a=100; if(a
}