555定时器应用-测电容-电阻-电感.docx

上传人:夺命阿水 文档编号:19863 上传时间:2022-07-05 格式:DOCX 页数:19 大小:238.20KB
返回 下载 相关 举报
555定时器应用-测电容-电阻-电感.docx_第1页
第1页 / 共19页
555定时器应用-测电容-电阻-电感.docx_第2页
第2页 / 共19页
555定时器应用-测电容-电阻-电感.docx_第3页
第3页 / 共19页
555定时器应用-测电容-电阻-电感.docx_第4页
第4页 / 共19页
555定时器应用-测电容-电阻-电感.docx_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《555定时器应用-测电容-电阻-电感.docx》由会员分享,可在线阅读,更多相关《555定时器应用-测电容-电阻-电感.docx(19页珍藏版)》请在课桌文档上搜索。

1、简易电阻、电感和电容的测试仪摘 要:本系统以MSP430单片机作为控制核心,由555构成多谐振荡电路实现对电阻和电容的测量,采用电容三点式振荡电路实现对电感的测量。控制继电器实现电阻、电容测量的档位自动切换,使测量精度满足指标要求;为使单片机精确测量待测频率,在电感测量模块中先进行整形和分频,然后测量,以提高测量精度。该系统设计简单,本钱低,操作简单,在测量范围内误差很小,经电路仿真分析可到达题目要求的指标。关键词:555多谐振荡电路,电容三点式振荡,MSP430单片机,继电器一、系统方案论证1.1 电阻测量模块方案论证方案一:伏安法。如图1-1所示,分别用电流表和电压表测出通过电阻的电流和电

2、阻两端的电压,根据公式R=U/I求得电阻。这种测量方法虽然电路简单,但要同时测出两个模拟量,不易实现自动化,而电压表与电流表都存在内阻,测量误差大,精度不高。A RxV图1-1 伏安法测量原理方案二:电阻分压法。如图1-2所示,将待测电阻Rx和基准电阻R串联在电路中,由于电阻分压的作用,当串联到电路上的电阻Rx的值不同时其Rx上分的压降也不同。通过测量上Vx便可由公式 求得。RxRGNDVccVx图1-2 电阻分压电路该方案原理简单,理论上只要参考电阻精确,就可以测量任何阻值的电阻,但实际上由于AD的分辨率有限,当待测电阻很大或是很小时就很难测出Rx上的压降Vx,从而使测量范围缩小,要提高测量

3、范围和精度就需要对电阻分档测试和提高AD的分辨率。这无疑会增加系统的复杂性和本钱,所以也不可行。方案三:RC和555定时器组成的多谐振荡电路。很多仪表都是把较难测量的物理量转变成精度较高且较容易测量的物理量。基于此思路,我们把电阻阻值转换成频率信号,通过测量输出振荡频率的大小即可求得电阻的大小,如果固定电阻值,该方案硬件电路实现简单,通过选择适宜的电容值即可获得适当的频率范围,同时输出波形为TTL电平的方波信号所以不需要再对信号做电平变换,即可直接供数字电路处理,这种处理一方面便于使仪表实现智能化,另一方面也防止了由指针读数引起的误差。综合比拟,基于对精度要求较高,并从测量时操作的简便程度考虑

4、,本设计采用方案三,用RC和555定时器组成的多谐振荡电路来实现要求。1.2 电容测量模块方案论证方案一:利用RC充电原理,根据电路原理电容充电的时间常数=RC。通过选择适当的参考电容,通过测量充电到一个固定电压时所需的时间即可以测量出相应的电容大小。此方案下测量大电容较准,但在电容容量较小时,电容在极短的时间内就能充满,即充电时间较短,所以很难测准。方案二:电桥法是另一种经典的方法,如图1-3所示,可利用交流电桥来测量电容。Z1Z2GNDGVCCZnZx图1-3 直流电桥平衡电路电桥的平衡条件为:通过调节阻抗Z1、Z2使电桥平衡,这时电表读数是零。根据平衡条件与一些的电路参数就可以求出被测参

5、数。用这种测量方法,参数的值还要通过联立方程求解,调节电阻值一般只能手动,电桥平衡的判别亦难以用简单的电路实现。这样,电桥法不易实现自动测量。方案三:同样利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电容的大小,如果固定电阻值,该方案硬件电路实现简单,能测出较宽的电容范围,完全满足题目的要求。同时输出波形为TTL电平的方波信号所以不需要再对信号做电平变换。即可直接输入单片机处理。综合比拟,基于对精度要求较高,并从测量时操作的简便程度考虑,本设计采用方案三,用RC和555定时器组成的多谐振荡电路来实现要求。1.3 电感测量模块方案论证方案一:采用电桥法测量电感。将待

