MBR3 で、静電容量センサの実験 (1) [PSoC]
さきごろ、 CapSense MBR3 というシリーズのチップが発表されました。 MBR は、 "Mechanical Button Replacement" つまり、「機械式ボタンを置き換えよう」という意味を持っています。 では、さっそく使ってみますか。
実験に使った回路図
今回使用する実験基板は、このような回路になっています。 左側にあるのは、 MiniProg3 を接続するための5ピンコネクタです。 ここから電源を取り入れ、さらに I2C で通信を行います。 右側にあるのが、静電容量ボタンのセンサです。 単に抵抗を介して電極がつながっているだけですが、これだけの構造で静電容量の変化を検出し、ボタンとして動作します。
MBR3 の設定方法
MBR3 は、プログラムを開発する必要がありません。 その代わりに、 I2C を介して動作を設定する事ができます。 設定に必要なのは、 EZ-Click 2.0 というアプリケーションと、電気的に I2C の信号をやり取りするための USB-I2C Bridge というハードウェアです。 EZ-Click 2.0 が対応する USB-I2C Bridge には、以下のようなものがあります。
- CY3240-I2USB
- CY3280-MBR3 CapSense® MBR3 Evaluation Kit
- CY8CKIT-002 PSoC® MiniProg3 Program and Debug Kit
この他に多少の改造が必要になりますが、 CY8CKIT-042 PSoC® 4 Pioneer Kit などに搭載されている KitProg の USB-I2C Bridge 機能を使用する事もできます。 また、現在のところ、 USB-Serial Bridge Controller には対応していません。 この記事では、 MiniProg3 を使って、設定を行っていきます。
EZ-Click 2.0 で静電容量ボタンを設定する
EZ-Click 2.0 を起動したら、最初に設定ファイルの作成場所を指定します。 メニューから "File"→"New Project..." を選択して、 "New Project" ダイアログを呼び出します。
このダイアログでは、プロジェクト名("Project Name")、プロジェクトの配置場所("Project Path")、そして使用するデバイス("Target Device")を指定します。 ここでは、 CY8CMBR3102-SX1I を使用する "Design001" というプロジェクトを作成しています。
"CapSense sensor configuration" タブでは、ふたつのボタンをイネーブルします。 "Enable" カラムのふたつのチェックボックスにチェックを入れるだけで、静電容量ボタンが動作するようになります。 ここでは、ボタンの名前を回路図の名前に合わせて "BTN0" と "BTN1" に変更しています。 他の設定は、デフォルトのままにしておきます。
プロジェクトが完成したので、 "Save Project" でプロジェクトを保存します。
ここで、 MBR3 に MiniProg3 を接続し、さらに PC に接続します。 そして、 "Select Target Device" で接続相手の MBR3 を探しにいきます。
"Select I2C Target" ダイアログが開いたら、 "Ports" で "MiniProg3" を選択します。 そして、 "Power" で MiniProg3 から供給する電源電圧を指定します。 ここでは、 5.0V の電源を供給します。 さらに、 "I2C Speed" で、 I2C インターフェイスで使用するクロックの周波数を指定します。 ここでは、 400kHz で通信を行います。
ここまで設定できたら、 "Devices" に通信可能なデバイスの一覧が現れますので、目当てのデバイスを選択します。 この例では、デバイスは一つだけ見つかりました。
これで準備完了です。 "Apply Current Configuration" で MBR3 に設定を書き込むと、すぐに静電容量ボタンの動作が始まります。
静電容量ボタンの確認
静電容量ボタンの動作の確認も、 EZ-Click 2.0 から行います。
- CapSense output タブを開きます。
- "Select view" で "Button output" を選びます。
- "Button" で ボタン "BTN0" または "BTN1" を選びます。
- "Graph" で "Raw count vs Base Line" を選びます。
- "Start" ボタンをクリックします。
これで、グラフが表示されるようになります。 ここでは、 "Raw count" と "Base Line" という二つの二つの値が表示されています。 "Raw count" は、静電容量センサがとらえた容量値を表しています。 また、 "Base Line" は、「静電容量センサに指が触れていない時の推定容量値」を表しています。 静電容量センサに指が触れると、これらの値が乖離(かいり)して、指が触れた事を検知するという仕組みです。
グラフの上の方にある "Button status" は、「MBR3 が、指が触れたと判断しているか」を On/Off で示します。 また、 Cp (pF) は、「静電容量センサに指が触れていない時の推定容量値」をピコファラッド単位で計算した値です。
アプリケーションで使うには
実際のアプリケーションでは、 "Button status" で表示されているボタンの状態だけを知りたい場合がほとんどであろうと思われます。 その場合、 I2C インターフェイスを介してレジスタを読み出す事で、ボタンの状態を知ることが出来ます。 具体的には、アドレス 0xAA の下位2ビットが、ふたつのボタンの状態を表しています。
他には、ボタンの状態を MBR3 の出力端子により直接知らせる機能もあります。 この機能を使うためには、 EZ-Click 2.0 で、今回とは違う設定を使用する必要があります。
参考文献
- CY3280-MBR3 CapSense® MBR3 Evaluation Kit
MBR3 の具体的な使い方は、このキットに関連した文書として提供されています。 特に "CY3280-MBR3 User Guide" が、キットを使わない場合でも役に立ちます。
- CY8CMBR3102, CY8CMBR3106S, CY8CMBR3108, CY8CMBR3110, CY8CMBR3116 CapSense® Express™ Controllers Registers TRM
I2C でアクセス可能なレジスタが解説されています。 MBR3 では、ここで記述されているレジスタに対するアクセスによって、すべての動作を規定しています。
- CY8CMBR3xxx CapSense® Design Guide
この記事では、被覆導線を利用して実験を行うための簡易ボタンを作成しました。 本格的に静電容量ボタンを使いたい場合には、この文書を参照して作成します。
はじめまして。無知な男です。大変興味深く拝見しております。
こちらに書くのは正しくないかと思いますが、どうしても困っているためコメントしました。
現在USB接続のI2Cセンサとのデータ送受信を行うプログラムを作成しています。
WinXPにこのセンサを接続すると、デバイスはHID準拠として追加され、Win8.1に接続するとUSB Composite Deviceと表示されます。
HID準拠等で認識されていれば特に専用のデバイスドライバは必要ないとネット上で散見しましたが、どのように手をつけていいのか分かりません。言語はVB,VCどれでも構いません。
どのようなプログラムになるのでしょうか。どうぞご教示いただけますようお願いいたします。環境は、Win8.1、VS6.0、VS2005で、対象センサはSENSIRIONのEK-P3です。
by 無知男 (2014-08-21 14:02)