1、2012广西区大学生电子设计竞赛设计报告数字式RLC测量仪(B题)摘要本系统是基于STC89C52单片机控制的数字式RLC测量仪,利用单片机对R、L、C的参数进行测量,充分利用单片机的运算和控制功能,硬件软件相结合,测量方便,精度较高。系统是使用振荡电路将电阻、电容、电感的参数转化为频率,将振荡频率由CD4052模拟开关送入STC89C52进行计算处理,然后对其值进行补偿,智能切换量程,测量结果用LCD1602液晶显示。其中电阻和电容的参数转化频率是采用555多谐振荡电路产生,而电感的参数转化频率则是根据LC三点式振荡产生,本设计思路清晰,结构合理,误差控制在题目所要求的范围内。关键词:STC
2、89C52,RLC,模拟开关, 555多谐振荡, LC三点式振荡, LCD1602一、系统总体方案1.系统方案比较及论证1.1 方案选择1.1.1 电阻测量方案方案一:串联分压原理 图1串联电路原理图根据串联电路的分压原理可知,串联电路上电压与电阻成正比关系。通过测量Rx和R0上的电压。由公式 Rx=Ux/(U0/R0)。方案二:利用直流电桥平衡原理的方案 图2 电桥(其中R1,R2,为可变电位器,R3为已知电阻,R4为被测电阻)根据电路平衡原理,不断调节电位器,使得电表指针指向正中间。由R1*R4=R3*R4.在通过测量电位器电阻值,可得到R4的值。方案三:利用555构成单稳态的方案 图3
3、555定时器构成单稳态根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电阻阻值。由f=1/ (R1+2R2)*C*In2,得到公式: R2=1/2*1/ (f*c*Ln2)-R1上述三种方案从对测量精度要求而言,方案一的测量精度极差,方案二需要有较高精度的电阻组成桥,而且测量调节麻烦,不易操作与数字化,相比较而言,方案三利用555构成的震荡起,用单片机的定时计数器计555输出的振荡频率,经软件计算得出电阻值,而且与电容的测量电路相仿,制作电路板起来方便,精确度会明显的提高。故本设计选择了方案三。1.1.2 电容测量方案方案一:直接通过串联电路原理。通过
4、电容换算的容抗跟已知电阻分压,通过测量电压值,再经过公式换算得到电容的值。原理同电阻测量的方案一。方案二:采用平衡电桥法。将待测电感和已知标准电阻电容组成电桥,通过单片机控制调节电阻参数使电桥平衡,此时,电感的大小由电阻和电桥的本征频率即可求得,该方案测量精准,同时可以测量电容和电阻的大小,但其电路电路复杂,实现起来较为困难。方案三:555构成单稳态原理图4 555定时器构成单稳态根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电容值。由f=1/(R1+2R2)*C*In2得到公式: Cx=1/ c*Ln2 (R1+2*R2)综合比较后,本设计采用了方
5、案三。1.1.3电感测量方案方案一:采用平衡电桥法测量电感。将待测电感和已知标准电阻电容组成电桥,通过单片机控制调节电阻参数使电桥平衡,此时,电感的大小由电阻和电桥的本征频率即可求得,该方案测量精准,同时可以测量电容和电阻的大小,但其电路电路复杂,实现起来较为困难。方案二:电容三点式构成正弦波原理 图5 电容三点式 根据电容三点式公式 : 从而可得电感的计算公式: 采用LC配合三极管组成三点式振荡电路,通过测输出频率大小的方法来实现对电感值测量。该方案成本低,其输出波形为正弦波,将其波形整形后交给单片机测出其频率,并转换为电感值。相比之下,方案二的测量精度比方案一要高得多,并且也容易实现,所以
6、选择方案二。1.1.4 多路模拟开关选择 方案一:四选一模拟开关CD4052。方案二:十六选一模拟开关DG406。方案三:32x32路矩阵模拟开关SL59532。基于本设计题目要求和选择的需要,考虑成本及控制简易程度等,四选一模拟开关CD4052为最佳选择,故本系统选择方案一。1.1.5显示方案方案一:采用点阵式液晶显示器(LCD1602)显示。方案二:采用点阵式液晶显示器(LCD12864)显示。基于本设计题目要求,需要液晶显示和测量的量程范围,相比之下,LCD1602液晶显示低功耗节能,占用空间小,并且格价相对便宜,完全能满足题目所要求的测量显示,故本设计采用的是LCD1602液晶显示。图
7、6 1602显示电路1.1.6主控芯片选择方案一:采用CPLD或FPGA用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用,但相对而言规模大,结构复杂。方案二:采用STC系列单片机目前广泛应用的STC89C52单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,完全能满足本系统设计需求。从完成系统任务需要及可靠性等方面综合考虑,比较两款芯片的成本、功耗等,本系统采用STC系列的ST
8、C89C52单片机作为主控芯片,即选择方案二。1.2 方案论证1.2.1 总体思路本设计是基于单片机STC89C52智能处理,根据单片机的外接按键控制测量电路的选择,通过LM555定时器构成的多谐振荡器和电容反馈式三点式构成的振荡电路长生的一定频率的波。再通过单片机的I/O口对高低电平的捕获读出频率,再通过程序算法处理换算成电阻电容电感的值,然后再通过单片机送给1602液晶显示。由于测量电阻、电容和电感,都是首先转化为频率后再进行计算测量的,其精度会直接影响到本仪表的精度,因此频率或周期的产生和计算处理是本系统实现精确测量的关键。1.2.2 设计方案自动量程转换自动量程转换-addr被测电阻被
9、测电容被测电感RC振荡器(555)RC振荡器(555)电容三点式振荡器多路选择开关4052单片机按键选择测量电路通道选择1602显示主控部分二极管指示分频电路系统方框图如图7所示。图7 系统方框总图2.系统电路设计及理论分析功能:测量并显示被测电阻电容电感的值。器件:LM555定时器,三极管9018,LM7812,LM7805,LM324,CD4052,74HC14,74LS74,继电器,1602液晶显示,stc89c52单片机等。 2.1电阻测量电路电阻的测量采用“脉冲计数法”,如下图所示由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电阻的大小。555接成多谐振荡器的形式,
10、其振荡周期为:T=t1+t2=(ln2)(R1+Rx)*C1+(ln2)Rx*C1得出: 即: 电路分为2档:1.100Rx1000欧姆:AR1设置为高电平输出,AR2设为低电平输出,R15=200,C18=0.22uF,所以: Rx=(6.56*(1e+6)/(2* fx)-330/2对应的频率范围为: 2.8Kfx 16K 。2.1000Rx1M欧姆:BR1设置为高电平输出,BR2设为低电平输出,R14=20;C17=1000PF,所以:Rx =(1.443*(1e+8)/(2* fx)-(1e+4)对应的频率范围为: 16Kfx 714khz 。电阻测量电路见图8所示。图8 电阻测量电路
11、在测量电阻电路中是采用单片机控制继电器自动换挡实现量程的切换。2.2电容测量电路 电容的测量同样采用“脉冲计数法”,如下图所示由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电容的大小。555接成多谐振荡器的形式,其振荡周期为:T=t1+t2=(ln2)(R1+R2)*Cx+(ln2)R2*Cx我们设置R1=R2;得出: 即: 电路分为2档:1、R11510K欧姆,BC1设置为高电平输出,R11=R13, Cx= (0.94*(1e+6)/ fx;对应的频率范围为: 9.4Kfx 0.94K2、R1010K欧姆: AC1设置为高电平输出;R10=R12; Cx =(4.81*(
12、1e+6)/ fx;对应的频率范围为: 480Hzfx 4.8K电容测量电路见图9所示。图9 电容测量电路在测量电容电路中是采用单片机控制继电器自动换挡实现量程的切换。2.3电感测量电路电感的测量是采用电容三点式振荡电路来实现的。电容三点式振荡电路又称考毕兹振荡电路,三点式振荡电路是指:LC回路中与发射极相连的两个电抗元件必须是同性质的,另外一个电抗元件必须为异性质的,而与发射级相连的两个电抗元件同为电容式的三点式振荡电路,也就是射同基反的构成原则成为电容三点式振荡电路。其振荡频率为:即: 电感测量电路见图10所示。图10 电感测量电路2.4多路选择开关电路的设计利用CD4052实现测量类别的
13、转换,CD4052是差分四通道数字控制模拟开关器件,有A0和A1两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止电流。当INH输入端=“1”时所有通道截止,二位二进制输入信号选通四对通到中的一通道。当选择了某一通道的频率后,Y输出频率通过T1送入单片机进行计数,通过计算得到要被测值,多路选择开关控制如表1-1 所示。表1-1 多路选择开关控制P2.4P2.5测量类别00Y0-R01Y1-C10Y2-L11*(表1-1中*表示未定义此功能。)多路选择开关硬件电路如图11所示。图11 多路选择开关2.5液晶显示电路图12 液晶显示电路2.6主控系统电路图13主控系统电路3.软件设计3.
14、1频率参数计算的原理本设计频率的计算采用单片机外部中断 ,对外触发电路产生的脉冲频率的测量,再通过对测量数据的校正来完成。单片机对频率测量的原理如下图13所示。图14 测频率原理图示说明:图13中t1时刻检测到高电平开定时器1,开始计数;t2时刻等待检测低电平;t3时刻第二次检测到高电平时关定时器停止计数。利用GATE=1,TR1=1,只有 引脚输入高电平时,T1才允许计数,利用此,将外部输入脉冲经 引脚上输入,等待高电平的到来,当检测到高电平时开定时器开始计数,然后检测低电平,当检测到低电平时已经测得脉冲的脉宽,但测得是频率,故在程序中要继续检测等待下一个高电平的到来,此时关定时器停止计数,
15、用此计数值乘以机器的周期数(晶振频率已知),得出触发电路产生的周期,然后再经过数据处理便得到输入信号的频率。3.2程序流程图15 程序流程3.3部分程序清单#include #include 1602.h#define DataPort P0#define uint unsigned int#define uchar unsigned charsbit button_r=P20;sbit button_c=P21;sbit button_l=P23;sbit CD4052S0=P24;sbit CD4052S1=P25;sbit LED_R=P14;sbit LED_C=P15;sbit LE
16、D_L=P16;sbit RS=P10; sbit RW=P11;sbit EN=P12;bit flag;uchar T0count; uchar timecount; unsigned long int R,C,L,f,y;uchar func;uchar i=0;uchar aa,bb,cc,dd;uchar code meun216= is: ,00000000 ;uchar code m10=0123456789;void Intar_T0T1(void) flag=0; timecount=0; T0count=0; TH0=0; TL0=0; TR0=1; TR1=1;voidd
17、elay1(void)int i;for(i=80;i0;i-);void delay_ms(uchar t)unsigned char i=0;while(t-)for(i=0;i120;i+);void WriteData(uchar dat)EN=0; RS=0; /*RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。 RW=0; /*当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 RS=1; RW=0; EN=1; DataPort=dat; EN=0; RS=0; RW=0; for (i=0;i20;i+);void WriteCmd(uchar cmd
18、)EN=0; RS=0; /*RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。 RW=0; /*当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 EN=1; DataPort=cmd; RS=0; RW=0; EN=0; for (i=0;i20;i+);void DisChar(uchar ps,uchar dat)WriteCmd(0x80+ps);WriteData(dat);void LcdInit(void)char pp=0;WriteCmd(0x38); delay_ms(5);WriteCmd(0x38); delay_ms(5);WriteCmd(
19、0x38); delay_ms(5);WriteCmd(0x01);delay_ms(5);WriteCmd(0x06);delay_ms(5);WriteCmd(0x38);WriteCmd(0x0c); WriteCmd(0x40);for(pp=0;pp16;pp+)DisChar(pp,*(meun0+pp);for(pp=0;pp16;pp+)DisChar(pp+0x40,*(meun1+pp); void Display(unsigned long int x) DisChar(0,aa); DisChar(9+0x40,bb); DisChar(10+0x40,cc);DisC
20、har(11+0x40,dd); DisChar(7+0x40,mx%10);x /= 10;DisChar(6+0x40,mx%10);x /= 10;DisChar(5+0x40,mx%10);x /= 10;DisChar(4+0x40,mx%10);x /= 10;DisChar(3+0x40,mx%10);x /= 10;DisChar(2+0x40,mx%10);x /= 10;DisChar(1+0x40,mx%10);x /= 10;DisChar(0+0x40,mx%10);x /= 10;delay_ms(200);button()if(button_r=0)func=1;
21、/功能1:测电阻 LED_R=0; LED_C=1; LED_L=1;if(button_c=0)func=2;/功能2:测电容 LED_R=1; LED_C=0; LED_L=1; if(button_l=0) func=3;/功能3:测电感 LED_R=1; LED_C=1; LED_L=0; return func;void main(void) TMOD=0x15;/0001 0101 TH0=0; TL0=0; TH1=(65536-49989)/256; TL1=(65536-49989)%256; ET0=1; ET1=1; EA=1; TR1=1; TR0=1; y=0x00;
22、 LcdInit();while(1) button(); if (func=1) aa=R; bb=o; cc=h; dd=m; R_measure(); if (func=2) aa=C; bb=p; cc=F; dd=n; C_measure(); if (func=3) aa=L; bb=u; cc=H; dd=n; L_measure(); Display(y); Intar_T0T1(); void t0(void) interrupt 1 using 0/计脉冲个数 T0count+; void t1(void) interrupt 3 using 0 /定时1s TH1=(65
23、536-50045)/256; TL1=(65536-50045)%256; timecount+; if(timecount=20) TR0=0; TR1=0; timecount=0; flag=1; 二、系统测试1.软件测试测试软件:proteus仿真软件,keil单片机编程软件。步骤:首先按照电路图连接好电路1.1电阻测量调节滑动变阻器,测量不同阻值的电阻产生的多谐振荡脉冲波的频率。将结果记录下表1-1中。表1-1电阻标值1602测试显示相对误差(%)10010001K10010.110K100080.0851K510120.0235100K1009000.91M10000010.00
24、011.2电容测量替换不同电容,测量不同电容产生的多谐振荡脉冲波的频率。将结果记录表1-2中。表1-2电容标准1602测试显示相对误差(%)101100pF01021000pF010310010pF0.1104100100pF0.11051001100pF0.110uF10000000pF01.3电感测量替换不同电感,测量不同电感产生的振荡波的频率。将结果记录表1-3中。表1-3电感标值1602测试显示相对误差(%)33uH33uH050uH50uH0100uH100uH0220uH220uH0470uH475uH1.064680uH685uH0.7351mH1010uH110mH10100u
25、H12.硬件测试测试仪器:万用表,示波器测试所用电阻、电容、电感是在市场买的标准电阻、电容、电感。2.1电阻测量调节滑动变阻器,测量不同阻值的电阻产生的多谐振荡脉冲波的频率。将结果记录下表2-1中。表2-1电阻标值1602测试显示相对误差(%)10010221K10080.810K100580.5851K510120.0235100K1009460.9641M9997520.02482.2电容测量替换不同电容,测量不同电容产生的多谐振荡脉冲波的频率。将结果记录表2-2中。表2-2电容标准1602测试显示相对误差(%)10199pF11021003pF0.310310089pF0.8910410
26、0125 pF0.1251051003793 pF0.37910uF10000000 pF02.3电感测量替换不同电感,测量不同电感产生的振荡波的频率。将结果记录表2-3中。表2-3电感标值1602测试显示相对误差(%)33uH33uH050uH50uH0100uH102uH2220uH220uH0470uH480uH2.127680uH690uH1.471mH1028uH2.810mH10979uH9.79三、误差分析3.1电阻测量误差分析相对误差计算公式 从上面的硬件测量中电阻测量数据上来看,误差比较接近任务要求的误差值,100欧姆的电阻相对误差会大一些。与软件仿真结果有一定的差异,造成这
27、个现象的主要原因是在设计中采用的CD4066(四路模拟开关)的内阻较大。3.2电容误差分析相对误差计算公式 从上面的硬件测量中电容测量数据可以看出,电容的标称值与本系统测出的电容值比较接近,电容较小,误差较大,其可能性原因是元件本身也存在一定误差。受所用仪器,元期间的限制,测量精度并没有做的很高。3.3电感误差分析相对误差计算公式 从上面的硬件测量中电感测量数据可以看出,电感的标称值与本系统测出的电感值误差相对较大,特别是10mH的电感,其可能性原因是元件本身也存在一定误差。受所用仪器,元期间的限制,测量精度并没有做的很高。综上所述,在实际测量中,由于测试环境,测试仪器,测试方法等都对测试值有
28、一定的影响,都会导致测量结果或多或少地偏离被测量的真值,此外,本系统做的精度还不够高,测量结果存在一定误差是不可避免的。四、总结本设计完成了设计要求基本部分的任务和发挥部分的部分要求,制作了一台液晶显示的电阻器、电容器和电感器参数测试仪,运用STC89C52单片机作为中央控制器和计算核心,使仪表有性能可靠、体积小、电路简单、智能化的特点,但是这种把元件参数转换成频率后测量的方法也有不足之处,主要是必须保证电路起振,并且振荡要稳定,否则会增加误差。总体来说,本次设计是较成功的。参考文献:1 黄智伟.全国大学生电子设计竞赛系统设计M,北京:北京航空航天大学出版社,2006年.2 全国大学生电子设计
29、竞赛获奖作品汇编:第一届第五届/全国大学生电子设计竞赛组委汇编.北京:北京理工大学出版社,2004.83 全国大学生电子设计竞赛获奖作品选编/全国大学生电子设计竞赛组委汇编.北京:北京理工大学出版社,2010.74 耿永刚.单片机C51应用技术.M北京:电子工业出版社.2011.65 谢辉.单片机原理及应用.M北京:化学工业出版社,2010.86 高吉祥.模拟电子技术. 北京:电子工业出版社,2004年7 高吉祥,黄智伟,丁文霞.数字电子技术. 北京:电子工业出版社,2003年8 全国大学生电子设计竞赛组委会.第一届(1994年)第六届(2003年)全国大学生电子设计竞赛题目.2003.129 全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编(1999).北京:北京理工大学出版社,2000年附录原理图- 25 -