2015年8月13日木曜日

シュミット・インバーターとCRでチャタリングを防止する

マルツの記事を参考にやってみました。
http://www.marutsu.co.jp/pc/static/large_order/1405_311_ph


LTSpiceでシミュレーション



CRの充放電でスイッチのチャタリング波形を吸収して、シュミット・インバーターでHLの値を整形する回路です。

LTSpiceでスイッチをどう表現するかわからなかったので、「sw」というVoltage controlled switchのコンポーネントを使いました。電圧でスイッチのON/OFFを制御する仮想的なデバイスだと思います。

「.op」コマンドで「MYSW」を定義してやって「sw」コンポーネントの「Value」に「MYSW」を指定して使いました。「MYSW」のパラメーターの「Vt」はON/OFFが切り替わるスレッショルド電圧で、3.3V系でシミュレーションしたので、とりあえず1Vに設定しました。

シュミット・インバーターのコンポーネントもパラメーターを設定しないとちゃんと動作しないようです。ねがてぃぶろぐさんの記事(http://gomisai.blog75.fc2.com/blog-entry-358.html)を参考にしました。

手持ちのシュミット・インバーターのTC74HC14のDATASHEETを見ても3.3V系のスペックは載っていなかったので、Vt(スレッショルド電圧)、Vh(ヒステリシス電圧)とも適当な値です。

チャタリング波形の生成方法もよくわからなかったので「voltage」コンポーネントの「PULSE」でそれらしい波形をつくりました。H→Lのみです。
→「voltage」の「PWL」を使えば外部ファイルで任意の波形を指定できるようですが、今回はパス。

過渡解析

上段の「V(v_sw+)」が(疑似)チャタリング波形です。

下段の「V(schmitt_in)」がシュミット・インバーターに入れる前の波形です。CRで急峻な電圧変動(チャタリング)が吸収されてなまった波形になっています。

「V(out)」がシュミット・インバーターを通した出力です。なまった波形がスレッショルド電圧(Vt+Vh=1.5V)あたりでH/Lが切り替わっています。インバーターなので正負が逆転していて、タクトスイッチをPull Upして使うときには押し下げでH、離すとLになるので都合が良さそうです。

TC74HC14の特性を測定


WaveGeneで三角波を出力してシュミット・インバーターのTC74HC14の特性を調べてみました。
電源電圧は3.3Vです。


5kHz三角波

赤色が入力、黄色が出力

オシロのカーソルで測ると

  • L→Hのスレッショルド:2.0V
  • H→Lのスレッショルド:1.16V

でした。LTSpiceのパラメーターで言うとVt=1.16V、Vh=0.84Vになります。
20kHzまで三角波の周波数をあげてみましたが、この値はほとんど変わりませんでした。

ステップ応答
入力は自作の「矩形波だけのファンクションジェネレーター」(http://dad8893.blogspot.jp/2015/06/blog-post_21.html)で、デジタル出力です。5Vp-pしか出力できないので電源も5Vにしました。

立下り

赤色が入力、黄色が出力

立ち上がり

ステップ応答(速度)に関しては全く問題ないようです。

実際のタクトスイッチのチャタリング波形



タクトスイッチが並んだ基板からブレッドボード上でプルアップさせてオシロで測定してみました。
電源は自作の3.3V安定化電源です。


波形がなまってしまいました。200uSぐらいかけて徐々に電圧が落ちているようです。
容量成分は入れていないはずなので原因不明(@@;

拡大

チャタリングは400nS程度続いているようです。400nSの逆数は2.5MHzなのでAVRを1MHz駆動すれば1クロック以内で収まるのか?むむむ(^q^;

チャタリング防止回路の実験

LTSpiceでシミュレーションした回路をブレッドボードで実験してみました。



赤色が入力、黄色が出力

入力側にもCRが入っているので入力波形もチャタリングは除去されています。出力波形は正負が逆転され、H/Lの波形がほぼ整形されているようです。


メモ:

  • TC74HC14はシュミット・インバーターが6個入りなので8個のタクトスイッチの処理をしようと思うとICが2個必要、16個のタクトスイッチだと3個。CR類も結構かさばりそう
  • プログラムで処理する方法もあるのでハードでの実装はやめた方が無難かな・・・
  • 矩形波だけのファンクションジェネレーターのクロックノイズを除去するのにロジックICが使えないか?