Arduino 入門
Lesson 39
【タッチセンサ その1】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
本記事はLesson 39 【タッチセンサ その1】です。
本Lessonで使用するタッチセンサは「金属タッチセンサ」「人体タッチセンサ」「接触センサ」などともよばれているようです。
人体、金属が触れたことを検知するセンサです。
2回路入り低動作電圧低オフセット電圧コンパレータLM393を使用したタッチセンサモジュール。
センサ部はダーリントントランジスタ、型番:KSP13。
上記の回路を組み合わせて実装したセンサモジュールとなります。
「KY-036」がモジュール型番。
本Lessonで使用するタッチセンサは以下が同等品となります。
※プライム対応品を掲載。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「タッチセンサモジュール」動作は単純。
接触するとパルス波形が出力され実装されたLEDが光るというもの。
回路に関しては、電子回路の知識がすこしばかり必要・・・。
ダーリントン接続されたトランジスタ(KSP13)のベース(B)に指で触れる。
指で触れることで、ベース電流IBが流れる。
ベース電流IBが流れたときのコレクタ(C)の電圧レベルをLM393でコンパレートすることでLEDがONする仕組みなっています。
感度は実装されている「多回転半固定ボリューム 3296W 100kΩ」で調整。
トランジスタとコンパレータIC、LED、抵抗、半固定ボリュームからなるセンサモジュールです。
タッチしてLEDを光らせたいだけであれば、ここまでする必要もなく。
トランジスタ(NPN)、抵抗、LEDだけで接触を感知するセンサは作ることができます。
理解を深めるために、次回以降のLessonで作ってみたいと思います。
Lesson 39 目標
本Lessonの目標は以下です。
2.接触を検知するスケッチを描く
3.タッチセンサで遊ぶ
いつものように、遊ぶことが重要です。
今回のセンサも動作は単純。
ただし動作の理屈を理解するためには電子回路の知識が少し必要・・・。
回路がわからなくても遊べる、使える、作れるのがArduino の良いところ。
世の中見渡せば、タッチセンサ色々なところに使われていますよね。
方式は色々ありますがタッチして電気をつけたり。
100円ショップでうっていたりします。
このセンサ方式ではなくても、色々なものをタッチセンサにできます。
Lesson 35の光遮断センサ、Lesson 22のフォトレジスタなどなど。
他のセンサも使い方を工夫すれば、タッチセンサのような動作をさせられます。
色々考えてみても面白いかもしれません。
準備
ではLessonの準備に取り掛かりましょう。
部品は「タッチセンサモジュール」のみ。
ただし、動作の見た目を分かり易くするために自作のLチカも使います。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - メタルタッチセンサ
- 330Ω 1本
※330ΩはLEDを使用したい場合必要 - M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「タッチセンサモジュール」について説明していきます。
タッチセンサモジュール 実物写真
下の写真がタッチセンサモジュールの実物写真です。
本Lessonで使用するものは、回路が基板実装されたもの。
タッチセンサモジュール 回路図
タッチセンサモジュールの回路図を示します。
ダーリントントラジスタ(KSP13)、電圧コンパレータIC(LM393)が実装されたモジュールの回路図となります。
今回は、電子回路の知識が少し必要になるため興味がない場合はすっ飛ばしてください。
回路図はテスタを使って部品の接続を1つ1つ確認したのでおそらく合っているはす・・・。
- VCC Arduinoの5Vに接続
- GND ArduinoのGNDに接続
- D0 Arduinoのデジタル入力ピンへ接続(使わない場合接続不要)
- A0 Arduinoのアナログ入力ピンへ接続(使わない場合接続不要)
本LessonではD0、A0を以下の用途に使います。
- D0:Lチカ(外付けLEDの点灯)
- A0:U1.1のコンパレータ入力のレベル確認
簡単に回路動作を説明すると以下。
- コンパレータのVref電圧はR6、R2の抵抗でVCC/2となる
- Q1のベースに触れることで、矢印の方向に電流が流れる
- U1.1のコンパレータの入力電圧がVrefよりも下がることでコンパレータ出力はH
- U1.2のコンパレータ入力がHのため出力はL
- L2のLEDが点灯(触れたことを検知することがわかる)
VR1の半固定ボリュームの100kΩはコンパレータ入力のプルアップと感度調整のために存在します。
Q1はダーリントン接続されたトンジスタで大きなhFEを得るための接続です。
小さな電流で大きな電流を制御するための回路と思ってください。
「ダーリントン接続」で検索すると色々とでてきますので興味があるかたは調べてみてください。
タッチセンサ 仕様
センサモジュール自体に仕様という仕様は特にないです。
詳細な特性を知りたい場合はKSP13、LM393の仕様をそれぞれ個別に確認してください。
「KSP13」「LM393」で検索するとそれぞれ調べることができます。
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、振動センサを動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
タッチセンサが実装されたモジュール端子を接続していきます。
Arduinoはデジタル入力ピンとして10、デジタル出力として13、アナログ入力としてA0を使用。
あとは、5VとGNDのみ。
回路図がこちら。
※LEDが不要の場合は、13番ピンには何も接続する必要はありません。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品は「タッチセンサモジュール」、LED、抵抗のみとなります。
※センサが実装されたモジュール
部品は3個、接続は簡単です。
タッチセンサモジュールと接続するジャンパーワイヤーはF-Mを使用してます。
そのため、面実装されているLEDで確認する場合はブレッドボードもいりません。
毎回ブレッドボードにLEDをセットするのも面倒なので「Lチカ」自作しました。
おすすめです。
使用するポートは、デジタル入力10、デジタル出力13、アナログ入力A0、5V、GND。
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
本Lessonのスケッチではデジタル出力として13を指定してLEDを点灯させています。
タッチセンサモジュールに実装されているLEDで接触しているかどうがわかります。
不要な方はコメントアウトする必要があります。
目的は、D0の出力をLEDで分かり易く確認するためのものです。
//Lesson 39 金属・人体 タッチセンサ(touch sensor) //接触を検知するセンサ //https://omoroya.com/ int AQ0 = A0; //センサモジュールA0の出力先 int DQ0 = 10; //センサモジュールD0の出力先 int led = 13; //センサの状態をモニタするためのLED <- いらなければ不要 void setup (){ pinMode (DQ0, INPUT); //10番ピンをINPUT指定 pinMode (led, OUTPUT); //13番ピンをOUTPUT指定 Serial.begin (9600); //シリアル通信のデータ転送レートを9600bpsで指定 } void loop (){ float A0_out; int D0_out; //タッチセンサモジュールA0の値を読み取り電圧値を計算 A0_out = (float)analogRead(AQ0) / 1024.0f * 5.0f; //タッチセンサモジュールD0の読み取り D0_out = digitalRead(DQ0); Serial.println (D0_out); Serial.print ("A0 voltage value:"); Serial.print (A0_out, 4); Serial.println ("V, "); if(D0_out == 1){ //10番ピンが"HIGH"接触している digitalWrite(led, HIGH); //13番ピンに"HIGH"を出力 } else if (D0_out == LOW) { //10番ピンが"LOW"接触していない digitalWrite(led, LOW); //13番ピンにLowを出力 } }
動作確認 LEDの「点灯」「消灯」
では、さっそく動作を確認していきます。
センサの金属部分を触ってみてください。
※手で触っても、金属でさわってもOKです。
- 接触なし → LEDは消灯(モジュールのL2が消灯)
- 接触あり → LED点灯(モジュールのL2が点灯)
■触っていない状態
■触っている状態(モジュールのL2、Lチカが点灯)
追加実験 なぜ触ったとわかるのか?
触ると検知できるのは、ダーリントントランジスタのベース電流が流れるからです。
興味がある方は、電流が流れていることを確認するため以下を試してみて遊んでみてください。
■追加実験のブレッドボード図
ダイオードのカソード側の黒い配線はつながずにそのままで。
ブレッドボード上の電流制限抵抗は100kΩを接続しています。
※電流をしぼっています。
■実際の接続
■LEDのカソードにつないだ黒配線が浮いている状態。
黄色丸で囲んだLEDは消灯しています。
■LEDのカソードにつないだ黒配線をダーリントントランジスタのベースに接続した状態
黄色丸で囲んだLEDは点灯しています。
※L2と自作のLチカも点灯しています。
黄色丸のLEDが光るということは電流が流れているということ。
すなわち、ダーリントントランジスタのベースに向かって電流が流れているということ。
バイポーラトランジスタは電流制御素子。
ベース(B)に流れるベース電流(IB)によって、コレクタ(C)に流れるコレクタ電流(IC)を制御しています。
ベース電流(IB)が流れているということは、コレクタ電流(IC)が流れるということ。
だから、回路が動作しタッチしたことを検知できるのです。
すなわち、手で触ったときに電流が流れるということ!
手で触った状態に比べると、安定的に電流を流している状態になるためD0の出力もほぼ1で固定されているはずです。
まとめ
本Lessonは、以下を目標としました。
2.接触を検知するスケッチを描く
3.タッチセンサで遊ぶ
タッチセンサを使えばタッチして何かをさせるといったことができます。
※「金属タッチセンサ」「人体タッチセンサ」「接触センサ」とも呼ばれます。
LEDと組み合わせて検知したら光らせる。
ブザーと組み合わせて検知したら音を出す。
組み合わせることで色々なことができます。
Lesson 39 【タッチセンサ その1】 はここまで。
色々工夫をすれば遊びに使えるセンサです。
ぜひ、遊んでみてください。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 40は 【タッチセンサ その2】です。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
お世話になります。
本記事を大変興味深く読ませていただきました。
(Arduino 入門 Lesson 39 【タッチセンサ その1】)
センサモジュールとなっている回路図まで載せていただいて大変助かります。
1つ教えていただきたいのですが、手で触った場合は検知できるとの事でしたが、金属単体が接触した場合でも検知できますか?
センサモジュールがアマゾンで売られていますが、納期が来月なので掲載の回路図で組んでみようかと考えています。
以上、宜しくお願い致します。
コメントありがとうございます。
金属単体が接触した場合でも検知できます。
色々と遊んでみると面白いと思います。