1、 “电子系统设计”课程设计汇报设计课题: RLC参数测试仪 专业班级: 姓 名: 学 号: 设计时间: 评阅意见:评阅意见设计课题题目: RLC参数测试仪 一、设计任务和要求 1、测量范围:电阻 100-1M; 电容 100pF-10000pF; 电感 100H-10mH。2、制作1602液晶显示器,显示测量数值,并用发光二级管分别指示所测元件类别。 3、测量精度:5%。二、系统设计方案2.1电阻测量方案方案一:利用串联分压原理方案 R0RxGNDVCC 图2-1串联分压电路图依据串联电路分压原理可知,串联电路上电压和电阻成正比关系。测量待测电阻Rx和已知电阻R0上电压,记为Ux和U0. ,方
2、案二:利用直流电桥平衡原理方案 R2R1GNDVCCGRxR3 图2-2 直流电桥平衡电路图依据电路平衡原理,不停调整电位器R3,使得电表指针指向正中间,再测量电位器电阻值。方案三:利用555组成单稳态方案 图1 555定时器组成单稳态电路图 依据555定时器组成单稳态,产生脉冲波形,经过单片机读取高低电平得出频率,经过公式换算得到电阻阻值。 上述三种方案从对测量精度要求而言,方案一测量精度极差,方案二需要测量电阻值多,而且测量调整麻烦,不易操作和数字化,相比较而言,方案三还是比较符合要求,因为是经过单片机读取转化,正确度会显著提升。故本设计选择了方案三2.2电容测量方案方案一:利用串联分压原
3、理方案(原理图同图2-1)经过电容换算容抗跟已知电阻分压,经过测量电压值,再经过公式换算得到电容值。原理同电阻测量方案一。方案二:利用交流电桥平衡原理方案(原理图同图2-2) 经过调整Z1、Z2使电桥平衡。这时电表读数为零。经过读取Z1、Z2、Zn值,即可得到被测电容值。 方案三:利用555组成单稳态原理方案 图2 555定时器组成单稳态电路图 单片机接一独立按键,当其按下时,NE5553引脚输出方波,3脚和单片机相接,可经过程序测出其频率,进而求出Cx值,显示在1602液晶屏上。 上述三种方案从对测量精度要求而言,方案一测量精度极差,方案二需要测量电容值多,而且测量调整麻烦、电容不易测得正确
4、值,不易操作和数字化,相比较而言,方案三还是比较符合要求,因为是经过单片机读取转化,正确度会显著提升。故本设计选择了方案三。2.3电感测量方案方案一:利用交流电桥平衡原理方案。方案二:利用电容三点式正弦波震荡原理在经过555组成单稳态原理输出脉冲方案 图3 电容三点式正弦波震荡电路图 因为电容三点式震荡电路产生信号较小,所以先加一级单管放大,在跟比较器将正弦波转化成方波。单片机接一独立按键,当其按下时,运放输出口输出方波,该口和单片机相接,可经过程序测出其频率,进而求出Lx值,显示在1602液晶屏上。 上述两种方案从对测量精度要求而言,方案二需要测量电感值多,而且测量调整麻烦、电感不易测得正确
5、值,不易操作和数字化,相比较而言,方案二还是比较符合要求,因为是经过单片机读取转化,正确度会显著提升。故本设计选择了方案二。2.4电阻、电容、电感电路设计本设计是单片机STC15F系列开发板作为主控中心: RLC参数测试模块 单片机STC15F12K60S2和液晶显示模块各接口分配电阻、电容和电感测试显示选择按键三、单元电路分析和设计1原理分析 电阻和电容测量参数是经过NE555震荡电路输出方波,供单片机测量计数可经过程序测出其频率,进而求出电阻和电容值,电感测量参数先经过电容三点式震荡电路,产生正弦波。然后进过NE555震荡电路输出方波,单片机测量计数可经过程序测出其频率,进而求出电感值。2
6、. 仿真结果3.2.1 电阻测量电路仿真仿真电路图: 接一独立按键,当其按下时,NE5553引脚输出方波,3脚和XSC1相接,可经过程序测出其频率,进而求出Rx值,显示在液晶屏上。输出波形: 3.2.2 电容测量电路仿真仿真电路图:接一独立按键,当其按下时,NE5553引脚输出方波,3脚和XSC2相接,可经过程序测出其频率,进而求出Cx值,显示在液晶屏上。输出波形:3.2.3 电感测量电路仿真仿真电路图:因为电容三点式震荡电路产生信号较小,所以先加一级单管放大,在跟比较器将正弦波转化成方波。接一独立按键,当其按下时,运放输出口输出方波,该口和XSC1相接,可经过程序测出其频率,进而求出Lx值,
7、显示在液晶屏上。 输出波形:3. 电阻、电容、电感显示电路设计采取1602液晶显示,耗能低,显示数值范围较大四、软件部分设计4.1 主程序步骤图电阻、电容、电感测试仪设计中,便于直观性,在液晶屏上显示被测参数选择,被测参数各个灯选择和具体设置。经过按键来进行灵活控制。4.2 中止程序步骤图测试电阻并显示按键中止入口判定按键值OK键键值=1?进入选择档位界面档位键值改变?电阻档电容档电感档OK键键值=0 ?显示主界面测试电容并显示测试电感并显示YYNYNN五、安装和调试5.1 电阻、电容和电感测量电路调试接通电源,用示波器观察输出波形,若为方波,则电路焊接无误,不然检验电路,在调试过程中发觉,若
8、改变电源电压,输出方波频率会发生改变,计算出数值存在一定误差,当VCC为3.25V左右时误差较小测小电阻时,我们能够采取给待测电阻串联适宜已知标准电阻方法,来提升测量精度;测电感时,给待测电感串联适宜已知标准电感。5.2 液晶显示电路调试将测量电路输出分别和单片机P30、P32、P33相接,观察液晶是否显示测量结果。在调试过程中发觉,电阻、电容测量误差较小,因为电容三点式震荡电路频率不稳定,电感测量误差较大。六、 系统测试和分析6.1系统测试(1)测试原理:在系统设计中,以MCS-51单片机为关键电阻、电容、电感测试仪,将电阻,电容,电感,使用对应振荡电路转化为频率实现各个参数测量。其中电阻和
9、电容是采取555多谐振荡电路产生,而电感则是依据电容三点式产生,将振荡频率送入AT89C52计数端端,经过定时而且计数能够计算出被测频率,再经过该频率计算出被测参数。以Keil51为仿真平台,使用C语言和汇编语言混合编程编写了系统应用软件;包含主程序模块、显示模块、电阻测试模块、电容测试模块和电感测试模块(2)测试仪器:示波器,万用表,稳压电源,计算机。(3)测试结果:经过按键,实现其按键所对应功效,并观察测试结果,对设计深入进行校正和对实现功效可靠性确实定,并统计观察结果6.2测试方法依据设计设计搭好好电路经过经过拨码选择给个部分模块供电,再测量前用电桥测量仪测出所需测量电阻电容和电感实际值
10、,再依据单片机提醒选择选择所需测量器件。测量次序按电阻,电容,电感次序。器件按由小到大依次测量,再依据单片机实测值和电桥测量仪所测值计算出测量误差6.3试验数据统计(a)电阻测试数据如表所表示电阻参数(k)0.11.0101005001000参数测试仪测试值0.0960.979.8799.6500985自制仪器测试值1021025104521064105309011079440相对误差6.25.75.96.86.19.5(b)电容测试数据如表所表示。电容参数(pF)50100500100010000参数测试仪测试值94.02424.0940.044609376.0自制仪器测试值151550.0
11、1310608315006相对误差60.629.739.330.560.1(c)电感测试数据如表所表示电感参数100uH470uH1mH1mH参数测试仪测试值70.10385.08008.860自制仪器测试值120580114813547相对误差71.150.743.552.3七、结论和心得这次课设论文和设计是我这大学期间干最有意义事之一。我了解了电子制作很多知识,在以前基础上对模拟电路有了更深层次认识。这次设计大多数全部是模拟电路,对模拟电路要求比较高,而在这之前基础全部没有接触过这些东西,在制作过程中也碰到了不少问题,比如运放选型就是一个头疼问题,运放种类有很多,参数也各不相同,需要对照芯
12、片数据手册选出自己需要型号。以前对电路设计也没有概念,面对一个现成电路也怎么分析,无从下手,更何况是自己设计电路呢。不过经过这次制作,我学会了怎样分析部分小规模模拟电路,而且能自己设计部分简单功效模拟电路,我认为学会这些东西是我这次毕业设计取得最大收获。在制作过程之中碰到了好多细节问题全部是以前轻易忽略掉。比如,以前不关注电源质量和纹波大小,用万用表电压档测量以后感觉电压符合就拿来用了,却不知道电源纹波对电路影响。制作过模拟电路以后才有了电源纹波这个概念,尤其是运放,对电源要求相当高。给模拟电路供电电源质量要相当可靠,而且需要用示波器观察电源输出直流量中纹波大小。纹波太大会影响运放正常工作,尤
13、其是在小信号电路中,有时候纹波噪声会将有用信号全部覆盖掉,单片机电源纹波也得确保在十毫伏以下,不然会影响单片机AD转换精度,总结了这次毕业设计经验,我认为以后做东西时候要愈加细心,碰到问题要多思索,问题不处理根本会留有后患。阅读芯片数据手册不能一味追求汉字版,有时候汉字版本翻译不仔细,造成错误也不易查找。调整心态,坚持去看英文原版数据手册,看多了就不会厌烦英文数据手册了,很多事情还是习惯了就好了。参考文件1申忠如,申淼,谭亚丽.MCS-51单片机原理及系统设计.西安交通大学出版社,3月第1版2申忠如,郭福田,丁晖现代测试技术和系统设计西安:西安交通大学出版社,.23付家才.单片机控制工程实践技
14、术M.北京化学工业出版社,4张毅刚.MCS-51单片机应用系统.哈尔滨工业大学出版社,19975夏继强.单片机试验和实践教程.北京航空航天大学出版社,.16马忠梅,单片机C语言Windows环境编程宝典M,北京:北京航空航天大学出版社,.6;附录:1.关键元件清单及PCB图元件型号数量单片机STC15F2K60S21电位器10K4瓷片电容103(0.01uF)1瓷片电容104(0.1uF)7电阻300R1电阻100K2电阻1K2电阻2K1电阻510K2按键4液晶16021555定时器NE5553电解电容50V,22uF1三极管S8050(NPN型)2PCB图2. 实物图 单片机最小系统模块电感
15、模块 电阻电容模块3.程序代码#include #include #define T1MS (65536-FOSC/12/1000) /12T?#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#definePI 3.1415926uchar table216=f(Hz)=;uchar table316=R(Ohm)=;uchar table416=C(pF)=;uchar table516=L(uH)= ;uchar num,cc=0,th0,tl0;uint C,L;ulong f=
16、0,R;int jishu=0;char ii=0;bit xuanzhe=1;/这三个引脚参考资料sbit E=P22;/1602使能引脚sbit RW=P21;/1602读写引脚sbit RS=P20;/1602数据/命令选择引脚sbit key_R=P34; /?sbit key_C=P35; /?sbit key_L=P36; /?sbit key_X=P37;sbit R_out=P32;/?sbit C_out=P33;/?sbit L_out=P30;/?bit bb=1;void Rrr(void) f=0;bb=1; TR0=1;EX0 = 1;while(bb);EX0 =
17、 0; void Lrr(void) f=0;bb=1;TR0=1;INT_CLKO |= 0x40;while(bb);INT_CLKO &= 0xbf;void Crr(void) f=0; bb=1; TR0=1;EX1 = 1;while(bb);EX1 = 0; void delayms(uint xms) uint i,j; for(i=xms;i0;i-)for(j=1330;j0;j-);void delay() uint i;for(i=0;i4;i+) _nop_();_nop_();_nop_();_nop_();_nop_();bit Busy(void)bit bus
18、y_flag = 0;RS = 0;RW = 1;E = 1;delay();busy_flag = (bit)(P2 & 0x01);E = 0;return busy_flag;void wcmd(uchar del)uchar del2=0,i;while(Busy();RS = 0;RW = 0;E = 0;delay();P0 = del;delay();E = 1;delay();E = 0;void wdata(uchar del)uchar del2=0,i;while(Busy();RS = 1;RW = 0;E = 0;delay();P0 = del; delay();E
19、 = 1;delay();E = 0;void L1602_init(void)wcmd(0x38);wcmd(0x0c);wcmd(0x06);wcmd(0x01);void t0_init() AUXR &= 0x7F;/?12T?TMOD &= 0x00;TMOD = 0x01;/?TL0 = 0xB0;/?TH0 = 0x3C;/?TF0 = 0;/?TF0?TR0 = 0;PX0=1; IT0 = 1; IT1= 1; EX0 = 0; EX1 =0;EA=1;void t_init()TMOD &= 0x00; AUXR &= 0x7F;/?12T? TMOD = 0x02;/?
20、TL0 = 0xF6;/? TH0 = 0xF6;/? TF0 = 0;/?TF0? TR0 = 0;/?0? ET0 = 1;/?0? EA = 1;void keyscan() if(key_R=0) delayms(10);while(key_L=0); cc=1; else if(key_C=0) delayms(10);while(key_C=0); cc=2; else if(key_L=0) delayms(10); while(key_L=0); cc=3; elseif(key_X=0)delayms(10);while(key_X=0);xuanzhe=!xuanzhe;/
21、while(key_R&key_C&key_L);/?void int0_Int(void) interrupt 0 f+; void int4_Int(void) interrupt 16 f+; void Outside(void) interrupt 2 f+; void T_count() interrupt 1 if(xuanzhe) f+; else TL0 = 0xB0;/?TH0 = 0x3C;/? if(+jishu=20) jishu=0;TR0=0; EX0=0; bb=0; void L1602_string(uchar hang,uchar lie,uchar *p)
22、uchar a,b=0;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;while(1)wcmd(a+);if(*p = 0)|(b=16) break;b+;wdata(*p);p+;void T0_count() TL0 = 0xF6;/? TH0 = 0xF6;/? f=0; switch(cc) case 1:while(!R_out); while(R_out); TR0 = 1; while(!R_out); while(R_out); TR0=0; break; case 2:while(!C_out); w
23、hile(C_out);TR0 = 1; while(!C_out); while(C_out); TR0=0; break;case 3:while(!L_out); while(L_out); TR0 = 1; while(!L_out); while(L_out); TR0=0; break;default :break; / f=1/(th0*256+tl0)*0.5*1000000.0;f=1000000.0/f/10; void display_f(ulong f) uchar count=0; ulong f0; wcmd(0x80|0x06);for(ii=0;ii5;num-
24、) table2num=f0%10+48;f0=f0/10; wcmd(0x80); for(num=0;num6+count;num+) wdata(table2num); void display_R(ulong R) uchar count=0; ulong R0; R0=R;wcmd(0x80|0x47);for(ii=0;ii6;num-) table3num=R0%10+48;R0=R0/10; wcmd(0x80|0x40); for(num=0;num7+count;num+) wdata(table3num);delayms(5); /?void display_C(uint
25、 C) uchar count=0; uint C0; C0=C; wcmd(0x80|0x47);for(ii=0;ii5;num-) table4num=C0%10+48;C0=C0/10; wcmd(0x80|0x40); for(num=0;num6+count;num+) wdata(table4num); /?void display_L(uint L) uchar count=0; uint L0; L0=L;wcmd(0x80|0x47);for(ii=0;ii5;num-) table5num=L0%10+48;L0=L0/10; wcmd(0x80|0x40); for(num=0;num0)display_f(f); cc=0;