「
秋月電子USB-DAC用ローパスフィルタの設計」で,外付けのローパスフィルタに使う抵抗の抵抗値,コンデンサの容量を確認したのですが,
元のページでは,さらに回路の出口のすぐ外に10kΩが追加されており,これが回路の出口に直列で付いている47μFの電解コンデンサにたまった電荷を放出するためとの事です.
その結果,電解コンデンサから先の回路は下記の回路のようになっています.
ここで,オレンジで囲まれている部分が,元々のキットに含まれている部分です.この部分まで含めて回路図を描くと
- ハイパスフィルタ(47μF + 10kΩ)
- ローパスフィルタ(100Ω + 0.022μF)
- ローパスフィルタ(330Ω + 0.0047μF)
の3段のフィルタになります.以下では,1段目のハイパスフィルタの周波数特性,3段まとめてのフィルタの特性を計算してみます.
まず,1段目だけのハイパスフィルタの周波数特性を計算します.下図のように変数を定義します.抵抗の抵抗値をR_0,コンデンサの容量をC_0,入力電圧をv_i(t),出力電圧をv_2(t),コンデンサに流れる電流をi_1(t),コンデンサにかかる電圧をv_{C_0}(t)とします.
すると,抵抗に関する式
v_2(t) = R_0 i_1(t)
コンデンサに関する式
\frac{d v_{C_0}(t)}{dt} = \frac{1}{C_0}i_0(t)
電圧に関する式
v_i(t) = v_{C_0}(t) + v_2(t)
が成立します.これらの式からi_0(t)とv_{C_0}(t)を消すと
\frac{d^2}{dt^2}v_i(t) + \frac{1}{C_0R_0}\frac{dv_2(t)}{dt} + \frac{d^2}{dt^2}v_2(t)
となります.これをラプラス変換すると
V_i(s)s^2 = \frac{1}{C_0R_0}V_2(s)s + V_2(s)s^2
となるので,伝達関数は
G(s) = \frac{V_2(s)}{V_i(s)} = \frac{C_0R_0 s}{1 + C_0R_0 s}
となります.周波数特性はs = j\omega,\omega = 2\pi fを入れて絶対値を取る事で
|G(j\omega)| = \frac{C_0R_02\pi f}{\sqrt{1 + (C_0R_02\pi f)^2}}
となるので,dBに直すと
g = 20\log_{10}|G(j\omega)| = 20\log_{10}\frac{C_0R_02\pi f}{\sqrt{1 + (C_0R_02\pi f)^2}}
となります.
次に,3段まとめたフィルタの周波数特性を計算します.下図のように変数を定義します.抵抗の抵抗値をそれぞれR_0,R_1,R_2,コンデンサの容量をそれぞれC_0,C_1,C_2,コンデンサC_0に流れる電流をi_1(t),抵抗R_0に流れる電流をi_r(t),抵抗R_1に流れる電流をi_2(t),コンデンサC_1に流れる電流をi_c(t),抵抗R_2に流れる電流をi_3(t),入力電圧をv_i(t),抵抗R_1の手前の電位をv_2(t),コンデンサC_0にかかる電圧をv_{C_0}(t),コンデンサC_1にかかる電圧をv_{C_1}(t),出力電圧をv_o(t)とします.
すると,電圧に関する式
v_i(t) = v_{C_0}(t) + v_2(t)
v_2(t) = R_0 i_r(t)
v_2(t) = R_1 i_2(t) + v_{C_1}(t)
v_{C_1}(t) = R_2 i_3(t) + v_o(t)
電流に関する式
i_1(t) = i_2(t) + i_r(t), \quad i_2(t) = i_3(t) + i_c(t),
コンデンサの充電に関する式
i_1(t) = C_0 \frac{dv_{C_0}(t)}{dt}, \quad i_c(t) = C_1 \frac{dv_{C_1}(t)}{dt}, \quad i_3(t) = C_2 \frac{dv_o(t)}{dt}
が得られます.
まず,
v_2(t)から右だけを見ると,これは
v_2(t)より左には依存しないので
前回の計算と同じ形になり,この部分の伝達関数の逆数は
\frac{V_2(s)}{V_o(s)} = (R_1C_1s + 1)(R_2C_2s+1) + R_1C_2s
となります.
v_2(t)より左については,上のハイパスフィルタとは微妙に式が違う(i_1(t)がi_2(t)とi_r(t)に分かれて,電流i_2(t)がv_2(t)以降の回路に流れ込む)ので,上の式からうまくi_2(t)を消してv_2(t)を残すようにすると,
\frac{d^2}{dt^2}v_i(t) = \frac{C_1 + C_2}{C_0} \frac{d^2}{dt^2} v_o(t) + \frac{C_1C_2R_2}{C_0} \frac{d^3}{dt^3} v_o(t) + \frac{1}{C_0R_0} \frac{d}{dt}v_2(t) + \frac{d^2}{dt^2} v_2(t)
が得られます.ラプラス変換すると
V_i(s)s^2 = \frac{C_1 + C_2}{C_0} V_o(s)s^2 + \frac{C_1C_2R_2}{C_0} V_o(s)s^3 + \frac{1}{C_0R_0} V_2(s)s + V_2(s)s^2
となります.すると,全体の伝達関数の逆数は
\frac{V_i(s)}{V_o(s)} = \frac{C_1 + C_2}{C_0} + \frac{C_1C_2R_2}{C_0}s + (\frac{1}{C_0R_0s} + 1)\frac{V_2(s)}{V_o(s)} = \frac{C_1 + C_2}{C_0} + \frac{C_1C_2R_2}{C_0}s + (\frac{1}{C_0R_0s} + 1)\{ (C_1R_1s + 1)(C_2R_2s + 1) + R_1C_2 s\}
となります.s = j\omegaを代入し,複素数としての絶対値を取り,さらに\omega = 2\pi fを代入すると,最終的な周波数特性は
g = 20\log_{10} |G(j\omega)| = 20\log_{10} \frac{C_0R_02\pi f}{\sqrt{(C_1R_0 + C_2R_0 + C_1R_1 + C_2R_2 + C_2R_1 + C_0R_0 - C_0C_1C_2R_0R_1R_2(2\pi f)^2)^2 (2\pi f)^2 + \{ 1 - ( C_1C_2R_1R_2 + C_1C_2R_0R_2 + C_0C_1R_0R_1 + C_0C_2R_0R_2 + C_0C_2R_1R_2)(2\pi f)^2\}^2}}
となります.
以上の2つの式に以下のパラメータを代入してgnuplotでプロットします.
- C_0 = 47 \times 10^{-6},R_0 = 10 \times 10^3
- R_1 = 100,C_1 = 0.022 \times 10^{-6}
- R_2 = 330,C_2 = 0.0047 \times 10^{-6}
gnuplotに食わせるスクリプトは以下のようになります.
set logscale x
set xrange [0.1:1000000]
set xlabel 'Hz'
set ylabel 'dB'
f(r0, c0, f) = 20 * log10(c0 * r0 * 2 * 3.1415 * f) - 10 * log10((2 * 3.1415 * r0 * c0 * f)**2 + 1)
g(r0, c0, r1, c1, r2, c2, f) = 20 * log10(c0 * r0 * 2 * 3.1415 * f) - 10 * log10((c1*r0 + c2*r0 + c1*r1 + c2*r2 + c2*r1 + c0*r0 - c0*c1*c2*r0*r1*r2*(2 * 3.1415 * f)**2)**2 * (2 * 3.1415 * f)**2 + (1 - (c1*c2*r1*r2 + c1*c2*r0*r2 + c0*c1*r0*r1 + c0*c2*r0*r2 + c0*c2*r1*r2)*(2 * 3.1415 * f)**2)**2 )
set term pdf
set output 'HighPass-47uF-10kohm-0.1Hz-1MHz.pdf'
plot f(10e3, 47e-6, x) title '47uF, 10kohm'
set term png
set output 'HighPass-47uF-10kohm-0.1Hz-1MHz.png'
replot
set term pdf
set output 'HighPass-47uF-10kohm+LowPass-100ohm-0.022uF-330ohm-0.0047uF-0.1Hz-1MHz.pdf'
plot g(10e3, 47e-6, 100, 0.022e-6, 330, 0.0047e-6, x) title '47uf, 10kohm + 100ohm, 0.022uF + 330ohm, 0.0047uF'
set term png
set output 'HighPass-47uF-10kohm+LowPass-100ohm-0.022uF-330ohm-0.0047uF-0.1Hz-1MHz.png'
replot
|
結果のグラフは以下のようになりました. まず,最初のハイパスフィルタだけの周波数特性です.
次がハイパスフィルタと2段のローパスフィルタ全体の周波数特性です.
ちょっとすごい式になりましたが,プロットしてみると,きちんと計算できてそうに見えます.