我要发布
仪器网/ 仪器社区/ 测量测试软件/ 运算放大器静态参数的测量系统

运算放大器静态参数的测量系统

没有如果198411    2009-04-28    测量测试软件    浏览 453 次

帮忙设计一个用单片机和辅助放大器测量运算放大器静态参数的测量系统。我只有130分,全给了

精彩问答
可爱的李111222 发布日期:2012-09-12
集成运放性能参数测试仪 一、集成运放性能参数测试仪性能指标 工作电压:±15V
VIO:测量范围:
0~40mV(<小于3%读数±1个字);
IIO:测量范围:
0~4μA(<3%读数±1个字);
AVD:测量范围:
60dB~120dB±3dB;
KCMR:测量范围:
60dB~120dB±3dB;
输出频率:5Hz
输出电压有效值:4 V
频率与电压值误差值均小于1%; 二、设计思路: 本设计以单片机
STC89C52为控制核心,利用数模转换器ADS1110
以及继电器,为切换开关, 对被测量信号进行采样,通过单片机处
理完成对运算放大器LM741的UIO,IIO,AVC,KCMR等参数的测量。 并
通过系统显示接口,利用液晶显示装置将测试的结果进行显示,同时
本系统还能通过键盘进行人机交流,实现按下一个按键就可以对该运
放的某个参数进行测试。 三、系统结构图 四、方案比较与选择: 主控芯片部分
方案一:采用STC89C52单片机。优点是芯片结构简单,使用相
对容易;缺点是不带AD转换电路,需要外接AD转换芯片,测量精度
相对较低。
方案二:采用凌阳SPCE061A单片机。优点是自带AD转换模块,
测量精度相对较高,能进行音频处理等多种智能化功能;缺点是结构
复杂,使用起来相对繁琐。
由于此方案的核心内容在测试电路部分,主控芯片的选择对结果
的影响相对较小,综合以上芯片的性能以及自身的情况,选择使用相
对简单的STC89C52单片机。
信号发生器的选择 方案一:利用传统的模拟分立元件或单片压控函数发生器
MAX038,可产生三角波、方波、正弦波,通过调整外围元件可以改
变输出频率、幅度,但采用模拟器件由于元件分散性太大,即使用单
片函数发生器,参数也与外部元件有关,外接电阻电容对参数影响很
大,因而产生的频率稳定度较差、精度低、抗干扰能力差、成本也较
高。
方案二:采用ICL8038芯片产生信号。优点是电路简单,波形好,
控制方便,缺点是频率有限。
由于需要的频率不宽,综合以上考虑,选择电路简单,波形好,
控制方便,精度和抗干扰能力更强的ICL8038作为信号发生器。
显示模块的选择
方案一:采用液晶显示模块SVM12864(LCD)。占用I/O口多,
控制复杂,但可以显示汉字和简单图形等,功能强大
方案二:采用液晶显示模块1602。占用I/O口少,控制简单,每
行可显示16个字符。
虽然SVM12864功能相对强大,但是采用1602更为合理。因为需
要显示的参数不多,且都是英文字母和数字,因此选择控制简单的
1602液晶显示模块。
五、测量原理 2.1 失调电压
Vios
理想运放当输入电压为零时,其输出电压也为零,但实际运放电路当输入电压为零时,其输出端仍有一个偏离零点的直流电压Vios。这是
由于运放电路参数不对称所引起的(在室温25度 和标准电源电压下)
为了使这一输出直流电压Vios 为零,必须先在输入端加一个直流电
压作为补偿电压! 以抵消偏离零点的输出电压。这个加在输入端的电
压即为输入失调电压Vios(显然Vios越小,说明运算放大器参数的对
称性越)
2.2 失调电流Iio
运放的输入偏置电流是指运放输入级差分对管的基极电流IB1,IB2,
其中IB1指同相输入端基极电流,IB2指反相输入端基极电流运放的输
入失调电流是指当运放输出电压为零时,两个输入端静态电流的差
值,即Iio=IB1- IB2"(显然:Iio的存在将使输出端零点偏移! 信号
源阻抗越高,失调电流的影响越严重)
2.3 共模YZ比K C M R
表征运放对共模信号YZ能力的参数叫共模YZ比! 用KCMR表示。
KCMR定义为差模电压增益Avd 和共模电压增益Avc 之比,即KCMR =
Avd/Avc。运放对共模信号有很强的YZ能力。
2.4 开环放大倍数的测量
即输出电压与输入电压的比值。
六、电路设计 3.1 失调电压
VIO测量电路
输入失调电压的测量原理如图1所示:图中直流电路通过RI和RF接成闭合环路, 通常RI的取值不超过100欧
测量电路:

