2014年5月25日日曜日

秋月電子USB-DAC用ローパスフィルタの設計(その2)

秋月電子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段のローパスフィルタ全体の周波数特性です.

ちょっとすごい式になりましたが,プロットしてみると,きちんと計算できてそうに見えます.

0 件のコメント:

コメントを投稿