电容式触摸按键判码方法研究

时间:2013-06-26

  摘要:本文介绍了如何利用简单的电容触摸按键电路配合MCU软件处理实现准确的键码判码.针对电容按键信号的高灵敏度和易受干扰以及容易随环境变化产生漂移的特点,重点从软件方面分析了如何实现去除按键输入信号干扰的滤波算法以及有效地解决了输入按键信号的漂移问题.该方法的硬件电路非常简单,由于MCU固件容量不大.占用处理器资源少和采用分时处理手段,用于电路管理和控制的MCU可以同时用于按键信号处理,有利于提高产品的性价比.

  1.引言

  触摸按键具有美观时尚.使用寿命长和抗潮湿灰尘等优点,是传统机械式按键的理想升级换代选择.但是触摸按键也有信号稳定性较差和易受干扰的弱点,给设计工作带来较大的难度.本文针对这些问题提出了有效.易于实现的触摸按键处理方法,该方法硬件电路简单.软件易于实现,具有较大的实用价值.由于软件占用处理器资源少和采用分时处理,一般利用产品原来MCU就可以完成按键的采集和处理运算.目前该技术已经成功地应用于广州仕创电子有限公司多款OEM音频数码产品.

  2.电容触摸按键简介

  电容式触摸感应按键的基本原理就是一个张弛振荡器.如果用手指触摸接触开关,就会增加电容器的介电常数,频率就会相应减少.

  测量周期的变化,就可以侦测触摸动作.

  3.电容触摸按键信号采集和处理工作原理

  按键的输入信号处理的电路构成有两种方式.

  种是利用专用的触摸键处理集成电路芯片和相应的外围电路构成,这种方法的特点是方便使用,设计者不会有什么技术难度;缺点是电路成本高,应用的灵活性要差一点.

  如图1所示,电路由专用电路芯片和少量的外围电路构成.感应电容CS.外围电阻和芯片内置运放组成张弛振荡器,产生的震荡脉冲送入信号处理单元,处理结果由Pout端子输出.

  本文介绍的触摸按键电路结构如图2所示.它是由SONIX单片机SN82501B以及有关的周边电路组成,MCU工作于内部震荡时钟和内部上电复位方式,感应输入信号端来自于用户操作界面,比较器LM339和其输入端的阻容器件构成电容C2的充电电压比较电路,R1和R2的分压比决定了比较器的参考点电压,R3.C2组成充电回路.工作过程如下:

  当P2.1被置为输出端且为低电平时,对C2放电,LM339输出为低电平;当P2.1被置为髙阻态时,5V电源通过R3对C2充电,当C2的充电电压大于LM339的反向端电压时,LM338的输出端出现正跳变信号,该信号送到单片机输入端P2.2.如果触摸按键有操作的时候,感应的电荷会影响C2的充电过程,使得充电时间加长.

  所以可以根据C2的充电时间长短来判断按键.

  从应用角度出发去掉电压比较器,只保留充电回路,上述电路还可以简化为如图3所示.此时P2.1既作为放电接地端又作为充电翻转检测端,对于SN82501B而言,翻转临界电平为输入施密特触发器的正向翻转点0.8VDD.

  对于充电电容C1的选择原则考虑,如果C1太小,会造成较大的输入信号干扰,也会降低输入信号的分辨率;如果C1太大会降低按键检测的灵敏度.

  4.MCU程序代码设计

  上面给出的两种基于MCU的电路结构而言,它们的信号处理代码工作原理基本一样,触摸按键的检测效果好坏很大程度上取决于MCU程序代码的算法.现在以图3电路为例对触摸按键处理程序代码设计进行详细分析.

  4.1 程序有关说明

  因为按键处理程序可能只是MCU整个程序的一部分,为保证MCU资源的充分利用,按键处理程序应该采用分时工作方式.每个主循环周期内需要把键处理时间控制在大约200uS为好.程序结构可分为上电初始化校准.充电时间检测.充电时间滤波和确认按键.键释放辞职回环特性处理.动态基准值校准几个部分.

  考虑到充电过程的时间大约只有20微妙左右,信号采样周期可以选择在1ms和2ms之间,为保证按键的灵敏度,按键的确认判断处理时间要限制在100ms以内.

  为保证对充电时间检测,采用查询方式来判断检测端的电平翻转,而且在此期间要关闭定时中断.这样可以把时间检测控制在大约1个指令周期,此时SN82501B工作在16MHz内部RC震荡时钟和1/4分频方式,其基本指令周期是0.25uS,所以在未按键情况下充电时间检测分辨率约为1/80.

  4.2 检测程序结构

  键输入信号采集和处理如图6所示.P2.1设置为输入时刻是充电的起始点,采用先进后出数据队列FIFO作为信号输入缓冲区,为便于求数据队列的平均值的除法运算,FIFO的长度取i=2的n次方,n可取3或4.采用这种滑的窗口采样的好处在于每采样都以窗口的数据为基础计算出一个平均值,可以保证取样数据的时间间隔较小,但注意i不可取太大否则会降低按键的灵敏度.图4是先进后出数据队列,图5是迟滞回环曲线.

  图6有关符号符号说明:

  Dav--数据队列数值的算术平均值

  C--充电时间计数值

  Fdn--键按下标志

  Dt--迟滞回线上阈值点

  Df--迟滞回线下阈值点

  Ct--键按下确认比较值

  Cf--键释放确认比较值

  4.3 按键基准值自动调整

  和传统机械式按键不同,环境条件变化的影响会影响电容触摸按键的检测信号,如环境湿度.温度变化对充电电容值的影响,另外操作界面形状和大小等都会影响检测的充放电过程.

  所谓按键基准值自动调整,是指在该电路运行时根据按键的有效按下和释放状态来正确校准键识别阈值Ct和Cf.解决该问题的思路是,电路工作过程中定时对按键释放和按下进行稳定性判断,一旦按键处于稳定按下或释放状态并且连续保持一定时间,就可以获得对应信号基准值.在此基础上取一定的偏移量就可以得到校正后的键识别阈值Ct和Cf,如取10%基准值偏移计算:

  Ct向下移动10%:Ct=Djdn×90%

  Cf向上移动10%:Cf=Djup×110%

  图7有关符号符号说明:

  Sup--键释放状态输入信号累加器(2个字节)

  Sdn--键按下状态输入信号累加器(2个字节)

  Cnt1--键释放状态输入信号检测计数器

  Cnt2--键状按下态输入信号检测计数器

  K1--键释放状态输入信号检测次数

  K2--键状按下态输入信号检测次数

  Kjup--当前键释放基准值

  Kjdn--当前键按下基准值

  δup--键释放基准误差设定δdn--键按下基准误差设定

  对于按键基准值的检测可分为键释放和按下两种情况,下面分别讨论.

  键释放状态下,考虑到基准值的变化较为缓慢,信号取样周期可适当加长.比如可以取30分钟,取样次数Cnt1为256,则校准时间为125分钟.由于取样累加器为双字节,这样256次累加的平均值就位于该累加器的高字节,极大地简化了计算.

  考虑到一般情况下键按下的时间不长,则每按下键取样键值,而不是按照时间间隔取样.当按键次数达到预定值K2时,就对累加数Sdn求平均值Djdn,作为键按下基准Kdn的修正参考值.

  当检测到的键按下或释放基准值和当前基准值之差较大时,可用检测到的基准值替换为当前基准值.δup和δdn的取值可取为前基准值的5%以下为好.

  5.结束语

  本文较为全面地介绍了触摸按键的硬件检测电路和相应的信号处理方法.特别是采用按键自动调整方法后,有效地解决了产品批量生产过程中电路硬件和机械部件的一致性问题.

  该方案对电容的充放电及对电容的电压检测都用MCU的同一个I/O端口,极大地简化了电路硬件,同时由于软件处理方面没有太复杂的数学运算,键处理只占用较少的MCU软件资源.相对于一般的专用触摸按键处理集成电路芯片方案具有更高的性价比和应用灵活性.

上一篇:UPS(配置在线式应急电源)电源工作原理和维护
下一篇:实验室电路之多通道热电偶测量解决方案

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料