6、测电感和标准电阻电容组成电桥,通过单片机控制调节电阻参数使电桥平衡,电感的大小由电阻和电桥的本征频率求得,该方案测量精准,同时可以测量电容和电阻的大小,但其电路复杂,实现起来较为困难。方案二:用555定时器和被测电感利用电感储能以与充放原理构成多谐振荡器,通过测频率值确定被测电感的值。该方案电路结构简单,输出波形为TTL电平的方波信号,简单分频后可获得较为理想的测试频率范围,方便单片机精确测量。方案三:采用LC配合三极管组成三点式振荡电路,通过测输出频率大小的方法来实现对电感值测量。该方案本钱最低,但其输出波形为正弦波,需要将其波形整形后才能交给处理器处理,本钱稍微高了。综合比拟,基于方案二的

7、设计误差太大,最终采用了方案三。1.4 频率测量方案论证方案一:直接测频法。该测量方法是把被测频率信号经过脉冲形成电路,计数器计数被测信号的脉冲周数,从而通过计算频率的公式得到被测信号的频率。此方案对低频信号的测量精度不是很高,对于高频信号的测量也不是很准确,只在一定范围的频率内才能测得比拟准确的数值。因此只适用于一定范围内的频率测量。方案二:测周期法。该测量方法是通过测量被测信号的周期来计算频率。被测信号经脉冲形成电路变成方波通过单片机的计数器计数,再根据计算公式即可获得被测信号的频率。该方案对低频信号的测量比拟准确,但对于高频信号,测量误差较大,故只适合低频信号的测量。在比拟两种方案之后,

8、决定采用第一种方案来进行频率的测量。1.5 系统方案概述量程切换F1 MSP430 单 片 机 DIP开关电阻谐振式测量数字显示量程切换频率F2电容谐振式测量电感三点式测量F3整形电路分频电路图1-4 系统设计总框图系统设计总框图如图1-4所示,本设计将电阻、电容和电感测量模块产生的不同频率的方波信号经整形和分频电路分别送至通道选择模块,根据测试的元件类型,单片机通过按键的输入选择相应的测试电路,并自动检测出待测元件的值所对应的频率范围,控制继电器实现对元件测量的自动换挡。同时单片机通过一定的计算后,在液晶显示屏上显示出元件的类型和测量值。二、理论分析与计算2.1 电阻测量的分析与计算电阻测量

9、原理图如图2-1所示,是由555定时器和R1、R2、C1组成的多谐振荡电路。电路振荡产生的频率由R1、Rx、C1确定。Vout图2-1 电阻电容测量原理图C1R1Rx电容C1的充电所需的时间,即脉冲维持时间: 放电所用时间,即脉冲低电平时间: 所以脉冲周期时间为: 故输出脉冲频率为: 所以只要R1、RX、C1中的其中两项的参数再通过单片机测出振荡频率的大小就可以计算出剩下第三项的参数。本设计中通过固定R1和C1的参数将待测量的电阻作为R2接入电路中的方法来测量电阻。 为使振荡频率保持在10-20kHz这一段单片机计数的高精度范围内,需选择适宜的C1和R1的值,同时不能使电阻功耗太大。所以我们设

10、计了两路电路,第一个量程选择;第二个量程选择; 这样,在第一个量程中,假设时下限,;在第二个量程中,假设时上限,。因为RC振荡的稳定度可达1/1000,单片机测频率最多误差一个脉冲,所以由单片机测频率值引起的误差在百分之一以下。量程自动转换原理:单片机在第一个频率的记录中发现频率过小,即通过继电器转换量程。再测频率,求的值。 误差分析 : 因为相当小,在左右,远小于仪表所需要的精度,可忽略。这样,的精度取决于,即电容的稳定性。电路中采用了稳定性良好的独石电容,理论上说,只要小于,所测电阻的精度亦能在以下。由于单片机程序中采用了多位数的浮点运算,计算精度可远高于。2.2电容测量的分析与计算电容测

11、量的原理图也如图2-1,同样由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电容的大小。由2.1的分析知其振荡周期为:得出:,即:为使频率在单片机高精度测量范围内,我们同样设计了两路电路,取值分别为:第一量程:;第二量程:;这样的取值使电容档的测量范围很宽,同样可通过继电器转换量程。误差分析:同的测量,有,能满足以下的精度,而精密的金属膜电阻其阻值的变化亦能满足左右的精度。这样,电容的精度也可以做得很高。2.3 电感测量的分析与计算电感的测量是采用电容三点式振荡电路来实现的。三点式振荡电路是指:LC回路中与发射极相连的两个电抗元件必须是同性质的,另外一个电抗元件必须为异性质的,

