RC フィルタのカットオフ周波数と、実際に取れる減衰
1.6kHz の RC フィルタは、100kHz のノイズを 1/60(−36dB)にします。ゼロにはなりません。フィルタは「遮断」ではなく「減衰」で、その量は 1 次なら周波数比で決まります。
−3dB 点と、その先の傾き
抵抗 R とコンデンサ C の 1 次ローパスフィルタのカットオフ周波数は fc = 1 ÷ (2πRC) です。1kΩ と 100nF なら 1.59kHz。この周波数で出力は入力の 0.707 倍(−3dB)です。
カットオフより上では、周波数が 10 倍になるごとに −20dB(1/10)です。fc の 10 倍で −20dB、100 倍で −40dB。正確には |H| = 1 ÷ √(1 + (f ÷ fc)²) で、fc の 2 倍で −7dB、3 倍で −10dB、5 倍で −14dB です。
つまり信号とノイズの周波数が 10 倍しか離れていなければ、1 次フィルタで取れる減衰は 20dBです。100 倍離れていれば 40dB。それ以上を取りたければ、次数を上げる(2 段で −40dB/decade)か、信号とノイズの周波数をもっと離す(fc を下げる)しかありません。
| f ÷ fc | 振幅 | dB | 位相遅れ |
|---|---|---|---|
| 0.1 | 0.995 | −0.04dB | −5.7° |
| 0.5 | 0.894 | −1.0dB | −26.6° |
| 1 | 0.707 | −3.0dB | −45° |
| 2 | 0.447 | −7.0dB | −63.4° |
| 5 | 0.196 | −14.1dB | −78.7° |
| 10 | 0.0995 | −20.0dB | −84.3° |
| 100 | 0.01 | −40.0dB | −89.4° |
信号側にも影響が出る
フィルタは信号にも効きます。信号の周波数が fc の 1/10 なら振幅は 0.5% しか減りませんが、位相は 5.7° 遅れます。制御ループのセンサ信号や、複数チャンネルの同時性が要る計測では、この位相遅れが問題になります。振幅を 0.1% 以内にするには fc を信号の 22 倍以上、位相を 1° 以内にするには 57 倍以上にする必要があります。
時間領域では整定時間です。ステップ入力に対して、出力が最終値の 1% 以内に入るまで 4.6τ(τ = RC)、0.1% 以内なら 6.9τ かかります。1kΩ × 100nF = 100µs なら、1% 整定に 460µs。マルチプレクサで切り替えながら ADC で読む場合、チャンネル切り替えのたびにこの時間を待たないと前のチャンネルの値が混ざります。
ノイズを 40dB 落とすフィルタは、信号を 100 倍遅くするのと同じです。減衰と応答速度は同じ RC で決まるので、片方だけを良くすることはできません。
入出力のインピーダンスが式の前提
fc = 1 ÷ (2πRC) は、信号源のインピーダンスがゼロで、出力に何もつながっていないときの式です。実際には、信号源の出力抵抗 Rs が R に直列に加わり、負荷の入力抵抗 RL が C に並列に入ります。
Rs が R の 1/10 以上あると fc が目に見えて下がります。センサの出力抵抗が 10kΩ で、R = 10kΩ のフィルタを付けると、実効的な R は 20kΩ で fc は半分です。RL が R の 10 倍程度だと、直流ゲインが 0.9 倍に落ちるうえ、fc は上がります。
目安は Rs ≦ R ÷ 10、RL ≧ 10 × R です。この範囲に収まらないなら、フィルタの前後にバッファ(オペアンプのボルテージフォロワ)を入れます。
ADC の入力に RC を置く場合、C は ADC のサンプリング容量に電荷を供給する役目も持ちます。C がサンプリング容量(数〜数十 pF)の 100 倍以上あれば、サンプリング時の電圧の落ち込みは 1% 以下です。この観点では C は大きいほうがよく、R は ADC が要求する入力インピーダンス以下にします。
コンデンサの自己共振で減衰は頭打ちになる
計算上は 1MHz で −56dB でも、実物の 100nF コンデンサは 1MHz でコンデンサではないかもしれません。積層セラミック 1608 の 100nF は、ESL 0.5nH 程度と直列共振して 20MHz 前後でインピーダンスが最小になり、それより上ではインダクタとして振る舞います。減衰はそこで頭打ちになり、周波数が上がるとかえって減衰が減ります。
10µF なら共振は 2MHz 程度でさらに低く、1nF なら 200MHz 程度です。大容量のコンデンサほど高周波で効かないので、低い fc と高周波の減衰を両方取りたいときは、大容量と小容量を並列にします(電源のデカップリングと同じ問題で、反共振に注意)。
抵抗も同様で、高抵抗(100kΩ 以上)は端子間の浮遊容量(0.1〜0.5pF)で高周波をバイパスします。100kΩ と 0.2pF で 8MHz にゼロ点ができ、そこから上で減衰が止まります。
数十 MHz 以上のノイズを落とすなら、RC より LC(フェライトビーズとコンデンサ)のほうが向いています。フェライトビーズは高周波で抵抗性になり、共振の問題が起きにくいためです。
2 段にするとき
1 次で足りなければ 2 段にします。ただし同じ R と C を 2 段そのまま重ねると、2 段目が 1 段目の負荷になり、fc がずれて減衰の傾きも −40dB/decade に届きません。2 段目の R を 1 段目の 10 倍以上(C は 1/10)にして、後段が前段に影響しないようにします。1kΩ + 100nF の後に 10kΩ + 10nF、といった組み合わせです。
段間にバッファを入れれば、同じ R・C を使えます。オペアンプが 1 つ増えますが、インピーダンスの問題がなくなり、設計どおりの特性が出ます。
急峻な特性が必要なら、受動 RC を重ねるより、オペアンプを使った 2 次のアクティブフィルタ(サレン・キーなど)のほうが部品数が少なく、Q も設定できます。
デジタル信号の RC:チャタリング除去
スイッチのチャタリング除去に 10kΩ + 100nF(τ = 1ms)の RC を使うのは定番ですが、注意があります。RC を通った信号はゆっくり立ち上がるので、入力がスレッショルド付近に長くとどまります。通常の CMOS 入力では、その間に入力が何度も判定を行き来したり、貫通電流が流れたりします。
RC でなまらせた信号は、シュミットトリガ入力に入れます。マイコンの GPIO はシュミットトリガになっているものが多いですが、データシートで確認してください。ヒステリシスのない入力には 74HC14 などを間に入れます。
RC フィルタの計算機は、R と C からカットオフ周波数と、指定した周波数での減衰量・位相を出します。ノイズの周波数を入れて、実際に何 dB 落ちるかを確認してから R と C を決めてください。
よくある質問
ノイズを完全に除去するには、カットオフをどこに置けばよいですか。
R と C の組み合わせはどう選べばよいですか。同じ fc なら何でもよいですか。
電源ラインのノイズ除去に RC を使えますか。
位相遅れは何に影響しますか。
参考にした規格・資料
- Horowitz & Hill, The Art of Electronics — RC フィルタの周波数特性・位相・整定時間
- 各 MLCC メーカのインピーダンス特性データ — 自己共振周波数と ESL
- 各マイコンメーカのデータシート — GPIO のシュミットトリガ特性、ADC のサンプリング容量と入力インピーダンス