基于51单片机的数字电容测量仪设计实验报告文档格式.docx
- 文档编号:3934790
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:41
- 大小:2.10MB
基于51单片机的数字电容测量仪设计实验报告文档格式.docx
《基于51单片机的数字电容测量仪设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字电容测量仪设计实验报告文档格式.docx(41页珍藏版)》请在冰点文库上搜索。
因此,电容量的测量在日常使用中就不可避免。
本设计详细介绍了一种基于单片机的数字式电容测量仪设计方案及实现方法。
设计的主要方法是采用555芯片构成单稳态触发器,将电容容量转换为脉冲宽度。
通过单片机的计时器测量脉宽,根据已知的R值,通过单片机的运算功能,计算出电容容量,最后,再通过单片机的普通I/O口控制液晶屏显示出电容容量的计算结果。
系统的测量范围为10pF~500uF,具有多个量程,可根据用户需要由用户选择,与用户的交互是通过键盘实现,不同量程的实现是通过单片机的I/O口控制继电器的吸合与断开来选择不同的R值,从而实现不同的量程。
同时,本设计注重设计方法及流程,首先根据原理设计电路,再通过protues仿真,利用keil编程,进而借助altiumdesigner制作PCB,最后到焊接元器件,调试直至成功。
【关键词】电容测量;
脉冲宽度;
单稳态触发器;
单片机;
lcd显示
1系统方案设计
1.1设计说明及要求
1.1.1设计说明
框图中的外接电容是定时电路中的一部分。
当外接电容的容量不同时,与定时电路所对应的时间也有所不同,即C=f(t),而时间与脉冲数目成正比,脉冲数目可以通过计数译码获得。
1.1.2设计要求
(1)基本部分
①自制稳压电源。
②被测电容的容量在0.01μF至100μF范围内
③设计两个的测量量程。
④显示测量结果,测量误差小于20%。
(2)发挥部分
①至少设计两个以上的测量量程,使被测电容的容量扩大到100PF至100μF范围内。
②测量误差小于10%。
为实现该设计,达到相应的设计要求,本次设计中考虑了三种设计方案,三种设计方案中主要区别在于硬件电路和软件设计的不同,对于本设计,三种方案均能够实现,最后根据设计要求、可行性和设计成本的考虑选择了基于STC89C52单片机和555芯片构成的单稳态触发电路测量电容的方案。
现在一一介绍论证如下。
1.2方案Ⅰ
如果三角波输入给以被测电容器作为微分电容的微分电路,在电路参数选择适当的条件下,微分电路的输出幅度与Cx成正比,再经峰值检测电路或精密整流及滤波电路,可以得到与Cx成正比的直流电压Ux,然后再进行A/D转换送给数字显示器,便可实现所要求的函数关系。
(电路如图1—1所示)
设三角波函数式为:
UI=Kt (0≤t<
t1)
UI=-Kt (t1≤t<
t2)
因为
所以
(0≤t<
t1)
(t1≤t<
t2)
图1-1方案Ⅰ电容测量框图
1.3方案Ⅱ
用下图的框图代替A/D转换器,可得到第二种方案。
图中压控振荡器输出矩形波,它的频率fx与Ux成正比,而Ux与被测电容Cx成正比,因而fx与Cx成正比。
在计数控制时间Tc等参数合适的条件下,数码管显示器的数字N与Cx的大小可符合题中所要求的函数关系。
(电路如图1—2所示)
图1-2方案Ⅱ电容测量框图
1.4方案Ⅲ
单稳态触发器接收单片机的窄脉冲触发信号Trig,输出一个脉冲宽度与待测电容CX的容量成正比的信号VO。
单片机通过检测VO高电平持续时间来计算电容大小,
并将结果显示在液晶屏上。
测量过程中,通过控制单稳态触发器的充电电阻阻值,实现10pF~500uF范围内电容的测量。
(电路如图1-3所示)
图1-3方案Ⅲ电容测量框图
1.5三种方案作简单的比较
比较上述三种方案可知,方案Ⅰ采用了A/D转换器,价格比较昂贵;
方案Ⅱ比较复杂,安装调试困难;
方案Ⅲ电路简单,原理清晰,易于实现,易于控制,本设计就是基于方案Ⅲ展开的。
2单元电路设计
2.1工作原理
系统测量的电路原理图如图2-1所示。
电路主要由单片机U1、NE555定时芯片U2和检测电容CX组成。
NE555定时器芯片的6脚与7脚相连,与电阻R和待测电容CX组成单稳态触发电路。
图2-1系统测量原理图
由图2-1可知,NE555定时器内部主要由电阻分压器、电压比较器OP1~OP2、与非门G1~G3、输出缓冲反相器G4和集电极开路的三极管T组成。
G1、G2构成基本RS锁存器。
电阻R1和电容C1构成NE555定时器的上电自动复位电路。
复位之后,G3的输出为高电平,三极管T处于饱和状态,待测电容CX被短路。
单片机P37引脚在上电时的默认电平是高电平。
可见,上电复位后,比较器OP1、OP2的输出为高电平,R=S=1,RS触发器处于保持状态,单稳态触发器输出稳态0。
系统需要测量时,单片机的P37引脚上输出负向窄脉冲VTR控制单稳态触发器进入暂态,即可实现一次测量。
工作时序图如图2-2所示。
VTR电平变低后,比较器OP2的输出为低电平。
此时,S=0,R=1,RS触发器处于置1状态,单稳态触发器进入了暂态1。
G3输出的低电平使三极管T截至,电源通过电阻R开始对待测电容充电,如图2-2的VCX波形所示。
当VCX上升到电源电压的三分之二后,比较器OP1翻转,使得R=0。
由于VTR的脉冲宽度为T1,在VCX升到三分之二电源电压前已经拉高。
此时,R=0,S=1,单稳态触发器的暂态1结束,返回到稳态0,暂态的持续时间为TW,如图2-2的VO波形所示。
在暂态期间,如果VTR的低电平宽度变为T2,VCX到达翻转点后还没有变高,基本RS触发器就会进入到R=0,S=0的禁止状态,输出VO的波形无法预测,测量出错误结果。
因此,要保证T1<
TW。
图2-2工作时序图
根据RC暂态电路理论可知,TW的时间宽度计算公式为:
TW=ln3RCX=1.1RCX
由该公式可知,单稳态的暂态1持续时间与待测电容CX的容量成正比。
把输出信号VO送到单片机的INT0引脚,控制定时器0计算出暂态1期间的标准时钟个数,就可实现脉冲宽度测量,从而计算出电容容量。
2.2硬件电路设计
2.2.1单片机电路设计
为使单片机正常工作,除电源供电部分外,还需提供晶振电路和复位电路。
具体电路如下:
图2-3单片机工作电路
由图2-3可知,9脚外接的是按键复位电路,18,19脚外接的是晶振电路,这样,就构成了单片机正常工作的必备电路。
同时,为使P0口正常工作,并增加其带负载能力,P0口需接了上拉电阻(在图中未画出)。
2.2.2555时钟芯片与单片机连接
图2-4是555时钟芯片构成的单稳态触发电路,6脚和7脚接在一起,R2和C4构成商店复位电路,2脚用于接收单片机P3.7口产生的低脉冲,3脚接于P3.2脚,用于门控制计时器0的启动与停止。
从而将电容容量转为脉冲宽度。
图2-4555芯片与单片机的连接
2.2.3低脉冲产生电路
如图2-5所示,按键接于P3.3口,即外部中断1接口,因此低脉冲是利用中断实现的,P3.7口产生低脉冲,可在软件中的外部中断1函数中实现,整个过程为,需要测量时,按键,产生外部中断,利用外部中断,用软件再在P3.7口产生一个低脉冲,之所以利用中断实现该功能,是为了增加产品的可靠性,因为按键的时间是比较长的,直接用按键产生低脉冲可能导致T1>
Tw,导致测量错误。
而利用中断,可以直接在中断函数中产生一个固定时间的低脉冲,保证了测量条件,避免发生错误。
图2-5按键产生低脉冲电路
2.2.4键盘电路
如图2-6所示键盘电路主要用于与用户进行交互,如用户需要选择量程时,就必须交互。
键盘分为独立键盘和矩阵键盘,这里只需要实现量程的选择,共四个量程,故无需矩阵键盘,4个独立按键就完全够用了。
图2-6键盘电路
2.2.5指示灯电路
如图2-7所示,指示灯主要用于给用户以提示,如当前量程提示,超量程提示等等。
D2用于超量程提示,D6用于电源提示。
图2-7指示灯电路
2.2.6量程选择电路
在图2-4中可以看到,在RC充电回路中,R值是固定的,不可变的,那么量程也显然是不可变的,因此,需要在此加入可调节充电回路电阻的电路部分,这里,利用继电器可以简单实现。
具体电路如图2-8所示,利用继电器时需特别注意,由于单片机输出电流是很小的,不足以驱动继电器吸合,因此要加驱动电路,在这里,选择ULN2003芯片来实现。
当然,也可以利用典型的三极管驱动来实现,虽然选择的是芯片实现驱动,在这里也将典型的三极管驱动电路列于此。
如图2-9所示。
图2-8实现量程选择电路
图2-9利用三极管的驱动电路
2.2.7液晶显示电路
如图2-10所示,lcd接与P1口,用于显示电容值以及一些相应的测量信息。
图2-10lcd显示电路
至此,整个电容测量仪的硬件设计部分就设计好了,接下来,需要的就是与之相匹配的软件支持了。
2.3软件设计
软件编程平台选择最常用的keil软件。
由于该程序并未涉及到底层的驱动问题,因此选择方便快捷的C语言编程。
在编程中,将该程序分为三个模块:
延时模块,1602显示模块及主函数模块。
方便调试与理解。
具体程序见附录二。
总体程序较长,但并不复杂,可根据需要重点看主函数,与硬件电路结合起来,注重程序后紧跟的注释,理解起来是比较容易的,在此就不再一一详细分析。
2.4量程范围设置
由于量程的选择是非常重要的一个环节,在这里单独讨论量程的选择。
系统采用单片机片内16位的定时器测量TW的宽度,标准计数脉冲的周期为1微秒时,为确保计数器不发生溢出,要求TW<
65毫秒。
同时,为减小量化误差对结果的影响,要求TW>
1微秒。
当TW>
100微秒以上时,可忽略量化误差的影响。
为满足10pF~500uF的测量范围,可通过设置不同充电电阻R的阻值来实现。
理论计算的电阻R阻值、理论量程范围以及系统选择的量程范围如表2-1所示。
系统分为四个量程,可测量10pF~500uF的电容。
表2-1R值与量程范围的关系
R值(欧姆)
理论量程范围
选择的范围
10M
9pF~5.9nF
10pF~5nF
100K
900pF~590nF
5nF~500nF
1K
90nF~59uF
0.5uF~50uF
100
900nF~590uF
F50uF~500uF
2.5altiumdesigner原理图设计及PCB制作
2.4.1原理图设计
图2-11原理图设计
2.4.2PCB制作
图2-12PCB设计
在此并没有布双层板,红色的线仅仅只是为了标志出跳线。
2.4.3设计结果
图2-13设计结果实物图
各个按键功能如图中文字说明。
3系统测试
由于该作品需实现的功能仅为测电容,在此不列出其他的测试。
3.1测量100nf的电容
在此以100nf电容测试为例,演示整个测试过程。
测试标称值为104的电容,即测量电容值为100nf的电容。
104的电容实物如图2-14所示。
测试结果如图2-15所示。
若量程选择错误,测试结果如图2-16所示。
图2-14100nf的电容实物
图2-15100nf电容正常测试
图2-16量程错误情况下的测试
3.2测量4.7uf的电容
再以测试4.7uf电容为例,测试结果如图2-18所示。
图2-18测试4.7uf的电容
3.3测试结果
将测量的一系列电容的电容值与标准值比较。
比较结果如表3-1。
表3-1测量值与标准值比较
标准值
测量值
误差
300pf
320pf
6.70%
100nf
105.15nf
5.15%
4.7uf
5.05uf
7.40%
100uf
106.74uf
6.74%
由表3-1中数据可知,平均误差是6%,低于设计扩展要求的10%,测量范围是10pf~500uf,满足设计要求的100pf~100uf。
测量结果由液晶直观显示。
综合以上分析,该设计满足整体设计要求。
3.1误差分析
由于产生的6%左右的误差,在这里简要分析一下误差产生的原因。
电容测量的误差主要由NE555定时器构成的单稳态触发电路的非线性误差T、计数器的量化误差
N和标准计数脉冲的频率偏移TC产生[2][3]。
因此有:
系统采用的标准计数脉冲来自单片机内核时钟,由片外的高精度晶振与片内电路自激振荡产生,频率非常稳定,可以忽略其频偏对测量结果的影响。
量化误差
N是数字电路的特有误差,最坏的情况下等于1。
如采用12M的晶振,可获得1MHz的标准计数脉冲,量化产生的最大误差为1微秒。
通过设置充电电阻R的阻值,使TW达到毫秒级时,量化误差的影响非常小,可以忽略。
非线性误差是由器件的非线性特性产生的,可通过硬件参数修正和软件算法补偿来减小。
4结论与心得体会
总之,通过一系列仿真和设计,数字式电容测量仪还是比较成功的做出来了。
一路下来还是比较坎坷,从原理到实物,从调试到调试成功,遇到了很多问题,在硬件的原理图设计中,遇到了一个当时觉得非常困难的问题,就是如何实现量程的选择,首先想到的就是用开关实现,由用户根据不同的选择拨动开关,这样虽然很容易的选择了不同的电阻,但是,拨动开关之后如何让单片机知道呢?
因为只有单片机知道你选择了何种量程的电阻,才有法作相应的处理,于是想到在用一个按键来通知单片机,可是,这样的话,用户测量一次电容,将会按3次按键,这样无疑增加了操作的繁琐度。
于是想到可以由用户按键通知单片机选择量程,用单片机控制某种芯片来选择不同的路径,从而引入不同的电阻。
而这种芯片,也是通过查阅很久的资料才查到的,从CD4052到继电器也走了不少弯路,最后权衡各个方面,选择了易于控制的内阻很低的继电器。
至此,解决了量程选择问题。
可是,在后续的设计中,没有意识到继电器的驱动问题,就直接将他接于单片机的P0口,板子做出来之后,才发现无法驱动继电器,使继电器吸合。
就这样,一步一步,最后又选择以ULN2003作为驱动。
才得以解决这一系列问题。
其次,软件设计也遇到了很多问题,通过很长的时间才调试成功。
通过这次设计也收获了很多,知识层面上,学得了很多新知识,解决问题的新方法。
实践方面,提高了动手能力,提高了解决实际问题的能力等等。
在思想上,更加明白的坚持不懈的重要性,学习探索的重要性,实践动手的重要性。
5参考文献
【1】《单片机基础》第三版李广弟朱月秀冷祖祁编著北京航天大学出版社,2007
【2】《数字式电容测量仪设计》张玉芹,洪远泉廊坊师范学院学报(自然科学版)2011年6月第11卷第3期
6附录
附录1元器件清单
(1)晶振12M一个
(2)stc89c52芯片一片
(3)30pf2个;
10uf1个;
470uf1个;
0.33uf2个;
4.7uf1个;
1nf1个
(4)40脚活动底座一个
(5)lcd液晶一个
(6)按键6个
(7)发光二极管6个
(8)9引脚排阻1个
(9)680Ω6个;
10k1个;
1k2个;
1k滑动变阻器1个;
10M1个;
100k1个;
100Ω1个;
2k1个;
200Ω1个;
(10)开关1个
(11)整流桥1个
(12)7805稳压芯片1片
(13)继电器3个
(14)ULN20031片
(10)排针若干,杜邦线若干
附录2程序清单
分5个文件:
delay.h,delay.c,1602.c,1602.h,main.c
(a)delay.h程序清单:
#ifndef__delay_h__
#define__delay_h__
#defineucharunsignedchar
#defineuintunsignedint
voiddelay_us(uintcnt);
voiddelay_ms(uintcnt);
#endif
(b)delay.c程序清单:
#include"
delay.h"
voiddelay_us(uintcnt)
{
uchari;
for(;
cnt>
0;
cnt--)
{
for(i=0;
i<
12;
i++)
{
;
}
}
}
voiddelay_ms(uintcnt){
125;
(c)1602.h程序清单:
#ifndef__1602_h__
#define__1602_h__
#include<
reg52.h>
sbitRS=P2^2;
//定义端口
sbitRW=P2^1;
sbitEN=P2^0;
#defineRS_CLRRS=0
#defineRS_SETRS=1
#defineRW_CLRRW=0
#defineRW_SETRW=1
#defineEN_CLREN=0
#defineEN_SETEN=1
unsignedcharpro_data(unsignedcharmda);
voidLCD_write_com(unsignedcharcom);
voidLCD_write_Data(unsignedcharData);
voidLCD_init(void);
voidlcd_pos(unsignedcharpos);
voiddisp(unsignedchar*p);
voiddispchar1(unsignedchar*p);
voiddispchar2(unsignedchar*p);
voiddispchar3(unsignedchar*p);
(d)1602.c程序清单:
1602.h"
voidLCD_write_com(unsignedcharcom)
{
RS_CLR;
RW_CLR;
EN_SET;
com=pro_data(com);
P1=com;
delay_us(5);
EN_CLR;
voidLCD_write_Data(unsignedcharData)
{
RS_SET;
Data=pro_data(Data);
P1=Data;
voidLCD_init(void)
LCD_write_com(0x38);
//显示模式设置
delay_ms(5);
LCD_write_com(0x08);
//显示关闭
LCD_write_com(0x01);
//显示清屏
LCD_write_com(0x06);
//显示光标移动设置
LCD_write_com(0x0c);
//显示开及光标设置
voidlcd_pos(unsignedcharpos)
LCD_write_com(0x80|pos);
}
voiddisp(unsignedchar*p)//第二行显示数据
unsignedchari;
lcd_pos(0x43);
for(i=0;
6;
if(4==i)
LCD_write_Data(0x2e);
LCD_write_Data('
0'
+(*p));
p++;
}
voiddispchar1(unsignedchar*p)//第一行显示需要显示的提示字符串
lcd_pos(0x00);
while(*p!
='
\0'
)
LCD_write_Data(*p);
lcd_pos(0x4c);
LCD_write_Data('
f'
);
voiddispchar2(unsignedchar*p)//第二行显示需要显示的提示字符串
lcd_pos(0x40);
}
voiddispchar3(unsignedchar*p)//第一行显示第二行清空
lcd_pos(0x0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 电容 测量仪 设计 实验 报告