简易电阻电容和电感测试仪报告.docx
- 文档编号:30162694
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:20
- 大小:519.12KB
简易电阻电容和电感测试仪报告.docx
《简易电阻电容和电感测试仪报告.docx》由会员分享,可在线阅读,更多相关《简易电阻电容和电感测试仪报告.docx(20页珍藏版)》请在冰豆网上搜索。
简易电阻电容和电感测试仪报告
简易电阻、电容和电感测试仪
1.1 基本设计要求
(1)测量范围:
电阻100Ω~1MΩ;电容100pF~10000pF;电感100μH~10mH。
(2)测量精度:
±5%。
(3)制作4位数码管显示器,显示测量数值。
示意框图
1.2设计要求发挥部分
(1)扩大测量范围;
(2)提高测量精度;
(3)测量量程自动转化。
摘要:
本系统是依赖单片机MSP430建立的的,本系统利用555多谐振荡电路将电阻,电容参数转化为频率,而电感则是根据电容三点式振荡转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。
系统扩展、系统配置灵活。
容易构成何种规模的应用系统,且应用系统较高的软、硬件利用系数。
单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
综上所述,利用振荡电路与单片机结合实现电阻、电容、电感测试仪更为简便可行,节约成本。
所以,本次设计选定以单片机为核心来进行。
关键词:
430单片机,555多谐振荡电路,,电容三点式振荡
一、系统方案
电阻测量方案:
555RC多谐振荡。
利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电阻的大小,如果固定电阻值,该方案硬件电路实现简单,通过选择合适的电容值即可获得适当的频率范围,再交由单片机处理。
综合比较,本设计采用方案三,采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。
电容测量方案:
555RC多谐振荡
同样利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电容的大小,如果固定电阻值,该方案硬件电路实现简单,能测出较宽的电容范围,能够较好满足题目的要求。
采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。
电感测量方案:
电容三点式
采用LC配合三极管组成三点式震荡振荡电路,通过测输出频率大小的方法来实现对电感值测量。
该方案成本低,其输出波形为正弦波,将其波形整形后交给单片机测出其频率,并转换为电感值。
二、理论分析与计算
1.电阻测量的分析及计算
根据题目要求,如图2.1,采用555多谐振电路,将电阻量转化为相应的频率信号值。
考虑到单片机对频率的敏感度,具体的讲就是单片机对10KHz-100KHz的频率计数精度最高。
所以要选用合理的电阻和电容大小。
同时又要考虑到不能使电阻的功率过大,所以在选第一个量程时取R=330Ω,C=0.22uF(此时Rx=100欧为测量下限);在第二个量程取R=20KΩ,C=0.01uf(此时Rx=1兆欧为测量上限)。
电路分为了两个档:
1)、100≤Rx≤10000欧:
R1=330欧,C=0.22uF:
Rx=3.27885/f
10
6-195
2)、10000≤Rx≤10兆欧:
R1=20千欧,C=0.01微法:
Rx=7.215/f
10
7-10000
仿真图
图2.1
2.电容测量的分析与计算
测量电容采用的RC振荡电路与测电阻的振荡电路完全一样,如图2.2。
同样也选用两个量程。
第一个量程R1=R2=510千欧;第二个量程R1=R2=10千欧。
这样可使电容挡的测量范围很宽。
电容的测量采用“脉冲计数法”,由555电路构成的多谐振荡路,通过计算振荡电路的输出频率计算被测电容的大小。
电路分为了两个档:
1)、100≤Cx≤1000pF:
R1=R2=510kΩ:
Cx=48100000/f
2)、10000pF≤Cx≤47uF:
R1=R2=10KΩ:
Cx=8400000/f
图2.2
仿真图
3.电感测量的分析与计算
依据电感的特点,三点式振荡电路把电感值转换为相对应的频率值,如图2.3。
在此处这个三点式振荡电路中,C3,C4分别采用0.1u和0.22u的独石电容,因其电容值远远大于晶体管极间电容值,所以可把极间电容值忽略。
这样根据振荡频率公式可以确定电感值:
则L=[1/(2*3.14*fx)]^2/CC=C3*C4/(C3+C4)
一般而言,电容的稳定性,特别是像独石电容一类性能比较好的电容,误差精度就能保持在-5%—+5%以内。
仿真图
图2.3
图3.3
三、程序设计
电阻、电容和电感参数测试仪主程序流程图如图4.1。
根据按键选
择测量状态,进入相应的测试程序。
图4.1
四、系统测试及结果分析
1.测试使用的仪器设备
测试使用的仪器设备如表4-1所示。
表4-1测试使用的仪器设备
序号
名称、型号、规格
数量
备注
示波器
DS10621—EDU
1
无
万用表
DM3051
1
无
稳压电源
APS3003S-3D
1
无
RCL电桥测量仪
ZC2817D
1
无
2.测试方法
在系统设计中,以MSP430F149单片机为核心的电阻、电容、电感测试仪,将电阻,电容,电感,使用对应的振荡电路转化为频率实现各个参数的测量。
其中电阻和电容是采用555多谐振荡电路产生的,而电感则是根据电容三点式产生的,通过定时并且计数可以计算出被测频率,再通过该频率计算出被测参数。
使用C语言编程编写了系统应用软件;包括主程序模块、显示模块、电阻测试模块、电容测试模块和电感测试模块、键盘模块、整形模块、模拟开关模块。
在测试时将被测参数通过本系统测量出来的示值与参数的标称值进行对比,进而可以知道本系统的测试精度。
2.测试数据
我们RLC测试的量程为电阻:
100Ω至10MΩ;电容:
100pF至47uF;电感:
10uH至15mH。
测量数据如表4-2。
表4-2RLC测量数据
电阻测量
电容测量
电感测量
实测值
标称值
误差
实测值
标称值
误差
实测值
标称值
误差
100.13
107.8
-7.12
114.24pf
100pf
14.24
101.97uh
100uh
1.97
500.11
505
-0.96
949.15pf
1000pf
-5.08
1.028mh
1mh
2.83
985.29
967
1.89
4501.6pf
4700pf
-4.22
9.74mh
10mh
-2.65
3.0196k
2.95k
2.36
10001.8pf
10000pf
0.018
10.16k
9.8k
3.72
103863.9pf
100000pf
3.86
52.04k
53.3k
-2.36
324.8k
327k
-0.68
978.5k
985k
-0.66
4.测试结果分析
在测试电阻电容时我们采用的是555振荡器产生脉冲波进而测试其频率来算出电容电阻。
在测试时测量小电阻时时误差有点大,但是测量大电阻时误差就比较小了,都能达到设计要求。
而测量电容时也是小电容时误差有点大,而大电容误差就很小了。
因为电阻电容我们都是划分为两个档,所以有可能是档位划分的不够精准,所以导致误差较大。
测电感时是通过电容三点式来测量的。
我们的测量范围为100uH到10mH,由于起振的幅度达不到555振荡器幅度要求,所以测量10uH的就不能测试,因而我们只能测试100UH以上的。
它的测量误差也基本能达到设计的要求。
五、小结
本次课题是基于MSP430单片机的简易电阻电容电感测试仪的制作。
整体方案我们采用谐振法来测其频率来反算出其对应的值。
电阻电容我们采用的是555振荡器。
而电感测试我们采用的电容三点式起振。
硬件方面我们做出来基本能达到要求。
就是在测量小电容电阻时有点误差。
但是软件方面却遇到了许多问题。
从而导致最终结果没有出来。
做的来说我们这次课题是失败的。
此次课题中,我们进一步学习了MSP430单片机,也了解到了555振荡器的工作原理。
以及进一步学习了电容三点式的工作原理。
但是,我们也有许多不足的地方,特别是软件这块。
希望在接下来的培训中能够赶上来。
参考文献
[1]黄智伟.全国大学生电子设计竞赛系统设计(第二版),北京航空航天大学出版社。
[2]阎石.数字电子技术基础(第五版),高等教育出版社。
[3]《电子技术基础》(第五版).康华光.高等教育出版社,2006.
[4]《电子线路设计.实验.测试》(第三版).谢自美.华中科技大学出版社,2006.
附录:
/****按键1表示测电阻,按键2表示测电容,按键3表示测电感
按键4表示切换量程,每种对象默认用大量程,按键4可以在大
小量程之间来回切换***/
#include
#include"boardConfig.h"
#include"lcd1602.h"
voiddelay1(unsignedcharx)
{
unsignedchary=100;
for(;x>0;x--)
{
while(y--);
}
}
voidTimerb_init(void)
{
P4SEL|=BIT1;//选择P1.1为第二功能
P4DIR&=~BIT1;
TBCTL=TBSSEL_2+MC_2;//Timer_A时钟源为MCLK、连续计数模式
TBCCTL1=CM_1+CAP+CCIE+CCIS_1+SCS;//上升沿捕获、捕获模式、开中断、选择输入端为CCI0A、同步捕获
}
voidport1_init()
{
P1IES=0x0f;//P1.0~P1.3选择下降沿中断
P1IE=0x0f;//打开中断使能
P1DIR=BIT7;//设置P1.0~P.3为输入状态,P.7为输出
P1OUT=0;
}
voidmain()
{
unsignedinti;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1&=~XT2OFF;
do{
IFG1&=~OFIFG;//激活失败标志位置零
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*10/fx-10)*10;
Disp1Char(4,0,0x30+((long)(Rx/100000)%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);
}
else//电阻第二档计算
{
Rx=(3.27885*1000*1000/fx-165)*10;
Disp1Char(4,0,0x30+((long)(Rx/10000000)%10));
Disp1Char(5,0,0x30+((long)(Rx/1000000)%10));
Disp1Char(6,0,0x30+((long)(Rx/100000)%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,0x30+((long)(Rx/10)%10));
Disp1Char(11,0,'.');
Disp1Char(12,0,0x30+((long)Cx%10));
Disp1Char(13,0,'');
Disp1Char(14,0,'o');
}
}
elseif(c_now)//电容第一档计算
{
DispNChar(0,0,3,Cx1);
if(range)
{
Cx=4.8089*1000*100/fx;
Disp1Char(4,0,0x30+((long)(Cx/100000)%10));
Disp1Char(5,0,0x30+((long)(Cx/10000)%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/10000000)%10));
Disp1Char(5,0,0x30+((long)(Cx/1000000)%10));
Disp1Char(6,0,0x30+((long)(Cx/100000)%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));
DispNChar(13,0,2,unit_C2);
}
}
elseif(l_now)//电感计算
{
DispNChar(0,0,3,Lx1);
Lx=3.68441*1000*1000*1000*1000/fx/fx;
Disp1Char(4,0,0x30+((long)(Lx/10000000)%10));
Disp1Char(5,0,0x30+((long)(Lx/1000000)%10));
Disp1Char(6,0,0x30+((long)(Lx/100000)%10));
Disp1Char(7,0,0x30+((long)(Lx/10000)%10));
Disp1Char(8,0,0x30+((long)(Lx/1000)%10));
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);
}
}
}
#pragmavector=PORT1_VECTOR
__interruptvoidPORT1_ISR(void)
{
if(P1IFG&0x0f)
{
switch(P1IFG&0x0f)
{
case0x01:
if(keyin==0x0e)//如果是第一个按键被按下
{
delay1
(1);
if(keyin==0x0e)
{
while(keyin!
=0x0f);//等待按键放开
KeyVal=1;
range=1;
r_now=1;
c_now=0;
l_now=0;
P1IFG=0;
return;
}
}
case0x02:
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;
}
}
case0x04:
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;
return;
}
}
case0x08:
if(keyin==0x07)//如果是第四个按键被按下
{
delay1
(1);
if(keyin==0x07)
{
while(keyin!
=0x0f);//等待按键放开
KeyVal=4;
range^=0x01;
P1IFG=0;
return;
}
}
default:
while(keyin!
=0x0f);//等待按键放开
KeyVal=0;
P1IFG=0;
return;
}
}
}
#pragmavector=TIMERA0_VECTOR
__interruptvoidTimerA0(void)
{
staticucharindex=0;
uchari;
new_value=TBCCR0;//读取中断时的TACCR0值
if(flag==1)
{
flag=0;
value_diff=65535-old_value+new_value;
}
else
{
value_diff=new_value-old_value;//差值=新值-旧值
}
capture_array[index]=value_diff;//将捕获的差值存入数组
index++;
if(index==Num)
{
index=0;
sum=capture_array[0];
for(i=1;i { sum+=capture_array[i];//将捕获的数据求和 sum>>=1; }//捕获的数据求平均值 fx=(long)(((8.0*1000*1000)/sum)+1); Rx=(7.215*1000*10/fx-10)*10; } old_value=new_value;//退出中断后、新值变为旧值、保存旧值 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电阻 电容 电感 测试仪 报告