作るもの
今回は、Arduinoを使って静電容量タッチセンサーを作ります。
静電容量センサは、ATMやタッチパッドなどで使用されています。
簡易的なセンサ作成を通して仕組みを理解していきましょう。
今回の仕様は、センサに触れるとLEDが点灯するように設計します。
センサを使うことにより、スイッチを使わずにLEDを制御することができます。
使用するもの
- PC
- Arduino R3
- CUBケーブル
- ジャンパ線
- 330Ω抵抗
- 10MΩ抵抗(10MΩがなければ、直列に接続して作成)
- LED
- ブレッドボード
- 5円玉(電気を通すものならなんでも可)
回路図
回路図は下の画像のように配線しました。
5円玉は、ジャンパ線にテープを張り付けて接続するといいと思います。
私はテープが見当たらなかったので断念(´;ω;`)
↓1MΩの抵抗がびっしり(笑)


プログラム
ライブラリを「CapacitiveSensor.h」を入れる必要があります。
#include <CapacitiveSensor.h>
const int LED_PIN = 7 ; //LEDピンを7番に設定
CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2); //静電容量センサーに4番、2番ピンを使うことを宣言
void setup() {
pinMode(LED_PIN,OUTPUT); //LED_PINを出力に設定
Serial.begin(9600);//シリアル通信を9600bpsでする
}
void loop() {
long cs=cs_4_2.capacitiveSensor(30); //静電量量センサーの出力
//long 値 = オブジェクト.capacitiveSensor(サンプリング回数);
//cs_4_2 → CapacitiveSensor(4, 2); で作成したオブジェクト
//capacitiveSensor(30) → 静電容量の測定を30回繰り返し、その合計値を返す
//long cs → 取得した測定結果を変数 cs に保存
Serial.println(cs); //読み取った静電容量を表示
//読み取った静電容量の値が5000以上だったらLEDを点灯。値は実測した値に応じて入力
if(cs>=5000){
digitalWrite(LED_PIN,HIGH);
}else{
digitalWrite(LED_PIN,LOW);
}
delay(100); //100ms待つ
}
動作の概要
下記が動作のフローチャートです。
- 開始 → 初期設定(LEDピン設定、シリアル通信開始)
- ループ開始
- 静電容量センサーの値を取得
- 取得した値をシリアル出力
- 値が5000以上か?
- YES → LED ON
- NO → LED OFF
- 100ms待機
- ループの最初に戻る
動作確認
5円玉に触れると無事光りました☆

Arduinoのシリアルモニタで、読み取った値を確認しましょう。
手で5円玉を触れると値が大きくなっています。

原理
Arduino の CapacitiveSensor ライブラリは、RC(抵抗-コンデンサ)回路の充電時間を測定 することで、静電容量を間接的に計測 しています。
🔹 静電容量を読み取る仕組み
- 送信ピン(TXピン)から HIGH を出力(電圧をかける)
- 抵抗(通常 1MΩ 以上)を通じて、受信ピン(RXピン)へ電荷を送る
- 受信ピンの電圧が HIGH(しきい値)に達するまでの時間を測定
- 時間が長いほど、静電容量が大きいと判断
- この時間の合計値を「静電容量の相対的な値」として出力
🔹 具体的な動作
1️⃣ 抵抗と人体(または対象物)がコンデンサを形成
- 人体や金属プレートは、周囲との間で静電容量を持つ
- 送信ピンと受信ピンの間に「静電容量」が存在
- 抵抗を通じて、送信ピンから受信ピンへ電荷が流れる
2️⃣ RC回路の充電時間を測定
この 時間の長さ を Arduino で測定し、「静電容量の相対値」として出力
静電容量 C
と 抵抗 R
の組み合わせは RC時定数(τ = R × C) を持つ
静電容量 C
が大きくなると、受信ピンの電圧が HIGH になるまでの時間が長くなる
余談
動作中の電圧の波形観測を試みました。電圧プローブを接続したら、センサに触れていないのにも関わらずLEDが点灯しました!?
これは、オシロスコープに抵抗成分とコンデンサの成分が含まれているからです。
オシロスコープ内の静電容量に反応してしまっていると、、、、
私の愛用している、オシロスコープSDS1104 の仕様をしらべると1MΩ、10pFと記載されていました。
解析などするときは、オシロスコープの静電容量、抵抗を考慮して解析を行うと、実測と理論値との乖離が少なくなるのではないでしょうか。

まとめ
静電容量のセンサを作成することができました。
抵抗の値によって、センサの感度を調整できるので調整が必要そうです。
RC回路の時定数の測定を今度実験してみたいですね。
コメント