前回はコンデンサの原理について説明しました。今回はその原理をどのように利用すればタッチを検知できるか説明します。
タッチセンサーの原理(復習)
PICマイコンのタッチ検知方法の説明の前に、タッチセンサーの原理を簡単に復習しておきましょう。
コンデンサは2枚の金属板を向かい合わせにした構造の部品ですが、金属板1枚でも電荷を貯めることができることがわかりました。
また、その金属に人が近づくと静電容量が大きくなることがわかりました。
タッチセンサは、金属と人の距離が変わると静電容量が変化することを検知して、タッチを検知する、というところまで説明しました。
今回の記事では、PICマイコンが静電容量の変化をどのように検知するか、その仕組みを説明します。
PICマイコンのタッチ検知方法
PICマイコンでタッチセンサを実装する場合、どこかのピンに何らかの金属を接続します。
次の画像は、PIC12F1822の7番ピンにジャパワイヤを接続し、ジャンパワイヤの先にアルミホイルをつけたものです。
このアルミホイルと人の距離が変化すると、静電容量が変化します。
金属と人の距離が遠いと静電容量は小さくなります。
つまり、金属板に貯めることの電荷量は少なくなります。
この「金属部分に貯めることのできる電荷」の様子を「バケツ」でイメージするとこんな感じです。
金属と人の距離が遠い場合、金属に貯めることができる電荷量は少ないので、バケツのサイズは小さめ、というイメージです。
次に、金属と人の距離が近くなると、金属板に貯めることの電荷量は多くなります。
バケツでイメージするとこんな感じです。
金属と人の距離が近い場合は、金属に貯めることができる電荷量が多くなるので、バケツのサイズは大きめ、というイメージです。
ここまで理解できたところで、PICマイコンがどのようにタッチ検知しているか確認していきましょう。
PICマイコンのタッチ検知方法は、「一定時間内に、電荷をこのバケツに何回満杯にできるか」という計測をして、この計測結果の数値を元にタッチを検知します。
バケツを電荷で満杯にして、満杯にした電荷を全部捨てて、また電荷を満杯にして、電荷を全部捨てて、ということを繰り返します。
この繰り返しを一定時間内に何回できるか数えるわけです。
具体的には、例えば10msの間に、このバケツを何回満杯にできるか、という計測を行います。
人が離れている状態ではバケツの容量は小さいため、100msの間に満杯にできる回数は多くなります。(小さいバケツの場合、すぐにいっぱいになるので、100msの間、満杯にして空にする、という繰り返し回数か多くなります)
ところが、人が近づくとバケツの容量は大きくなりますので、100msの間に満杯にできる回数は少なくなります。(大きいバケツは満杯にするまでの時間が長くなるので、100msの間で満杯にして空にする、という繰り返し回数は小さくなります)
PICマイコンでタッチ検知する場合、一定時間内にバケツを何回満杯にできるか、という計測を続け、満杯にできる回数が一定回数以下になったら人近づいた、と判定して、「タッチされた」と判定します。
PICマイコンのタッチ検知例
それでは、実際にどのぐらい数値が変わるか確認してみたいと思います。
実際に回路を製作して、100msの時間内に何回バケツを満杯にできるか、計測してみました。
ブレッドボードの回路では、計測結果がわかるように液晶モジュールを接続して、100ms時間内に何回満杯にできたか、リアルタイムで表示するようにしました。(液晶モジュールの接続・表示方法は応用編の範囲を超えますので、詳細説明は省略いたします。このシリーズの実践編で液晶モジュールの使い方を解説しています)
最初に、次の画像の状態は電源投入後の定常状態です。
数値は11250ぐらいです。(この数値はブレッドボードの回路実装、実験場所、気温、湿度により異なります。毎回この数値ということはありません)
次に、アルミホイルに指を近づけると静電容量は大きくなりますので、満杯にできる回数は少なくなります。
さらに金属に触れると静電容量はさらに大きくなりますので、満杯にできる回数はさらに少なくなります。
この数値変化をみて人がタッチしたかどうかを判定するわけです。
実際に作品を作る場合はアルミホイルが出ていると見栄えが悪いですよね。
そこで、次の画像のようにプラスチックケースの裏などにこのアルミホイルのスイッチを貼って、その部分をスイッチにすると見栄えがよくなると思います。
プラスチックケースの裏側にこのようにタッチスイッチ部分を貼り付けます。
プラスチックを挟んでも問題なく動作しますので、このタッチセンサーを使う場合は次の画像のように使います。
実際に動作させると、定常状態ではこのぐらいの値になりました。(11150ぐらい)
この状態でスイッチのあたりに指を触れると、静電容量は増えますので、センサ値はこのように小さくなります。(8430ぐらい)
タッチセンサーをこのように実装すると、物理的なスイッチは必要なくなりますので、作品のデザインの自由度も上がりそうですよね。
スイッチは金属の「板」?
今までの説明で「1枚の金属板は静電容量を持ちます」と説明してきましたが、もう少し補足します。
金属の板あるいは薄膜を、次のような感じでどんどん幅を狭くしていきます。
このように金属の幅を狭くしていくと、静電容量は小さくなっていきますが、それでも静電容量はあります。
一番右の状態、つまり金属板の幅がとても狭い状態って、これってほとんど金属の電線ですよね。
このことからわかるように、実はジャンパワイヤなどの電線も静電容量を持ちます。
次の画像は、PIC12F1822の7番ピンにジャンパワイヤのみを接続して、定常状態のときに測定した画像です。
この状態で、ジャンパワイヤのどこかに指を触れると、静電容量が増えるので、次のように測定値は小さくなります。
これまでの動作を動画にしてみましたので、興味があればみてみてください。
スマホ画面のタッチ検知
以上がPICマイコンのタッチセンサの仕組みです。
ところで、スマホはタッチの検知だけでなく、画面のどの位置でタッチしたかを判定していますよね。
スマホはどのようにして画面のタッチ位置を検知しているのでしょうか。
スマホの画面では静電容量を持つ線を次のように網目状に配置しています。(縦の線と横の線は接触しないようにタッチパネルに埋め込みます)
スマホなどのタッチパネルでは、1秒間に何回も縦の線と横の線の静電容量を調べます
ここで、例えば次の図のようにユーザがピンクの丸印のところに指でタッチしたとします。
すると、先ほどのジャンパワイヤに触れた時に静電容量が大きくなったように、DとEの線と、7の線の静電容量が大きくなります。
この結果から、スマホは横の位置はDとEの間、縦の位置は7の場所でタッチされたと判定して、タッチの応じた処理を行います。
なお、スマホなどのタッチパネルは多くの線の静電容量を調べるため、先ほどのように一定時間内に何回満杯にできるかを計測するのではなく、どのぐらいの時間で満杯になるかを計測するなど、高速で静電容量を計測するようになっています。
次回からPICマイコンのタッチセンサプログラムを作っていきます。
更新履歴
日付 | 内容 |
---|---|
2017.10.29 | 新規投稿 |
2025.5.27 | 説明補足 |
いつもわかりやすい解説をありがとうございます。一点質問させてください。
指を近づけるとアルミと指の間でコンデンサが生成され、静電容量が大きくなる事はわかるのですが、指で金属に触れると、静電容量が大きくなる仕組みを教えていただきたいです。
アルミに溜まった電荷が指に流れ、アルミと指のコンデンサではなく、アルミと指がひとつになり、一枚の電極のようになり、単純に電極の面積が大きくなることで静電容量が大きくなるということでしょうか。
その場合、指が触れると電荷が指側に流れてしまうので、電荷を満杯にできないと思ったのですが、液晶には9700回程電荷を満杯にできたと表示がされており、分かりませんでした。
よろしくお願いいたします。
ご質問どうもありがとうございます!
指で金属に触れた場合、静電容量が大きくなる仕組みはコメントに書いていただいた通りです。
指が金属に触れると、センサーと人体が電気的に接続されて一つの大きな導体(電極)になり、周りの環境との間で新しい静電容量を形成して結果として静電容量が大きくなります。
ご質問の「指が触れると電荷が指側(人体)に流れてしまうのではないか」という点については、一般的には電荷は人体に貯まると考えて良いと思います。
ただし、条件があるので補足いたします。
[人体が絶縁されている場合]
一般的な環境では、人体は絶縁状態になっています。
例えば、一般的な家では靴下やスリッパを履いていることが多いので、それにより人体は絶縁されます。
また、家の中で裸足だとしても、一般的な家は床が絶縁状態になっていると考えてよいと思います。
このような状況で、指をセンサーの金属に触れた場合、指を通して流れてきた電荷は逃げることころがないので人体に電荷が溜まります。
[人体が接地されている場合]
電子機器を扱う場合、人体に溜まった電荷が電子部品を壊す可能性があるため、人体に溜まった電荷を逃がすために、人体を接地する次のようなリストバンドがあります。
https://www.hozan.co.jp/corp/pg/1wriststrap/
実際に実験していないので申し訳ないのですが、例えばこのリストバンドをつけて、人体を接地した場合(電荷が逃げられるようにした場合)、人体に電荷が溜まりませんので、静電容量は小さくなるのではないかと思います。
—
このような条件があるものの、一般的には人体は絶縁状態にあるので、このようなセンサーは大きな問題はないのではないかと思います。
タッチ式ボタンのエレベーターでは金属が剥き出しになっていることがありますが、エレベータに乗る人が接地されている可能性はほぼないので、そのようなボタンになっているのかな、と思います。
(うまく人体を接地してエレベーターに乗ったら、ボタンが押せないんでしょうかね…?)
返信ありがとうございます!
これからも愛読させていただきます!
ご丁寧に返信どうもありがとうございます!
現在このシリーズ記事を見直しているのですが、わかりづらいところも多々あります…
何か不明点ありましたらご質問いただければと思います。
(記事は基礎編より順次更新しています)
分かりやすい解説ありがとうございます。
1点教えていただきたいです。
仕事でタッチスイッチの新規検討をしているのですが、
樹脂板の表面に不連続な金属膜があり、裏面にタッチ電極を配置した構造で、
表面に指でタッチした場合、静電容量(自己容量)によるタッチ検出は可能でしょうか?
・不連続さ:~100nm程度の微小サイズにひび割れているイメージ
不連続であってもタッチ電極との間に静電容量が発生し、タッチ検出に影響が出そうな気がしています。
ひび割れのすき間から指とタッチ電極の静電容量が形成され検出がかろうじてできるかも。。。
というのが現在の想像です。
ご意見、ご存知のところがあればご教示いただけますと幸いです。
ご質問どうもありがとうございます。
樹脂板の表面に不連続な金属膜、というのはデザインの関係でそのようになっているのかと思いますが、そのようなケースはどうなるか、というのはなかなか難しいですね…
記事でも説明しましたが、タッチセンサの原理は、金属の検知部分と指先の間の静電容量の変化を検知しています。
例えば、金属検知部分と指先の間にプラスチックなどの樹脂がある場合、プラスチックの電荷は動きにくいため、指先と樹脂間、樹脂と金属検知部分に静電誘導が働き検知できるようになっています。
この樹脂に金属膜がある場合ですが、不連続な金属膜ということで、その金属膜が小さい面積で独立していれば、タッチ検知はできるのではないかと予想しています。ただ、その金属膜が独立おらず繋がっている場合は、電子が動いてしまいますので、検知は難しくなるのではないかと思っています。
すみません、こちらで検証できる環境がありませんので、予想になってしまいますが、このように予想しています。
なおPICマイコンでタッチ検知をする場合、このシリーズでご紹介しました機能は最近のPICマイコンのモデルではほとんど搭載されていません。Microchip社は、ADコンバータを利用してタッチ機能を実装するように推奨しています。ADコンバータを利用したタッチ機能の実装はゼロから行うと大変ですが、Microchip Code Generatorでパラメータを設定するとソースコードを自動生成してくれる機能があり、それを利用することを推奨しています。
またAVRマイコンであれば、ライブラリがリリースされていると思います。さらに他のマイコン、H8やARMマイコンを使用されるのであれば、PICマイコンのADコンパータを利用したタッチ検知が参考になりますので、移植できるのではないかと思っています。
ご質問の回答になっておらずすみません。