12、而与发射级相连的两个电抗元件同为电容式的三点式振荡电路,其振荡频率为:即:如图3-3所示, C1和C2分别采用100nF和1uF的独石电容,其电容值远大于晶体管的极间电容,可以把极间电容忽略,那么单片机的高精度测量范围有限,因此在测电感这一档时,只能分频后送单片机计数。误差分析:由此可见,因为相当小,的精度主要取决于电容值的稳定性,从理论上讲,只要小于,也就能到达相当的水平。一般而言,电容的稳定性,特别是像独石电容一类性能比拟好的电容,能满足小于的要求,这样误差精度就能保持在以内。三、硬件电路设计3.1 测量电阻电路的设计电阻的测量分为两个量程:第一个量程,开关S1和S3闭合; 第二个量程,开

13、关S2和S4闭合。电路图如图3-1所示:图3-1 电阻测量电路图3.2 测量电容电路的设计电容的测量同样设计了两路电路,取值分别为:第一量程:,开关S2和S4闭合;第二量程:,开关S1和S3闭合;电路图如图3-2所示:图3-2 电容测量电路图3.3测量电感电路的设计因为电感测量模块产生的信号是正弦信号,所以必须先整形成方波,又由理论分析可知电路的输出频率很高,所以也要对输出的信号分频,单片机才能处理。电感测量电路图3-3 电感测量电路3.3.2 整形电路图3-4 整形电路分频电路图3-5 10分频电路3.4继电器的设计电阻与电容的测量电路中均需要自动换挡,我们采用继电器来实现。继电器是一种电子

14、控制器件,通常应用于自动控制电路中。当测量电路中所测频率过低时,单片机就会控制继电器转换量程。如图3-6所示为继电器的原理图,其中,二极管是对其有保护作用,三极管有放大电流的作用。在具体电路中,继电器是1伏和3伏换挡,通过单片机来实现其自动化。 图3-6 继电器原理图3.5 按键局部通道的选择可以通过MSP430单片机上面的键盘控制。通道选择见表3-1 .表3-1 按键通道选择按键对应测试项KEY1测试RKEY2测试CKEY5测试LKEY6返回四、程序设计图4-1 主程序流程图该系统以MSP430作为控制平台,其主程序流程如图4-1所示。程序开始先对系统初始化,然后由键盘输入测试工程如:1电阻

15、测量;2 电容测量;3 电感测量,然后采集信号频率,在测量电阻和测量电容时要通过对信号频率进行分析来转换电路量程转换,再将从新采集的信号频率进行计算,得到待测器件的参数,并由液晶屏输出参数。测量完成之后系统返回到初始化的状态。图4-2 按键程序流程图图4-3 频率测量流程图五、系统测试与结果分析5.1 测试使用的仪器设备测试使用的仪器设备如表4.1所示。 表4-1 测试使用的仪器设备序号名称、型号、规格数量备注1RLC电桥测量仪1测量精度高2数字示波器1查看输出波形5.2 测试方法根据设计搭好好电路通过拨码选择给个局部模块供电,再测量前用电桥测量仪测出所需测量电阻电容与电感的实际值,再根据单片

16、机提示选择所需测量器件。然后待控制器自动检测和自动换挡完成约13s即会在LCD上显示出相应元件的类型和测量值,此时读出测量结果与实际值作比拟,计算出其测量误差。5.3 测试数据电阻测量数据表4-2 电阻测量数据标称值电桥测量仪器测量误 差%标称值电桥测量仪器测量误 差%1111.1128.10100K100.4k102.9k2.491009995.43.63510K511k511.8k0.15900989972.61.652.2M2.192M2.217M1.1416k16K16.1k0.629M8.9M8.376M5.88电容测量数据表4-3 电容测量数据标称值(F)电桥测量(F)仪器测量(F

17、)误 差%标称值(F)电桥测量(F)仪器测量(F)误 差%10p10p10.5p5.004.7n4.9n5.1n4.08100p100p102p2.0033n35n36.3n3.711n0.98n0.94n4.08100n101n105.5n4.45电感测量数据表4-4 电感测量数据标称值H电桥测量H仪器测量H误 差%标称值H电桥测量H仪器测量H误 差%30u31.1u30.85u0.801m1.02m0.999m2.05100u100.9u102.7u1.783.2m3.298m3.217m2.45330u339.8u340.6u0.2315m15.4m16m3.895.4测试结果分析电阻模

