电容接近传感技术并不是一个新鲜的东西,几十年前就有人用过。但是该技术逐渐成熟并广泛应用则是近几年的事情。
常见的电容检测方式有如下几种:
张弛振荡:用恒流I给电容CX充电,记录电容CX电压从零到特定电平的时间,可以计算出电容的大小;这种方式需要两个东西准确:恒流电流I和时间。
电荷转移:用电容CX给另一个大电容CS充电,记录大电容CS电压从零到特定电平的次数,可以计算出电容CX的大小;这种方式需要大电容CS准确。
经过权衡,我选用了电荷转移方式进行电容检测。
详细原理如下图:
原理图
应用图
图中,CS是参考电容,CX是待检测的电容,可以是自电容,也可以是互电容,实现的核心技术都在信号S1、S2、S3上。COMP是一个一端Vport固定接3/4Vdd电平的比较器。
l 一次检测过程是:
a) 首先S1和S3同时导通,给电容CS和CX放电;data_Cx清零;
c) S2断开,S1导通,电容CX上的电荷在CX和CS上重新分配,使得引脚CX电位升高;data_Cx增加一;
d) 判断CX电位是否大于比较电位Vport,如果不是,返回b)继续;如果是,停止充放电,获得数值data_Cx;
l data_Cx的数值大小和电容CS和CX的比值有关系,比值越大,数值越大,就是说参考电容CS越大,需要的充电次数越多。
计算过程:
已知:电源电压Vdd,端口翻转电压Vport,参考电容Cs,待测电容Cx,
假设:K=Cx/(Cs+Cx)
ΔVcs1=K*Vdd
Vcs1=ΔVcs1=K*Vdd
ΔVcs2=K*(Vdd-Vcs1)=K*(1-K)*Vdd
Vcs2= Vcs1+ΔVcs2= K*Vdd+ K*(1-K)*Vdd=K*(2-K)*Vdd
ΔVcs3=K*(Vdd-Vcs2)=K*(1-K)2*Vdd
.
.
.
ΔVcsn=K*(Vdd-Vcs2)=K*(1-K)n-1*Vdd
Vcsn=ΣK*(1-K)n-1*Vdd=K*Vdd*Σ(1-K)n-1=K*Vdd*(1-(1-K)n)/K=(1-(1-K)n)*Vdd
当Vcsn=Vport时,端口翻转,充电结束。
则
(1-K)n=1-Vport/Vdd
n*ln(1-K)=ln(1-Vport/Vdd)
n=ln(1-Vport/Vdd)/ln(1-K)
我们的实际应用中,Vport=3/4 Vdd,为了得到更准确的数值,实际取参考电容Cs是待测电容Cx的几千倍,那么K—>0,上式变成:
n = ln (1-3/4)/ln (1-K)
当K—>0时,ln(1-K)=-K
即
n * K = 2 * ln2
n * Cx = 2 * ln2 * Cs
计算结果表明,在给定的Vdd、Vport、Cs的条件下,n*Cx大约为一个常数。就是说充电次数n与电容值Cx呈反比关系,从n可以准确计算出Cx的值。
上面的data_Cx就是n,而data_Cs是上电后初始状态的n,以后再介绍他们的作用。
通过以上技术分析可以知道,这种方案只需要一个标准电容Cs就能给准确测量出待测电容Cx的大小。