photo 1

前言

電容式開關與電容偵測從很久以前的夜燈就已經被應用,近幾年更是成為許多商品、裝置的人機介面標配。

其實從近四年來觀察互動藝術作品中看到 Speaking Tree、SoniColumn 等等作品後一直想要實驗電容觸控的東西,但始終沒去碰。一晃就四年(也太久了),正巧最近 Project 也會用到索性小小做了一下實驗記錄在這。

電容感應相對於一般壓力感測器和短距離感測器好用,原因是他像壓力感測器需要施力也不像距離感測器會遭受外在光源、物理特性所影響,在價位上又非常便宜 (此篇範例甚至只花了不到 10 元就能完成),另外,他也能在感應範圍內添加透明、不透明、不導電之物質 (木、塑膠、陶瓷等等),而且他對人體的感應可以非常敏銳。

因此,以下稍微簡介如何快速製作能夠偵測電容感應的單元。

 

製作方式

之前為了不時之需有陸續蒐集如何用 Arduino 偵測電容變化,常常看到需要額外的控制器(ex. MPR121)等等來實作,雖然MPR121和他的breakout都有了,但還是想以比較簡易的方法實行,因此在Arduino官方網站上也找到如何自製簡易的電容感應裝置,該文章寫得非常清楚,因此這篇除了記錄如何快速上手外,也寫下一些經驗與建議。

這邊製作的偵測電容感應量的原理大概是從 Arduino 其中一個 pin 傳送一個新的狀態到另外一個 pin 接收,兩者之間用一個導體 (線圈、金屬片都可,本篇範例使用銅箔膠帶)。並在人體或物體靠近此電容感應單元時,計算這一來一往的 cost 與費時。

透過 CapSense 製作一個電容感應單位很容易,只要讓每個電容感應單位都連接到兩個 Arduino pin,一個 pin 負責傳另外一個負責接收。負責傳的 pin 必須與較大的電阻連接約為 100K 到 50M 之間。越大的電阻值,會讓這個電容感應單位越敏銳,但相對的反應速度也比較慢。根據 Arduino 官方網站所述,使用 1M (或更少) 的電阻較能剛好偵測到人體"觸碰"到線圈時恰巧觸發的反應時間。而若使用 10M 電阻則能在約靠近感應單元 10 公分左右便能觸發,而 40M 電阻則能將觸發距離拉長至 30-60 公分不等,因此比較適用於在感應單元外再隔著其他非導電物質。

這邊也提醒需要製作的朋友,在製作多個感應單元時,可以讓多個感應單元共用同一個負責傳遞的 pin,但他們必須各自有獨立的接受 pin,以接收每個線圈的電容變化。

另外也要特別注意,為了比較好的感應效果,在感應單元獨立運作時,必須確保有真正接地 (Arduino 接個人電腦則可忽略,因為電腦的電源都有接地。但僅用電池驅動 Arduino 或是用帶著電池的筆電驅動 Arduino 則要特別注意)。另外,官網提及,在接受 pin 與 ground 間放置一個 100 pF 電阻也能有效增加穩定性。

 

筆者的實驗如下:

photo 1  

 

或可參考國外的實驗

 

程式範例

以筆者上面實驗的程式來分享

#include

int ledpin = 12;
CapSense cs_4_2 = CapSense(4,2);

void setup()
{
pinMode(ledpin, OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
}

void loop()
{
long total1 = cs_4_2.capSense(30);
if(total1>99) digitalWrite(ledpin, HIGH); else digitalWrite(12, LOW);
delay(10);
}

 

資料來源

http://arduino.cc/playground/Main/CapacitiveSensor?from=Main.CapSense

http://www.pjrc.com/teensy/td_libs_CapacitiveSensor.html

 

 

 

 

 

 

 

arrow
arrow

    DK 發表在 痞客邦 留言(2) 人氣()