【CTMUとは】
CTMU (Charge Time Measurement Unit)というモジュールはPIC16ファミリではなく
PIC18ファミリとPIC24ファミリに実装されているモジュールです。
このCTMUの機能は名前のとおりピンに接続された容量の充電電圧を測定する機能です。
A/Dコンバータと協調して動作します。
もともとはタッチパネルを構成するために用意されたモジュールですが、高精度で外部容量を
計測できますので、いろいろな応用が考えられます。
【CTMUの内部構成と動作】
CTMUモジュールの内部構成は下図のようになっています。図のようにCTMUモジュール自身は
上側の点線部だけの構成で、A/Dコンバータモジュールと協調して動作するようになっています。
CTMU内部は、一定の電流を供給する定電流回路と、その電流をオンオフする
充電用トランジスタ(充電TR)、その先に接続されている容量成分の電荷を放電させるための
放電トランジスタ(放電TR)がおもな構成部品となっています。
実際のタッチパネルに相当するスイッチパッドは、アナログ入力ピンに接続され、アナログ
マルチプレクサでそのうちのひとつが選択されて内部回路に接続されるようになっています。
CTMUの動作は、まず、アナログマルチプレクサ(MUX)で選択された一つのスイッチパッドが
A/DコンバータとCTMUモジュールに接続されます。
CTMUの放電TRを一定時間オンにし、接続されたスイッチパッドの浮遊容量CSW、A/Dコンバータの
ホールドキャパシタCHOLD、ピンなどの容量CINをすべて並列にした容量に残っている電荷を完全に
放電させます。
次に、充電TRを一定時間オンにして充電します。一定電流で容量を充電しますから、下図の下側の
グラフのように直線的に電圧が上昇していきます。
このときのコンデンサの電圧は、下図に示すような式で決まりますから、容量に反比例して充電電圧
が変わります。この充電後の電圧をA/Dコンバータで読み込みます。
つまり、タッチされている間は指の浮遊容量が並列に追加されて全体容量が増加しますから、
一定時間充電後の充電電圧は上図のグラフの点線ように下がることになります。
こうしてタッチしたかどうかは電圧差で判定できることになります。
さらに、充電時間、定電流値は正確に決められますし、電圧も10ビット分解能で正確に計測
できますから、できるだけ充電後の電圧が高くなるように調整して設定すればノイズにも強くなります。
この充電電圧の推奨値は、A/Dコンバータのリファレンス電圧の70%程度となっています。
このような原理ですから、スイッチパッド以外に、ピンに接続されたコンデンサの容量を計測する
こともできます。
定電流値もx1(0.55μA)、x10(5.5μA)、x100(55μA)と3段階で切り替えられますし、充電時間は
プログラムで任意にできますから、かなり広範囲の容量を測定することが可能になります。
【CTMU制御レジスタ】
CTMUの制御レジスタは下図のようになっています。単純に時間だけで計測する以外に
エッジピンに入力される外部イベントで起動することもできるようになっています。
【使用例】
CTMUモジュールを使って電圧検出方式のタッチスイッチと、コンデンサ容量計測を試してみました。
下図が製作したコンデンサ容量計です。
液晶表示器にデジタル値で容量を表示します。3レンジで下記容量をpFの単位で測定可能です。
・レンジ1:10pF 〜 1000pF(0.001μF)
・レンジ2:0.001μF 〜 0.01μF
・レンジ3:0.01μF 〜 0.1μF
レンジ切り替えやゼロ補正指示をタッチスイッチ
で行います。
さらにタッチスイッチのテスト機能も持たせて、
測定した電圧値を液晶表示器で常時モニタしながら
タッチしたときの変化を確認することができる
ようにしました。
このコンデンサ容量計の全体構成は下図のようになっていて、PIC18F24J11を使っています。
ポートAをすべてアナログ入力としてCTMUモジュールへの入力としています。
RA1ポートにコンデンサ容量の基準となる15000pF 1%誤差という高精度のコンデンサを接続し、
これからコンデンサ容量を計算しています。
したがって、CTMUはRA0に接続された測定コンデンサの充電電圧さえ計測できれば15000pFとの
比較で容量が求められますので、定電流値の較正も充電時間の較正も必要がなくなります。
このコンデンサ容量計のプログラムは下記からダウンロードできます。
MPLAB X IDE用のプロジェクト1式となっています。
★★★ コンデンサ容量計 プロジェクト1式 ★★★