新闻中心

EEPW首页>物联网与传感器>设计应用> 电容触摸传感的理论框架

电容触摸传感的理论框架

——
作者:Thomas Perme 微芯科技公司 应用工程师 时间:2009-07-20 来源:电子产品世界 收藏

简单解码:按键是否被按下?

本文引用地址://m.amcfsurvey.com/article/96399.htm

为了确定按键是否被按下,需要先确定滑动平均值。确定平均值之后,根据测量值相对于平均值的偏差可以指示按键是否被按下。对于我们的系统,读数下降表示按键按下。因为涉及到一些环境效应和其他因素(例如噪声),所以必须设置一定的容限。使用4个变量来确定按键是否被按下:

unsigned char reading; //读数
unsigned char average; //平均值
unsigned char trip; //门限值
unsigned char hyst; // 传感器迟滞值

检测按下的最简单方式如下:

if (reading < average – trip) {
Buttons.SENSOR0 = PRESSED;
} else {
Buttons.SENSOR0 = UNPRESSED;
}

但是,该系统未提供迟滞值,若读数在均值与判决门限值之差附近上下变化,就会出现系统在判定按下与未按下之间来回振荡这一糟糕的情形。为了避免这一点,需要包含迟滞值:

if (reading < average – trip) {
Buttons.SENSOR0 = PRESSED;
} else if (reading > average – trip + hyst) {
Buttons.SENSOR0 = UNPRESSED;
}

以上代码在按钮释放中增添了迟滞值,使按钮不会产生振动。这也为电容开关构造了最低程度的消抖功能。机械按钮会在0-VDD之间来回抖动。电容按钮不会产生该问题;但是,通过增添迟滞值,按钮按下的操作与原来无异,只是加强了对按钮释放的判断。这可以产生最低程度的消抖效果,因为单次按下仍然可以触发按键。要进一步增强消抖,可以要求连续几次的传感器读数均有效,才表示按钮确实按下,然后向应用程序指示按钮被按下。这样可以防止虚假的低读数影响系统。

复杂解码方案

上面用于确定按钮是否被按下的解码方案是相当简单的。在本文的以下部分中,将使用较复杂的方案。它们包括基于百分比的检测、多键表决,以及计算量很少的百分比按下检测。此外,还将讨论何时使用简单方案,何时使用较复杂的方案。


在前面的简单方案中,门限值变量trip是一个低于平均值的绝对值。更好的做法是采用减法求一个相对值,例如相对于标称值的百分比偏差。为了实现这一点,必须执行更多的计算,这就要求系统作出折衷。使用绝对门限值需要更多地了解系统的工作,而使用基于百分比的系统可适应许多处于合理限度内的系统。手指按下产生的电容变化通常介于1%至20%这一可检测范围之间。如果手指按下产生的读数变化小于1%,系统会遇到错误。触摸裸露金属传感器产生的读数会高于20%,但它并不常用。如果系统以这种方式工作,则可以采用简单开关算法。



评论


相关推荐

技术专区

关闭