测量方法:
根据输入失调电压的定义得:

3.2 失调电流IIO测量电路
测量电路:

和上面一样, 则:

3.3 共模YZ比KCMR 测量电路
测试原理如图所示,由于RF>>RI,电路对差模信号的增益很大,该闭
环电路对差模信号的增益AvD= RF/RI。共模信号的增益AvC=
(VO/VS)。因此,只要从电路上测出VO 和VS,即可求出共模YZ比
KCMR = Avd/Avc

3.4 开环放大倍数的测量
测量电路如图。

实际的测量电路:由于考虑到输出处会有自激震荡产生,因此在OP177的输出口和正向
输入端加上一个电容,用以消除自激震荡的影响。
实现各个测量电路的转换,我使用继电器、通过单片机对引脚的
置位来改变开关的通断以及接通的相应电路。
S1、S2闭合,S3、S4接地时,测量失调电压;
S1、S2断开,S3、S4接地时,测量失调电流;
S1、S2闭合,S3接信号源,S4接地时,测量共模YZ比;
S1、S2闭合,S3接地,S4接信号源时,测量开环放大倍数。
以下为其他模块的电路:
1.整流转换电路:
2.单片机控制及液晶显示模块电路:

3.信号发生电路
电路总图:

画图原理图中存在的问题:
由于原理图的元件库中没有ADS1110、继电器、ICL8038等元件,因此这些元件都需要自己手动画元件,这也是画图中存在的Z大问
题。要将该元件的引脚与实际元件的引脚要对应。可以说,在画原理
图的过程中没有存在很大的障碍。 六、软件仿真 仿真软件使用的是multisim2001。
在明确了软件以后,就着手进行各个部件的仿真。由于集成运
放性能参数测试仪的核心内容为测量电路部分,控制以及整流部分对
于电路来说只是起到一个辅助和提高测量准确度的作用,因此,仿真
内容的ZD也在于此。本次仿真只针对测量电路进行,验证测量电路
方与否。下面就对四部分测量电路进行仿真。仿真内容中的
被测量集成运算放大器为LM741,将测量结果与LM741元件的提供参
数作对比,即可以对比测量的参数与元件所给的参数是否相同或接
近,从而确定测量电路是否正确,以及电路测试参数的准确性。下面
开始仿真。
1.输入失调电压的仿真:
如图所示,即为输入失调电压的仿真电路以及输出量。
输出电压为VE=0.513V,Ri=100欧,Rf=51K欧
则根据输入失调电压计算公式:
(VE即为如图所示的输出电压)
输入失调电压为1.00mV 。LM741的元件手册提供的输入失调电
压的标准值为1mV,则测量结果在LM741提供的参数范围之内。可以采
用这个测量电路测量输入失调电压。
2.输入失调电流仿真:

如图所示,即为输入失调电流的仿真结果以及输出量
根据输出失调电流的测量公式

Ri=100欧,Rf=51K欧,VE2就是图中电压表所示的电压值。VE2也为测量的值,11.979V
VE1为输入失调电压测试电路中的输出值。VE1=0.513V
计算得输入失调电流Iio=44.0nA。LM741的元件手册提供的输入
失调电流的范围20nV-200nV,则测量结果44.0nA在LM741提供的参数
范围之内。可以采用这个测量电路测量输入失调电流。
3.开环电压增益的仿真。
电路如图:

根据开环放大倍数的计算公式

计算结果在误差范围内。Vs为输入信号的电压值,VE为输出的
电压值,R1=R2=30K欧,Ri=100欧,Rf=51K欧。Vs=4V,VE=6.548mV。
由于输入信号电压显示的是Z大值,因此计算时必须将它转化为有效
值,则Vs=2.83V。
代入公式计算后,计算得AVD=106.88db LM741的元件手册提供的开环放大倍数的范围50db-200db,则测
量结果106.88db在LM741提供的参数范围之内。可以采用这个测量电
路测量开环放大倍数。

