タッチセンサモジュールを使ってみる(Arduino)

今回は、タッチセンサモジュールをスイッチとして、
Arduino UNO本体のLED を点灯させてみます。

使用するタッチセンサモジュールは、
・ダーリントントランジスタ (KSP13-F51) を使用したもの
・静電容量式を使用したもの
の2種類です。

タッチセンサモジュール
タッチセンサモジュール

ダーリントントランジスタを使用したものは、
ベース端子をタッチすることで、
ベースに非常に小さなベース電流が流れ、
これによりコレクタに大きな電流がれる仕組みを
利用したものです。

タッチセンサモジュール [KY036]
 (電圧コンパレータLM393使用)
   aitendo
    https://www.aitendo.com/product/12440
    ¥295-(大陸:\80-程度)

静電容量式タッチモジュールを使用したものは、
一定の静電容量を保持したタッチ面にタッチすることで、
静電容量の変化が生じ、
この静電容量が変化(減少)したことを感知する
仕組みを利用したものです。

静電容量式タッチモジュール(1ch) [MSW223-R]
 (静電容量式タッチコントローラチップTTP223使用)
   aitendo
    https://www.aitendo.com/product/16328
    1個 ¥195-(大陸:2個\54-程度)

では、さっそく使用してみます。
先ずは、ダーリントントランジスタ使用のものからです。

回路は図の通りです。
   この回路図の作図には fritzing を利用させて頂いております。
   https://fritzing.org/home/

回路図1
回路図1

デジタル端子13番のLEDの点灯に加え、
このセンサモジュールには、アナログ出力端子があるので、
シリアルモニタにこの出力データを電圧値変換したものを
表示してみます。

スケッチです。

// タッチセンサモジュール(LM393)

// 使用ポート設定
int ain_pin = A0; // タッチセンサアナログデータ入力用
int din_pin = 9; // タッチセンサデジタルデータ入力用
int led_pin = 13;  // LED点灯用

void setup() {
  // put your setup code here, to run once:
  //シリアルモニタ設定(9600bps)
  Serial.begin (9600);
  // ピンモード設定
  pinMode(din_pin, INPUT);  // 9番ピンを入力モードに設定
  pinMode(led_pin, OUTPUT); // 13番ピンを出力モードに指定
}

void loop() {
  // put your main code here, to run repeatedly:
  // 変数宣言
  int a0_data;    // アナログ入力データ用   
  int d9_data;    // デジタル入力データ用
  float val_data; // アナログデータ電圧値変換用

  // タッチセンサ情報受信
  a0_data = analogRead(ain_pin);    // アナログデータ
  d9_data = digitalRead(din_pin);   // デジタル入力データ用

  // アナログデータを電圧値に変換とシリアルモニタへ出力
  val_data = (float)a0_data / 1024.0f * 5.0f;
  Serial.println (val_data, 4);
  
  // デジタル情報によるLEDの点灯・消灯を設定
  if(d9_data == HIGH){
    digitalWrite(led_pin, HIGH); // LED点灯
    delay(500);   // 500ms待機
  } else { 
    digitalWrite(led_pin, LOW);  // LED消灯
 }  

   delay(10);   // 10ms待機
}

書き込みをして実行してみます。

ダーリントントランジスタ利用の実行確認
ダーリントントランジスタ利用の実行確認
シリアルモニタ画面
シリアルモニタ画面

シリアルモニタを見てみると、
アナログ信号では、タッチしていない時は、5V程度、
タッチした時は、1V程度の電圧になるようです。
デジタル信号では、スケッチから、
タッチしていない時は、LOW、
タッチした時は、HIGHが出力されています。

続いて、
静電容量式タッチセンサモジュールです。

回路は図の通りです。

回路図2
回路図2

こちらは、タッチした時に、
デジタル端子13番のLEDが点灯するものです。

スケッチです。

// タッチセンサモジュール(TTP223)

// 使用ポート設定
int din_pin = 9; // タッチセンサデータ入力用
int led_pin = 13;  // LED点灯用

void setup() {
  // put your setup code here, to run once:
  // ピンモード設定
  pinMode(din_pin, INPUT);  // 9番ピンを入力モードに設定
  pinMode(led_pin, OUTPUT); // 13番ピンを出力モードに指定
}

void loop() {
  // put your main code here, to run repeatedly:
 // 変数宣言
  int d9_data;    // デジタル入力データ用

  // タッチセンサ情報受信
  d9_data = digitalRead(din_pin);

  // デジタル情報によるLEDの点灯・消灯を設定
  if(d9_data == HIGH){
    digitalWrite(led_pin, HIGH); // LED点灯
  } else { 
    digitalWrite(led_pin, LOW);  // LED消灯
 }  

  delay(10);   // 10ms待機
}

書き込みをして実行してみます。

静電容量式タッチセンサの実行確認
静電容量式タッチセンサの実行確認

タッチすると、LEDが点灯します。
静電容量式なので、
完全にタッチしなくても、反応しますね。

タッチセンサモジュールは、用途よりますが、
タッチによる、ON、OFF 感知だけなら、
静電容量式タッチセンサモジュールが
使いやすいように感じます。