直列の複数のシュミットトリガーでスイッチを完全にデバウンスできますか?


8

しばらくの間ソフトウェアデバウンスを処理した後、システムに大きな負荷がかかることがわかりました。そのため、以下に示すように、1つのシュミットトリガー(74HC14)、コンデンサー、ボタン、およびレジスターを備えたハードウェアデバウンサーを作ることを考えました。 :

トーキングエレクトロニクス回路

しかし、ハイまたはローをいつ出力するかを決定するとき、シュミットトリガーは通常のインバーターの半分の厄介なものであると読みました。33%と66%のマークで状態が切り替わり、通常のインバーターは50%のマークに近く切り替わるからです。 (しかし、HCバージョンでは、それはおそらく55%です)。

シュミットトリガーは1つのパッケージに6つのインバーターであるため、右側に6つの回路を同じコンポーネント値で作成してすべて接続すると、最初の入力に任意のボタンを適用すると、デバウンスが大幅に向上するのではないかと思いました。シリーズのそれらの?(例:最初の回路の出力から、コンデンサと抵抗が出会う2番目の回路の入力)


3
「33%と66%のマークで状態が切り替わるから」、それがシュミットトリガーを使用することの全体のポイントではないでしょうか?それで、切り替わらないウィンドウが中央にあり、したがってデバウンスしますか?
BORT

5
デバウンスはどのようにしてシステムに大きな損害を与えますか?ソフトウェアの境界設定は、ボタンを読み取る間隔を50ミリ秒に保つだけの簡単なものです。
Wouter van Ooijen

2
@マイク多分あなたはシュミットトリガーについて誤解をお持ちですか?それらにヒステリシスがあり、非対称スイッチポイントが「重複」していることを知っていますか?信号が未定義のミッドバンドはありません。
パイプ

4
あなたの問題はこれとは何の関係もありません-あなたの問題は、非効率な方法でデバウンスするソフトウェアを書く方法を知らないということです。コードレビューフォーラムに別の質問を投稿して、ソフトウェアの問題点を確認することを強くお勧めします。これは、最も安価な8ビットプロセッサでさえ、大量の入力を汗ばむことなくデバウンスできるためです。
グラハム

2
@Mike毎秒数千のイベントをデバウンスする必要がない限り、これが実行時の測定可能な影響をどのように消費するかはわかりません。
Dmitry Grigoryev

回答:


12

シュミットトリガーを連続して使用しても、バウンスはさらに減少しません。

フィルターを考えてみましょう:

シュミットトリガー波形比較

入力は(U)です。赤い線は50%のしきい値で、その出力は信号(A)と見なされます。入力が交差するたびに跳ね返ります。

あなたが述べたように、緑の線は33%と66%のようなものです。ただし、出力(B)が切り替わるのは、入力(U)が1つの緑色のしきい値から他のしきい値に交差したときだけです。

最も重要なのは、出力が完全にHIGHまたはLOW(デジタル)のいずれかであることです。したがって、シュミットトリガーの出力が別のトリガーの入力に供給された場合、本質的に違いはありませんでした。

上記(B)からフィルター処理された出力を受け取り、別のシュミットトリガーでどのように表示されるかを考えます。

シュミットトリガーと直列

この場合も、最初の出力はHIGHまたはLOWになります。そのため、同時にしきい値を超え、結果として入力と同じ出力になります。跳ね返ることは何もありません!どちらかと言えば、より多くのコンポーネントを導入しているため、より多くのエラーの余地があるため、ノイズが増えると思います。

あなたが探しているのは、調整可能なしきい値を持つシュミットトリガーです。一部は対称的です(例:33%と66%、または10%と90%)。その他は非対称です(例:33%と80%)。オペアンプを使用して独自に作成できます。

しばらく前にまとめたこのシミュレーションで遊んでみてください。 シュミットトリガーシミュレーション-非反転非対称

シュミットトリガーシミュレーション-非反転、非対称


PCBを作成することを考えると、2つのインバータを直列に接続すると、PCBの作成がはるかに容易になる場合があります。これらのインバータを2つ直列に接続した場合、どれだけ多くのノイズが予想されますか?
マイク

その設定では、「ノイズ」はほとんど無視できます。マイクロ秒のタイミング伝播があるかもしれません。結局のところ、各トリガーはフィルターなので、電圧の「ノイズ」はそれほど大きな問題ではありません。アプリケーションがタイミングに大きく依存していない限り、私はそれについて心配することはありませんが、それは単なるボタンであるためではないと思います。
BORT

15
直列の複数のシュミットトリガーでスイッチを完全にデバウンスできますか?

その前にアナログフィルターを備えた単一のシュミットトリガーをデバウンスに使用できます。ただし、そのシュミットトリガーの後、信号は完全にデジタルになります。追加のシュミットトリガーはそれを変更しません。理想的には、信号を保持します。

別のトピックでは、ファームウェアでデバウンスを実行しても、負荷はそれほど大きくありません。通常の方法は、とにかく持っている定期的な割り込みでスイッチの状態をサンプリングすることです。N個の連続するサンプルでその状態のスイッチを確認した場合、デバウンスされた状態を現在のスイッチ値として宣言します。新しい状態が有効と見なされるためには、通常、スイッチが50の連続した1 ms割り込みの間同じ状態にある必要があります。これは通常、プロセッササイクル全体のごく一部です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.