程控放大器的设计与实现.docx
- 文档编号:4982067
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:23
- 大小:436.86KB
程控放大器的设计与实现.docx
《程控放大器的设计与实现.docx》由会员分享,可在线阅读,更多相关《程控放大器的设计与实现.docx(23页珍藏版)》请在冰豆网上搜索。
程控放大器的设计与实现
程控放大器的设计与实现
摘要
本文介绍了一种可通过程序改变增益的放大器。
它与ADC相配合,可以自动适应大范围变化的模拟信号电平。
系统以89S51单片机作微处理器,运用NE5532芯片组成运放电路,采用CD4052芯片担任增益切换开关,通过软件控制开关的闭合或断开来达到改变电路的增益.
文章首先对系统方案进行论证,然后对硬件电路和软件设计进行了说明,最后重点阐述了系统的调试过程,并且对调试过程中遇到的问题以及解决方案进行了详细说明。
该系统设计达到了预期要求,实现了最大放大60db的目的。
关键词
程控放大器;运算器放大器;单片机;增益
TheDesignandRealizationofProgram-ControllAmplifier
Abstract
Thisarticleintroducesaamplifierwhichchangesthegainthroughthesoftware。
ItcoordinateswithADCandadaptsthesimulatedsignallevelwithwiderangechangeautomatically.Thesystemusesthe89s51SCMasthecore。
TheNE5532chipcomposestheoperationalcircuitandtheCD4052chipcomposesthegainswitch。
Thegainofthecircuitischangedbysoftwarewhichcancontrolswitchclosedordisconnect。
Thearticlefirstdemonstratesthesystemplan,thenintroducesthehardwareandthesoftware,finallyexplainsthedebuggingprocessofthesystemwithemphasis.Italsoespeciallyanalogizestheprobleminthedebuggingprocessandtheresolutions.Thissystemdesignhasachievedanticipativerequestandrealizedenlarged60dbmostgreatlythegoal。
Keywords
Program-controlledamplifier;operationalAmplifier;SCM;gain
前言
在计算机数控系统中,模拟信号在送入计算机进行处理前,必须进行量化,即进行A/D转换[1].进行A/D转换之前,必须考虑A/D转换器的分辨率和模拟输入电压量程这两个问题。
在一些特殊的应用中,我们常希望输入信号的幅值接近A/D的输入电压量程的上限。
工程上常采取改变放大器增益的方法对幅值大小不一的信号进行放大。
在计算机数控系统中,为实现不同幅度信号的放大,往往不希望、甚至也不可能利用手动方法来实现增益变换。
利用程控放大器可以很好地解决上述问题。
程控放大器是根据使用要求由程序控制改变增益的放大器,具有控制方便,线性度高,稳定可靠等优点[2].使用程控放大器改变模拟输入信号的增益,并配合A/D的使用,可允许输入的模拟信号在较大范围内动态变化,达到了提高A/D的输入电压量程的目的,也相当于提高了A/D的分辨率。
随着数字化技术的不断发展,各类测量仪表越来越趋于采取数字化和智能化方向的发展[3]。
这些设备一般由前端的传感器、放大器电路和后端的数据处理电路组成。
其中后端数据处理电路通常采用高精度A/D和高速单片机,以保证仪表的精度和速度要求。
对于前端电路,由于传感器输出信号的幅度和驱动能力均比较微弱,必须加接高精度的测量放大器以满足后端电路的要求;另一方面,传感器在不同测试中输出信号的幅度可能相差很多,传统的处理方法是对放大器增加手动档位调节以保证后端的A/D采集输入端的信号在一定幅度内,从而保证整个仪表的测量精度.人工档位调节增加了仪表操作的复杂性、影响了数据测量的实时性,同时档位调节通常采用机械转扭增加了仪器的不可靠性和接触电阻对测量精度的影响。
是否可由单片机自动选择量程档位呢?
答案是肯定的,传统的方法是采用可软件设置增益的放大器。
1 设计任务与要求
设计并制作一个程控放大器.通频带10Hz—150KHz,输入阻抗大于500KΩ,最大输出10VPP.增益可调范围0-60db,每10db步进。
放大倍数可预置,可修改,并用数码管显示。
增益误差不大于
2db.
2 系统方案论证
程控放大器的基本电路和一般放大器电路类似,只是不同电路其反馈网络以及期中的电阻阻值是不同的,下面就改变增益的几种常用方法作一些探讨.
2。
1 方案一同相型程控放大器
图2。
1同相放大器的基本电路
同相型放大器的基本电路如图2.1所示。
放大器的增益G只取决于反馈电阻Rf和电阻R1.
由于运算放大器的输入阻抗很高,尤其对于场效应输入型运算放大器,输入阻抗可达1012Ω,因而开关的导通电阻对放大器增益的影响可以忽略不计[4]。
在图2。
1中,利用运算放大器的高开环增益特性和负反馈,开关的导通电阻对增益的影响基本上得以消除。
该类电路的优点是开关导通电阻对电路的增益影响小,因此特别适用于采用模拟电子开关控制的场合。
电路的不足之处是放大器增益不能小于1,因此不能对输入信号进行衰减,解决办法是在前级加入无源衰减网络。
2.2 方案二反相型程控放大器
图2。
2反相型程控放大器
反相型程控放大器的基本电路如图2。
2所示。
在图中只需改变Rf或Ri的阻值就可以改变放大器的增益。
电路中,切换开关SW1~SWn可以使用模拟电子开关或继电器,通过软件控制开关的闭合或断开,用于选择不同的输入电阻或反馈电阻来达到改变电路的增益[5].该类电路的优点:
放大器增益可大于1,也可小于1或等于1,因此,既可以对输入的小信号进行放大,也可以对输入的大信号进行衰减,因此电路的动态适应范围很大。
但该方法的缺点也是显而易见的:
由于切换开关与输入电阻或反馈电阻串联,开关的导通电阻将影响放大器的增益,特别是在使用模拟电子开关时尤其明显。
解决方法是将放大器的反馈电阻Rf和输入电阻Ri尽量取大一些,也可先测出开关的导通电阻,再对电路中的Rf~Rfn或Ri1~Rin作适当的修正。
另外,所示的放大器的输入阻抗不是固定的,因此最好加入隔离放大器以减少对前级信号源的影响。
该图所示电路,采用集成化的模拟开关担任增益切换开关,功耗小,体积小,可以由TTL或CMOS电平直接驱动,可进行放大和衰减.同样,模拟开关的导通电阻影响放大倍数,模拟开关可以使用CMOS系列的CD4066,CD4051~CD4053等等,也可以使用MAX75XX系列或MAX301~309,331~339,351~359系列的模拟开关.当放大器的输入信号正负都有时,模拟开关必须双电源供电。
2。
3 方案三DAC型程控放大器
DAC型程控放大器由DAC和运算放大器组成,其原理是利用DAC的乘法功能实现可变增益控制[6]。
DAC内部主要由R—2R电阻网络和模拟电子开关构成,例如DAC0832、AD7520等电流输出型芯片。
此类程控放大器的优点:
由于DAC中的R—2R电阻网络是采用精密光刻技术生产出来的,电阻的误差较小,温度系数也比一般的金属膜电阻低得多,因此构成的程控放大的增益误差较小;另外,只要取合适的输入电阻Ri或反馈电阻Rf,电路和增益可以大于1,也可小于1,也可以等于1,甚至为0。
电路的缺点:
由于DAC内部的分布电容影响,电路的频响不是太理想,电路增益也不容易做得较大;另外电路的信噪比也较差。
另外,虽然市场上已有单片集成程控放大器芯片,如AD526、PGA204等产品,但它们的价格昂贵,放大的增益用户无法自行改变.
3 硬件电路设计
总结上述三种方案,我决定选用芯片NE5532实行三级放大,用CD4052模拟开关进行切换选择,单片机进行控制.系统分两大模块,一是控制模块,一是放大模块。
图3.1是硬件电路框图。
图3.1硬件电路框图
如图所示,输入信号先经过设置为电压跟随器的晶体管,提高输入阻抗。
然后进行一级放大,二级放大,三级放大。
再由单片机控制放大倍数,选通模拟开关以及运放,关将结果送数码管显示。
3。
1 控制模块
图3.2为控制模块电路图。
控制模块主要由单片机组成,键盘扫描电路和显示电路则分别接在单片机的四个端口.在P0口,接共阳的数码管,P2.4~P2。
7接晶体管,控制数码管的位选端.P2。
0接程序指示灯。
键盘扫描接在P3口。
P1口分别接入一6脚排插用来连接模拟开关和6线下载器。
复位电路采用按键复位.
图3。
2控制模块
3。
1。
1 AT89S51:
MCS-51系列单片机中HMOS工艺制造的芯片采用双列直插(DIP)方式封装,有40个引脚[7]。
(1)电源引脚。
VCC正常运行和编程校验时为5V电源,Vss为接地端。
(2)I/O总线。
P0。
0~P0.7(P0口),P1.0~P1.7(P1口),P2。
0~P2.(P2口),P3.0~P3.7(P3口)为输入/输出引线。
(3)时钟。
XTAL1:
片内振荡器反相放大器的输入端。
XTAL2:
片内振荡器反相器的输入端,也是内部时钟发生器的输入端。
(4)控制总线。
RST:
复位输入信号,当该引脚上出现2个机器周期以上的高电平时,可实现复位操作,此引脚为掉电保护后备电源之输入引脚。
3。
1.2 键盘扫描
本实验键盘扫描接为4X4矩阵,用反转法处理线路.
反转法:
将行线作为输出线,列线作为输入线。
行线输出全“0"信号,读入列线的值。
然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从行线的端口输出,再读取行线的输入值[8].
键盘扫描接在单片机P3口。
根据反转法原理,P3。
0~P3。
3作为行线,P3。
4~P3。
7作为列线,即低位为行,高位为列。
先置低位为0,读高位值;再将行线与列线的关系互换,置高位为0,读低位值。
比较前后两值,即可判断哪个键按下。
3.2 放大模块
图3。
3放大模块
图3.3为放大模块电路。
NE5532一共8脚。
3脚为同相输入端,2脚为反相输入端.8、4脚分别接正负12V电源.反馈网络由模拟开关CD4052组成。
CD4052共16脚.16脚接+5V,6、8脚接地,7脚接—5V,9、10脚接单片机控制信号。
3脚接运放反馈量,1、2、5脚接入运放的负反馈,与滑动变阻器构成反馈网络。
其中,其中1脚将输出电压全部反馈到反相输入端;2脚接入2.16K的电阻,可控制放大10dB,5脚接入9K的电阻,可控制放大20dB。
3。
2。
1 NE5532简介
NE5532是高性能低噪声运放,与很多标准运放(如1458)相似,它具有较好的噪声性能,优良的输出驱动能力及相当高的小信号与电源带宽.图3。
4是NE5532内部结构图.
图3。
4NE5532芯片图
(1)小信号带宽:
10MHz;
(2)输出驱动能力:
600Ω,10V;
(3)输入噪声电压:
5nV/√HZ(典型值);
(4)DC电压增益:
50000;
(5)AC电压增益:
10KHz时2200;
(6)电源带宽:
140KHz;
(7)大电源电压范围:
±3~±20V
虚短路:
指集成运放的两个输入端电位无穷接近,但又不是真正短路.
虚断路:
从集成运放两个输入端看进去相当于断路[9].
3。
2.2 CD4052简介
CD4052是一个双4选一的多路模拟选择开关。
图3。
5是CD4052芯片管脚图,图3。
6是CD4052内部结构图。
图3.5CD4052芯片管脚图
图3。
6CD4052内部结构图
其真值表如表3.1所示
表3。
1CD4052真值表
INHIBIT
B
A
0
0
0
0x,0y
0
0
1
1x,1y
0
1
0
2x,2y
0
1
1
3x,3y
1
X
X
None
应用时可以通过单片机对A/B的控制来选择输入哪一路,例如:
需要从4路输入中选择第二路输入,假设使用的是Y组,那么单片机只需要分别给A和B送1和0即可选中该路,然后进行相应的处理。
注意第6脚为使能脚,只有为0时,才会有通道被选中输出.
4 软件设计
4。
1 程序设计思路
在实际设计中,本着程序简单,高效的原则,在初期设计过程中,从复杂到简单一步步简化,直到最后的程序。
(1)最先想到的是模仿计算器程序设计。
一共四个“8",最后两个固定显示“db”字母字样。
对于前两位,刚开始决定先由键盘输入一位数,送寄存器储存。
再将其往前进一位,然后输入第二位数字.先键盘扫描,得出第一个键值,并且送显示。
进行第二次扫描,得出键值,再送显示.
分析:
这种方法较为先进,但由于我所学知道不足,一时无法处理进位问题,所以只能作罢。
(2)连续按两次键,直接将“十”位数显示在dp1处,“个”位显示在dp2处。
先判断是第几次按键.如果是已经是第三次按键,则计数器清零,复位.第四次按重新计数。
如果只是第一次按键,则送至“十”位,并保存;当第二次按下时,显示个位。
这期间给程序一定的延时。
但不知道什么原因,在实际应用中,出现了这样的问题:
按第一次,“十、个”位都同时显示。
第二个键值输入,却覆盖第一个键值,并且两位数显示同一数字.同时出现的问题还有,复位不能成功。
每次复位后(重新上电后),数码管显示上次输入的键值。
分析有两种可能:
1,芯片有了记忆功能,将断电前的状态存储下来了。
2,一上电,芯片就执行了上次的程序。
后一种解释更为合理,这说明问题出在显示上.初始化中显示没有清零。
(3)更为精简的方法。
将第二个数码管(dp2)直接显示“0”。
这样,只要处理一个“日”字就可以。
这一思路,是三个中最简单的.虽然如此,但我觉得程序就应该简单,实用,完成所需功能即可。
所以,我决定采用第三种方法。
4.2 程序流程图
图4。
1程序流程图
程序流程图如图4。
1所示。
首先对程序进行初始,数码管显示默认为0。
首先进行键扫描,判断是否有键按下.如果没有键按下,则返回重新键盘扫描。
如果有键按下,则送显示电路,由数码管显示。
同时,单片机控制模拟开关,根据输入键值,选通运放芯片,实现系统功能.最后程序结束,系统终止工作。
4。
3 数码管显示
由于我在画PCB板时,为了更好的连线,将P0口8个管脚相对应的共阳数码管的管脚更改,所以在处理这个程序时,就与以往的不同。
数码管显示原理如表4.1所示。
表4。
1数码管显示原理
E
D
h
c
g
a
f
b
0
0
0
1
0
1
0
0
0
28h
1
1
1
1
0
1
1
1
0
0eeh
2
0
0
1
1
0
0
1
0
32h
3
1
0
1
0
0
0
1
0
0a2h
4
1
1
1
0
0
1
0
0
0e4h
5
1
0
1
0
0
0
0
1
0a1h
6
0
0
1
0
0
0
0
0
21h
7
1
1
1
0
1
0
1
0
0eah
8
0
0
1
0
0
0
0
0
20h
9
1
0
1
0
0
0
0
0
0a0h
4。
4 CD4052程序
在设计程序时,应认真查看芯片的PDF文档资料。
观察芯片各个引脚的功能,哪个输入,哪个输出。
并要注意芯片的真值,编写程序主要就是依据此表。
由前文所给出的真值表和芯片管脚图,得芯片的选通模式程序。
一共有三个模拟开关,每一个最大控制20db的放大幅度。
每个模拟开关一次只能选通一个输出。
表4。
2为模拟开关程序设计原理。
表4。
2模拟开关程序设计
P1。
5
P1。
4
P1。
3
P1.2
P1。
1
P1.0
U6
U5
U4
U3
U2
U1
A
B
A
B
A
B
0db
0
0
0
0
0
0
00h
10db
0
0
0
0
1
0
02h
20db
0
0
0
0
0
1
01h
30db
0
0
0
1
1
0
06h
40db
0
0
0
1
0
1
05h
50db
0
1
0
1
1
0
16h
60db
0
1
0
1
0
1
15h
4。
5 按键扫描程序
由原理图可以得出,按键接在P3。
0~P3。
7。
表3.3为按键扫描程序。
表3。
3按键扫描程序
P3。
7
P3.6
P3。
5
P3.4
P3。
3
P3。
2
P3。
1
P3。
0
0
1
1
0
1
0
1
1
1
1
0
1
1
1
0
1
1
1
2
0
1
1
1
1
0
1
1
3
0
1
1
1
1
1
0
1
4
0
1
1
1
1
1
1
0
5
1
0
1
1
0
1
1
1
6
1
0
1
1
1
0
1
1
7
1
0
1
1
1
1
0
1
8
1
0
1
1
1
1
1
0
9
1
1
0
1
0
1
1
1
5 系统调试
检测工具:
万用表,示波器,函数信号发生器
5.1 硬件检测
(1)检测电源线,地线。
用万用表检测电路板有没有短路,断路现象。
经检测,线路导通。
(2)检测极性电容正负极有无接反,电阻大小有无接对。
(3)检测单片机。
上电后,先用万用表测试各引脚电压.其中40脚为4。
93V,晶振两脚分别为2.39V和2。
12V。
基次,写入一小的按键扫描程序,检测按键和数码管显示。
检测结果,两者正常。
再次,检测复位键.按下后,数码管能归零,说明复位成功。
(4)检测放大电路.接入四种正负电源.用万用表测NE5532的4、8号脚的输出电压,测CD4052的1、7、9、10、16脚,看电压输出是否正确.再测AT89S51的VCC,四个端口的电压值,看看是否在正常范围之内。
经检测,运放8脚+11。
95V,运放4脚—12。
18V,CD4052的16脚+4。
93V,7脚—5。
10V。
(5)测量三个NE5532的静态工作点,观察电压是否正常。
运放的1、2、3脚的电压都为0。
(6)阻容耦合电路
图5。
1阻容耦合电路
图5。
1为阻容耦合电路。
耦合电路的主要有三个作用:
1是让信号无损耗地通过,加到后一级电路中;2是隔离两级放大器之间的直流;3是在前级和后级放大器之间进行阻抗的匹配.
当放大器的输入阻抗比较大时,可以适当减小耦合电容的容量。
降低耦合电容C1的容量,对降低耦合电容的漏电有利,因为电容的容量愈大,其漏电电流就大,放大器电路的噪声就大(耦合电容漏电流会产生电路噪声),特别是输入级放大器的输入端耦合电容要尽可能地小[10]。
耦合电容对低频信号的容抗比中频和高频信号的容抗要大,所以阻容对低频信号是不利的。
当耦合电容的容量不够大时,低频信号首先受到衰减,说明阻容耦合的低频特性不好。
在不同工作频率的放大器中,由于放大器所放大的信号频率不同,对耦合电容的容量大小要求也不同。
为了降低电容漏电,愈是处于前级的耦合电容,其容量要求愈小[11]。
当耦合电路中的元器件开路时,信号不能加到下一级电路中,使放大器无信号输出。
当耦合电容漏电或击穿时,会影响前后两级放大器的直流电路工作,从而影响交流电路的工作,放大器输出信号将不正常。
(7)信噪比
信噪比等于信号功率大小与噪声功率大小之比,信号功率用S表示,噪声功率用N表示,信噪比用S/N表示。
放大器的信噪比愈大愈好。
噪声也是放大器电路中的一种“信号”,是一种无用、有害的信号,它愈小愈好,但放大器中不可避免地会存在噪声,当噪声太大时,将来得影响电路性能。
多级放大器电路中,前级放大器产生的噪声被后级放大器作为“信号”而加以放大,所以对前级放大器,要重点进行噪声抵制[12]。
解决噪声的方法,适当提高放大器的输入电阻,这样可以降低输入端耦合电容的容量,以减小因电容漏电而产生的噪声。
至此,硬件电路检测基本检测完毕.结果表明,一切正常.
5。
2 软件检测
(1)检测键盘扫描程序
测试目的:
每按一个按键,数码管全部显示一个数字。
一般地,对任何带有键盘扫描的硬件电路来说,在进行软件检测时,首先应检测的就是键盘扫描。
即写个小的键扫程序,看键盘扫描电路是否连接成功.
利用反转法,写一个3X3的扫描程序,并送键盘显示。
经过测试,键扫电路连接成功。
(2)检测CD4052控制程序
测试目的:
按下一个按键,则相应的模拟开关会被选通。
如表5.1所示。
表5.1模拟开关选通对应表
第一个模拟开关
第二个模拟开关
第三个模拟开关
按键
5脚
2脚
5脚
2脚
5脚
2脚
0
0
0
0
0
0
0
1
1
0
0
0
0
0
2
0
1
0
0
0
0
3
1
0
0
1
0
0
4
0
1
0
1
0
0
5
1
0
0
1
0
1
6
0
1
0
1
0
1
测试结果:
模拟开关选通程序正确.
(3)主程序测试
前面两个子程序较容易写,写主程序时有一定的困难。
经过不断的测试,修改,再测试,再修改,直到最后成功。
在主程序中,一共调用三个子程序,它们分别是键盘扫描keys,数码管显示disp,运放放大部分fangda,三个子程序用lcall调用.
Keys根据反转法原理,主要模仿3X3按键扫描程序而写。
出现的问题:
虽然前面子程序测试中键盘扫描程序成功,但写入改进后的4X4程序却没有成功。
按任一键,数码管没有显示。
对比3X3程序,主要有两个原因。
1调用每一个判断键值程序后,子程序并没有返回主程序。
2返回主程序,送显示之前,所判断键值并没有送寄存器保存。
以至于送显示后后,累加器中没有值送数码管显示.
解决方法,写一个kk3子程序。
先调用kk3子程序,再将键值保存到累加器。
Kk3:
movshi,a
Ret
(4)复位不成功
按下复位键后,数码管并不能清零。
并且显示上一次按键键值。
经过分析,根据程序执行顺序,系统上电后,有键按下后,送显示。
如果总是显示上一次程序处理的结果,这说明显示程序没有初始化.
解决方法:
对十位数值进行保存。
Shiequ30h
movshi,#00h
5。
3 系统联调
简单的硬件测试,软件修改之后,将硬件和软件结合起来进行系统联调。
原以为能够容易成功,可实际中却出现了大量的问题.
(1)准备工作
校正示波器:
校正后,出现标准的方波,说明示波器良好,可以使用。
输出信号:
将探头直接接函数信号发生器输出端,共地端接地。
观察示波器。
调节信号发生器输出1KHz的波型,边观察示波器边调幅度旋钮,直至出现20mvVPP。
(2)第一次测量
输入10mv正弦信号,通过探头,观察示波器。
发现居然输出的是方波信号。
经过分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程控 放大器 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)