[[AnalogDiscoveryを試す]] #contents 2014/11/8からのアクセス回数 &counter; ** 待望のAnalogDicovery [#w6a389ef] 秋月でも購入できるようになったAnlogDiscoveryを遅ればせながら入手することができました。 私の着目するAnalogDiscoveryの特徴は、以下の点にあります。((特質すべき点は、ネットワーク・アナライザと2チャンネルDC電源です。これで両電源を必要とするアンプの周波数特性が測定できます。)) - 2チャンネル・オシロスコープ - 2チャンネル任意波形発生器 - ネットワーク・アナライザ - 2チャンネルDC電源(PS+, PS-) 他にもロジックアラライザーの機能もありますが、ソースが公開されていないので そちらはLabToolsを使用することにします。 &ref(AnalogDiscovery.png); ピンの配置は、以下の通りです。 &ref(Analog_Discovery_pin.png); ** CR積分回路 [#je774f1d] AnalogDiscoveryで最初に試すのは、CR積分回路です。以下にWikiから引用した回路図を示します。 &ref(250px-Series-RC.svg.png); *** LTSpiceを使って方形波に対するVcの変化を見る [#rdfe4d43] AnalogDiscoveryで実験をする前にLTSpiceを使って方形波に対するVcの応答をシミュレーションしてみます。 ((LTSpiceがMacOSXでも動くようになりました。嬉しいです)) モデルは、以下のファイルを使用しました。 - &ref(CR_Int.asc); LTSpiceで以下の回路を作成します。 &ref(CR_Int_cir.png); 50Hzでのシミュレーションの結果は、以下の様になりました。 &ref(CR_Int_Spice_50Hz.png); 同様に500Hz, 5kHzの結果を示します。 ((5kHzでのシミュレーションでは、開始後から安定するまで少し時間が必要になるみたいです)) &ref(CR_Int_Spice_500Hz.png); 5kHzは、以下の様になります。 &ref(CR_Int_Spice_5KHz.png); *** AnalogDiscoveryを使ってVcを測定する [#f66463f4] トラ技2014年5月号では、アルミの箱を使うように進めていたのですがまだ入手できていないので、 机の上での測定になります。((ご容赦ください。)) 少しでも精度が良くなるように奮発してフィルムコンデンサーを使いました。 以下のようのブレッドボードに回路を組み、AnalogDiscoveryと接続しました。 ((WaveFormsは、VMWare FusionのWindows上で実行しました。)) &ref(CR_Int_setting.png); ** AnalogDiscoveryを使った測定結果 [#ee13f664] 方形波の周波数を50Hz, 500Hz, 5kHzに変えて、Vcの応答を測定してみました。 回路の時定数\(\tau\)は、\(C_1 R_1 = 10K \times 0.1 \mu = 1 ms \)となっています。 50Hzの場合、コンデンサーに十分電荷が蓄積された後、放電が開始されている様子が観られます。 &ref(th_CR_Int_50Hz.jpg); 500Hzでは、方形波の変化が時定数の1msとなっており、方形波を積分したときの三角波に近い形を示しています。 ((実際に波形をみると積分した形になっていることに感動しました。)) &ref(th_CR_Int_500Hz.jpg); 5kHzになるとほとんど変化しなくなり、ローパスフィルターの性質がでてきます。 &ref(th_CR_Int_5KHz.jpg); *** 周波数特性を測る [#g0527959] AnalogDiscoveryを購入する動機になったのが、周波数特性を計測する機能です。 ネットワーク・アナライザを使って周波数特性を測ったのが、以下のグラフです。 これは、入力波と出力はの2チャンネルのアナログ測定値から計算しており、計測には少々時間が掛かります。 &ref(th_CR_Int_network.jpg); ** CR積分回路の意味を考える [#kfedd697] 50HzのVcの応答を見ると、コンデンサーに蓄積された電荷が方形波の電圧が逆になったときに、 放電している様子が分かります。 微分方程式を解いて、CR回路を計算するのは、[[sage/微分方程式を解いてみる]]で紹介していますので、 ここではラプラス変換を使って、Vcの応答を計算してみます。 参考にしたのは、間邊 幸三郎さんのサイトです。((ほぼコピーで申し訳ありません)) - [[ラプラス変換とその使い方5 いろいろな波形の過渡現象>http://www.jeea.or.jp/course/contents/01138/]] ラプラス変換ではラプラス積分を直接計算するのではなく、既存の関数のラプラス変換表を使って計算するのが特徴です。 *** CR積分回路のラプラス変換 [#o809dcab] CR積分回路と方形波の入力の関係を [[ラプラス変換とその使い方5 いろいろな波形の過渡現象>http://www.jeea.or.jp/course/contents/01138/]] の図11から引用します。 &ref(11.png); この回路の入力波とRとCの電圧の関係から以下の式が成り立ちます。 ((Eの中括弧がそのまま書いたので、latexの処理で消えてしました。2014/11/22修正)) $$ R i + \frac{\int i dt}{C} = E \left\{ u(t) - u(t - T)\right\} $$ この式を7 t推移法則とステップ関数のラプラス変換\( \frac{1}{s} \)、6 積分法則を使ってラプラス変換すると以下の様になります。 $$ R I(s) + \frac{I(s) + q(0)}{sC} =E \frac{1 - e^{-Ts}}{s} $$ これから\(I(s)\)を求めると、以下の様になります。 $$ I(s) = \frac{1 - e^{-Ts}}{s ( R + \frac{1}{sC} )} E = \frac{E}{R} \frac{(1 - e^{-Ts})}{ ( s + \frac{1}{CR} ) } $$ ラプラス逆変換を\( L^{-1}(s) \)と表すと\( i \)は、以下の様に求まります。 $$ i = \frac{E}{R} L^{-1} \left \{ (1 - e^{-Ts}) \frac{1}{s + \frac{1}{CR}} \right \} $$ 線形法則で分配して、 $$ i = \frac{E}{R} \left \{ L^{-1} \frac{1}{s + \frac{1}{CR}} - L^{-1} \frac{e^{-Ts}}{s + \frac{1}{CR}} \right \} $$ これをラプラス変換表を使って以下の様に書き替えます。 $$ i = \frac{E}{R} \left \{ e^{-\frac{1}{CR}t} - e^{-\frac{1}{CR}(t - T) } u(t -T)\right \} $$ 電流iからCの両端の電圧Vcは、以下の様に求まります。 $$ V_C = E \left\{ u(t) - u(t - T)\right\} - iR $$ これからt < TのVcは、 $$ V_C = E(1 - e^{-\frac{1}{CR}t}) $$ t >= TのVcは、 $$ V_C = E \left \{ - e^{-\frac{1}{CR}t} + e^{-\frac{1}{CR}(t - T)} \right \} $$ *** Sageを使ってグラフを表示 [#o940658c] 出力となるVcの式は分かりましたが、そのままではどんな形になるか分かりづらいです。 そこで、Sageを使ってグラフを表示してみましょう。 ここで紹介するSageのノートは、以下のURLで公開しています。 - http://www15191ue.sakura.ne.jp:8000/home/pub/48/ CRを時間係数\( \tau \)として、VcをSageで表すと以下の様になります。 #pre{{ (t, T, tau, E) = var('t T tau E') Vc = E*(1*(unit_step(t) - unit_step(t - T)) - e^(-1/tau*t) + e^(-1/tau*(t - T) )* unit_step(t - T)) }} 数式を見やすくすると、 #pre{{ show(Vc) }} &ref(eq1.png); 方形波を以下のように定義します。 #pre{{ # 方形波 U = E*(unit_step(t) - unit_step(t - T)) }} 方形波とVcを合わせてプロットする関数plot_Vcを以下の様に定義します。 #pre{{ # 方形波とVcをプロットする関数を定義します def plot_Vc(Tc): fvc(t) = Vc(t, tau=0.001, T=Tc, E=2.0) Ut(t) = U(T=Tc, E=2.0) vc_plt = plot(fvc(t), [t, 0, 2*Tc], color='blue') ut_plt = plot(Ut(t), [t, 0, 2*Tc], color='green') (vc_plt + ut_plt).show(figsize=4) }} Tc=0.01、周期50HzでのVcのプロットします。 #pre{{ # Tc=0.01、周期50HzでのVcのプロット plot_Vc(Tc=0.01) }} &ref(plt_50Hz.png); Tc=0.001、周期500HzでのVcのプロットします。 #pre{{ # Tc=0.001、周期500HzでのVcのプロット plot_Vc(Tc=0.001) }} &ref(plt_500Hz.png); Tc=0.0001、周期5kHzでのVcのプロットします。 #pre{{ # Tc=0.0001、周期5kHzでのVcのプロット plot_Vc(Tc=0.0001) }} &ref(plt_5kHz.png); ** 周波数特性 [#ne178f04] もう一度、最初の図に戻って、CR積分回路の周波数特性を求めてみます。 &ref(250px-Series-RC.svg.png); この図から、\( v_{in} \)を式で表現すると以下の様になります。 $$ R i + \frac{\int i dt}{C} = v_{in} $$ これをラプラス変換すると、以下の様になり、 $$ R I(s) + \frac{I(s) + q(0)}{sC} = V_{in} $$\(V_RとV_C\)が分圧しているみると、伝達関数の周波数特性は、以下の様になります。 $$ H_C (s) = \frac{V_C(s)}{V_{in}(s)} = \frac{\frac{1}{Cs}}{R + \frac{1}{Cs}} $$ これを整理すると、以下の式が得られます。 $$ H_C(s) = \frac{1}{RCs + 1} $$ 振幅特性は、 $$ \|{H_C(s) }\| $$ 位相特性は、sをjωとし、以下のように表されます。 $$ G(j\omega) = \Re{G(j\omega)} + j \Im{G(j\omega)} $$ 従って、\( H_C(j\omega) \)の実数部と虚数部に分けると位相角\( \phi(G(j\omega)) \)は、以下の様に求まります。 $$ \phi(G(j\omega)) = \tan^{-1} \frac{\Im(G(j\omega))} {\Re{G(j \omega))}} $$ RSをτとして、\( \phi(G(j\omega)) \)を表し、上下に\( 1 - \tau j \omega\) を掛けて、分母を有理化すると、 $$ G(j\omega) = \frac{1}{1 + \tau^2 \omega^2}( 1 - \tau \omega j) $$ となり、位相特性は以下の様に求まります。 $$ \phi(G(j\omega)) = \tan^{-1} -\tau \omega $$ これをSageを使って計算みます。 ここで、\( s= j \omega = 2 \pi f j \)であることを使います。 Sageへの入力: #pre{{ # 伝達関数から周波数特性を求める (s, f,R,C) = var('s f R C') Hc = 1/(R*C*s + 1) }} Sageへの入力: #pre{{ # s = jω, ω= 2πfを代入すると Hc(f) = Hc.subs_expr(s == 2*i*pi*f) show(Hc(f)) }} &ref(eq2.png); Sageへの入力: #pre{{ # 電気ではデジベルで表示するため、toDb関数を定義する def toDb(v): return 20*log(abs(v), 10) }} Sageへの入力: #pre{{ # 直接表示すると'unable to simplify to float approximation'のエラーがでるので、lambda式で回避した。 # plot(toDb(Hc(f, R=10000, C=10^-7)).n(), [f, 10, 10000], scale="semilogx", figsize=4, plot_points=1000) # plot(lambda f: toDb(Hc(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000) }} &ref(gain.png); Sageへの入力: #pre{{ # 位相は以下の様になります。 PhiC(f) = arctan(-2*pi*f*R*C) show(PhiC) }} &ref(eq3.png); 表示℃で変換する関数を定義する。 #pre{{ def toDeg(v): return v*180/pi }} 位相をプロットします。 Sageへの入力: #pre{{ plot(lambda f: toDeg(PhiC(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000) }} &ref(phase.png); ** 付録(ラプラス変換規則と主な関数の変換表) [#x2901cc7] ラプラス変換の基本法則を以下に示します。 | 法則 | t関数 | s関数 |h | 1 線形法則 | \( a f(t) \) | \( a F(s) \) | | 2 線形法則 | \( f(t) + g(t) \) | \( F(s) + G(s) \) | | 3 相似法則 | \( f(at) \) | \( \frac{1}{a} F \left ( \frac{s}{a} \right ) \) | | 4 s推移法則 | \( e^{-at} f(t) \) | \( F(s + a) \) | | 5 微分法則 | \( \frac{d f(t)}{dt} \) | \( sF(s) - f(0) \) | | 6 積分法則 | \( \int f(t)dt \) | \( \frac{F(s)}{s} + \frac{f^{-1}(0)}{s} \) | | 7 t推移法則 | \( f(t - a) \) | \( e^{-as} F(s) \) | 主な関数のラプラス変換表を以下に示します。((このテーブルはSageで計算した結果です。)) | t関数 | s関数 |h | \(\delta\) | 1 | | \(u(t)\) | \(\frac{1}{s}\) | | \(t\) | \(\frac{1}{s^{2}}\) | | \(t^2\) | \(\frac{1}{s^{3}}\) | | \(t^n\) | \(s^{{(-n - 1)}} \Gamma\left(n + 1\right)\) | | \(cos(\omega t)\) | \(\frac{s}{{(\omega^{2}+s^{2})}}\) | | \(sin(\omega t)\) | \(\frac{\omega}{{(\omega^{2} + s^{2})}}\) | | \(e^{a t}\) | \(-\frac{1}{{(a - s)}}\) | | \(t e^{a t}\) | \(\frac{1}{{(a - s)}^{2}}\) | ** コメント [#f27be5ad] #vote(おもしろかった[16],そうでもない[0],わかりずらい[0]) #vote(おもしろかった[17],そうでもない[0],わかりずらい[0]) 皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。 - いくつかの式のミスを修正しました。 -- [[竹本 浩]] &new{2014-11-22 (土) 19:46:52}; - ラプラス変換表の1をu(t)に修正しました。 -- [[竹本 浩]] &new{2014-11-22 (土) 20:59:29}; #comment_kcaptcha