一、RCデバウンスの核心原理と定数選定原則
機械式ボタンのデバウンス(チャタリング防止)の本質は、RC抵抗・コンデンサ回路の充放電の鈍性を利用して、ボタンのオン・オフ時に発生する電圧のノイズを滑らかにし、機械的チャタリングを除去することにある。一般的な回路構成は、ボタンの両端にプルアップ抵抗Rと並列にコンデンサCを接続するものであり、その核心パラメータはRC時定数である:
\boldsymbol{\tau = R \times C}
- \tau:RC時定数、単位は秒(s)。コンデンサの電圧が充電または放電により定常値の63.2%に達するまでの時間を示す;
- 工学的には、回路が99%以上の定常状態に到達し、チャタリングを完全に除去するために、\boldsymbol{5\tau} の時間が要るとされる;
- 普通のタクトスイッチの機械的チャタリング持続時間は5~20msであるため、信頼性の高いデバウンスを実現するには、\boldsymbol{5\tau \ge 20\mathrm{ms}}、つまり$\boldsymbol{\tau \ge 4\mathrm{ms}}$ を満たす必要がある。
二、10kΩプルアップ抵抗におけるコンデンサ推奨値
プルアップ抵抗 R=10\mathrm{k}\Omega=10\times10^3\Omega が既知で、かつ \tau\ge4\mathrm{ms}=4\times10^{-3}\mathrm{s} という条件から、最小コンデンサ容量を導出する:
C_{\text{min}} = \frac{\tau}{R} = \frac{4\times10^{-3}}{10\times10^3} = \boldsymbol{400\mathrm{nF}}
電子部品の標準規格値を考慮すると、10kΩのプルアップ抵抗に対応するコンデンサの推奨値は以下の通りである:
| コンデンサ規格値 | 対応するRC時定数 \tau | 5\tau:完全デバウンス時間 | 適用性 |
|---|---|---|---|
| 220nF | 2.2ms | 11ms | フィルタ効果が弱め。極めてチャタリングの少ない高品質ボタンに限る |
| 470nF | 4.7ms | 23.5ms | 多くのボタンデバウンス要件を満たす。工学的によく使われる組み合わせ |
| 1μF | 10ms | 50ms | デバウンス効果は強いが、ボタン応答が遅くなる。応答速度が重要でない用途に適する |
結論:10kΩのプルアップ抵抗を使用する場合、470nFのコンデンサを優先的に選ぶことで、デバウンス性能とボタン応答速度のバランスが取れる。
三、10kΩ抵抗+470nFコンデンサの充放電時間計算
公式に代入して正確に計算する:
- RC時定数
\tau = R \times C = 10\times10^3\,\Omega \times 470\times10^{-9}\,\mathrm{F} = \boldsymbol{0.0047\,\mathrm{s} = 4.7\,\mathrm{ms}}
- 完全充放電・信頼性のあるデバウンス時間
回路が99%以上の定常状態に達するには 5\tau 必要:
5\tau = 5 \times 4.7\,\mathrm{ms} = \boldsymbol{23.5\,\mathrm{ms}}
この時間は、普通のボタンの最大チャタリング時間20msを十分に超えており、機械的チャタリングを完全に除去できる。同時に、ボタン操作の遅延もほとんど感じられないレベルである。
四、実際の応用に関する補足説明
- コンデンサは積層セラミックコンデンサ(MLCC)やセラミックコンデンサを優先使用すること。安定性が高く、コストも低い。電解コンデンサ(極性あり、高周波特性が悪い)の使用は避けること;
- マイコンのIOポートに内部プルアップ抵抗が内蔵されている場合は、外部の10kΩプルアップ抵抗を省略でき、ボタンの両端に直接コンデンサを並列接続すればよい;
- RCハードウェアによるデバウンスは受動フィルタであり、極端なチャタリングを完全に除去できない場合がある。高信頼性が求められる場面では、ソフトウェアによるディレイデバウンス(IOレベル読み取り後、10~20ms待って再度読み取り)と組み合わせることで、二重のデバウンスを実現できる。