18、块的测量结果显示在根本测量范围内误差均小于5%,而在拓展范围误差偏大。电容模块的测量结果显示所有测量的误差均在5%以内。电感模块的测量结果显示可以测量的范围内误差均小于5%,但拓展指标没有做到,10uH的电感已经测量不出来。六、小结本次课题设计系统的根本原理是电阻、电容、电感与测量电路构成各自的震荡电路,产生的相应频率的脉冲方波,将该频率数据采集输入到单片机,利用电路中其他器件的参数,单片机对频率进行运算,可以算出待测元件的各个参数并显示在1602液晶屏幕上。系统使用按键选择被测元件类型,由于不同的电容、电阻、电感值的大小对应的谐振频率不同,通过测量振荡电路发出的频率计算出相应的电阻、电容和电

19、感的值。该系统设计简单,本钱低,性能根本符合题目要求指标,在测量范围内测量误差很小,且操作简单,人机界面友好。通过这个仪表的设计,我们体会到了细心、认真的重要性,更深深的认识到软件和硬件相结合的重要性,学到了很多。在最终的测量过程中,发现根本指标都可到达,拓展指标只有一个模块到达,这就告诉我们,以后不管做什么题目,不能只是到达根本要求就放心了,而应该以最高的要求定位,这才能在竞赛中存在优势。参考文献1 高桔祥全国大学生电子设计竞赛培训系列教程:电子工业,20072 杨欣,王玉凤,刘湘黔等电子设计从零开始:清华大学,20213 李桂安电子技术实验与课程设计.南京:东南大学,2021.4 申忠如,

20、郭福田,丁晖现代测试技术与系统设计西安:西安交通大学,2006.25 付晓光单片机原理与使用技术:清华大学,2021.6 童诗白,华成英模拟电子技术根底:航空航天大学,20027 申忠如,申淼,谭亚丽MCS-51单片机原理与系统设计西安:西安交通大学,2021.8 阎石数字电子技术根底:高等教育,20059张毅刚MCS-51单片机应用系统哈尔滨:哈尔滨工业大学,199710 曹磊MSP430单片机C程序设计与实践:航天航空大学,2007附录一:系统程序主程序:#include msp430x14x.h#define TIMER 32768typedef unsigned char uchar;

21、typedef unsigned int uint;/引用外部变量的声明extern unsigned int key_val; /key_val 键值extern unsigned char key_Flag; /key_Flag 标志unsigned long Cap_Tar=0,cap_first=0,cap_last=0,pulse=0,time=0,Value,Lf,F;double R=0,CZ,L,f;unsigned char flag=0;/*时钟设置*/void Init_clk() unsigned char i; do IFG1 &= OFIFG; / 去除振荡器失效标

22、志 for(i = 0Xff;i 0;i-); / 稳定时间 while(IFG1 & OFIFG) != 0); / 如果振荡器失效标志存在 BCSCTL2 |=SELM_2+SELS; / SMCLK LFXT2CLK /*捕获设置*/void Init_cap() P1DIR&=BIT3;/P1.3输入 P1SEL|=BIT3;/p1.3复用为TA2 TACCTL2=CM_2+SCS+CCIS_0+CAP+CCIE;/下降沿捕获+同步捕获+CCIxA(P1.3)+捕获中断使捕获模式能 CCR0=TIMER; TACTL=TASSEL_1+MC_1+TAIE+TACLR;/时钟源ACLK+

23、增计数模式+TAIFG中断请求使能/timer_B设置。void Init_TB() P1DIR=0xfe; P1SEL|=BIT0; /闸门法测频输入口为P1.0 TBCCTL0 = CCIE; /使能CCR0中断 TBCCR0 = 1023; /设定周期0.25S TBCTL = TBSSEL_1 + ID_3 + MC_1; /定时器b的时钟源选择ACLK,增计数模式 CCTL0=CCIE; TACTL = TASSEL_0+MC_2; /外部引脚TACLK信号+连续计数模式 TAR=0;/*显示界面*/const uchar hang1 = R L C 测量:;const uchar

24、hang2 = 电阻请按:1;const uchar hang3 = 电容请按:2;const uchar hang4 = 电感请按:5;/*测量界面*/const uchar hang5 = 电阻测量: ;const uchar hang6 = R= ;const uchar hang7 = 退出测量请按: 6 ;const uchar hang8 = 电容测量: ;const uchar hang9 = C= ;const uchar hang10 = 电感测量: ;const uchar hang11 = L= uH;/const uchar hang22 = ;const uchar

