基于自适应原理的SJD160触摸按键程序的分析
2012-01-15潘伟,周龙
潘 伟,周 龙
(1.中国人民解放军信息工程大学,河南郑州450002;2.武汉工业学院电气与电子工程学院,湖北武汉430023)
近几年电容式触摸感应按键技术在电子行业内得到进一步的推广,已经开始逐步代替传统的机械式按键开关界面。因为触摸按键不需要机械动作,这就使得基于此的产品包装上能够完全密封,并且设计上更加小巧便携,现代美观,具有更好的市场潜力。由于触摸按键的优点多多,让其除了在家用电器市场上占有一席之地外,也开始逐步在医疗,汽车等领域被广泛采用。
作为全球半导体供应商巨头的法国ST公司,最近推出新的基于触摸芯片的触摸方案,这对于许多开发触摸按键板的程序员来讲是一个好消息。ST公司的触摸方案,采用了两种技术手段:自适应原理和电容直接测控。
SJD160是一款基于自适应原理的电容触摸感应专用芯片。内部包含8位的MCU(Micro Control Unit)、8个输入输出口(I/O)的触摸感应集成电路。SJD160相比于以往的触摸芯片,在抗干扰水平,芯片用户手册详细度,自适应周围环境变化,相近按键互不影响等方面有了较大的提高。现在,以该芯片为主控的产品涉及消费类电子产品、手持式视频播放器、家用电器、车载设备、大型医疗设备等。
1 SJD160触摸芯片的原理
1.1 自适应概述
SJD160电容触摸按键类似于一个自适应振荡器,期间不断进行充电和放电[1]。由图1可知:它的频率能够被测量,并且自适应振荡器有不变的充放电周期。若用手指或者其他带电容物质接触,由于手指本身存在电容,那么电容总和就会变大,相应的介电常数ε将增大,导致周期变大,因为周期和频率成反比,则频率就降低。所以,通过频率的变化就能够捕捉到触摸的动作[2]。
图1 自适应的原理
图2所示的振荡电路中,充电的上下限靠运放的正极来设定,1000 PF的电容的作用是滤波,使之有一稳定的下限。电路内部信号与运放C1的正输入端相连,充电的下限由运放C2的正输入端通过接收外信号来配置,而电压V的负极在两级间进行充放电,它被逻辑电平信号C2OUT驱动。
图2 自适应的振荡电路
作为具有自我激励功能的RC振荡器,电路中感应电压的充电方向由图中的具有锁存功能的运放去改变。
由图3可知,振荡器进行一个充电+放电的周期过程是:先由运放的正输入端配置充电的下上限,充电过程是从下限往上限充电,接着充满后开始从上限往下限放电,完成这两个过程所耗费的时间就是一个充放电的周期。
图3 充放电的周期
在Cs电压比下限低的时候,开始进行充电,当V负极处于下上限之中,那么系统是处于前一状态(充电或放电),当V-充电后高于上限时,系统则开始进行放电[3]。
传感器电极板(符号Cs)和反馈电阻R构成了一个RCs回路,如图4所示。图4(a)为 RCs回路,用时间常数确定电容充放电的速度,即:τ=RCs。图4(b)和图4(c)表示未接触时的时间常数。
图4 RCs电路
当人的手指接触焊盘,因为手指附带着电容,将使电容总和增多,进而使RCs时间常数产生变化。如图5所示:图(b)和图(c)表示当有手指接触时,RCs时间常数变大,振荡器的频率降低,这频率变化将会在单片机程序中被监测到。
图5 变化的RCs时间常数
1.2 SJD160的工作原理
如图6所示,图中SJD160有24个管脚,I/O口占据8个管脚,从KEY0到KEY7,分别连接TS_0到TS_7。外部模拟信号将通过此8个口进入芯片内部经过AD模块转为数字信号进行处理,通过此方法检测有没有存在触摸源靠近或者接触到这8个输入口上。
图6 SJD160硬件连接电路图
利用上述原理就将KEY0到KEY7制作成按键,将信号传入TS_0-TS_7管脚,通过感应外部输入模拟信号的变化来检测有没有手指触摸。
1.3 SJD160芯片的管脚分布与输出
SJD160共有24个管脚,具体管脚型号及功能,如表1所示。
表1 SJD160芯片管脚介绍
图6所示是SJD160的硬件连接电路图,TS0-TS7连接按键板上的触摸按键,P00-P07连接LED指示灯,与TS0-TS7相对应,作用是当手指触摸到按键后,指示灯亮起,例如触摸到TS0,则P00口将被置于低电平,则所连指示灯D1A亮起;当手指离开触摸板,电容值回复默认设定值,触发POO端口回复高电平状态,此时指示灯重新熄灭,给用户的感觉就是触摸哪个按键,哪个按键就被点亮,如图7所示。
图7 指示灯连接图
VC1不接,VC2接电容接地起滤波作用。而信号传输通过P20,P21口,如图8所示。
图8 P20,P21口外接线图
因为电容的改变体现在码值上,当外设通过J2与板子相连后,触摸板所检测到的电容值改变的数据信息将通过P21,P20传递给外设(专门的读码值设备),方便程序员直观的观测。作为自带微控制器的芯片,SJD160在被焊上触摸板前,控制程序已经通过烧录器烧进SJD160中,焊上板子后内部程序将无法再被修改。如果调试触摸板过程中发现bug,则需要重新修改控制程序后再烧进新的SJD160中,焊上后继续调试。本文主要介绍触摸板的工作原理,具体的SJD烧录控制等内容,这里不再详述。
1.4 按键检测扫描
手指触摸在按键板上的时候,电荷经亚力克面板迁移至电容触摸式按键上,而电容触摸式按键又和芯片的管脚相通,因此,通过AD模块的转换,模拟电压信号变成了数字电压信号进入芯片内部被捕捉到,内部电路捕捉到波动的电压,经过计算,给出经历的时间值,再通过预先设置好的算法,判断出是否有按键被按下。整个流程图如图9所示。
图9 SJD160按键检测扫描流程图
2 SJD160的优化方案分析
设计电容式触摸按键时,要先检测按键的电平/电荷量,还包括关联的转换关系等,表示需要先校准系统;然后外界周围环境的改变将影响到电平/电荷的变化,例如干燥环境下的静电和高频电磁的干扰都有可能导致非人为的误操作,且环境温度的改变也将对系统的校准具有不利的影响,同时长时间在表面上的尘埃的富集也是潜在的不利因素,影响精确性和稳定性。综上所得,提高抗干扰水准和自适应是优化触摸按键技术的关键手段。
2.1 提高自适应水平的方法
为了应付外界多变的环境,触摸按键的设计必须具有自适应的能力。判断是否有按键按下的方法是将两次读取的充电时间值相减,再和之前的标准值作比较而实现的,上电后无按键的充电时间值将被作为默认的充电时间值。所以当有手指按下触摸按键板,所测得的充电时间差值与默认值将会有很大不同,以此来判断是否按键板被按下。
为优化自适应能力,给出此方案:无按键充电时间值随着周边环境的变化而变化。在一个连续的充放电系统里,将检测到的无按键状态下充电时间值一直无限逼近真正的无按键充电时间值,就可以实现按键的自适应能力。时间值公式如下:
式中T:默认的无按键充电时间值;T0:上次读取的无按键充电时间值;T1:新读取的无按键充电时间值。
此方法存在一个缺陷:当手指以非常缓慢的速率逐渐靠近按键板的时候,系统可能无法检测出手指的靠近或接触,因为系统适应了这种缓慢的电容变化,那么就无法检测到该触摸方式。但是实际操作中没有用户会走这样极端的操作路线,所以这一缺陷并不会影响系统整个自适应能力。
2.2 优化抗干扰水平的方法
优化抗干扰水平可以从两个方面入手:①软件程序里增加防抖动代码;②硬件设计上优化PCB板得绘制,使抗干扰水平提高[4-7]。
2.2.1 硬件设计优化抗干扰水平
在硬件电路上,由于充电时间较短,只有在硬件电路的绘制上进行改良,增强电容式触摸面板的抗干扰水平。
(1)按键成叉形,第一个叉子接按键,第二个叉子接地线,他们之间互叉却不互连。
(2)键与键中间的空隙要布满地线,如图10所示:这样的好处是使干扰源几乎不能对触摸按键造成干扰。
图10 按键与按键间的设计
(3)绘制PCB走线的时候尽量以直线为主。
(4)触摸按键的大小近似于普通人的手指大小,保证足够的触摸面积。
2.2.2 软件程序优化抗干扰水平
加入防抖动代码程序段到系统程序中,具体方法如下。
(1)只有两次连续计数值都为按下值的时候,系统才认为此时按键被按下。
(2)当计数值减小,如果不是按键按下,需判断是否进行按键计数值的刷新,这样做的目的是防止上文提到的速率较慢地接触按键未被监控到[8]。
3 实例化触摸式按键的优化分析
SJD160虽然是一款专用于触摸按键的芯片,内部集成了处理触摸的模块,但依然需要在开发环境中编写相应程序代码,通过设置合适的灵敏度等参数,来实现SJD160触摸模块的优化功能。
下面将通过程序流程图的形式展示整个触摸按键的工作过程,在此之前已经通过自适应法、防抖动法和软硬件抗干扰法完善了整个系统的稳定性。
3.1 SJD160判定按下设计思路
由图11可知,程序判定手指是否按下,通过以下过程:若芯片从KEY0到KEY7口所检测到的输入值,记为A;和上次的输入值,记为B;相减结果的绝对值大于默认标准值,记为T;即A-B>T,则系统判定出现按键动作,那么接下来立刻进入防抖动程序模块;若判定按键无手指按下的动作,则使用自适应方案。
图11 SJD160判定按下程序设计流程图
触摸式按键的感应强度决定了默认值T的大小,默认值T与感应强度成反比关系。并且T的选择需要参考抗干扰和能鉴别按键动作:能鉴别按键动作是指T不能太大,以保证能够捕捉到按键动作;而抗干扰是指标准值T也不能过小,目的是保证不会因为外界温度,湿度,粉尘的影响而出现系统误识别按键按下的情况。
3.2 SJD160判定松开设计思路
上述思路也被用于判定松开的设计中。由图10可知,假设松开按键的默认值是K,(K的选取规则和T相同)。如果A-B>K,表示系统判定有松开按键动作,最终重新刷新后再退出程序。
图12 SJD160判定松开程序设计流程图
4 结束语
本文对SJD160触摸专用芯片进行了详细的介绍,为了提高电容式触摸按键系统的稳定性,创造性地选用自适应方法来刷新正常状态下的无按键充电时间值,在程序设计上增添防抖动操作,硬件上加强抗干扰水平的PCB电路绘制,为实现触摸按键系统提供了一个新的方法。
经过实践证明,上述方案优化效果颇佳,切实有效地提高了电容式触摸按键板的抗干扰和自适应能力。
[1] TomPerme.Introduction To Capacitive Sensing[EB/OL].([2010-03-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[2] Burke Davison.Capacitive Touch Algorithm Simulation[EB/OL].(2010-04-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[3] Tom Perme.Software Handing for Capacitive Sensing[EB/OL].(2010-04-03).http://www. ST. com/en _ US/technology/m Touch Buttons/index.html.
[4] Marc Mc.Comb.Introductions to m Touch Capacitive Touch Sensing[EB/OL].(2010-03-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[5] Tom Perme.Layout and Physical Design Guidelines for Capacitive Sensing.[EB/OL].(2010-04-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[6] 孙鑫,余安萍.vC++深入详解[M].北京:电子工业出版社,2004.
[7] 石林.带分析功能1对8编程器的开发[D].长春:吉林大学,2007.
[8] Thomas Permer.电容触摸传感的理论框架[J].电子产品世界,2009(8):9-11,15.