使用普通I/O口实现电容触摸感应方案
2009-09-24孙树印
孙树印
触摸感应解决方案受到越来越多的IC设计厂家的关注,不断有新的技术和IC面世,国内的公司也纷纷上马类似方案。但是目前所有的触摸解决方案都使用专用IC,因而开发成本高,难度大,而本文介绍的基于RC充电检测(RC Acquisition)的方案可以在任何MCU上实现,是触摸感应技术领域革命性的突破。
RC充电检测基本原理
RC充电检测基本原理是对使用如PCB的电极式电容的充电放电时间进行测量,通过比较在人体接触时产生的微小变化来检测是否有“按下”动作产生,可选用于任何单独或多按键、滚轮、滑条。
如图1(a)所示,在RC网络施加周期性充电电压Vin,测量Vout会得到如(b)的时序,通过检测充电开始到Vout到达某一阀值的时间t的变化,就可以判断出是否有人体接触。
PCB设计注意事项
不论是单按键、多按键、滑条、滚轮设计,还是混合应用。都可以使用一个I/O进行充电,既可减少资源应用,又可以因使用同一定时标准从而简化软件设计。
用于传递按键信号的线一定要足够细,以降低线路造成的电容的影响,信号线间距为两倍线宽,不同组的信号间距应保证3—5mm。同组的信号线长度应尽量保持一致,不同组的信号线不可以交叉。独立按键的形状可设计为圆、三角或正多边形,尺寸以10~15mm为宜。滑条的形状可,以是长方形或锯齿形,滚轮可以设计为幅射的扇形或环形,也可以是交错的齿轮,每个部分之间应保持0.2~0.5mm。按键PCB层不应该覆铜,否则会影响感觉的灵敏度,反面应覆铜以减少干扰。
LED经常在感应设计中用来指示按键是否有效按下,注意按键的地或电源线尽量短,线路较长时宜增加1nF的滤波电容。
另外,建议电源电路使用线性电源而不是开关电源,这对提高感应灵敏度很重要。
软件设计流程与实现
ST公司设计了完整的基于RC充电检测的电容式感应触摸方案的完整设计,包括PCB和完整的源程序。以及基于STM8s的标准触摸感应库(Touch Sense Library,TSL)和应用API接口,采用易于移植的c设计,用户可以方便地应用于其他任何MCU系统中。因为RC充电理论涉及的专利已经对公众开放,所以完全没有专利的限制。
ST的TSL内容包括滤波和校正算法,环境变化系统,自动根据环境温度、湿度、电压、灰尘等因素调整配置参数。提供了包括单通道和多通道的感应设计API函数,层次驱动的项目工程。基于STM8Sxxx-TS1-EVAL演示板的软件在STVD开发平台下设计,使用COSMIC-C语言编译器,包括完整的源代码。
对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。这种情况通常要求对按键使用一个独立的MCU,以保证不被其他任务中断。为了提高系统的可靠性和稳定性,改进的测量方法是对Vout进行高和低两个门限进行测量。
使用STM8s的触摸感应方案与Cypress公司的Capsense触摸按键的效果进行了对比,结果证明二者在灵敏度与可靠性方面不相上下,在水浸、增加覆盖物情况下本方案适应性更佳。