新聞中心

        EEPW首頁 > 物聯(lián)網與傳感器 > 設計應用 > 電容觸摸傳感的理論框架

        電容觸摸傳感的理論框架

        ——
        作者:Thomas Perme 微芯科技公司 應用工程師 時間:2009-08-06 來源:電子產品世界 收藏

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

        本文引用地址:http://www.104case.com/article/96947.htm

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

          if (reading < average – trip) {

          Buttons.SENSOR0 = PRESSED;

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

          Buttons.SENSOR0 = UNPRESSED;

          }

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

          復雜解碼方案

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

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

          unsigned long percent;

          percent = average – (reading*16);

          if (percent < 0) {

          percent = 0; // 忽略上升

          } else {

          percent = percent * 1000; // 乘以1000

          percent = percent / average; // 結果使用100.0%的形式

          }

          結果變量percent包含0~1000的值,更具體地說,值的范圍約為0~200(代表20.0%)。結果值保持單個小數位,因為更多小數位并不會提高精度。

          更換先前的“if”語句,產生類似于以下語句的“if”語句:

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

          #define PCT_OFF 30 // <3.0%,關閉

          if (reading < PCT_ON) {

          Buttons.SENSOR0 = PRESSED;

          } else if (reading > PCT_OFF) {

          Buttons.SENSOR0 = UNPRESSED;

          }

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



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 突泉县| 诏安县| 红河县| 柏乡县| 康平县| 北辰区| 综艺| 分宜县| 蒲城县| 建平县| 屏东县| 休宁县| 济源市| 安宁市| 聂拉木县| 洛川县| 田东县| 南岸区| 福鼎市| 昌邑市| 友谊县| 安达市| 曲靖市| 长沙县| 金湖县| 岗巴县| 昭平县| 交口县| 库车县| 乐平市| 河间市| 双峰县| 呼和浩特市| 兴城市| 象州县| 宜良县| 普格县| 卢龙县| 博湖县| 高密市| 玉环县|