方案的选择:
最初想要用恒流源(见http://blog.ednchina.com/jamiedame/2132989/message.aspx#)对电容进行充放电,通过单次的充电或放电时间来算出对应的电容的容量。通过实验发现每次的充电时间会有些许的波动,这需要采集多次数据并进行平均才能获得一个较好的值。但实验过程中发现一种莫名其妙的现象,就是某个时刻会突然有一个较稳定的值突然跳变到另一个值然后稳定一段时间后又跳回原来那个值。还有另一种现象就是接入一个大电容后每次采集到的充电时间会慢慢地变长。这有点诡异,难道某个器件需要多次振荡才能正常工作,有时候这种变化可持续5分钟。我不知道哪个器件导致了这种情况的发生。
后来我用一个电压比较器构成的振荡电路,通过振荡电路的振荡频率来推出电容的容量。通过这次实验,发现该电路可以较稳定地提供0.01pF的分辨率。
关于一开始遇到的测量电容的值慢慢变大的情况,我用万用表测量的时候发现也有同样地情况,google了一下,网上也有网友反映有类似的情况,对于该疑问的解释:
1.有可能是当用手拿瓷片电容的时候,手的温度传递到了瓷片电容,导致瓷片电容的温度发生变化,而当瓷片电容放到夹具上测量时,瓷片电容慢慢降温,容量慢慢恢复到原来的值;
2.由于我用的是瓷片电容,我推测可能充放电时里面的介质受热容量发生变化吧。我用涤纶电容测量值很稳定。
2011年11月8日更新
测量方案:
1、小电容(0-300pF)采用测量振荡频率的方法。
2、大电容(300pF-1uF)采用测量脉宽的方法。
这样根据电容容量的大小,在同一个振荡器上尽量获取4位有效数字的测量值。
图1 测量振荡原理图
图1这个是经典的正反馈振荡电路,可生成方波或锯齿波,只是取决于你从哪里引信号出来。在这里放大器要选偏置较小的、传输时间较短的电压比较器,最好是输入输出都是轨对轨的,不能选运放,因为运放的饱和恢复时间可能有几百微秒。
关于振荡频率的计算,我稍微翻了下书,可近似的推出反馈系数
振荡周期
关于给50M有源晶振的分频电路。分频电路主要有两块16进制计数器级联构成,共256分频。但是从第二级计数器分频出来的脉冲,单片机用外部时钟法和外部中断法都无法稳定准确地进行计数,用万用表的频率档也测不出来。后来分析可能第二级出来的时钟信号的脉宽太窄,于是用由D触发器构成的二分频电路将第二级出来的信号展宽其脉宽,果然,单片机跟万用表都能准确测出末端的时钟信号频率。如图2所示。
图2 分频电路原理图
为适应50M晶振的时钟速度,计数器选用了74F系列,另外启用计数器和关闭计数器的控制电路也应该是高速的,故计数器的开关不能直接由单片机控制。在这里,我设计了一个简单的硬开关电路,由单片机间接控制。如图3所示。
图3 计数器硬开关原理图
首先先在clr端给D触发器复位,是out输出”0”,out连接到16进制允许端,此时计数器停止计数。若ctrl置高电平,则下一时钟到来时将令out端输出”1”,计数器开始计数。要想禁止计数,则ctrl端置低电平,下一个时钟脉冲到来时,从out输出的必然为”0”,此时计数停止。
关于按键电路,由于手头上只有块Atmega8L,频率只能上8M,IO端口也比较少,可惜两个外部中断端口被占用了,按键电路接到了普通的IO端口,但如果不耍点手段,按键检测就会难以有较好的体验效果,故设计了个简单的电平保持电路。如图4所示。
图4 轻触开关按键保持电路
原理很简单,基于电容的充放电原理,在这里我取R3=R4=4.3k,R1=R2=200,C1=C2=1uF。当有按键按下时,电容充电至高电平,按键松开,由于单片机IO端口设置成高阻态,故放电很慢。当下个周期单片机读取按键电平后,识别出相应的状态,然后输出低电平给电容放电。这样电容又可以继续检测按键是否曾被按下过了。
(由于博客字数的限制,本章下半部分见“皮法电容表DIY(下)”
用户611911 2015-9-15 19:04
dwwzl 2012-8-3 10:53
用户1611386 2011-12-16 20:46
用户356224 2011-11-17 13:25
用户1588142 2011-11-12 00:44