電容觸摸傳感的理論框架
對于百分比按下檢測,將繼續使用前面討論的求均值方案。但是,讀數變量將變換為如下形式:
本文引用地址:http://www.104case.com/article/96399.htmunsigned long percent;
percent = average – (reading*16);
if (percent < 0) {
percent = 0; // 忽略電容上升
} else {
percent = percent * 1000; // 乘以1000
percent = percent / average; // 結果使用100.0%的形式
}
結果變量percent包含0至1,000的值,更具體地說,值的范圍約為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;
}
下一個復雜解碼方案稱為“多鍵表決”。如前面所討論,傳感器不僅會與手指和周圍的地產生耦合,而且會相互耦合。因此,觸摸一個傳感器會影響另一個傳感器,但影響程度通常會低于其他意外激勵。如果即使影響程度較低,影響仍足以觸發按下狀態,會發生什么情況?
開發多鍵表決系統可以幫助解決該問題,以及與小鍵盤污染關聯的其他問題。多鍵表決系統會選擇按下后受影響最大的按鍵,代價是多次按下動作只能產生單個按鍵響應。例如,如果觸摸會影響兩個按鍵,但手指按下的按鍵受到的影響最大,該算法將選擇受影響最大的按鍵。
該算法必須獲取來自所有可用傳感器的數據。舉例來說,假定使用了4個傳感器。算法還是使用百分比按下檢測方法,因為每個傳感器的讀數可能會稍有不同,采用相對與原始值的偏差可以起到一些幫助。系統必須掃描全部4個傳感器,并在掃描之后執行以下步驟:
首先,掃描所有傳感器
在每次掃描期間,記錄每個傳感器的受影響百分比
根據受影響程度進行排序
基于步驟3,對索引進行排序
位于數組單元0的傳感器的受影響程度最高
評論