2014年5月24日土曜日

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

真空管アンプにはMac miniのヘッドフォン端子から音を入れているのですが,最近USB-DACが流行っているみたいなので,一番安い秋月電子のUSB-DACを買いました.

エレキットの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. 10Hzから1MHzまでプロットした場合は以下のグラフになりました.
  2. 1kHzから1MHzまでプロットした場合は以下のグラフになりました.

結局,1段と2段ではローパスフィルタの効き目は結構違うこと,また,1段目の抵抗値を100Ωにしておけば,2段目の抵抗値 は330Ωでも390Ωでも430Ωでもあまり変わらないことが分かったので,手元にある100Ωと330Ωで下記のようなローパスフィルタ回路を組んでみる事にしました.


続きは「秋月電子USB-DAC用ローパスフィルタの設計(その2)」で.

0 件のコメント:

コメントを投稿