AnalogDiscoveryを試す

2014/11/22からのアクセス回数 1858

AnalogDiscoveryを試す/01-CR積分回路でも式にタイプミスがあったりして、 申し訳ありません。

できるだけ式を誘導できるように展開していきますので、間違いを見つけられたらお知らせ下さい。

CR微分回路

電気回路編 その3から微分回路を引用し、 以下に示します。

ちょうど、積分回路の抵抗とコンデンサーの位置を入れ替えた形になっています。

bibun01.gif

LTSpiceを使って方形波に対するVoの変化を見る

AnalogDiscoveryを試す/01-CR積分回路と同様に、LTSpiceを使って方形波に対するVoの応答をシミュレーション します。

モデルは、以下のファイルを使用しました。

LTSpiceで以下の回路を作成します。

CR_Dif_cir.png

50Hzでのシミュレーション結果は、以下の様になりました。 ちょうど入力波を微分したような応答が返ってきます。これがCR微分回路と呼ばれる理由です。

CR_Dif_Spice_50Hz.png

500Hzでは、応答が直線的になり(サグと呼ぶそうです)

CR_Dif_Spice_500Hz.png

5kHzでは、変化量が小さくなっています。

CR_Dif_Spice_5kHz.png

AnalogDiscoveryを使ってVoを測定する

次にAnalogDiscoveryを使って実際に測定してみます。

以下の様にブレッドボードに回路を組みAnalogDiscoveryと接続します。

CR_Dif_setting.png

AnalogDiscoveryを使った測定結果

方形波の周波数を50Hz, 500Hz, 5kHzに変えて、Voの応答を測定してみました。

回路の時定数\(\tau\)は、\(C_1 R_1 = 10K \times 0.1 \mu = 1 ms \)となっています。

50Hzの場合の応答は、以下の様になりました。 *1

実際の出力波形の方が大きく変化しており、LTSpiceの結果よりも大きな初期変動が見られます。

th_CR_Dif_50Hz.jpg

500Hzと5kHzは、以下の様になりました。

th_CR_Dif_500Hz.jpg

th_CR_Dif_5KHz.jpg

周波数特性を測る

ネットワーク・アナライザを使って周波数特性を調べてみます。 1次のハイパスフィルターの特徴がでています。

th_CR_Dif_network.jpg

CR微分回路のラプラス変換

CR微分回路もAnalogDiscoveryを試す/01-CR積分回路と同じで、入力波とRとCの電圧の関係に以下の式が成り立ちます。

$$ R i + \frac{\int i dt}{C} = E \left\{ u(t) - u(t - T) \right\} $$

ラプラス変換も同じで、iが以下の様に求まります。

$$ i = \frac{E}{R} L^{-1} \left \{ (1 - e^{-Ts}) \frac{1}{s + \frac{1}{CR}} \right \} $$

Voは、iRなので、Voは以下の式で求まります。

$$ V_O = E \left \{ e^{-\frac{1}{CR}t} - e^{-\frac{1}{CR}(t - T) } u(t -T)\right \} $$

Sageを使ってグラフを表示

Sageを使ってVoのグラフをみてみましょう。

ここで紹介するSageのノートは、以下のURLで公開しています。

CRを時間係数\( \tau \)として、VoをSageで表すと以下の様になります。

(t, T, tau, E) = var('t T tau E')
Vo = E*(e^(-1/tau*t) - e^(-1/tau*(t - T) )* unit_step(t - T))

数式を見やすくすると、

show(Vo)

eq4.png

方形波を以下のように定義します。

# 方形波
U = E*(unit_step(t) - unit_step(t - T))-E/2

方形波とVoを合わせてプロットする関数plot_Voを以下の様に定義します。

# 方形波とVoをプロットする関数を定義します
def plot_Vo(Tc):
    Ut(t) = U(T=Tc, E=4.0)
    fvo(t) = Vo(t, tau=0.001, T=Tc, E=4.0)
    vo_plt = plot(fvo(t), [t, 0, 2*Tc], color='blue')
    ut_plt = plot(Ut(t), [t, 0, 2*Tc], color='green')
    (vo_plt + ut_plt).show(figsize=4)

Tc=0.01、周期50HzでのVoのプロットします。

# Tc=0.01、周期50HzでのVoのプロット
plot_Vo(Tc=0.01)

plt_CR_Dif_50Hz.png

Tc=0.001、周期500HzでのVoのプロットします。

# Tc=0.001、周期500HzでのVoのプロット
plot_Vo(Tc=0.001)

plt_CR_Dif_500Hz.png

Tc=0.0001、周期5kHzでのVoのプロットします。

# Tc=0.0001、周期5kHzでのVoのプロット
plot_Vo(Tc=0.0001)

plt_CR_Dif_5kHz.png

50Hzのピークは4Vが正しい

50Hzでのピークが実験では4Vと-4Vになっているのに、LTSpiceでは2.5V, -2.5Vになっています。

  • 2Vから+2Vへの変換したので変動量4となるのが、正しいように思えます。

