1. 电容触摸感应基本知识
首先,人体是具有一定电容的。当我们把PCB上的铜画成如下形式的时候,就完成了一个最基本的触摸感应按键。
上图左边,是一个基本的触摸按键,中间圆形绿色的为铜(我们可以称之为“按键”),在这些按键中会引出一根导线与MCU相连,MCU通过这些导线来检测是否有按键“按下”(检测的方法多种多样,这将在后面章节中谈到);外围的绿色也是铜,不过外围的这些铜是与GND大地相连的。在“按键”和外围的铜之间是空隙(我们可以称为空隙d)。上图右边是左图的截面图,当没有手指接触时,只有一个电容Cp ,当有手指接触时,“按键”通过手指就形成了电容Cf 。由于两个电容是并联的,所以手指接触“按键”前后,总电容的变化率为
C% = ((Cp+Cf)-Cp)/Cp = Cf/Cp ………………公式1
下图更简单的说明了上述原理。
2. 电容感应触摸器件的参数选择
弄清楚了上述原理后很自然的就会想到下面两个问题:
① 空隙d的大小应该为多少呢?即“按键”与地之间的距离为多少?d的大小会不会影响“按键”的性能?
② “按键”的大小应该为多少呢?它的形状、大小会不会影响“按键”的性能呢?
为了弄清楚这两个问题,我们首先介绍公式2:
在这个公式中d就是我们所说的空隙的间距,A表示的“按键”面积的大小,C表示没有手指接触按键时电容的大小Cp。显然,空隙间距d越大,Cp越小;面积A越大,Cp越大。已知手指触摸产生的电容范围为5~15pf,这是一个非常小的容值。当Cp非常小时,公式1中的C%将会比较大,也就是说MCU更加容易检测到这个电容值的变化。基于这种考虑,对于FR4 材料的PCB(1~1.5mm厚度)板来说我们一般选取d=0.5mm,按键的面积A一般选取成人手指大小即可。
3. 电路板底层的覆铜处理
前面我们说的都是在电路板的顶层如何绘制触摸按键。下面我们来看看电路板的底层如何覆铜。
首先,在电路板底层覆铜是很有必要的,这些接地的覆铜能够最大限度的降低触摸按键的噪声以及外部环境对触摸按键的影响。对于底层覆铜的方法一般有四种:完全不覆铜、25%网格覆铜、50%网格覆铜、100%实心覆铜。
很多人一般会选择100%实心覆铜,这种覆铜方式确实能够最大限度的降低噪声和外界的干扰,但同时,它也大大增加Cp的值,而Cp的值我们是不希望它很大的。所以,在这里推荐采用50%~75%网格覆铜.
在许多的应用中,我们需要在触摸按键上添加一些覆盖物,如:塑料等。在这种情况下,人的手指就不能和触摸按键直接接触了。那么电容触摸是不是就失效了呢?答案是否定的。
从第二节的图中我们可以看到,电容容量的大小与三种东西有关:触摸按键的面积A,触摸按键与地平面的间距d以及介电常数ε。触摸按键与地平面的间距一般来说在按键做好了以后就是固定的,所以电容容量的大小就与触摸按键的面积A以及介电常数ε有关。当我们选择了某些覆盖物(如:塑料时)其介电常数就固定。一般来说介电常数越小越不容易导电,所以我们要尽可能的选择介电常数小的覆盖物。
第二个方面,触摸按键的面积A,虽然在PCB做好后A就固定下来了,但是,随着覆盖物厚度的增加,手指就越难接触到触摸按键。即,手指与触摸按键接触的有效面积就越小,也就是说,Cf就越小。这样就越难检测到触摸按键电容值的变化。下表列举出了在通常情况下,覆盖物的厚度与容值的关系。
5 用MSP430来实现电容触摸感应
有两种方式来实现电容触摸感应,下面我们将详细讲述这两种方法:
上上图就是使用MSP430内部的比较器来实现一个张弛震荡触摸按键的的电路。在在输入端,比较器的正接到了一个电阻网络,比较器的负接到了电阻Rc与感应电容之间。比较器所接的电阻网络为比较器提供了参考电压,而这个参考电压又受到了比较器输出反馈的激励,所以其值在1/3Vcc和2/3Vcc之间反复变化。造成张弛振荡器的持续震荡,其震荡频率可由以下公式算出:
fOSC = 1/[1.386 × RC × CSENSOR]
当手指接触到触摸按键以后,显然,CSENSOR的值将会被改变,于是fosc也随之变化。如果我们能够检测到这种变化的话,也就自然知道何时触摸按键被“按下”了。
检测的方法也很简单,上面我们说过,当手指接触到触摸按键以后, CSENSOR的值将会被改变,于是fosc也随之变化。频率的倒数就是周期,只要我们在一个固定的时间内去计算上升沿或下降沿的数目,那么如果在某一时刻该数目有较大的变化的话,那就说明CSENSOR的值已经被改变,即按键被“按下”了。
② 基于电阻的电容充放电时间的检测
第二种方法就是基于电容充、放电时间长短的检测,下图给出了这种触摸检测方法的原理图。
在这种方法中,主要检测的是电容充电和放电的时间。首先,由一个GPIO(Load)对电容Cx进行充电;同时开启计时器进行计时;随着充电的进行,Cx的电压中不断升高,最终它将会操作某个门限电压V,当其超过门限电压V后,Acq I/O GPIO将会检测到这个事件,同时停止计时器并读出此时的数值。这样,就完成了一次充电计时过程,当手指接触到触摸按键时,Cx将会变大,显然,充电时间也会变长。通过不断比较每次充电的时间,很自然地就能得知当前是否有按键被“按下”。
同样,既然能检测充电时间,那么也能检测放电时间。这里不再赘述。
未完,待续。。。。
[ 本帖最后由 youki12345 于 2010-11-3 21:51 编辑 ]