回答:
まず、多くのマイクロコントローラとデジタル信号コントローラには内部プルアップ抵抗があります。これがAtmel ATMega164の例です。
通常、内部プルアップをオン/オフできるレジスタがあります。製造プロセスのばらつきにより、これらの内部プルアップは非常に広い範囲にあり、超低消費電力アプリケーションで電流引き込みを非常に厳密に制御する必要がある場合は、適切な選択肢ではありません。コンポーネント数を少なく保つことが重要である場合、これはそれを行う簡単な方法です。ハードウェアデバウンスに内部プルアップを使用することは、正確な値を予測することができないため、良い考えではありません。
100かどうか値は十分に依存します。それがユーザーによって定期的に反転される単なるスイッチである場合、100消費電力を最小限に抑えるのに適しています。ロータリーエンコーダーなど、より迅速に切り替わるものについては、私が経験するプロセスは
したがって、GPIOピンあたりの最大シンク電流が10 mAで5Vで動作している場合: 。このR値をできるだけ小さくすると、最も鋭いエッジと最高のスイッチング周波数が可能になります。
それよりも簡単に取得できます。
マイクロコントローラの内部プルアップ/プルダウン抵抗を使用するだけです。
100kで十分ですが、一部のMCUでは内部プルアップが少し低くなる可能性があります。たとえば、AVR atmega8では、リセットプルアップでは30〜80 kOhm、その他すべてのI / Oピンでは20〜50 kOhmです。
あなたが提供しなかった、測定するための特定の基準がなければ、より良い答えはできません。ほとんどの場合、表示するトポロジは問題ありません。状況によっては、次の2つのバリエーションの方が「良い」場合があります。
多くのマイクロコントローラは、一部のピンに内部プルアップを備えています。これらは、まさにこの種の状況向けです。抵抗はマイクロの内部にあり、それを有効にするためにどこかにビットを設定します。必要な唯一の外付け部品は、押しボタン自体です。
覚えておくと便利なもう1つのバリエーションは、ボタンを長時間閉じることができるスイッチである可能性のある低電力設計の場合です。その場合は、プルアップ抵抗を流れる長期平均電流を最小限に抑える必要があります。あなたはそれをできるだけ大きくしますが、それには限界があり、大きすぎると欠点があります。代わりに、一度に数µsだけプルアップをオンにして、ボタンの読み取り値を取得します。ボタンを1 msごとにチェックし、プルアップが10 µsオンの場合、平均プルアップ電流は100倍減少します。外部抵抗を使用すると、別のピンを使用してプルアップの上側を駆動します。内部プルアップでは、必要に応じてファームウェアでプルアップを有効または無効にします。
そのシンプルなデザインよりも優れていますか?はい。その上にキャップを投げると、簡単なハードウェアデバウンススイッチがあります。
コンデンサは一般的な0.1ufセラミックキャップです。抵抗は10kになります。このサイトには、理由の詳細が記載されています。つまり、デバウンス回路は、ボタンを押したときにマイクロコントローラーが誤って複数の押しを登録するのを防ぎます。Resistor / Capacitorセットアップは、ボタンの機械的バウンスをスムーズにし、安定した移行を実現します。
編集-以下で私が行ったコメントは、おそらくデバウンスを追加するためのコンデンサーを備えた回路についてオリンが後で言ったことをフォローアップするためのものでした。間違った場所に表示されて申し訳ありません。私は明らかに盲目すぎて愚かすぎてどうすればよいかわからないので、誰かがこれを修正できます。
私はオリンに同意します-それは良いデバウンスを提供しません。また、コンデンサの短絡は、PCBのレイアウトが本当に良くない場合、マイクロプロセッサをリセットする可能性のある大きな電流サージを引き起こす可能性があることも付け加えておきます。一部のスイッチは、正しく確実に動作するために湿潤電流を必要とし、一部のスイッチ(特にメンブレンスイッチ)には100kが高すぎる場合があります。