Sageの計算でも4Vと-4Vがきちんと求まっています。

5kHzの応答が実際の波形と異なるのは何故

最後の5kHzの応答波形がLTSpiceや実験で求まった波形と大きく異なります。 *2

これまで、LTSpiceで5kHzの結果を出すときには、安定な形状になってから表示していましたが、 試しに、0から表示してみると、以下の様にようになります。

シミュレーションの.tranを以下の様に変更します。

.tran 0 0.0005 0.0 100

結果は、以下の様になりました。

CR_Dif_5kHz_0.0015.png

最初の波形は、まさにSageで計算したものに一致します。 徐々に、2Vと-2Vでの変化に変わっています。 最初の波形は、コンデンサーの初期電荷が0を仮定していますが、周波数が大きくなると、完全に放電するまえに 次の充電が行われているため異なる値となったと思われます。(要確認です!)

周波数特性

AnalogDiscoveryを試す/01-CR積分回路と同様にCR微分回路の周波数特性をSageを使って求めてみます。

伝達関数Hは、\(V_oとV_i\)から以下の様に計算します。

$$ H(s) = \frac{V_o}{V_{i}} = \frac{RI(s)}{( R + \frac{1}{sC}) I(s)} $$

分母・分子をRI(s)で割ると、

$$ H(s) = \frac{1}{(1 + \frac{1}{RCs})} $$

Sageで伝達関数をプロットする

AnalogDiscoveryを試す/01-CR積分回路の場合には、伝達関数の振幅特性と位相特性を計算してからプロットしましたが、 今回は伝達関数から直接振幅特性と位相特性をプロットしてみます。

上記の式から伝達関数を以下の様に定義します。

Sageへの入力:

# 伝達関数から周波数特性を求める
(s, f,R,C) = var('s f R C')
H = 1/(1/(R*C*s) + 1) 

伝達関数を表示すると、 Sageへの入力:

show(H)

eq5.png

ラプラス変数sをjω、ω=2πfを代入すると、 Sageへの入力:

# s = jω, ω= 2πfを代入すると
H(f) = H.subs_expr(s == 2*i*pi*f)

db単位で表示するために、toDb関数を以下の様に定義します。

# 電気ではデジベルで表示するため、toDb関数を定義する
def toDb(v):
    return 20*log(abs(v), 10) 

振幅特性をプロットします。 Sageへの入力:

# 直接表示すると'unable to simplify to float approximation'のエラーがでるので、lambda式で回避した。
plot(lambda f: toDb(H(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000) 

gain_def.png

位相特性は、定義から以下の様になります。

# 位相は以下の様になる
Phi(f) = arctan(imaginary(H(f))/real(H(f)))

位相を度で表示するために、toDeg関数を以下の様に定義します。

def toDeg(v):
    return v*180/pi 

位相特性をプロットすると以下の様になります。

Sageへの入力:

plot(lambda f: toDeg(Phi(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000) 

phase_def.png

このようにSageを使うと伝達関数の周波数特性を非常に簡単にグラフ化できます。

感想

とても当たり前のように思われていた、CRの微分回路でも実験と計算値にずれが生じることに改めて驚きました。

これまで、理論値のグラフは表示するのが大変だったため、代表的な計算値のみが紹介されているケースが多かったのですが、Sageを使うことで様々なケースのプロットが簡単に行うことができ、新たな発見ができたことは大きな収穫でした。

コメント

選択肢 投票
おもしろかった 2  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。


(Input image string)


*1 当たり前ですが、トラ技の結果と同じ結果が出ています。
*2 500Hzでも最初の応答波形が4Vになっていますが、その後は、-3Vから-1Vの範囲で変化しており、実際の観測値とも合っています

添付ファイル: filegain_def.png 306件 [詳細] filephase_def.png 312件 [詳細] fileeq5.png 292件 [詳細] fileCR_Dif_5kHz_0.0015.png 353件 [詳細] fileplt_CR_Dif_500Hz.png 347件 [詳細] fileplt_CR_Dif_50Hz.png 350件 [詳細] fileplt_CR_Dif_5kHz.png 333件 [詳細] fileeq4.png 293件 [詳細] fileth_CR_Dif_network.jpg 315件 [詳細] fileth_CR_Dif_500Hz.jpg 328件 [詳細] fileth_CR_Dif_50Hz.jpg 339件 [詳細] fileth_CR_Dif_5KHz.jpg 311件 [詳細] fileCR_Dif_setting.png 320件 [詳細] fileCR_Dif_Spice_500Hz.png 347件 [詳細] fileCR_Dif_Spice_50Hz.png 348件 [詳細] fileCR_Dif_Spice_5kHz.png 357件 [詳細] fileCR_Dif_cir.png 358件 [詳細] fileCR_Dif.asc 237件 [詳細] filebibun01.gif 321件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-07-17 (金) 15:47:32 (614d)
SmartDoc