测量放大器A题.docx
《测量放大器A题.docx》由会员分享,可在线阅读,更多相关《测量放大器A题.docx(30页珍藏版)》请在冰豆网上搜索。
测量放大器A题
1999年全国大学生电子设计竞赛
测量放大器(A题)
作者:
赛前及文稿整理辅导教师:
摘要
本文设计的测量放大器主要由测量放大器、信号变换放大器、稳压电源和程序控制四部分组成。
测量放大器主要采用通用型集成运算放大器电路对微弱信号进行测量放大,测量放大电路的主要特点是低噪声、高增益、高共模抑制比。
信号变换放大器以差分式放大电路为核心,由电压跟随与增益为‘1’的反向放大器组成,其运放芯片均为OP07,实现对信号的一端输出到两端输出的转变,从而对测量放大电路的频率进行相应的测试。
稳压电源电路主要实现供电功能,为测量放大电路以及信号变换放大器中的运放供电。
程序控制部分以AT89C51单片机为控制核心实现放大倍数的控制,预置数键是由10个继电器以及几个功能键组成,单片机通过三极管来驱动这10个继电器,结合相应的软件以及硬件技术来实现对电压增益的控制。
关键字:
放大器;信号变换;程序控制
1系统方案
放大器电路的论证与选择
方案一:
差动放大器(如图1.1所示)。
利用一个放大器将双端输入信号转变成单端输出,然后通过电阻与下一级反向比例放大器进行耦合,放大主要通过后一级的比例放大器获得。
此电路特点是简单,实现起来对结构工艺要求不高,但是其输入阻抗低,共模抑制比、失调电压和失调电流等参数受到放大器本身性能限制,不容易进一步提高,并且无法抑制放大器本身的零漂及共模信号的产生。
因此,本设计的放大部分不采用此方案。
图1.1差动放大器电路图
方案二:
仪用放大器(如图1.2所示)。
仪用放大器是由运放
、
按同相输入法组成的第一级差分放大电路,再与运放
组成第二级差分放大器。
在第一级电路中,
、
分别加入到
和
的同相端,
和
组成反馈网络,引入负反馈,运放
和
的两个输入端形成虚短和虚端,通过计算可以得到电路的电压增益。
为了获得尽可能高的共模抑制比,通常差动放大器的各个电阻选择同一阻值的电阻。
该电路的优点是电路简单,所需元件较少,同时可以提高共模抑制比,但是电阻选用同一阻值就会带来输入阻抗低电压增益低的问题。
因而,此方案不宜采用。
图1.2仪用放大器电路图
方案三:
方案二的优化(如图1.3所示)。
为了解决方案二输入阻抗低、电压增益低的问题,通常在差动放大器的输入端接有高输入阻抗和高共模抑制比的同相并联差动运算放大器。
电路的平衡对称结构使两只放大器的共模增益、失调及其漂移所产生的误差电压具有相互抵消的作用,缺点是输出信号中有较大的共模信号。
因此采用同相并联差动放大电路与基本差动放大器的简单串联,它们可以相互取长补短,使结合后的电路不但克服了方案二的缺点,同时还具有增益调节方便、漂移相互补以及输出不包含共模信号等优点。
图1.3测量放大器电路图
综上所述,测量放大器的放大电路的设计采用方案三。
控制模块的论证与选择
方案一:
数字电路实现方法。
根据放大倍数1到1000倍范围变化的要求,可以用八位拨码开关对DAC0832的
到
位设置放大倍数,并手动切换三挡增益。
该方案的优点是电路简单,但是置的是十六进制数,使用者必须根据增益在哪一挡来换算放大倍数,且只能实现预置数功能。
因此本设计的控制模块不采用此方案。
方案二:
单片机实现方法。
单片机最小系统由AT89C51单片机或其派生芯片构成。
这种控制方式是以单片机作为控制器,通过单片机和硬件系统以及软件设计方法,实现放大倍数的控制。
置数键由四个控制0到9这十个数字的按键开关以及几个功能键组成。
结合相应的软件程序,单片机开机后先将预置数读入,在送去显示的同时,等待按键中断,并做相应的处理。
实际表明该方案具有良好的控制功能,造价比较低,程序容易调试,性价比高,而且可以较容易地实现,克服了方案一的缺点。
综上所述,测量放大器控制模块的设计采用方案二。
总体框图
本设计首先利用信号变换放大电路将函数发生器单端输出的正弦电压信号无失真的转换为双端输出的信号,此双端输出信号可用作测量放大器的输入信号,测量放大器主要采用通用型集成运算放大器电路,测量放大器前级采用差分输入,经过双端信号到单端信号的转换,通过调节测量放大器的增益来控制输出信号的大小,而调节增益由程序控制部分来实现,程序控制增益这种控制方式是以单片机为控制核心,结合相应的软件程序,实现对增益的控制。
以上各模块由稳压电源部分实现供电功能。
经以上分析,系统的总体功能框图如图1.4所示:
放
大
电
路
单片机控制部分
电源电路
继电器
图1.4系统总体功能框图
2单元电路的理论分析与计算
2.1信号变换放大器设计
2.1.1信号变换放大器的设计
信号变换电路主要是实现一端信号输出到两端输出的转变,主要采用同相并联差动运算放大器。
信号变换电路主要是用来实现单端输入信号变双端输入信号输出的功能,用作测量直流放大器频率特性的输入信号。
一般采用差动输入的方法取单端输入信号经过差动放大器变为双端输出信号,为了不失真输出,必须保证电路的对称性,为了保证电路的精度,选用高精度低漂移的放大器,由于信号是从同向输入端输入,因此有很高的输入阻抗,满足性能指标要求。
电路原理图如图2.1所示:
图2.1信号变换放大器电路图
(1)变压部分:
变压部分主要由变压器组成。
由于要为双电源运放供电,因此要采用三抽头的变压器从而可以得到相位相反的两个15V的交流电源输入到下一级的整流桥,变压器的型号为双18V的输出。
(2)整流部分:
整流部分主要由四个二极管组成的双全波整流电路组成。
双全波整流电路是正负对称输出,即双路输出,每一路输出均可以独立工作。
双全波整流电路需要变压器,变压器次级绕阻必须有中心抽头。
全双波整流电路的优点是输出电压较高,纹波电压较小,变压器得到了充分的利用,效率较高。
(3)滤波部分:
滤波部分主要有两个容量很大的电容组成,利用的是大电容充放电时间较长的原理,将整流后的波形进一步平整化,为后一级稳压部分提供近似于直流的电源。
由于3300µF、耐压25V的电解电容容易被烧掉,所以选择3300µF、耐压50V的电解电容足以满足要求。
(4)稳压部分:
稳压部分主要由稳压芯片组成,在稳压芯片两端各加一个用于频率补偿的2.2µF电容,防止产生自激,经过稳压芯片稳压后,输出的基本为稳定直流,能够满足设计电路的供电要求。
稳压芯片选用的是常用的LM3175和LM337,其中,LM317输出的是正15V,而LM337输出的是负的15V。
尾段加的10uF的电解电容主要是用于滤波电路中可能存在的高频影响。
2.1.2信号变换放大器的理论分析
信号变换器实际上是将当单端输入信号转换成差动输入信号,因此,最简单的方法就是采用一个反向放大器输出与信号源输出组合即可。
考虑到信号源的输出阻抗可能与反向放大器的输出阻抗不一致,比较理想的方案的先选用一个电压跟随器,再接一个反向放大器。
最终将跟随器输出与方向放大器输出组合到所要求的双端输出信号。
前级为电压跟随器,后级为一个反向放大器。
经过计算,信号变换电路的总增益为2,即输出为输入的二倍。
由其工作原理可得公式如下:
其中运放采用OP07,
。
2.2测量放大电路设计
2.2.1测量放大电路的设计
测量放大器由信号变换放大器和仪用放大器两部分组成。
由于通用型的仪用放大器存在输入阻抗低、电压增益低的问题,所以在差动放大器的输入端接有高输入阻抗和高共模抑制比的同相并联差动运算放大器,即信号变换放大器。
仪用放大器电路的平衡对称结构使两只放大器的共模增益、失调及其漂移所产生的误差电压具有相互抵消的作用,缺点是输出信号中有较大的共模信号。
因此采用同相并联差动放大电路与基本差动放大器的简单串联,它们可以相互取长补短,使结合后的电路不但克服了低输入阻抗、低电压增益的缺点,同时还具有增益调节方便、漂移相互补以及输出不包含共模信号等优点。
测量放大器的原理电路图如图2.2所示:
2.2.2测量放大电路的理论分析
在仪用放大器中,运放
和
的两输入端形成虚短和虚断,因而有
和
,故得
根据上式的关系,可得
于是电路的电压增益为
其中运放
、
以及
采用OP07,
为程控部分的相应放大倍数的等效电阻,
,
,
。
2.3稳压电源设计
2.3.1±15V稳压电源的设计
稳压电源电路主要变压部分、整流部分、滤波部分以及稳压部分组成。
在满足设计指标要求的基础之上,尽可能地简化电路,因此本设计采用的是比较常用的稳压电源电路,主要利用可调输出电压的集成稳压芯片LM317和LM337。
由于运放需要双电源供电,因而采用双输出的变压器实现双电源的输出,运放所需要的电源电压为15V,所以15V输出的变压器即满足设计要求。
对于该稳压电源的基本原理电路图如图2.3所示:
图2.3±15V稳压电源电路图
稳压电源电路主要功能是供电,为测量放大电路以及信号变换放大器中的运放供电。
其中可调电压的集成稳压芯片采用LM317和LM337,根据芯片的工作原理可得如下公式:
其中
,
。
2.3.25V稳压电源的设计
由于51单片机需要5V的电源供电,而三极管驱动继电器需要5V的稳压电源,因此本设计额外设计了一个输出电压为5V的稳压电源,经过LM317稳压后,输出的电压值为+15V,将+15V作为LM780的输入端,在经过稳压后,输出的电压值应为+5V。
电源电路主要分为变压部分、整流部分、滤波部分以及稳压部分。
其基本原理与输出为±15V的稳压电源相同,电路如图2.4所示。
图2.4+5V稳压电源电路图
2.4程序控制电路设计
2.4.1程序控制电路的设计
程序控制增益,采用单片机方法实现。
单片机最小系统由AT89C51单片机或其派生芯片构成。
这种控制方式是以单片机作为控制器,通过单片机和硬件系统以及软件设计方法,实现放大倍数的控制。
置数键由控制0到9这10个数字的按键开关以及几个功能键组成,51单片机通过三极管来驱动这10个继电器。
单片机开机后先将预置数读入,在送去显示的同时,等待按键中断,首先将预置数加一,在将加一后数值的百位,十位,个位分离出来,转换为二进制数,结合相应的软件程序,并做相应的处理,即可调节增益。
2.4.2程序控制电路的元件选取与理论分析
本设计通过单片机和硬件系统以及软件设计方法,实现放大倍数的控制。
预置数键由控制0到9这10个数字的按键开关以及几个功能键组成,10个按键开关由继电器组成,51单片机通过三极管来驱动这10个继电器。
单片机开机后先将增益读入,在送去显示的同时,等待按键中断,首先将增益减一,在将加一后的数值的百位,十位,个位分离出来,转换为二进制数,用十位二进制数来表示这个加一后的数值,选取特殊的数值列表,来计算对应的电阻阻值。
3系统软件的设计
软件设计总体分为三个部分:
主程序部分、按键处理部分以及数码管显示部分。
根据设计要求,编写相应的程序,本设计所用到的程序如下:
#include"reg51.h"
/********引脚定义***********************************************************/
sbitLCD_RS=P1^0;
sbitLCD_RW=P1^1;
sbitLCD_E=P1^2;
sbitPSB=P1^6;//PSB脚为12864-12系列的串、并通讯功能切换,使用8位并行接口,PSB=1
/********宏定义***********************************************************/
#defineLCD_DataP0
#defineBusy0x80//用于检测LCD状态字中的Busy标识
/********函数声明*************************************************************/
voidWriteDataLCD(unsignedcharWDLCD);
voidWriteCommandLCD(unsignedcharWCLCD,BuysC);
unsignedcharReadDataLCD(void);
unsignedcharReadStatusLCD(void);
voidLCDInit(void);
voidLCDClear(void);
voidLCDFlash(void);
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);
voidDelay5Ms(void);
voidDelay400Ms(void);
/********数据定义*************************************************************/
codeunsignedchaructech[]={"51单片机实验板"};
codeunsignedcharnet[]={""};
codeunsignedcharmcu[]={"自学单片机的首选"};
codeunsignedcharqq[]={"QQ:
52927029"};
/***********主函数开始********************************************************/
voidmain(void)
{
Delay400Ms();//启动等待,等LCD讲入工作状态
LCDInit();//LCM初始化
Delay5Ms();//延时片刻(可不要)
while
(1){
LCDClear();
DisplayListChar(0,1,uctech);//显示字库中的中文数字
DisplayListChar(0,2,net);//显示字库中的中文数字
DisplayListChar(0,3,mcu);//显示字库中的中文
DisplayListChar(0,4,qq);//显示字库中的中文数字
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
LCDFlash();//闪烁效果
}
}
/***********写数据********************************************************/
voidWriteDataLCD(unsignedcharWDLCD)
{
ReadStatusLCD();//检测忙
LCD_RS=1;
LCD_RW=0;
LCD_Data=WDLCD;
LCD_E=1;
LCD_E=1;
LCD_E=0;
}
/***********写指令********************************************************/
voidWriteCommandLCD(unsignedcharWCLCD,BuysC)//BuysC为0时忽略忙检测
{
if(BuysC)ReadStatusLCD();//根据需要检测忙
LCD_RS=0;
LCD_RW=0;
LCD_Data=WCLCD;
LCD_E=1;
LCD_E=1;
LCD_E=0;
}
/***********读数据********************************************************/
unsignedcharReadDataLCD(void)
{
unsignedcharLCDDA;
LCD_RS=1;
LCD_RW=1;
LCD_E=1;
LCD_E=1;
LCDDA=LCD_Data;
LCD_E=0;
return(LCDDA);
}
/***********读状态*******************************************************/
unsignedcharReadStatusLCD(void)
{
LCD_Data=0xFF;
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
LCD_E=1;
while(LCD_Data&Busy);//检测忙信号
LCD_E=0;
return
(1);
}
/***********初始化********************************************************/
voidLCDInit(void)
{
WriteCommandLCD(0x30,1);//显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x01,1);//显示清屏
WriteCommandLCD(0x06,1);//显示光标移动设置
WriteCommandLCD(0x0C,1);//显示开及光标设置
}
/***********清屏********************************************************/
voidLCDClear(void)
{
WriteCommandLCD(0x01,1);//显示清屏
WriteCommandLCD(0x34,1);//显示光标移动设置
WriteCommandLCD(0x30,1);//显示开及光标设置
}
/***********闪烁效果********************************************************/
voidLCDFlash(void)
{
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1);//显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1);//显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
}
/***********按指定位置显示一个字符*******************************************/
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData)
{
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X&=0x0F;//限制X不能大于16,Y不能大于1
switch(Y){
case1:
X|=0X80;break;
case2:
X|=0X90;break;
case3:
X|=0X88;break;
case4:
X|=0X98;break;
}
WriteCommandLCD(X,0);//这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}
/***********按指定位置显示一串字符*****************************************/
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData)
{
unsignedcharListLength,X2;
ListLength=0;
X2=X;
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X&=0x0F;//限制X不能大于16,Y在1-4之内
switch(Y){
case1:
X2|=0X80;break;//根据行数来选择相应地址
case2:
X2|=0X90;break;
case3:
X2|=0X88;break;
case4:
X2|=0X98;break;
}
WriteCommandLCD(X2,1);//发送地址码
while(DData[ListLength]>=0x20){//若到达字串尾则退出
if(X<=0x0F){//X坐标应小于0xF
WriteDataLCD(DData[ListLength]);
ListLength++;
X++;
Delay5Ms();
}
}
}
/***********短延时********************************************************/
voidDelay5Ms(void)
{
unsignedintTempCyc=5552;
while(TempCyc--);
}
/***********长延时********************************************************/
voidDelay400Ms(void)
{
unsignedcharTempCycA=5;
unsignedintTempCycB;
while(TempCycA--){
TempCycB=7269;
while(TempCycB--);
}
}
4系统测试与结果分析
4.1调试仪器与测试方案
系统调试主要仪器有:
标准型数字万用表;
双通道数字示波器;
可调直流稳压电源;
信号发生器。
测试方案:
(1)输出电压调零:
首先将差动输入端短接到GND调节增益调节电阻中的1MΩ,5.1K欧Ω可调电阻的阻值为0,然后分别调节两个输入及的调零电阻,使相应的集成运算放大器的输出电压为零。
最后调节后级的差动放大器的调零电阻,使测量放大器的增益为零。
(2)输出电压增益的调试:
将桥式电阻网络与信号变换电路的输入端连接,将信号变换电路的输出测量放大器相连接。
调节桥式电阻网络的可调电阻使之信号变化的输出端电压为5mv,测量输出电压。
(3)输出噪声电压的测试:
将测量放大器输入端经过1m连线对地短接,测量放大器的输出电压值即为噪声电压值。
(4)带宽的测试:
首先将5mv的直流电压接到测量放大器的输入端,用示波器测