低频低噪声高增益放大器讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

低频低噪声高增益放大器

一、基本要求

(1)放大器

a.电压放大倍数200~2000倍,放大倍数可预置步进(间隔不大于200倍),有数字显示额外加分。

b.通频带3kHz~5kHz。

c.放大倍数为2000倍时,测得输出噪声电压峰—峰值等效到输入端小于800nV。d.最大不失真输出幅度不小于8V。

e.输入电阻不小于1kΩ,输出电阻不大于20Ω。

(2)自制供电电源。单相交流220伏电压供电,电源波动±10%时可正常工作。

(3)自制适合于本放大器测试用的信号源。

发挥部分

(1)电压放大倍数更高、步长更小

(2)等效输入噪声不大于200nV。

(3)等效输入电阻大于10kΩ。

(4)数字显示精度进一步改善

二、方案设计

2.1方案流程图

2.2 信号源制作模块

信号源原理图

信号源效果图

说明:单片机制作4.5KHZ的信号源,为电路提高信号源。

2.3 π网络衰减射随器带通滤波器模块制作

衰减网络

说明:由于单片机制作的信号源输出幅度很大,4V左右,而题目的要求知,信号源提供的电压幅度在10mV左右,因此通过衰减网络达到目的。

射随器

说明:射随器提高输入阻抗,以达到题目指定的要求。

带通滤波器

说明:带通滤波器的范围为3kHz~5kHz,因此可以满足通频带3kHz~5kHz的要求。

2.4 DAC0832程控网络

说明:通过DAC0832实现电压放大倍数200~3000倍的控制,把放大3000倍后的信号作为DAC0832的参考电压,通过数字量实现步进100倍的增益控制。

2.5 后级放大

说明:放大倍数进一步放大,固定放大1000倍。

2.6 电源制作模块

电源电路图说明:制作电源给电路供电。

三、软件设计

软件设计部分的程序流程框图

程序流程框图

键盘扫描

有键按下keyflag=1

Key=ox0e Key=ox0d Key=ox0b Key=ox0f 置倍数3000 倍减倍加置倍数200

LED显示

仿真效果图及原理图

说明:通过键盘控制达到改变增益的目的。

四、系统功能设计与测试

4.2带宽测试

4.3基本功能实现部分

1.放大倍数200~2000实现,发挥至3000倍。

2.步进100倍。

3.最大不失真输出幅度不小于15V

4.输入电阻不小于1kΩ,输出电阻不大于20Ω。

5. 自制供电电源。单相交流220伏电压供电,电源波动±10%时可正常工作。

6. 自制适合于本放大器测试用的信号源。

附录

1.信号源程序

#include

#define uchar unsigned char

#define uint unsigned int

sbit dawr=P3^6;

sbit led=P0^0;

uchar code table[]={128, 154, 180, 203, 223, 238, 249,

255, 255, 249, 238, 223, 203, 180,

154, 128,101, 75, 52, 32, 17, 6,

0, 0, 6, 17, 32,52, 75, 101, 127 };

void main()

{

uint val;

dawr=0;

P2=0;

while(1)

{

for(val=0;val<30;val++)

{

P2=table[val];

}

}

}

2.增益控制程序

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

unsigned char dis_data[4]=0; //数码管显示缓冲区unsigned led_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; //定义数码管字形数据uchar x=0;

uint code table[]={200,300,400,500,600,700,800,900,

1000,1100,1200,1300,1400,1500,

1600,1700,1800,1900,2000,2100,2200,2300,

2400,2500,2600,2700,2800,2900,3000};

uchar dac;

void delayms(uint x)

{

uint j;

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

for(j=11;j>0;j--);

} //延时xms

void timer(void) interrupt 3 using 3

{

TH1=0xe0; //重置定时器初值

TL1=0;

P2=~(0x00|(1<

P0=dis_data[x++];

if(x>3) x=0;

}

void calculate(uint db)

{ //定义增益值变量

uchar sw=0,gw=0,sfw=0,bfw=0; //定义数据位变量

P3=(uint)(db*255.0/3000.0); //改DA sw=(int)db/1000; //计算十位

gw=(int)db/100%10; //计算个位

sfw=(int)db/10%10; //计算十分位

bfw=(int)db%10; //计算百分位

dis_data[3]=led_seg[sw]; //刷新显示

if(sw==0) dis_data[3]=0x00; //十位灭零

delayms(1);

dis_data[2]=led_seg[gw];

delayms(1);

dis_data[1]=led_seg[sfw];

delayms(1);

dis_data[0]=led_seg[bfw];

delayms(1);

}

void main(void)

{

uchar key=0;

bit keyflag=1;

uint dac=0; //定义DA转换器变量

相关文档
最新文档