内容发布更新时间 : 2024/11/15 1:44:29星期一 下面是文章的全部内容请认真阅读。
2nf 4.7uf 100uf
2nf 4.70uf 100.66uf 0% 0% 1% 由表3-1中数据可知,平均误差是0.5%,低于设计扩展要求的2.5%,测量范围是10pf~500uf,基本满足设计要求的10pf~10000uf。测量结果由液晶直观显示。综合以上分析,该设计满足整体设计要求。
3.1 误差分析
由于产生的0.5%左右的误差,在这里简要分析一下误差产生的原因。
电容测量的误差主要由NE555 定时器构成的单稳态触发电路的非线性误差T 、计数器的量化误差",N 和标准计数脉冲的频率偏移TC 产生[2] [ 3] 。因此有:
系统采用的标准计数脉冲来自单片机内核时钟, 由片外的高精度晶振与片内电路自激振荡产生,频率非常稳定, 可以忽略其频偏对测量结果的影响。量化误差",N 是数字电路的特有误差, 最坏的情况下等于 1。如采用12M 的晶振, 可获得1MHz 的标准计数脉冲, 量化产生的最大误差为1 微秒。通过设置充电电阻R 的阻值, 使TW 达到毫秒级时, 量化误差的影响非常小, 可以忽略。非线性误差是由器件的非线性特性产生的, 可通过硬件参数修正和软件算法补偿来减小。
4 结论与心得体会
经过本次历经4周的实习,使得我又进一步对单片机系统,尤其测量电容的电路系统有了深一步认识。在做前期准备工作时,老师不希望我们用555芯片做这个实验,因为如果
- 17 -
是555芯片震荡电路来测量的话,虽然制作原理简单,但测量值会很不稳定,测范围也不够广。可出于坚信化繁为简的信念,在没做过实物的情况下,我们还是硬着头皮还是想验证下事实是不是如此(如果不成功再改换方案)。 起初查阅了很多资料,比如伏安法中的自由轴法制作测量电容电路,LC震荡侧电容电路等,老师也推荐了方案二中的积分法测量电路,但因为在进行理论计算时,因为积分测容法中C=Ui*dt/Uo*R,而我们无法精确确定ADC在输出口的传输时间(哪怕是几十us),所以有种无法掌控误差的感觉,再加上出于成本考虑,所以没有首选这种方法。而对于利用555芯片单稳态触发这种法案的分析,我则很相信,这个电路是可以实现测量功能的,并且只要输出稳定,我就可以做相应补偿。 在经过一系列的仿真,实物制造和调整后,最初做出来的板子并不能运行的,后面反复彻查后,才发现原来自己的设计出现了差漏,少连或错连了一些关键线路,于是又重新修整过。经过修正后的电路中终于可以开始进行测量了,起初的测量只有在nf档和10uf以下档位下,测量值是基本满足要求的,而PF裆和100uf以上的档位并不满足已要求的,甚至不够稳定,所以我开始将挡位缩小,将10pf~10000uf的要求,缩减为100Pf~500uf,果然修正后的电路,测量稳定了。再经过软件补偿后,最终获得了在精度上可以满足要求的方案。(Ps:因为最初设计的时候只选择了4个挡位,而手上电容最大才470uf,出于“最稳定测量”的考虑,所以才改的100pf~500uf挡位。即:本方案也可能可以测量500uf以上的电容,只要将其中的100欧姆电阻改小即可。)
5 参考文献
【1】 《单片机基础》第三版 李广弟 朱月秀 冷祖祁 编著 北京航天大学出版社,2007 【2】 《数字式电容测量仪设计》 张玉芹, 洪远泉 廊坊师范学院学报(自然科学版) 2011 年6 月 第11 卷第3 期
【3】梁艳霞,基于单片机控制的电容测试仪设计,总裁,2009.
【4】徐思成,一种基于单品啊及只能电容测试仪的设计与实现,现代电子技术,2010 【5】陶春明,单片机使用技术,北京:人民邮电出版社,2008 【6】何立民,单片机应用程序设计,北京:北京航空航天大学出版社。 【7】陈世良,吴凌燕,丁国臣,基于AT89C2051单片机的数字电容表设计,2009 【8】童诗白,华成英,模拟电子技术基础第三版,北京,高等教育出版社,2007
- 18 -
【9】熊筱芳,郭学提,基本89C51单片机的数字电容表设计,自动化应用技术,2008 【10】何光明,杨健宇,C语言程序设计与应用开发, 北京:清华大学出版社,2006.
6 附录
附录1 元器件清单
(1)晶振12M一个 (2)stc89c52芯片一片
(3)30pf 2个;10uf 1个;470uf 1个;0.33uf 2个;4.7uf 1个;1nf 1个 (4)40脚活动底座一个 (5)lcd液晶一个 (6)按键6个 (7)发光二极管6个 (8)9引脚排阻 1个
(9)680Ω 6个;10k 1个;1k 2个;1k滑动变阻器 1个;10M 1个;100k 1个;100Ω 1个;2k 1个;200Ω 1个;
(10) 开关1个 (11) 整流桥1个 (12)7805稳压芯片1片 (13) 继电器 3个 (14) ULN2003 1片 (10)排针若干,杜邦线若干
附录2 程序清单
分5个文件:delay.h,delay.c,1602.c ,1602.h,main.c
(a) delay.h程序清单:
#ifndef __delay_h__ #define __delay_h__
- 19 -
#define uchar unsigned char #define uint unsigned int void delay_us(uint cnt); void delay_ms(uint cnt); #endif
(b) delay.c 程序清单:
#include \void delay_us(uint cnt) { uchar i; for(;cnt>0;cnt--) { for(i=0;i<12;i++) { ;
}
}
}
void delay_ms(uint cnt){ uchar i; for(;cnt>0;cnt--) { for(i=0;i<125;i++) { ;
}
}
}
(c) 1602.h程序清单:
- 20 -