简易电阻、电容和电感测试仪报告(共23页)_第1页
简易电阻、电容和电感测试仪报告(共23页)_第2页
简易电阻、电容和电感测试仪报告(共23页)_第3页
简易电阻、电容和电感测试仪报告(共23页)_第4页
简易电阻、电容和电感测试仪报告(共23页)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上简易电阻、电容和电感测试仪1.1基本设计要求(1)测量范围:电阻1001M;电容100pF10000pF;电感100H10mH。(2)测量精度:±5% 。(3)制作4位数码管显示器,显示测量数值。示意框图1.2 设计要求发挥部分(1)扩大测量范围;(2)提高测量精度;(3)测量量程自动转化。 摘要:本系统是依赖单片机MSP430建立的的,本系统利用555多谐振荡电路将电阻,电容参数转化为频率,而电感则是根据电容三点式振荡转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单

2、片机构成的应用系统有较大的可靠性。系统扩展、系统配置灵活。容易构成何种规模的应用系统,且应用系统较高的软、硬件利用系数。单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。综上所述,利用振荡电路与单片机结合实现电阻、电容、电感测试仪更为简便可行,节约成本。所以,本次设计选定以单片机为核心来进行。关键词:430单片机,555多谐振荡电路,电容三点式振荡 一、 系统方案 电阻测量方案:555RC多谐振荡。利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电阻的大小,如果固定电阻值,该方案硬件电路实现简单,通过选择合适的电容值即可获得适当

3、的频率范围,再交由单片机处理。 综合比较,本设计采用方案三,采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。 电容测量方案:555RC多谐振荡 同样利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电容的大小,如果固定电阻值,该方案硬件电路实现简单,能测出较宽的电容范围,能够较好满足题目的要求。 采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。 电感测量方案:电容三点式采用LC配合三极管组成三点式震荡振荡电路,通过测输出频率大小的方法来实现对电感值测量。该方案成本低,其输出波形为正弦波,将其波形整形后交给单片机测出其频率,并

4、转换为电感值。二、 理论分析与计算1. 电阻测量的分析及计算根据题目要求,如图2.1,采用555多谐振电路,将电阻量转化为相应的频率信号值。考虑到单片机对频率的敏感度,具体的讲就是单片机对10KHz-100KHz的频率计数精度最高。所以要选用合理的电阻和电容大小。同时又要考虑到不能使电阻的功率过大,所以在选第一个量程时取R=330,C=0.22uF(此时Rx=100欧为测量下限);在第二个量程取R=20 K,C=0.01uf(此时Rx=1兆欧为 测量上限)。 电路分为了两个档:1)、100Rx10000欧:R1=330欧,C=0.22uF:Rx=3.27885/f106-1952)、10000

5、Rx10兆欧:R1=20千欧,C=0.01微法:Rx=7.215/f107-10000仿真图 图2.12. 电容测量的分析与计算 测量电容采用的RC振荡电路与测电阻的振荡电路完全一样,如图2.2。同样也选用两个量程。第一个量程R1=R2=510千欧;第二个量程R1=R2=10千欧。这样可使电容挡的测量范围很宽。 电容的测量采用“脉冲计数法”,由555电路构成的多谐振荡路,通过计算振荡电路的输出频率计算被测电容的大小。电路分为了两个档:1)、100Cx1000pF: R1=R2=510k:Cx =/f2)、10000pFCx47uF: R1=R2=10K:Cx =/f图2.2仿真图3. 电感测量

6、的分析与计算 依据电感的特点,三点式振荡电路把电感值转换为相对应的频率值,如图2.3。在此处这个三点式振荡电路中,C3,C4分别采用0.1u和0.22u的独石电容,因其电容值远远大于晶体管极间电容值,所以可把极间电容值忽略。这样根据振荡频率公式可以确定电感值: 则 L= 1/(2*3.14*fx)2/C C=C3*C4/(C3+C4) 一般而言,电容的稳定性,特别是像独石电容一类性能比较好的电容,误差精度就能保持在-5%+5%以内。仿真图 图2.3 图3.3三、 程序设计电阻、电容和电感参数测试仪主程序流程图如图4.1。根据按键选择测量状态,进入相应的测试程序。 图4.1四、 系统测试及结果分

7、析1. 测试使用的仪器设备测试使用的仪器设备如表4-1所示。 表4-1 测试使用的仪器设备序号名称、型号、规格数量备注示波器DS10621EDU1无万用表DM30511无稳压电源APS3003S-3D1无RCL电桥测量仪ZC2817D1无2.测试方法在系统设计中,以MSP430F149单片机为核心的电阻、电容、电感测试仪,将电阻,电容,电感,使用对应的振荡电路转化为频率实现各个参数的测量。其中电阻和电容是采用555多谐振荡电路产生的,而电感则是根据电容三点式产生的,通过定时并且计数可以计算出被测频率,再通过该频率计算出被测参数。使用C语言编程编写了系统应用软件;包括主程序模块、显示模块、电阻测

