エレキットのUSB-DACだと,出力にオペアンプが入っていたりするのですが,秋月電子のキットはD/A変換した信号がそのまま出力されているので,色々と回路を追加した改造例があるようです.その中で,ぺるけさんのページhttp://www.op316.com/tubes/lpcd/aki-dac.htmに,ローパスフィルタを付ける話があったので,やってみることにしました.
ここで一つ問題が.ここに載っていた抵抗値は100Ωと390Ωまたは82Ωと330Ωだったのですが,手元にあった抵抗が100Ωと330Ωなので,どっちの組み合わせでもありません.
折角なので,100Ωと330Ωの組み合わせでも問題ないかどうか自分で計算してみました.あと,100Ω-0.022uFと330Ω-0.0047uFのそれぞれ単体で,どの程度のフィルタ特性になるかも確認します.計算をフォローするWebページが無かったので,教科書「演習で学ぶ基礎制御工学」を取り出して,改めて問題を解いてみます.
まず以下のような1段だけの場合,入力電圧をv_i(t),出力電圧をv_o(t),抵抗値をR_1,コンデンサの容量をC_1,抵抗に流れる電流をi_1(t)とします.
すると,電圧の式として
R_1 i_1(t) + v_o(t) = v_i(t)
が出ます.また,コンデンサの充電の式として
v_o(t) = \frac{1}{C_1} \int_0^t i_1(\tau)\, d\tau
が出ます.2番目の式をtで微分すると
\frac{d v_o(t)}{dt} = \frac{1}{C_1} i_1(t)
となるので,これを最初の式に代入すると
R_1C_1\frac{d v_o(t)}{dt} + v_o(t) = v_i(t)
となります.電圧の初期値を0としてラプラス変換すると
R_1C_1 s V_o(s) + V_o(s) = V_i(s)
となるので,この回路の伝達関数は
G(s) = \frac{V_o(s)}{V_i(s)} = \frac{1}{R_1C_1 s + 1}
となります.ゲインは
|G(j\omega)| = \frac{1}{\sqrt{(R_1C_1\omega)^2 + 1}}
となるので,\omega = 2\pi fを代入すると,結局周波数特性は
g = 20\log_{10} |G(j \omega)| = 10 \log_{10}\frac{1}{(2\pi R_1C_1 f)^2 + 1}
となります.
次に,以下のように2段重ねた場合に,入力電圧をv_i(t),1個目のコンデンサにかかる電圧をv_c(t),出力電圧をv_o(t),抵抗の抵抗値をR_1とR_2,コンデンサの容量をC_1とC_2,抵抗に流れる電流をi_1(t)とi_2(t),C_1に流れる電流をi_c(t)とします.
コンデンサの充電の式が2個,
i_c(t) = C_1 \frac{d v_c(t)}{dt}, \quad i_2(t) = C_2 \frac{d v_o(t)}{dt}
電流の式が1個,
i_1(t) = i_c(t) + i_2(t)
電圧の式が2個,
R_1 i_1(t) + v_c(t) = v_i(t), \quad R_2 i_2(t) + v_o(t) = v_c(t)
出ます.
これらから電流を消すと
R_1( C_1\frac{d v_c(t)}{dt} + C_2 \frac{d v_o(t)}{dt} ) + v_c(t) = v_i(t)
および
R_2 C_2 \frac{d v_o(t)}{dt} + v_o(t) = v_c(t)
が出ますので,全ての初期値を0にしてラプラス変換すると
R_1( C_1 V_c(s) s+ C_2 V_c(s) s) + V_c(s) = V_i(s)
および
R_2 C_2 V_o(s) s + V_o(s) = V_c(s)
が出ます.この2式からV_c(s)を消すと,結局
(R_1 C_1 s + 1)(R_2 C_2 s + 1)V_o(s) + R_1 C_2 s V_o(s) = V_i(s)
となり,伝達関数は
G(s) = \frac{V_o(s)}{V_i(s)} = \frac{1}{(R_1 C_1 s + 1)(R_2 C_2 s + 1) + R_1 C_2 s}
となります.ゲインは
|G(j\omega)| = \frac{1}{\sqrt{(R_1C_1+R_2C_2+R_1C_2)^2\omega^2 + (1-R_1C_1R_2C_2\omega^2)^2}}
となるので,\omega = 2\pi fを入れると,周波数特性は
\begin{align*} g &= 20 \log_{10} |G(j\omega)| \\ &= 10 \log_{10} \frac{1}{(R_1C_1+R_2C_2+R_1C_2)^2(2\pi f)^2 + (1-R_1C_1R_2C_2(2\pi f)^2)^2} \end{align*}
となります.
以上の2つの式に下記のパラメータを代入してgnuplotでプロットしてみます.
- 1段のフィルタ回路でR_1 = 330,C_1 = 0.0047\times 10^{-6}
- 1段のフィルタ回路でR_1 = 100,C_1 = 0.022\times 10^{-6}
- 2段のフィルタ回路でR_1 = 82,C_1 = 0.022\times 10^{-6},R_2 = 330,C_2 = 0.0047\times 10^{-6}
- 2段のフィルタ回路でR_1 = 100,C_1 = 0.022\times 10^{-6},R_2 = 330,C_2 = 0.0047\times 10^{-6}
- 2段のフィルタ回路でR_1 = 100,C_1 = 0.022\times 10^{-6},R_2 = 390,C_2 = 0.0047\times 10^{-6}
- 2段のフィルタ回路でR_1 = 100,C_1 = 0.022\times 10^{-6},R_2 = 430,C_2 = 0.0047\times 10^{-6}
gnuplotに食わせるスクリプトはこんなかんじ.
set term pdf
set output 'LowPassFilter-100ohm-0.022uF-330ohm-0.0047uF-10Hz-1MHz.pdf'
set logscale x
set xrange [10:1000000]
set xlabel 'Hz'
set ylabel 'dB'
f(r1, c1, f) = 10 * log10(1/((2 * 3.1415 * r1 * c1 * f)**2 + 1))
g(r1, c1, r2, c2, f) = 10 * log10(1/( (r1*c1 + r2*c2 + r1 * c1)**2 * (2*3.1415 * f)**2 + (1 - r1*c1*r2*c2*(2*3.1415 * f)**2) ))
plot \
f(330, 0.0047e-6, x) title '330ohm, 0.0047uF', \
f(100, 0.022e-6, x) title '100ohm, 0.022uF', \
g(82, 0.022e-6, 330, 0.0047e-6, x) title '82ohm, 0.022uF + 330ohm, 0.0047uF', \
g(100, 0.022e-6, 330, 0.0047e-6, x) title '100ohm, 0.022uF + 330ohm, 0.0047uF', \
g(100, 0.022e-6, 390, 0.0047e-6, x) title '100ohm, 0.022uF + 390ohm, 0.0047uF', \
g(100, 0.022e-6, 430, 0.0047e-6, x) title '100ohm, 0.022uF + 430ohm, 0.0047uF'
set term png
set output 'LowPassFilter-100ohm-0.022uF-330ohm-0.0047uF-10Hz-1MHz.png'
replot
set xrange [1000:1000000]
set term pdf
set output 'LowPassFilter-100ohm-0.022uF-330ohm-0.0047uF-1kHz-1MHz.pdf'
replot
set term png
set output 'LowPassFilter-100ohm-0.022uF-330ohm-0.0047uF-1kHz-1MHz.png'
replot
|
結局,1段と2段ではローパスフィルタの効き目は結構違うこと,また,1段目の抵抗値を100Ωにしておけば,2段目の抵抗値 は330Ωでも390Ωでも430Ωでもあまり変わらないことが分かったので,手元にある100Ωと330Ωで下記のようなローパスフィルタ回路を組んでみる事にしました.
続きは「秋月電子USB-DAC用ローパスフィルタの設計(その2)」で.
0 件のコメント:
コメントを投稿