posted by rerofumi
2009/11/4 水曜日 2:15:57
マイコン電子工作でどのような入力スイッチを使うのかといった事は、割と重要でかつ楽しいところではないだろうか。
最近なにかと人気な静電型タッチスイッチをマイコンで作るという実験記事がChaNさんのサイトELMにある。「タッチ・センサの実験」
いつか自分でもやってみたいと虎視眈々と見つめていた次第。
今回は原理の説明と基礎実験までに。
原理については上記のChaNさんの記事で十分詳しく述べられているけれども、ちょいとわかりにくいところもあるので虎の威を借るごとく繰り返す感じで解説。
テスト用にタッチ電極を作成する。
ポジ感光基板で適当にパターンを作るのがよさそう。
ざっくりパターンを作成。
なにやらサンハヤトのポジ感光基板が「クイック」なるものになっていた。紫外線灯を使うと露光時間 2分とかで良いらしい。
前は感光面が青くて焼き付けるとうっすらパターンが見えていて焼き付けできているなというのがわかったのに、新しいタイプはほとんど無色で色が変わらないから不安に駆られる。でも現像液に浸すと緑色に変色してパターンが浮き出てくる。
エッチングしてテスト基板の完成。
久しぶりにプリント基板作ったな。
タッチセンサー部分の回路図はこんな感じ。
点線の四角い部分が静電センサーパネルで、空気を経由しつつある程度の静電容量を持ったキャパシタになっている。実際にはセンサーパネルから先には何もつながっていない。指が触れる際も直に触れると通電してしまうので、絶縁体で遮っておく。
pull-up抵抗経由で電位がかかるとマイコンのピンにも電圧がかかるが、センサーパネルがキャパシタの役割をはたし電荷が貯まるまでマイコンピンの電圧が規定値にならない。
電位がかかってからぐにゅにゅにゅにゅと電圧が上がっていく感じになるのだ。
その様子を計測した物がこれ。
今回作ったパネルでは、触れていないときの立ち上がり時間がだいたい 70us とかそんなあたり。
これをマイコンでどう制御、計測するのかというとGPIOのIN,OUTを切り替えることで放電充電を行いつつ電位を見るといった事を行うのだ。
1) 放電
センサーパネル上の電荷を放電するためにはマイコンのピンをOUTに設定し、0を出力する。
これでピンがGNDに落ちるためセンサー上の電荷が放電されることとなる。
2) 充電
放電状態から、マイコンのピンをハイインピーダンスのIN状態に設定する。
ピンはハイインピーダンスなのでpull-up電流はセンサーパネルに流れ込み電荷が貯まりピンにかかる電圧が上昇していく。
3) 計測
充電状態にするためGPIOをINに設定してあるので、あとはそのピンからの入力を監視し1になるのを待つ。
電圧が上昇していき、バッファの閾値を超えて1と認識される時がそのうち訪れる。この充電開始から、1になるまでの時間を計測するのだ。
センサーパネルに指を近づけると静電容量が変化する。
今回の様な回路で静電容量が異なるとどうなるかというと、電圧の上がる速度が変化し 3) で計測される時間が延びたり縮んだりすることとなる。
左が指を離したときの状態(平常時)で、右が指を近づけたときのもの。
差が小さくわかりにくいかもしれないけれども、指を近づけると電圧の上昇がゆるやかになり結果閾値を超えるのに時間がかかるようになる。
時間として 70~150us という値だったので、この程度の時間を計測できるなら静電タッチパネルを判別することができるだろう。
静電タッチセンサーの特徴として静電容量の変化が連続的であることがあげられる。
指が近づくにつれて充電時間が長くなっていく、今回のテスト時も指の距離でむにむにと波形が変わるので結構見ていて面白かった。
またそれを利用する事で、指がセンサーとセンサーの間に居たときおおよその位置を割り出すことができる。なので、4枚の静電タッチセンサーしかないのに、その上なら指の位置を256段階で感知することができるとかいったメリットを持つ。
実際問題、人間がGNDに触れず開放端で触れたとき妙なノイズがのり線が暴れる。ノイズはのるものの、電圧上昇カーブは変わらないみたいなので閾値周辺の扱いさえ注意すれば計測することはできるだろう。
後はマイコンの制御で実際に充電時間を計測できるかなのだけれども、その実験はまた次の機会に。
11月 4th, 2009 at 13:39:20
これは興味深いですねぇ。
ChaNさんのサイトしばらく行ってなかったので、「あ~、あの実験か。」
と思い出しました。
そういえば、昔持っていた図鑑だと当時のタッチセンサー(というより
タッチスイッチ)はGND経由せずに触れたときの妙なノイズをハイパス
フィルタで通し、それを利用していたとかで・・・。
ちなみにその図鑑、今は亡き営団が地下鉄車両にサイリスタを使った
チョッパ制御を採用し始めた頃の物なのでかなり古いです。
11月 5th, 2009 at 21:27:03
画像を用意し忘れていたノイズありのときの波形を追加しておきます。
線がぎざぎざしているところはローパスフィルタでOKでしょうけど、実際はスロープ自体もぷるぷる変化しているのでGND無しの時はON/OFFしか取れなさそうな気がします。
あとたぶん、マイコンでの読み取りがある程度離散的になるからそれで十分ローパスになっちゃうんじゃないかと。
このへん試して調整していく感じですかね。
思ったよりも楽しくできそうな感じ。
11月 6th, 2009 at 2:14:05
PSoCなんで、静電センサモジュールをこうならべて… 調整すればできあがり、かと思いましたw
# あっしは用意されたもので済ませる予定…
フットスイッチとしても使いたいので、ぜひ指先だけでなく身体や遮蔽物なども(ry
・・・スミマセン自分でも探ってみます(^^;
11月 13th, 2009 at 0:25:45
秋月でもってCapSense対応のPSoC CY8C21534 と、CapSense専用のモジュール CY8C201A0-SX2I が取り扱い開始されているのでそれを持ちいるのが良さそうです。どちらもフラットパッケージではありますが。
今回原理からぽちぽちやっているのは理解しつつ実験してみたいというのが一番なのですが、GPIOで読む方法だとマイコンに依存しないのと全てのピンで読み取れるようになるというメリットがあるからだったりします。
どんな風に数値が変化するのかとか、どんな電極でどれくらい反応するのかとかはやっぱり自分の目でみてみるのが一番かもしれませんね :-)