新聞中心

電容觸摸傳感的理論框架

——
作者:Thomas Perme 微芯科技公司 應(yīng)用工程師 時(shí)間:2009-08-06 來源:電子產(chǎn)品世界 收藏

  簡單解碼:按鍵是否被按下

本文引用地址:http://m.butianyuan.cn/article/96947.htm

  為了確定按鍵是否被按下,需要先確定滑動平均值。確定平均值之后,根據(jù)測量值相對于平均值的偏差可以指示按鍵是否被按下。對于我們的系統(tǒng),讀數(shù)下降表示按鍵按下。因?yàn)樯婕暗揭恍┉h(huán)境效應(yīng)和其他因素(例如噪聲),所以必須設(shè)置一定的容限。但是,該系統(tǒng)未提供遲滯值,若讀數(shù)在均值與判決門限值之差附近上下變化,就會出現(xiàn)系統(tǒng)在判定按下與未按下之間來回振蕩這一糟糕的情形。為了避免這一點(diǎn),需要包含遲滯值:

  if (reading < average – trip) {

  Buttons.SENSOR0 = PRESSED;

  } else if (reading > average – trip + hyst) {

  Buttons.SENSOR0 = UNPRESSED;

  }

  以上代碼在按鈕釋放中增添了遲滯值,使按鈕不會產(chǎn)生振動。這也為開關(guān)構(gòu)造了最低程度的消抖功能。機(jī)械按鈕會在0-VDD之間來回抖動。按鈕不會產(chǎn)生該問題;但是,通過增添遲滯值,按鈕按下的操作與原來無異,只是加強(qiáng)了對按鈕釋放的判斷。這可以產(chǎn)生最低程度的消抖效果,因?yàn)閱未伟聪氯匀豢梢杂|發(fā)按鍵。要進(jìn)一步增強(qiáng)消抖,可以要求連續(xù)幾次的讀數(shù)均有效,才表示按鈕確實(shí)按下,然后向應(yīng)用程序指示按鈕被按下。這樣可以防止虛假的低讀數(shù)影響系統(tǒng)。

  復(fù)雜解碼方案

  上面用于確定按鈕是否被按下的解碼方案是相當(dāng)簡單的。

  對于百分比按下檢測,將繼續(xù)使用前面討論的求均值方案。但是,讀數(shù)變量將變換為如下形式:

  unsigned long percent;

  percent = average – (reading*16);

  if (percent < 0) {

  percent = 0; // 忽略上升

  } else {

  percent = percent * 1000; // 乘以1000

  percent = percent / average; // 結(jié)果使用100.0%的形式

  }

  結(jié)果變量percent包含0~1000的值,更具體地說,值的范圍約為0~200(代表20.0%)。結(jié)果值保持單個小數(shù)位,因?yàn)楦嘈?shù)位并不會提高精度。

  更換先前的“if”語句,產(chǎn)生類似于以下語句的“if”語句:

  #define PCT_ON 50 // >5.0%,打開

  #define PCT_OFF 30 // <3.0%,關(guān)閉

  if (reading < PCT_ON) {

  Buttons.SENSOR0 = PRESSED;

  } else if (reading > PCT_OFF) {

  Buttons.SENSOR0 = UNPRESSED;

  }

  下一個復(fù)雜解碼方案稱為“多鍵表決”。如前面所討論,不僅會與手指和周圍的地產(chǎn)生耦合,而且會相互耦合。因此,觸摸一個會影響另一個傳感器,但影響程度通常會低于其他意外激勵。如果即使影響程度較低,影響仍足以觸發(fā)按下狀態(tài),會發(fā)生什么情況?



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