第21回 タッチセンサ(2) 〜タッチ検知の仕組み〜

前回はコンデンサの原理について説明しました。今回はその原理をどのように利用すればタッチを検知できるか説明します。

復習

タッチ検知の仕組みの説明の前に、前回の説明を簡単に復習しておきましょう。

コンデンサは2枚の金属板を向かい合わせにした構造の部品ですが、金属板1枚でも電荷を貯めることができることがわかりました。また、その金属に人が近づくと静電容量が大きくなることがわかりました。

タッチセンサは、金属と人の距離が変わると静電容量が変化することを検知して、タッチを検知する、というところまで説明しました。

それでは、静電容量の変化をどのように検知するか、その仕組みを説明します。

 

PICマイコンのタッチ検知方法

PICマイコンでタッチセンサを実装する場合、どこかのピンに何らかの金属を接続します。以下の画像は、PIC12F1822の7番ピンにジャパワイヤを接続し、ジャンパワイヤの先にアルミホイルをつけたものです。このアルミホイルと人の距離が変化すると、静電容量が変化します。

Pic app 21 capacitor sample

金属と人の距離が遠いと静電容量は小さくなります。つまり、金属板に貯めることの電荷量は少なくなります。金属部分に貯めることのできる電荷の様子をバケツでイメージするとこんな感じです。

Pic app 21 far

これに対し、金属と人の距離が近くなると、金属板に貯めることの電荷量は多くなります。バケツでイメージするとこんな感じです。

Pic app 21 near

PICマイコンのタッチ検知方法は、「一定時間内に、電荷をこのバケツに何回満杯にできるか」という計測をして、この計測結果の数値を元にタッチを検知します。バケツを電荷で満杯にして、満杯にした電荷を全部捨てて、また電荷を満杯にしては、電荷を全部捨てて、ということを繰り返します。一定時間内にこれを何回できるか数えるわけです。

具体的には、例えば10ms(ミリ秒)の間に、このバケツを何回満杯にできるか、という計測を行います。人が離れている状態ではバケツの容量は小さいため、10msの間に満杯にできる回数は多くなります。ところが、人が近づくとバケツの容量は大きくなりますので、10msの間に満杯にできる回数は少なくなります。

PICマイコンでタッチ検知する場合、一定時間内にバケツを何回満杯にできるか、という計測を続け、満杯にできる回数が一定回数以下になったら人(の指が)近づいた、と判定して、「タッチされた」と判定します。

 

PICマイコンのタッチ検知例

それでは、実際にどのぐらい数値が変わるか確認してみたいと思います。

先ほどの画像の回路で、100msの時間内に何回バケツを満杯にできるか、計測してみたいと思います。ただ、画像の回路のままですと計測結果を見ることができません。そこで、計測結果がわかるように液晶モジュールを接続して、100ms時間内に何回満杯にできたか、リアルタイムで表示するようにしました。(液晶モジュールの接続・表示方法は応用編の範囲を超えますので、詳細説明は省略いたします。このシリーズの実践編でご紹介する予定です)

まず、以下は電源投入後の定常状態です。数値は11250ぐらいです。なお、この数値は環境(ブレッドボードの回路実装、実験場所、気温、湿度)により異なります。

Pic app 21 sensor value 1

次に、アルミホイルに指を近づけると静電容量は大きくなりますので、満杯にできる回数は少なくなります。

Pic app 21 sensor value 2

さらに金属に触れると静電容量はさらに大きくなりますので、満杯にできる回数はさらに少なくなります。

Pic app 21 sensor value 3

この数値変化をみて人がタッチしたかどうかを判定するわけです。

なお、実際に作品を作る場合はアルミホイルが出ていると見栄えが悪いので、プラスチックケースの裏などにこのアルミホイルのスイッチを貼って、その部分をスイッチにすると見栄えがよくなると思います。

例えばプラスチックケースの裏側にこのようにタッチスイッチ部分を貼り付けて、

Pic app 21 cover switch

動作させると、定常状態ではこのぐらいの値になりました。

Pic app 21 cover switch untouched

この状態でスイッチのあたりに指を触れると、

Pic app 21 cover switch touched

静電容量は増えますので、センサ値はこのように小さくなります。このようにすると、物理的なスイッチは必要なくなりますので、作品のデザインの自由度も上がりそうですよね。

 

スイッチは金属の「板」?

今までの説明で「1枚の金属の板あるいは薄膜は静電容量を持ちます」と説明してきましたが、もう少し補足説明をしておきます。

金属の板あるいは薄膜を以下のような感じでどんどん幅を狭くしていきます。

Pic app 20 wire capacitance

このように金属の幅を狭くしていくと、静電容量は小さくなっていきますが、それでも静電容量はあります。一番右の状態、つまり金属板の幅がとても狭い状態って、これってほとんど金属の電線ですよね。

ということで、実はジャンパワイヤなどの電線も静電容量を持ちます。

以下は、PIC12F1822の7番ピンにジャンパワイヤのみ接続して、定常状態の時の画像です。

Pic app 21 wire sensor

この状態で、ジャンパワイヤのどこかに指を触れると、

Pic app 21 wire sensor touched

静電容量が増えるので、センサ値は小さくなります。

これまでの動作を動画にしてみましたので、興味があればみてみてください。

 

スマホ画面のタッチ検知

以上がPICマイコンのタッチセンサの仕組みですが、スマホはタッチの検知だけでなく、画面のどの位置でタッチしたかを判定していますよね。スマホはどのようにして画面のタッチ位置を検知しているのでしょうか。

スマホの画面では静電容量を持つ線を以下のように網目状に配置しています(縦の線と横の線は接触しないようにタッチパネルに埋め込みます)。

Pic app 21 touch panel

この状態で、A〜Gの線、1〜9の線の静電容量を調べると、ある値で定常状態となっています。スマホなどのタッチパネルでは、1秒間に何回も縦の線と横の線の静電容量を調べます。

ここで、例えばユーザがピンクの丸印のところに指でタッチしたとします。

Pic app 21 touch panel sensing

すると、先ほどのジャンパワイヤに触れた時に静電容量が大きくなったように、DとEの線と、7の線の静電容量が大きくなります。この結果から、スマホは横の位置はDとEの間、縦の位置は7の場所でタッチされたと判定して、タッチの応じた処理を行います。

なお、スマホなどのタッチパネルは多くの線の静電容量を調べるため、先ほどのように一定時間内に何回満杯にできるかを計測するのではなく、どのぐらいの時間で満杯になるかを計測するなど、高速で静電容量を計測するようになっています。

次回からPICマイコンのタッチセンサプログラムを作っていきます。

 

更新履歴

日付 内容
2017.10.29 新規投稿

« »