実用的な電子工作をする際に、タッチセンサーを使用する場合の注意事項などの補足を説明します。
タッチセンサー値の計測時間
前回までの記事では、タイマープログラムに実装したタッチ判定は、100msの時間間隔でセンサー値を計測しています。
計測時間を100msにすると若干反応が鈍く感じられることがありますので、実用的なものを作る場合は計測時間をもっと短くする検討が必要です。
ただ、計測時間を短くするとタッチセンサ値のばらつきが大きくなります。
この影響を少なくするために以下の対応が必要です。
- タッチ判定のしきい値に余裕をもたせる
前回実装したプログラムはしきい値を定常時の90%にしていましたが、これを85%や80%などにすると、ノイズの影響を受けにくくすることができます。
ただし、あまり余裕を持たせると、人によっては(その人の身体の電気的特性によっては)反応しづらくなる場合もあります。余裕を持たせすぎるとタッチ反応しない場合も出てきてしまいますので、しきい値のバランスを取ることが必要です。 - 測定値の移動平均を算出する
今までのタッチセンサのプログラムは、測定した値をそのまま判定に使用していました。ただ、測定時間を短くすると、測定値がノイズなどの影響を受けて変動の割合が大きくなるため、例えば過去何回かの平均値をとって、その値としきい値を比較してタッチ判定すると、変動の影響を受けにくくすることができます。(その代わり変化が緩やかになるため反応が鈍くなります)
作品にタッチセンサーを実装する場合、環境に左右されますので、安定して検知できるように試行錯誤(パラメータ調整やスイッチ位置、大きさの調整)が必要という点に注意が必要です。
複数のタッチセンサスイッチ実装
タイマープログラムの実装では、1個のタッチセンサーの判定しか行いませんでした。
実際の電子工作では、スイッチは1個ということは少なく、複数のスイッチを扱うことが多いと思います。
PIC12F1822に限らず、他のPICマイコンでも複数のタッチセンサを実装することができます。
具体的な方法ですが、タッチセンサ設定レジスタでタッチセンサに使用するピンを設定する「CPSCH」レジスタがありました。
このCPSCHレジスタを使用して、調べたいタッチスイッチを順番に測定を繰り返すことにより、複数のタッチスイッチを扱います。
例えば、PIC12F1822の7番ピンと6番ピンにタッチセンサを2個接続した場合は、以下のアルゴリズムでタッチ判定をします。
タッチスイッチの個数を増やした場合は、このように各ピンのタッチ状態をCPSCHレジスタで測定するピンを指定しながら順番に調べていきます。
アプリケーションノート
Microchip社はPICマイコン本体のデータシート以外に、PICマイコンの持つ機能の応用例などを「アプリケーションノート」というドキュメント(PDFファイル)で紹介しています。
「アプリケーション」というと、PCで動作するソフトウエアのことをすぐに連想してしまいますが、「アプリケーションノート」という場合の「アプリケーション」は「利用方法」などの意味になります。
電子部品のデータシートの中にも、「Application」というタイトルの章や項目がありますが、この場合も「利用例」のような意味になります。
タッチセンサーについても、Microchip社からアプリケーションノートがリリースされています。
以下のドキュメントは、mTouchの一般的な使い方と、実際に製品を開発する際に使用できるライブラリやユーティリティソフトの説明がされています。
mTouch Sensing Solution User’s Guide(PDFファイル)
以下のドキュメントでは、タッチスイッチの物理形状や配置など、タッチスイッチを実装する際の具体的な情報がまとめられています。
Layout and Physical Design Guidelines for Capacitive Sensing (AN1102) (PDFファイル)
以下のドキュメントでは、複数のタッチスイッチを実装する場合の情報がまとめられています。
Capacitive Multibutton Configurations (AN1104) (PDFファイル)
英語のドキュメントでとても読む気になれませんが、最近は翻訳サービスがかなり進化していますので、丸ごと翻訳してもらうという選択肢もあると思います。
また、GoogleのNotebookLMというサービスで、上のドキュメントをアップロードして、内容について質問する、というのもいいかな、と思います。
最近のPICマイコンのタッチセンサー
タッチセンサの実装はPIC12F1822の「Capacitive Sensor」というモジュールを使用しました。
最近のPICマイコンのデータシートを見ると1ページ目の機能概要説明のところに「Capacitive Sensor」という項目がないものが多いです。
そのようなPICマイコンは、PIC12F1822のようなタッチセンサー専用のモジュールは持っていませんが、タッチセンサ機能は実装可能です。
Capacitive Sensorモジュールを使用する代わりに、ほとんどのPICマイコンが持っている「ADコンバータ」を利用してタッチセンサ機能を実現するようになっています。
「ADコンバータ」を利用したタッチセンサ実装は、雑音の除去などかなり高度なテクニックが必要とのことで、Microchip社は、自分でプログラムを組むのではなくMCC(Microchip Code Configurator)を利用してください、と案内しています。
ということで、次回の記事から、この応用編の最後として、「MCC」とは何かについて簡単に説明したいと思います。
更新履歴
日付 | 内容 |
---|---|
2017.11.17 | 新規投稿 |
2025.6.1 | 生成AIの情報追加 |