集成运放参数测试仪.docx
《集成运放参数测试仪.docx》由会员分享,可在线阅读,更多相关《集成运放参数测试仪.docx(32页珍藏版)》请在冰豆网上搜索。
集成运放参数测试仪
集成运放性能参数测试仪
一、集成运放性能参数测试仪性能指标
工作电压:
±15V
VIO:
测量范围:
0~40mV(<小于3%读数±1个字);
IIO:
测量范围:
0~4μA(<3%读数±1个字);
AVD:
测量范围:
60dB~120dB±3dB;
KCMR:
测量范围:
60dB~120dB±3dB;
输出频率:
5Hz
输出电压有效值:
4V
频率与电压值误差绝对值均小于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共模抑制比KCMR
表征运放对共模信号抑制能力的参数叫共模抑制比!
用KCMR表示。
KCMR定义为差模电压增益Avd和共模电压增益Avc之比,即KCMR=Avd/Avc。
运放对共模信号有很强的抑制能力。
2.4开环放大倍数的测量
即输出电压与输入电压的比值。
六、电路设计
3.1失调电压VIO测量电路
输入失调电压的测量原理如图1所示:
图中直流电路通过RI和RF接成闭合环路,通常RI的取值不超过100欧
测量电路:
测量方法:
根据输入失调电压的定义得:
3.2失调电流IIO测量电路
测量电路:
和上面一样,
则:
3.3共模抑制比KCMR测量电路
测试原理如图所示,由于RF>>RI,电路对差模信号的增益很大,该闭环电路对差模信号的增益AvD=RF/RI。
共模信号的增益AvC=(VO/VS)。
因此,只要从电路上测出VO和VS,即可求出共模抑制比
KCMR=Avd/Avc
3.4开环放大倍数的测量
测量电路如图。
实际的测量电路:
由于考虑到输出处会有自激震荡产生,因此在OP177的输出口和正向输入端加上一个电容,用以消除自激震荡的影响。
实现各个测量电路的转换,我使用继电器、通过单片机对引脚的置位来改变开关的通断以及接通的相应电路。
S1、S2闭合,S3、S4接地时,测量失调电压;
S1、S2断开,S3、S4接地时,测量失调电流;
S1、S2闭合,S3接信号源,S4接地时,测量共模抑制比;
S1、S2闭合,S3接地,S4接信号源时,测量开环放大倍数。
以下为其他模块的电路:
1.整流转换电路:
2.单片机控制及液晶显示模块电路:
3.信号发生电路
电路总图:
画图原理图中存在的问题:
由于原理图的元件库中没有ADS1110、继电器、ICL8038等元件,因此这些元件都需要自己手动画元件,这也是画图中存在的最大问题。
要将该元件的引脚与实际元件的引脚要对应。
可以说,在画原理图的过程中没有存在很大的障碍。
六、软件仿真
仿真软件使用的是multisim2001。
在明确了软件以后,就着手进行各个部件的仿真。
由于集成运放性能参数测试仪的核心内容为测量电路部分,控制以及整流部分对于电路来说只是起到一个辅助和提高测量准确度的作用,因此,仿真内容的重点也在于此。
本次仿真只针对测量电路进行,验证测量电路方案的准确与否。
下面就对四部分测量电路进行仿真。
仿真内容中的被测量集成运算放大器为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。
由于输入信号电压显示的是最大值,因此计算时必须将它转化为有效值,则Vs=2.83V。
代入公式计算后,计算得AVD=106.88db
LM741的元件手册提供的开环放大倍数的范围50db-200db,则测量结果106.88db在LM741提供的参数范围之内。
可以采用这个测量电路测量开环放大倍数。
4.共模抑制比测量仿真
测量结果如图
根据共模抑制比的测量公式:
Vs有效值为2.83V,Ri=100欧,Rf=51K欧。
代入公式,计算得KCMR=93.1db
LM741的元件手册提供的共模抑制比的最小值为70db,标准值为90db,则测量结果93.1db接近标准值,在LM741提供的参数范围之内。
可以采用这个测量电路测量开环放大倍数。
仿真过程中存在的问题:
在开始时,我碰到了电阻参数不匹配的问题,一级运放的电阻原来为100K欧,但是仿真结果与指标差别很大,因此我就将该电阻减小为51K欧,并将其他相关电阻均减小1倍,之后得出的参数就符合指标了。
由于没有考虑到输出处会有自激震荡产生,结果造成共模抑制比的测量中存在了很大误差,在多次测试,最后决定在OP177的输出口和正向输入端加上一个电容,消除了自激震荡的影响,保证了输出结果的准确性。
电路仿真的心得:
通过对上述四个测量电路的仿真,我得出的结论是,这些测量电路测量出来的结果符合设计要求。
可以说,此测试仪的最核心部分测试电路完全可以采用上面所述的四个测量电路的方案。
但是,在测试过程中也存在一些小问题,通过仿真也发现了原先测量电路中存在的不足之处,例如:
由于没有考虑到输出处会有自激震荡产生,结果造成共模抑制比的测量中存在了很大误差,最后在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,和其他同学的分模块制板再通过连线连接的方案相比,我的这块板要小很多。
对于元件的排列和布置,我本着“属于同一模块的元件尽量排列在一起”的原则布置,最后再将四个模块靠近,这样不仅做到了各模块排列清晰,一目了然,而且这样排列更能方便各模块的分开调试。
图中,左下角为液晶显示和电路控制模块,右上角为测量电路模块,右边为整流转换模块,右下角为信号发生电路,上方为电源稳压模块。
我的PCB方案将所有元件和模块集成在一块板上,避免了各个模块间的连线调试以及模块间协同工作的可靠性的问题,做到了实用性和美观的统一。
因为不需要考虑高频信号的干扰,所以元件间的距离间隔可以尽量调小,并且大胆使用了一定量的跳线。
最后,我在板的地线上覆铜,不仅进一步减少了干扰,而且使板更为美观,同时也为焊板降低了一定的难度。
以实际做出来的板的效果来看,总体说来,我所画的这块PCB板的效果还是很好的,在调试过程中出现的问题也不多,而且只要简单修改就可以正常工作,我对此很满意的。
画板过程中碰到的问题:
有些元件的封装,例如ADS1110、继电器,在封装库内并没有给出;另外还有一些元件封装在封装库内没有合适的,例如部分电解电容,所以这些元件的封装都需要自己另外画。
元件引脚的位置、焊盘的大小必须与实际元件一致,否则会造成元件无法安插的板上的问题,而且焊盘的大小要适当加大,在布线的过程中,应尽量把线布粗,电源线和地线还要另外加粗。
另外,为了能将板尽量地做小,我将原理图中的四个模块紧密排列,全部集成在一块板上。
由于所有的模块都集成在一块板上,所以做出的这块板还是存在一点的不方便,比如,一旦某个模块出现问题,要做出修改就要相对麻烦一些,有时甚至会涉及到其他模块,在实际的电路调试中我就尽量少地把改动涉及到其他模块。
九.系统的软件设计
1.程序设计流程图:
2.程序清单:
程序采用C语言编译,根据单片机的特性,我尽量不使用浮点数。
#include
sbitK0=P2^4;//定义开关K0的引脚编号
sbitK1=P2^5;//定义开关K1的引脚编号
sbitK2=P2^6;//定义开关K2的引脚编号
sbitK3=P2^7;//定义开关K3的引脚编号
sbitSD0=P0^0;//对应继电器1的输出口引脚
sbitSD1=P0^1;//对应继电器2的输出口引脚
sbitSD4=P0^2;//对应继电器5的输出口引脚
sbitSD2=P0^3;//对应继电器3的输出口引脚
sbitSD3=P0^4;//对应继电器4的输出口引脚
sbitSCL=P0^5;
sbitSDA=P0^6;
sbitE=P3^0;
sbitRW=P3^1;
sbitRS=P3^2;
unsignedcharcodeJP[]={0xc6,0xce,0xdd,0xbc,0xde,0xdd,0xa4,0xbc,0xdd,0xc3,0xde,0xb8,0xda,0x21,0x00};
unsignedcharcodeEN[]="zaku,kohaku";
unsignedcharcodeSRSTDY[]="V_offset=";
unsignedcharcodeSRSTDL[]="I_offset=";
unsignedcharcodeKHZY[]="A_ol=";
unsignedcharcodeGMYZB[]="CCMR=";
voidinitial(void);
voidclear(void);
voiddisplay(unsignedcharpos,unsignedcharword);
voidset(unsignedcharcmd);
voiddelay(unsignedchart);
voidk0(void);
voidk1(void);
voidk2(void);
voidk3(void);
unsignedcharc;
voidmain(void)
{
unsignedchari;
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();
}
gotoL;
}
voidinitial()//液晶模块初始化
{
clear();
set(0x38);
set(0x0c);
set(0x10);
clear();
}
voidclear(void)//复位子程序
{
unsignedchart0;
t0=0x40;
P1=0x01;
RS=0;
RW=0;
E=0;
while(t0--)
delay(0xff);
E=1;
}
voiddisplay(unsignedcharpos,unsignedcharword)//液晶显示子程序
{
set(pos);
P1=word;
RS=1;
RW=0;
E=0;
delay(16);
E=1;
}
voidset(unsignedcharcmd)
{
P1=cmd;
RS=0;
RW=0;
E=0;
delay(16);
E=1;
}
voiddelay(unsignedchart)//延时子程序
{
while(t--);
}
voidk0(void)//测量失调电压
{unsignedchari;
delay(0xff);
SD0=1;
SD1=1;
SD2=1;
SD3=1;
SD4=0;
while(SRSTDY[i])
{
display(0x80+i,SRSTDY[i]);
i++;
}
{inta,b,c;
c=100*a;
b=c/(51000+100);
display(0xc0,b);}//在第二行显示输入失调电压
}
voidk1(void)//测量失调电流
{unsignedchari;
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;
{inta,b,c,d,e;
d=100*a;
e=100*b;
c=(d-e)/(51000+100);
display(0xc0,c);}//在第二行显示输入失调电流的结果
}
voidk2(void)//测量开环增益
{unsignedchari;
delay(0xff);
while(KHZY[i])
{
display(0x80+i,KHZY[i]);
i++;
}
SD0=0;
SD1=1;
SD2=1;
SD3=1;
SD4=0;
{inta,b,d,c;
c=a*100;
b=511*c/283;
//d=20*log10b;
display(0xc0,d);}//在第二行显示开环增益的结果
}
voidk3(void)//测量共模抑制比
{unsignedchari;
delay(0xff);
while(GMYZB[i])
{
display(0x80+i,GMYZB[i]);
i++;
}
SD0=1;
SD1=0;
SD2=1;
SD3=1;
SD4=0;
{inta,b,c;
c=1000*a;
b=(51000+100)*c/283000;
display(0xc0,b);}//在第二行显示共模抑制比
十.系统调试
根据方案要求,系统调试分三大过程,硬件调试、软件调试、软件和硬件联调。
1.硬件调试:
由于电路的各个模块都集成于一块板上,为方便电路中各模块的调试,我采用焊一个模块调一个模块的方法,以达到各个模块调节的目的。
2.软件调试
本系统的软件系统采用C语言编写,调试也是分模块调试。
3.软硬联调
硬件和软件分别调试成功后再用系统的程序测试,调试。
十一.设计总结
通过本次课程设计,让我深入了解了AT89S52的内部结构和运行原理以及集成运放的性能参数指标。
更让我明白了要灵活运用我们所学的知识去发现问题、分析问题和解决问题。
这次的设计从硬件设计到软件设计以及相应的调试都花费了不少心思,也碰到了不少问题,但都解决了,积累了宝贵的经验,现总结如下:
1.我做板的经验少,在排列元件的时候没有注意到整洁美观的问题,排得比较辛苦,只有多练才能做地更好。
2.设计电路要考虑实际中的问题,比如继电器等元件的封装都要自己做。
3.在PCB板放置元件,要考虑元件间的干扰问题,还有布线宽度,电源线加粗,地线覆铜,管脚和焊盘要足够大。
4.制板要让板的布线清晰,打洞要准,总之做板要工整。
5.编程尽量要使用AT89S52芯片的硬件设备。
十二.致谢
设计是在陈可中教授的亲切关怀下完成的。
在整个设计过程中,陈老师给了我极大的帮助。
在此,我首先向他表示崇高的敬意和衷心的感谢!
陈老师他学识渊博,治学严谨求实,对学生要求严格,他在学习上对我严格要求,他所传授的专业知识及解决问题的思想方法,使我在设计的过程中解决了很多实际问题。
同时,陈老师还教会了我很多做人的道理,这些都将使我终生受益。
在此,我衷心的感谢陈老师!
感谢所有给予我帮助的人们!
十二.参考文献
[1]赵文博,刘文涛.单片机语言C51程序设计
北京:
人民邮电出版社