前置知识
当前市面上存在不少使用非机械按键方式实现的交互,如触摸屏,触摸框,各类触摸按键。其中,电容式触摸按键在各类产品中的应用尤其得多。电容式触摸按键,顾名思义,就是当按键按下时,容值会发生变化,而支持电容式触摸按键的芯片通过检测电容容值的变化,获取按键按下释放状态。
原理简介
下图显示一个常见的电容式触摸传感器实现。传感器通常使用 PCB 上的铜作为电极。顶层覆盖有不导电保护层,例如玻璃或塑料,并粘在PCB上。传感器周围有网格接地。
根据检测到的电容类型,电容式触摸可以描述为自电容式检测(检测单个电极与电源线接地之间的电容值)或互电容式检测(检测两个电极之间的电容值)。
自电容式检测
以最简单的单按钮为例,自感电容检测模型如上图所示。自感电容器使用镀铜形成的单个电极(接收电极Rx)来检测电极对电源线接地的电容变化。按钮到电源线接地的初始电容为Cp。当人手触摸它时,Ct(由电平和人指尖形成的电容,类似于平行板电容的结构)、Ch(人体与大地之间的串联电容)和Cg(电源线接地与接地之间的电容)被引入电路,从而增加按钮对地的电容。
互电容检测
以最简单的单按钮为例,上图显示了互容电容的检测模型。当被人手触摸时,CRT变成两个2CRT(Rx 和 Tx 电极之间的电容,当被人手触摸时,相当于分为两个 2CRT 的电容。),并同时引入CRTt(Rx 和 Tx 电极之间的并联电容,由手指触摸引入),Ct,Ch和Gg。两个电极之间的电容减小。
增加按下时电容变化量的设计方法
自电容式检测
减小盖板厚度,增加灵敏度。
降低栅极接地的密度,或增加PCB厚度以降低灵敏度。
将电源接地接地,增加灵敏度。
增加手指与传感器垫覆盖层之间的接触面积,以增加灵敏度。但电极尺寸不能无限增加,主要原因是平行板电容Ct的最大有效面积与手指触摸面积相同。因此,Ct也会增加,导致灵敏度降低
互电容检测
减少包层厚度
增加 Tx 和 Rx 之间的间距 但是,如果手指不能同时覆盖 Tx 和 Rx,灵敏度会降低
典型的软件检测电容方案
如上图所示电路为十多年前TI推出的MSP430G系列所采用的等效检测逻辑(不看电阻电容参数,仅参考电路),其实现逻辑为,通过周期性的充放电,在TestPort位置检测充电是否完成和放电是否完成,一旦完成,则计数器加1。另外,使用另一个硬件定时器生成一个固定的采样时间窗口,在时间窗口固定的情况下,充放电次数在小范围内变动。而手指接近按键处,可等效于C1电容容值发生改变,则充放电速度会变慢,此时软件读取到的计数值在短时间内发生明显变化,从而软件判定为有触摸按键按下事件。
而实际应用中,其他家的实现会有细微的差异,如艾为某型号的触摸按键实现方案,将检测充放电次数实现改为检测固定时间窗口内检测位置所达到的电压值,此时软件层面的表现刚好相反。在按键按下时,读取到的原始值反而变高。
调试触摸按键的要点
尽量将采集到的触摸按键所读取到的原始值用图形界面的方式展现出来,有波形,能节省很多工作量。若原厂无对应工具,则可以考虑使用开源的虚拟示波器方案,走串口协议上报,通过虚拟示波器显示波形。
硬件设计一定要注意,尽量减少寄生电容,原因是虽然人手触摸时电容值会发生变化,但实际上,这个电容非常小,如果寄生电容过大的话,会因为电容值变化比例不大而导致充放电速度变化不大(原因:F = 1 / RC)。
如果自己编写触摸按键检测代码,非依赖于原厂封装好的库,一定要注意电容值零点漂移(暂且这么说吧,实际上就是电容容值随着环境的变化而逐步变化)的处理,以防长时间开机后按键无效。
ID结构设计有限制,覆盖面不能有金属成分(据我所知,不少ID喜欢用金属漆),金属成分会明显增加寄生电容,且像金属漆这类喷涂材料,喷涂厚度差异会导致同一组参数在不同机器上的效果差异巨大
触摸按键PCB到外壳接触手指面中间不能有空气,这点非常重要,因为空气的电传导系数很低,会导致手指按下,电容改变效果不明显。