4.共模YZ比测量仿真
测量结果如图

根据共模YZ比的测量公式:

Vs有效值为2.83V,Ri=100欧,Rf=51K欧。
代入公式,计算得KCMR=93.1db
LM741的元件手册提供的共模YZ比的Z小值为70db,标准值为
90db,则测量结果93.1db接近标准值,在LM741提供的参数范围之内。
可以采用这个测量电路测量开环放大倍数。
仿真过程中存在的问题:在开始时,我碰到了电阻参数不匹配的问题,一级运放的电阻原来为100K欧,但是仿真结果与指标差别很
大,因此我就将该电阻减小为51K欧,并将其他相关电阻均减小1倍,
之后得出的参数就符合指标了。由于没有考虑到输出处会有自激震荡
产生,结果造成共模YZ比的测量中存在了很大误差,在多次测试,
Z后决定在OP177的输出口和正向输入端加上一个电容,消除了自激
震荡的影响,保证了输出结果的准确性。
电路仿真的心得:通过对上述四个测量电路的仿真,我得出的
结论是,这些测量电路测量出来的结果符合设计要求。可以说,此测
试仪的Z核心部分测试电路完全可以采用上面所述的四个测量电路
的方案。但是,在测试过程中也存在一些小问题,通过仿真也发现了
原先测量电路中存在的不足之处,例如:由于没有考虑到输出处会有
自激震荡产生,结果造成共模YZ比的测量中存在了很大误差,Z后
在OP177的输出口和正向输入端加上一个电容,消除了自激震荡的影
响,保证了输出结果的准确性。通过对电路的仿真,我得以修正和优
化原先的测量电路,使得测量电路更加完整、精确,为成功做板以及
硬件和软件的调试打下坚实的基础! 七.元件清单 下列元件为需要购买的元件清单
王凯的元件清单
中文名称 功能 英文名称 封装 数量 备注
串行模数转16位AD转ADS1110 SOT23 1 换器 化
51单片机 单片机 STC89C52R2 DIP40 1
可调三端稳
压集成电路
三端稳压 LM337 TO-220 1
可调三端稳
压集成电路
三端稳压 LM317 TO-220 1
波形发生器 波形发生

ICL8038 DIP14 1
运算放大器 放大 OP177 DIP8 1
继电器 开关 5 直流吸合
电压5V
三极管 放大 8050 TO-92B 5
按键 按键 4*3mm 5
100欧电阻 电阻 0.25W AXIAL0.4 2
510K欧电阻 电阻 0.25W AXIAL0.4 2
51K欧电阻 电阻 0.25W AXIAL0.4 2
30K欧电阻 电阻 0.25W AXIAL0.4 2
15K欧电阻 电阻 0.25W AXIAL0.4 1
82K欧电阻 电阻 0.25W AXIAL0.4 1
200K可调欧
电阻
电阻 0.25W AXIAL0.4 1
10K欧电阻 电阻 0.25W AXIAL0.4 8 10K欧可调
电阻
电阻 0.25W AXIAL0.4 1
1K欧电阻 电阻 0.25W AXIAL0.4 1
电容 无极电容 100nF RAD0.1 1
电容 无极电容 30pF RAD0.1 2
电容 无极电容 3300pF RAD0.1 1
电容 有极电容 1uF RB.2/.4 2
电容 有极电容 100uF RB.2/.4 1
电容 有极电容 0.1uF RB.2/.4 1
6MHz晶体震
荡器
晶体震荡

6MHz XTAL1 1
二极管 二极管 1N4148 DIODE0.4 2
液晶显示模

