デジタル回路へのスイッチ入力と静電気対策の考え方

デジタル回路へのスイッチ入力と静電気対策の考え方

 スイッチは簡単なようで奥が深いデバイスです。メカ部品の一種なので、電気設計とは違った注意が必要になります。

 スイッチで一番注意しなくてならないのは、チャタリングです。チャタリングはスイッチを操作したときに、きれいにON/OFFしてくれな状況を示します。

 具体的にどのような状態なのかを実験してみます。

 単純なスイッチの回路です。これをブレットボードに組んでみました。

ブレットボード上のスイッチ

 スイッチは上記回路から、常時3.3Vになっていて、スイッチを押したときに0Vになるはずです。オシロスコープで波形を観測してみます。

 カーソルで時間を測定しました。スイッチを押してからレベルが落ち着くまでに188usecの時間を要しています。何度か観測してみると、時間はバラバラですが、だいたい200usec以内で落ち着いているようです。このようにスイッチにおける動作が不安定なことをチャタリングといいます。

 さて、この信号をそのままFPGAに入力するとどうなるでしょうか? FPGAのクロックが10MHzだったとすると、10MHzは100nsecですから、単純計算して

 188usec / 100nsec = 1880 クロック

 ユーザーがスイッチを押してから安定するまでに1880クロックかかるという事になります。つまり、その間不安定という事です。

 これでは、安定した製品など作れるわけがありませんので、対策をするわけですが、これまでに諸先輩は様々な方法をとってきました。

 上の例はRとCを追加してアナログのRCフィルタを形成する方法です。この方法は非常に古くからあり、最も採用されている方法だと思います。RCの定数は先の188usecを十分にフィルタできる値にすれば良いですが、FPGAの入力ピンのインピーダンスも配慮する必要はあります。また、FPGAでは入力ピンにシュミットトリガを指定できる物が多いので、FPGAのピン指定ツールでシュミットトリガを指定しておけば、信頼性はかなり上がるでしょう。

 この他に、先ほど計算した188クロックを最初からマスクしてしまう。という方法があります。スイッチを押した瞬間から188クロックは動作しない。という回路を組めば良いわけです。

 これらの方法を組み合わせる。という方法もあります。ここまで記載した方法の他にもあると思いますが、それらの中から最適な方法を選ぶヒントは仕様書にあります。たとえば、このスイッチが連打を許可しているのか、長押しの機能があるのか、手袋で操作するのかなどによって、スイッチ入力の方法を考える必要があります。

 これらは、ある程度経験を積むまで先に示したように実験することをお勧めします。

 次に安定動作のためのスイッチ入力として必ず考える必要のある、静電気対策をお話します。

 静電気というのは、誰もが経験のあるものだと思いますが、指先で頻繁に起こっていることに気が付いているでしようか? これが非常に厄介です。指先で発生しますので、スイッチ操作の際に機器に静電気が流れます。この対策のことをイミュニティ対策とかESD対策といいます。

 静電気が発生すると、先のチャタリングよりも大変です。最悪は機器が故障に至ります。もし、FPGAに直接静電気が入力されると、FPGAが破壊になります。

 そのような事を防ぐために、FPGAの入力ピン保護のための回路を追加します。

 このようにD1とD2を追加します。D1,D2はショットキバリヤダイオードが望ましく、順方向電圧Vfが小さい物、また接合容量Cjが小さい物を選ぶようにします。このようなダイオードで信号を挟む方法をダイオードクランプ回路といいます。

 ダイオードクランプ回路を採用した場合、D2の接合容量が発生しますので、Cと並列のコンデンサ成分になります。コンデンサは並列合成ですので、C+D2の容量が生じてしまいます。したがって、ダイオードクランプ回路を入れた時にはCの容量を減らすか削除するようにするのが一般的です。つまり、RCフィルタはR(C+Cj)フィルタになります。

 ダイオードクランプ回路を入れることで、FPGAのピンには+3.3~0V(正確にはVf分の増減があります)までに信号が制限されるので、静電気のように数kVの電圧がかかってもFPGAを壊すことは無くなります。

 このように、人が触れる恐れのある電気回路には静電気対策を施すようにしてください。ダイオードクランプ回路の他に、ESD対策用に専用デバイスが市販されていますので、そのようなデバイスで対策しても良いですし、筐体でスイッチに静電気が流れないようにする方法もあります。

 静電気対策はスイッチに限ったことではありません。たとえば、外部に露出している配線の入力にもダイオードクランプ回路は有効です。配線に手が触れる場合、ビニール被覆があったとしても静電気は配線に流れてしまいます。

 このようにスイッチはチャタリング対策だけでなく、静電気対策も施すべきです。