モーメンタリスイッチで2ステートのトグル出力を生成する最も簡単で安価で最小の方法は何ですか(ラッチモーメンタリスイッチ)。
言い換えると、出力は連続的に低く、ボタン/タクトスイッチを瞬間的に押すと、出力は連続的に高くなり、次にもう一度押すと再び低くなります。
モーメンタリスイッチで2ステートのトグル出力を生成する最も簡単で安価で最小の方法は何ですか(ラッチモーメンタリスイッチ)。
言い換えると、出力は連続的に低く、ボタン/タクトスイッチを瞬間的に押すと、出力は連続的に高くなり、次にもう一度押すと再び低くなります。
回答:
2つのインバーターとデバウンスを使用する別の方法を次に示します。
ロジック出力には、2つのインバーター、RC、およびフィードバック抵抗器のみが必要です。
NC7WZ14は0.06ドルで、2つのインバーター、小さな6ピンパッケージ、およびシュミットトリガー入力を備えていますが、この回路はRCのためにシュミット入力すら必要ないと思います。また、24 mAを駆動できるため、何らかの理由でLEDを使用している場合は、LEDを直接接続できます。
こことここでは、トグルタッチスイッチとしても表示されます。
フィードバック抵抗は、ボタンを押したときに発振しないように中央の抵抗よりもはるかに小さくする必要があると思います。出力への低インピーダンス接続により、手放すまでコンデンサが中間電圧まで充電されないためです。
バリエーションについては、「ONを押す -OFFを押す」ソフトラッチ回路で説明されています。
1つの可能な方法:
RCを使用してスイッチをデバウンスする
次に、それをDフリップフロップに送り、出力を入力にフィードバックしてTフリップフロップを実装します。
Dフリップフロップは、正のエッジトリガーのみで、反転出力が必要です。
これに何か問題はありますか?立ち上がり時間がクロック入力をトリガーするには、スイッチを短時間押し続ける必要がありますが、これはおそらく適切です。ボタンを押したままにすると、1回だけトリガーされます。これは良いことです。代わりに、フィードバックループなどでデバウンスするより良い方法はありますか?
または、単一の小さな6ピンマイクロコントローラーで他のコンポーネントを使用せずに実行できます。少しコストがかかるかもしれませんが、よりシンプルでスペースを取りません。ソフトウェアでスイッチをデバウンスするのは簡単です。出力を高くしたり低くしたりする必要がある場合にブール値を格納する方法にすぎません。このmcuの最小バージョンは、2mm x 2mmの表面実装パッケージで提供されます。大量の場合、0.50ドルになる可能性があります。
この回路(ここでも説明します)は非常に安価ですが、より複雑であり、すべてのコンポーネントでいくらかのスペースを占有します。トランジスタが大量に0.02ドルのような場合、合計で0.10ドルになるでしょうか?
正のエッジトリガーjkフリップフロップの入力を短絡してTフリップフロップを作成し、プッシュボタン出力をjkフリップフロップのクロック入力に接続します。
この回路のシミュレーション – CircuitLabを使用して作成された回路図
私はそれがそれを行うための「間接的な」方法であることを知っていますが、sparkfunのようなホール効果センサーを得ることができます:http : //www.sparkfun.com/commerce/product_info.php? products_id=9312
磁石を使用すると、この特定のホール効果がラッチすることが(難しい方法で)わかったので、必要なものには機能しませんが、理論的には探しているものには機能するようです。
私はそれをブレッドボードに差し込んだだけで、抵抗器を使用したかもしれないと思います(おそらく1ヶ月だったので詳細が少し曖昧です)、そして磁石を近づけると(瞬間的に)センサーを閉じますあなたが行く。
最も簡単な代替方法は、交互の押しボタンスイッチを使用することです。
異なる位置でラッチするという事実を無視すると、ほとんど瞬間的なスイッチのようになります。これは質問の精神ではないが、ソフトウェアや外部ハードウェアを必要としないシンプルでコンパクトなソリューションであることは理解しています。
最終目標が正確にはわからないが、私はこれをそこに出すと思った:
これは、双安定リレーを駆動するために使用するのが好きな、非常に小さな回路です。ビルドするのもかなり安いです。
モーメンタリスイッチを押すと、リレーとLEDの状態が切り替わります。ボタンを押し続ける時間についてはあまり気にしません。リレーはラッチしているため、ほとんどの場合、ほとんど電流を流しません。
この構成では、リレーがセット状態にあるときにLEDがオンになり、リレーがリセットされるとオフになります。R7をC3の+端子に接続して、代わりにリレーがリセットされたときにLEDをオンにすることもできます。
ギターのエフェクトでこれを使用して、一時的なフットスイッチでデバイスをバイパスまたは操作できるようにします。もちろん、3PDTスイッチはそれ自体で同じことをしますが、この方法は切り替えが静かで(大きなポップはありません)、瞬間的なソフトタッチフットスイッチは大きな3PDTスイッチよりもずっといい感じです。
お役に立てれば。
ソフトウェアでそれをするだけではできませんか?
ボタンはプログラマブルデバイスの入力になりますか、それともハードウェアレルムでトグルを行う必要がありますか?
ボタンの状態をメモリに保存することにより、一時的なスイッチをトグルとして使用するのは非常に簡単です。
boolean buttonState = false; // store for toggle state, false = off true = on
if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
Serial.println("Button Toggled On"); // do something while button is on
buttonState = true // set button state to on
}
if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
Serial.println("Button Toggled Off"); // do something else while button is off
buttonState = false // set button state to off
}
これが基準を外れている場合は申し訳ありませんが、明らかにこの答えはMCUまたはプログラマブルチップを使用していることに依存します。