液晶显示 1602 1
插针 插针 40颗
芯片插座 插芯片 DIP40 1
三端稳压集
成块
稳压 7805 TO-220 1
三端稳压集
成块
稳压 7812 TO-220 1
三端稳压集
成块
稳压 7912 TO-220 1 精密可调电
位器
5K可调电
位器
SIP3 1
运算放大器 放大 OP07 DIP8 2
八.系统硬件设计 电路的PCB设计 测量电路模块
主要芯片为两块集成运放(其中一块为待测的运放)和四个继电器。 电源模块
主要部分是稳压器7805、7812、7912以及6个电解电容。 液晶显示和控制模块 主要部分为单片机、液晶显示1602和四个控制按键五个三极管等。 信号发生模块 主要芯片是波形发生器ICL8038,运放。 整流转换模块
主要部分是ADS1110和一块运放。 PCB总图
PCB板的设计心得:我的这块板的大小为12.5CM×12.2CM,和
其他同学的分模块制板再通过连线连接的方案相比,我的这块板要小
很多。对于元件的排列和布置,我本着“属于同一模块的元件尽量排
列在一起”的原则布置,Z后再将四个模块靠近,这样不仅做到了各
模块排列清晰,一目了然,而且这样排列更能方便各模块的分开调试。
图中,左下角为液晶显示和电路控制模块,右上角为测量电路模块,
右边为整流转换模块,右下角为信号发生电路,上方为电源稳压模块。
我的PCB方案将所有元件和模块集成在一块板上,避免了各个模块间
的连线调试以及模块间协同工作的可靠性的问题,做到了实用性和美
观的统一。因为不需要考虑高频信号的干扰,所以元件间的距离间隔可以尽量调小,并且大胆使用了一定量的跳线。Z后,我在板的地线
上覆铜,不仅进一步减少了干扰,而且使板更为美观,同时也为焊板
降低了一定的难度。以实际做出来的板的效果来看,总体说来,我所
画的这块PCB板的效果还是很好的,在调试过程中出现的问题也不多,
而且只要简单修改就可以正常工作,我对此很满意的。

画板过程中碰到的问题:有些元件的封装,例如ADS1110、继电
器,在封装库内并没有给出;另外还有一些元件封装在封装库内没有
合适的,例如部分电解电容,所以这些元件的封装都需要自己另外画。
元件引脚的位置、焊盘的大小必须与实际元件一致,否则会造成元件
无法安插的板上的问题,而且焊盘的大小要适当加大,在布线的过程
中,应尽量把线布粗,电源线和地线还要另外加粗。另外,为了能将
板尽量地做小,我将原理图中的四个模块紧密排列,全部集成在一块
板上。由于所有的模块都集成在一块板上,所以做出的这块板还是存
在一点的不方便,比如,一旦某个模块出现问题,要做出修改就要相
对麻烦一些,有时甚至会涉及到其他模块,在实际的电路调试中我就
尽量少地把改动涉及到其他模块。

九.系统的软件设计 1.程序设计流程图:

