电容触摸感应原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电容感应式触控原理
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.5 mm厚度)板来说我们一般选取d=0.5mm,按键的面积A一般选取成人手指大小即可。
3.电路板底层的覆铜处理
前面我们说的都是在电路板的顶层如何绘制触摸按键。
下面我们来看看电路板的底层如何覆铜。
首先,在电路板底层覆铜是很有必要的,这些接地的覆铜能够最大限度的降低触摸按键的噪声以及外部环境对触摸按键的影响。
对于底层覆铜的方法一般有四种:完全不覆铜、25%网格覆铜、50%网格覆铜、100%实心覆铜。
很多人一般会选择100%实心覆铜,这种覆铜方式确实能够最大限度的降低噪声和外界的干扰,但同时,它也大大增加Cp的值,而Cp的值我们是不希望它很大的。
所以,在这里推荐采用50%~75%网格覆铜。
4、触摸按键表面的覆盖物
在许多的应用中,我们需要在触摸按键上添加一些覆盖物,如:塑料等。
在这种情况下,人的手指就不能和触摸按键直接接触了。
那么电容触摸是不是就失效了呢?答案是否定的。
从第二节的图中我们可以看到,电容容量的大小与三种东西有关:触摸按键的面积A,触摸按键与地平面的间距d以及介电常数ε。
触摸按键与地平面的间距一般来说在按键做好了以后就是固定的,所以电容容量的大小就与触摸按键的面积A以及介电常数ε有关。
当我们选择了某些覆盖物(如:塑料时)其介电常数就固定。
一般来说介电常数越小越不容易导电,所以我们要尽可能的选择介电常数小的覆盖物。
第二个方面,触摸按键的面积A,虽然在PCB做好后A就固定下来了,但是,随着覆盖物厚度的增加,手指就越难接触到触摸按键。
即,手指与触摸按键接触的有效面积就越小,也就是说,Cf就越小。
这样就越难检测到触摸按键电容值的变化。
下表列举出了在通常情况下,覆盖物的厚度与容值的关系。
5 用MSP430来实现电容触摸感应
有两种方式来实现电容触摸感应,下面我们将详细讲述这两种方法:
① 基于张弛震荡器的检测
图就是使用MSP430内部的比较器来实现一个张弛震荡触摸按键的的电路。
在在输入端,比较器的正接到了一个电阻网络,比较器的负接到了电阻Rc与感应电容之间。
比较器所接的电阻网络为比较器提供了参考电压,而这个参考电压又受到了比较器输出反馈的激励,所以其值在1/3Vcc和2/3Vcc之间反复变化。
造成张弛振荡器的持续震荡,其震荡频率可由以下公式算出:
f OSC = 1/[1.386 × R C × C SENSOR]
当手指接触到触摸按键以后,显然,C SENSOR的值将会被改变,于是fosc也随之变化。
如果我们能够检测到这种变化的话,也就自然知道何时触摸按键被“按下”了。
检测的方法也很简单,上面我们说过,当手指接触到触摸按键以后, C SENSOR的值将会被改变,于是fosc也随之变化。
频率的倒数就是周期,只要我们在一个固定的时间内去计算上升沿或下降沿的数目,那么如果在某一时刻该数目有较大的变化的话,那就说明C SENSOR的值已经被改变,即按键被“按下”了。
② 基于电阻的电容充放电时间的检测
第二种方法就是基于电容充、放电时间长短的检测,下图给出了这种触摸检测方法的原理图。
在这种方法中,主要检测的是电容充电和放电的时间。
首先,由一个GPIO(Load)对电容Cx进行充电;同时开启计时器进行计时;随着充电的进行,Cx的电压中不断升高,最终它将会操作某个门限电压V,当其超过门限电压V后,Acq I/O GPIO将会检测到这个事件,同时停止计时器并读出此时的数值。
这样,就完成了一次充电计时过程,当手指接触到触摸按键时,Cx将会变大,显然,充电时间也会变长。
通过不断比较每次充电的时间,很自然地就能得知当前是否有按键被“按下”。
同样,既然能检测充电时间,那么也能检测放电时间。
这里不再赘述。
6.多按键的处理
显然,如果触摸只支持一个按键,这是不实用的。
所以,对于触摸按键来说一般都要求能够支持多个按键的动作。
由于实现电容触摸的方法不同,所以存在着不同的对多个按键的处理。
①基于张弛震荡器多按键的处理
这种方法连接图如下所示:
在这种方式下,比较器的一端还是和原来一样接到电阻网络中,比较器的另外一端接在一个MUX上,通过MUX选择不同的IO口读取不同按键的上的电容震荡周期。
每个按键上的震荡原理和单独一个按键的震荡原理一样,上面已经讲过了。
②基于电阻的电容充放电时间检测的多按键处理
这种方法其连接图如下所示:
从图中大家可以看到,每个按键接在不同的IO端口上,并且每两个按键为一组,通过电阻进行连接。
系统工作时,首先通过一个IO口对一个按键进行充电(如需要检测第一个按键,则是第一组IO中的下面那个负责对按键进行充电)并且开启计时器;另外一个IO口(第一组IO中的上面那个)监视IO口上电压的大小,当电压超过某一个阈值的时候停止计时器并读出当前值。
同时,下面那个IO口设置为输入,对触摸按键的电容进行放电(同时启动计时器),当电容上的电压低于某个值时停止计时器并读出当前值。
这两个值就是电容按键的充、放电时间。
如果此时有手指“按”在按键上,那么这两个时间也将会变化。
通过不停的扫描各个按键,这个可以很容易的得到当前那个按键被“按下”。
7.在有限的IO中扩展按键数量
前面我们讲到两种多按键的处理方法,仔细观察可以发现,这两种处理方法都是基于多个IO的,也就是说有多少个IO我们就能扩展出多少个按键。
如果我只有6个可用的IO,那么能不能实现多余6个按键呢?答案是肯定的。
回想一下单片机中我们是如何做的,当时,我们提出了一个3*3矩阵键盘的概念,那么在触摸按键中能否用矩阵键盘呢?下图给出了这个问题的实现。
在上图中,每个触摸按键不再是一块铜皮,而是由两块铜皮构成,每块铜皮分别连接在不同的IO端口上,当我们触摸了某个按键后,显然两块铜皮上的电容都会变化,这样我们通过检测那两块铜皮的电容变化了,也就确定了哪个按键被按下了。
这种方法完全借鉴了矩阵键盘的思想,但如果只是简单的把一块铜皮分成两块的话,也会带来一个严重的问题:有的时候人的手指会按偏,比如说只是按到了一个按键的一块铜皮上,那么这时算法如何处理?为了解决这个问题,于是提出了下面这种按键的设计方法,即采用交错走线法:
采用交错走线后,将会很有效的避免按键时按偏的问题。
采用矩阵键盘法可以实现在有限的IO中实现多个按键,但它也不是无限制的使用。
例如:如果一个按键有两个IO来确定则每个IO铜皮所占的面积只占了这个按键的面积的1/2,如果由三个IO来确定则每个IO只占了1/3,而我们前面又提到过,产生的寄生电容和接触面积A成正比,当每个IO接触面积减少时,其寄生电容也就随之减少。
换句话说就是越难检测到这个寄生电容的变化。
所以,对于采用矩阵键盘思想扩充按键数目的方法只适用于按键比较少的情况,一般来说,10个按键比较合适,如触摸滑条等。
那么如果确实要超过10个按键的扩展该怎么办呢?这时我们可以考虑用外围IO扩展芯片。
如上图所示,我们把一个IO口引出来,外接到一个IO扩展芯片上,通过这个扩展芯片实现了一个到多个IO的扩展。
但这种方法也有一个很大的缺点:对于IO扩展芯片来说其内部有一个寄生电容:
这个寄生电容将会影响到我们的基本电容,而手指按下按键产生的电容总是一定的,这样在手指按下按键前后电容的变化率将会变小,也就是说按键的灵敏度将会下降。
这当然是用户所不希望看到的。
为了减少这种变化所带来的影响,我们只有延长检测窗口的时间。