25、hang17 = K;const uchar hang_f = f= Hz;const uchar hang_99 = *;/*主函数*/void main( void ) /int p=0; int K; / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; Init_clk(); /初始化时钟 Ini_Lcd(); /初始化液晶 Init_Keypad(); /初始化键盘端口c huanying(); P6DIR=0xff; P6OUT=0x00; while(1) Ini_Lcd(); P6OU

26、T=0x00; Disp_HZ(0x80,hang1,7); Disp_HZ(0x90,hang2,5); Disp_HZ(0x88,hang3,5); Disp_HZ(0x98,hang4,5); Key_Event(); Check_Key(); if(key_Flag=1) key_Flag=0; K=key_val; /*电阻计算*/ if(K=1) int i=0; P6OUT=0x40; Init_cap(); /初始化CAP TBCCTL0 = CCIE; /关闭CCR0中断 Ini_Lcd(); double Rc=0,RA=0; Disp_HZ(0x80,hang5,8);

27、Disp_HZ(0x90,hang_f,8); Disp_HZ(0x88,hang6,8); Disp_HZ(0x98,hang7,8); _EINT(); /翻开中断 while(1) Key_Event(); Check_Key(); if(key_Flag=1) key_Flag=0; K=key_val; while(flag) _DINT(); flag=0; /清楚捕捉标志 f=pulse; if(f26) const uchar hang22 = ; f=f*100; Value=(unsigned long)(f); Disp_ShuZhi(0x92,Value); f=f/1

28、00; P6OUT=0x40; Rc=1;RA=500; R=1.4427/(Rc*1e-6)*f)-RA; R=R/2; if(R30)R=R-R*0.30; if(30R&R2400)i=1; f=f*100; Value=(unsigned long)(f); Disp_ShuZhi(0x92,Value); f=f/100; Rc=0.01;RA=20000; const uchar hang22 = K; R=1.4427/(Rc*1e-6)*f)-RA; R=R/1000; R=R/2; if(25R&R550)R=R+R*0.04; /if(100R&R450)R=R+R*0.0

29、7; /if(R4500)R=R-R*0.06; R=R*100; Value=(unsigned long)(R); Disp_ShuZhi(0x8A,Value); Disp_HZ(0x8E,hang22,2); Init_cap(); /初始化CAP _EINT(); delay_1ms(1000); /else i=1;f=0;break; if(K=6) break; if(K=6) break; if(i=1) i=0;f=0;break; if(K=6)_DINT();f=0;pulse=0;Value=0;TAR=0; break; /*电容计算*/ else if(K=2)

30、int i=0; P6OUT=0x80; Init_cap(); /初始化CAP TBCCTL0 = CCIE; /关闭CCR0中断 Ini_Lcd(); double R1=0,R2=0; Disp_HZ(0x80,hang8,8); Disp_HZ(0x90,hang_f,8); Disp_HZ(0x88,hang9,8); Disp_HZ(0x98,hang7,8); _EINT(); /翻开中断 while(1) if(i=0)P6OUT=0x80; Key_Event(); Check_Key(); if(key_Flag=1) key_Flag=0; K=key_val; TBCC

31、TL0 = CCIE; /关闭CCR0中断 _EINT(); while(flag) _DINT(); flag=0; /清楚捕捉标志 f=pulse; f=f*100; Value=(unsigned long)(f); Disp_ShuZhi(0x92,Value); f=f/100; R1=1000;R2=1000000; const uchar hang23 = pF; CZ=1.4427/(R1+2*R2)*f*1e-6); CZ=CZ*1e+6; _EINT(); if(CZ950) i=1; P6OUT=0x84; _DINT(); flag=0; /清楚捕捉标志 f=pulse

32、; f=f*100; Value=(unsigned long)(f); Disp_ShuZhi(0x92,Value); f=f/100; R1=465500;R2=461000; const uchar hang23 = nF; CZ=1.4427/(R1+2*R2)*f*1e-6); CZ=CZ*1e+3; if(1.5CZ&CZ40)CZ=CZ-CZ*0.07; CZ=CZ*100; Value=(unsigned long)(CZ); Disp_ShuZhi(0x8A,Value); Disp_HZ(0x8F,hang23,1); Init_cap(); /初始化CAP _EINT(); else i=0; /if(CZ65)CZ=CZ-18; if(65CZ900)CZ=CZ-20; CZ=CZ*100; Value=(unsigned long)(CZ); Disp_ShuZhi(0x8A,Value); Disp_HZ(0x8F,hang23,1); Init_cap();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号