8、试模块、电容测试模块和电感测试模块、键盘模块、整形模块、模拟开关模块。在测试时将被测参数通过本系统测量出来的示值与参数的标称值进行对比,进而可以知道本系统的测试精度。2. 测试数据 我们RLC测试的量程为电阻:100 至10 M;电容:100pF至47uF;电感:10uH至15mH。测量数据如表4-2。表4-2 RLC测量数据 电阻测量 电容测量 电感测量实测值标称值误差实测值标称值误差实测值标称值误差100.13107.8-7.12114.24pf100pf14.24101.97uh100uh1.97500.11505-0.96949.15pf1000pf-5.081.028mh1mh2.8

9、3985.299671.894501.6pf4700pf-4.229.74mh10mh-2.653.0196k2.95k2.3610001.8pf10000pf0.01810.16k9.8k3.72.9pfpf3.8652.04k53.3k-2.36324.8k327k-0.68978.5k985k-0.664.测试结果分析 在测试电阻电容时我们采用的是555振荡器产生脉冲波进而测试其频率来算出电容电阻。在测试时测量小电阻时时误差有点大,但是测量大电阻时误差就比较小了,都能达到设计要求。而测量电容时也是小电容时误差有点大,而大电容误差就很小了。因为电阻电容我们都是划分为两个档,所以有可能是档位

10、划分的不够精准,所以导致误差较大。测电感时是通过电容三点式来测量的。我们的测量范围为100uH到10mH,由于起振的幅度达不到555振荡器幅度要求,所以测量10uH的就不能测试,因而我们只能测试100UH以上的。它的测量误差也基本能达到设计的要求。五、 小结 本次课题是基于MSP430单片机的简易电阻电容电感测试仪的制作。整体方案我们采用谐振法来测其频率 来反算出其对应的值。电阻电容我们采用的是555振荡器。而电感测试我们采用的电容三点式起振。硬件方面我们做出来基本能达到要求。就是在测量小电容电阻时有点误差。但是软件方面却遇到了许多问题。从而导致最终结果没有出来。做的来说我们这次课题是失败的。

11、此次课题中,我们进一步学习了 MSP430单片机,也了解到了555振荡器的工作原理。以及进一步学习了电容三点式的工作原理。但是,我们也有许多不足的地方,特别是软件这块。希望在接下来的培训中能够赶上来。 参考文献 1 黄智伟全国大学生电子设计竞赛 系统设计(第二版),北京航空航天大学出版社。 2 阎石数字电子技术基础(第五版),高等教育出版社。 3 电子技术基础(第五版).康华光.高等教育出版社,2006.4 电子线路设计 . 实验 . 测试(第三版).谢自美.华中科技大学出版社,2006.附录:/*按键1表示测电阻,按键2表示测电容,按键3表示测电感按键4表示切换量程,每种对象默认用大量程,按

12、键4可以在大小量程之间来回切换*/#include <msp430x14x.h>#include "boardConfig.h"#include "lcd1602.h"void delay1(unsigned char x) unsigned char y=100; for(;x>0;x-) while(y-); void Timerb_init(void) P4SEL |= BIT1; /选择P1.1为第二功能 P4DIR &= BIT1; TBCTL = TBSSEL_2 + MC_2; /Timer_A时钟源为MCLK、连

13、续计数模式 TBCCTL1 = CM_1 + CAP + CCIE + CCIS_1 + SCS; /上升沿捕获、捕获模式、开中断、选择输入端为CCI0A、同步捕获void port1_init() P1IES = 0x0f; / P1.0P1.3选择下降沿中断 P1IE = 0x0f; / 打开中断使能 P1DIR = BIT7; /设置P1.0P.3为输入状态,P.7为输出 P1OUT = 0;void main() unsigned int i; WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= XT2OFF; do IFG1&=OFIFG; /激