2.程序清单:
程序采用C语言编译,根据单片机的特性,我尽量不使用浮点数。
#include
sbit K0=P2^4;//定义开关K0的引脚编号
sbit K1=P2^5;//定义开关K1的引脚编号
sbit K2=P2^6;//定义开关K2的引脚编号
sbit K3=P2^7;//定义开关K3的引脚编号
sbit SD0=P0^0;//对应继电器1的输出口引脚
sbit SD1=P0^1;//对应继电器2的输出口引脚
sbit SD4=P0^2;//对应继电器5的输出口引脚
sbit SD2=P0^3;//对应继电器3的输出口引脚 sbit SD3=P0^4;//对应继电器4的输出口引脚
sbit SCL=P0^5;
sbit SDA=P0^6;
sbit E=P3^0;
sbit RW=P3^1;
sbit RS=P3^2;
unsigned char code
JP[]={0xc6,0xce,0xdd,0xbc,0xde,0xdd,0xa4,0xbc,0xdd,0xc3,0xd
e,0xb8,0xda,0x21,0x00};
unsigned char code EN[]="zaku,kohaku";
unsigned char code SRSTDY[]="V_offset=";
unsigned char code SRSTDL[]="I_offset=";
unsigned char code KHZY[]="A_ol=";
unsigned char code GMYZB[]="CCMR=";
void initial(void);
void clear(void);
void display(unsigned char pos,unsigned char word);
void set(unsigned char cmd);
void delay(unsigned char t);
void k0(void);
void k1(void);
void k2(void); void k3(void);
unsigned char c;
void main(void)
{
unsigned char i;
P2=0xff;
c=0x80;
initial();
i=0;
while(JP[i])
{
display(0x80+i,JP[i]);
i++;
}
i=0;
while(EN[i])
{
display(0xc0+i,EN[i]);
i++;
}
while(K0&K1&K2&K3);
clear(); L:if(K0&K1&K2&K3) //检测是否有按键按下
{
delay(0xff);
delay(0xff);
if(!K0)
k0();
if(!K1)
k1();
if(!K2)
k2();
if(!K3)
k3();
}
goto L;
}
void initial() //液晶模块初始化
{
clear();
set(0x38);
set(0x0c);
set(0x10);
clear(); }
void clear(void) //复位子程序
{

unsigned char t0;
t0=0x40;
P1=0x01;
RS=0;
RW=0;
E=0;
while(t0--)
delay(0xff);
E=1;
}
void display(unsigned char pos, unsigned char word) //
液晶显示子程序
{
set(pos);
P1=word;
RS=1;
RW=0;
E=0; delay(16);
E=1;
}
void set(unsigned char cmd)
{
P1=cmd;
RS=0;
RW=0;
E=0;
delay(16);
E=1;
}
void delay(unsigned char t) //延时子程序
{
while(t--);
}
void k0(void) //测量失调电压
{ unsigned char i;
delay(0xff);

SD0=1;
SD1=1; SD2=1;
SD3=1;
SD4=0;

while(SRSTDY[i])
{
display(0x80+i,SRSTDY[i]);
i++;
}
{int a,b,c;
c=100*a;
b=c/(51000+100);
display (0xc0,b);}//在第二行显示输入失调电压

}
void k1(void) //测量失调电流
{ unsigned char i;
delay(0xff);

while(SRSTDL[i])
{ display(0x80+i,SRSTDL[i]);
i++;
}
SD0=1;
SD1=1;
SD2=0;
SD3=0;
SD4=0;

delay(0xffff);
SD0=1;
SD1=1;
SD2=0;
SD3=0;
SD4=1;

{int a,b,c,d,e;
d=100*a;
e=100*b;
c=(d-e)/(51000+100);
display (0xc0,c);}//在第二行显示输入失调电流的结果
} void k2(void) //测量开环增益
{ unsigned char i;
delay(0xff);

while(KHZY[i])
{
display(0x80+i,KHZY[i]);
i++;
}
SD0=0;
SD1=1;
SD2=1;
SD3=1;
SD4=0;
{int a,b,d,c;
c=a*100;
b=511*c/283;
//d=20*log 10 b;
display (0xc0,d);}//在第二行显示开环增益的结果

} void k3(void) //测量共模YZ比
{ unsigned char i;
delay(0xff);

while(GMYZB[i])
{
display(0x80+i,GMYZB[i]);
i++;
}
SD0=1;
SD1=0;
SD2=1;
SD3=1;
SD4=0;

{int a,b,c;
c=1000*a;
b=(51000+100)*c/283000;
display (0xc0,b);}//在第二行显示共模YZ比 十.系统调试 根据方案要求,系统调试分三大过程,硬件调试、软件调试、软
件和硬件联调。 1. 硬件调试:
由于电路的各个模块都集成于一块板上,为方便电路中各
模块的调试,我采用焊一个模块调一个模块的方法,以达到各个
模块调节的目的。
2. 软件调试
本系统的软件系统采用C语言编写,调试也是分模块调试。
3. 软硬联调
硬件和软件分别调试成功后再用系统的程序测试,调试。
十一.设计总结 通过本次课程设计,让我深入了解了AT89S52的内部结构和运行
原理以及集成运放的性能参数指标。更让我明白了要灵活运用我们所
学的知识去发现问题、分析问题和解决问题。这次的设计从硬件设计
到软件设计以及相应的调试都花费了不少心思,也碰到了不少问题,
但都解决了,积累了宝贵的经验,现总结如下:
1. 我做板的经验少,在排列元件的时候没有注意到整洁
美观的问题,排得比较辛苦,只有多练才能做地更好。
2. 设计电路要考虑实际中的问题,比如继电器等元件的
封装都要自己做。
3. 在PCB板放置元件,要考虑元件间的干扰问题,还有布
线宽度,电源线加粗,地线覆铜,管脚和焊盘要足够
大。 4. 制板要让板的布线清晰,打洞要准,总之做板要工整。
5. 编程尽量要使用AT89S52芯片的硬件设备。
全部评论
幸运草lwn 发布日期:2009-04-29
需要测量哪些静态参数
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控