14、活失败标志位置零 for(i=0;i<250;i+); /等待激活 while(IFG1&OFIFG); /判断是否激活 BCSCTL2 = SELM_2 + SELS; /主系统时钟6M,子系统时钟6M port1_init(); BoardConfig(0xfF); LcdReset(); Delay5ms(); LcdWriteCommand(0x01, 1); /显示清屏 Timerb_init();_EINT(); while(1) if(r_now) /电阻第一档计算 DispNChar(0,0,3,Rx1); if(range) Rx = (7.215 * 1000

15、 *10 /fx -10)*10; Disp1Char(4,0,0x30+(long)(Rx/)%10); Disp1Char(5,0,0x30+(long)(Rx/10000)%10); Disp1Char(6,0,0x30+(long)(Rx/1000)%10); Disp1Char(7,0,0x30+(long)(Rx/100)%10); Disp1Char(8,0,0x30+(long)(Rx/10)%10); Disp1Char(9,0,'.'); Disp1Char(10,0,0x30+(long)Rx%10); DispNChar(13,0,2,unit_R);

16、else /电阻第二档计算 Rx = (3.27885 * 1000 * 1000/fx - 165)*10; Disp1Char(4,0,0x30+(long)(Rx/)%10); Disp1Char(5,0,0x30+(long)(Rx/)%10); Disp1Char(6,0,0x30+(long)(Rx/)%10); Disp1Char(7,0,0x30+(long)(Rx/10000)%10); Disp1Char(8,0,0x30+(long)(Rx/1000)%10); Disp1Char(9,0,0x30+(long)(Rx/100)%10); Disp1Char(10,0,0

17、x30+(long)(Rx/10)%10); Disp1Char(11,0,'.'); Disp1Char(12,0,0x30+(long)Cx%10); Disp1Char(13,0,' '); Disp1Char(14,0,'o'); else if(c_now) /电容第一档计算 DispNChar(0,0,3,Cx1); if(range) Cx = 4.8089 * 1000 * 100/ fx; Disp1Char(4,0,0x30+(long)(Cx/)%10); Disp1Char(5,0,0x30+(long)(Cx/10000

18、)%10); Disp1Char(6,0,0x30+(long)(Cx/1000)%10); Disp1Char(7,0,0x30+(long)(Cx/100)%10); Disp1Char(8,0,0x30+(long)(Cx/10)%10); Disp1Char(9,0,'.'); Disp1Char(10,0,0x30+(long)Cx%10); DispNChar(13,0,2,unit_C1); else /电容第二档计算 Cx = 0.94 * 1000 * 1000 * 10/ fx ; Disp1Char(4,0,0x30+(long)(Cx/)%10); Di

19、sp1Char(5,0,0x30+(long)(Cx/)%10); Disp1Char(6,0,0x30+(long)(Cx/)%10); Disp1Char(7,0,0x30+(long)(Cx/10000)%10); Disp1Char(8,0,0x30+(long)(Cx/1000)%10); Disp1Char(9,0,0x30+(long)(Cx/100)%10); Disp1Char(10,0,0x30+(long)(Cx/10)%10); Disp1Char(11,0,'.'); Disp1Char(12,0,0x30+(long)Cx%10); DispNCha

20、r(13,0,2,unit_C2); else if(l_now) /电感计算 DispNChar(0,0,3,Lx1); Lx = 3.68441 * 1000 * 1000 * 1000 *1000 / fx/fx; Disp1Char(4,0,0x30+(long)(Lx/)%10); Disp1Char(5,0,0x30+(long)(Lx/)%10); Disp1Char(6,0,0x30+(long)(Lx/)%10); Disp1Char(7,0,0x30+(long)(Lx/10000)%10); Disp1Char(8,0,0x30+(long)(Lx/1000)%10);

21、Disp1Char(9,0,0x30+(long)(Lx/100)%10); Disp1Char(10,0,0x30+(long)(Lx/10)%10); Disp1Char(11,0,'.'); Disp1Char(12,0,0x30+(long)Lx%10); DispNChar(13,0,2,unit_L); #pragma vector=PORT1_VECTOR_interrupt void PORT1_ISR(void) if(P1IFG & 0x0f) switch(P1IFG & 0x0f) case 0x01: if(keyin = 0x0e)

22、/如果是第一个按键被按下 delay1(1); if(keyin = 0x0e) while(keyin != 0x0f); /等待按键放开 KeyVal = 1; range = 1; r_now = 1; c_now = 0; l_now = 0; P1IFG = 0; return; case 0x02: if(keyin = 0x0d) /如果是第二个按键被按下 delay1(1); if(keyin = 0x0d) while(keyin != 0x0f); /等待按键放开 KeyVal = 2; range =1; /复位到大量程 r_now = 0; c_now = 1; l_now = 0; P1IFG = 0; return; case 0x04: if(keyin = 0x0b) /如果是第三个按键被按下 delay1(1); if(keyin = 0x0b) while(keyin != 0x0f); /等待按键放开 KeyVal = 3; range = 1; r_now = 0; c_now = 0; l_now = 1; P1IFG = 0; r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论