DC - DC コンバータをやっていたつもりだったのですが、時々顔を出している「アナログ電子回路コミュニティ」の中で LTspice を使って伝達関数をシミュレーションしている例を発見。え~、それ知らなかったからわざわざオペアンプで伝達関数を表現してシミュレーションやってたよ~、てな感じで、早速ヘルプファイルを見ながら自分でもトライ。
お~できるできる、と嬉しくなってここで紹介することになりました。幼稚園児みたいですが。いや幼稚園児に失礼か。
とっても簡単なフィルタでやってみます。
「e」シンボルを選びます。
適当な位置に配置した後、ここでは信号源から直接信号を入れてシミュレーションしてみるので、voltage も入れて以下のように回路を組んでみます。

「e」シンボル「E1」を右クリックします。
こんな画面が出ますので、Value の欄に計算したい伝達関数の式を「laplace='G(s)'」という形式で書きます。

ここでは以下の式を書きました。
laplace=1000/(1000+0.159*s)
(そのままコピー&ペーストで使えるよう、いつものスペースは入れていません)
ちなみに 1KHz がカットオフの一次フィルタです。
voltage の方は適当なステップ入力を作ります。最終的にはこんな回路図になります。

過渡応答は次のようになりました。

周波数応答は次のようになりました。

出力波形の FFT 結果は次のようになりました。(時間軸は立ち上がりから 10ms 以内)

scilab の Xcos とほぼ同じ感覚なのですが、リアル回路も含めて周波数応答が調べられること、出力波形の FFT が調べられることが優位ですね。
もう一つ意外とモデル作りで苦労するのが「遅延要素」でして、これを伝達関数で表すと非常に面倒くさいことになります。で、LTspice にはそれがありました。
「bv」シンボルを選びます。
先ほどと同様に回路図に書き込むのですが、このシンボル何を考えているのか入力がありません。入力はシンボルのパラメータとして書き込むことになります。この辺はちょっと使い勝手が悪いです。「e」でも出来そうなことは書いてあるのですが、分かりませんでした。(どなたか教えて!)
そこで一通り回路図を描いた後、「bv」に入力する信号線の名称を調べます。

カーソルをノードに持って行くだけで分かります。ここでは V(n001) からの信号を遅延させるということで、次の式を Value 欄に書き込みます。
V=absdelay(V(n001),1ms)
ノード V(n001) の信号を 1ms 遅らせるという意味です。ファンクションはたくさん用意されているので、Help の
B. Arbitrary behavioral voltage or current sources.
を見て下さい。
シミュレーション結果は以下の通りです。

ちゃんと 1ms 遅れています。
こうやってみると結構守備範囲が広いシミュレータのようなので、今後も多用すると思います。
LTspice:ほとんどガキのレポートだな。
画像:やかましい!
← にほんブログ村「科学」-「技術・工学」へ
↑ クリックをお願いします。
お~できるできる、と嬉しくなってここで紹介することになりました。幼稚園児みたいですが。いや幼稚園児に失礼か。
とっても簡単なフィルタでやってみます。
「e」シンボルを選びます。


「e」シンボル「E1」を右クリックします。
こんな画面が出ますので、Value の欄に計算したい伝達関数の式を「laplace='G(s)'」という形式で書きます。

ここでは以下の式を書きました。
laplace=1000/(1000+0.159*s)
(そのままコピー&ペーストで使えるよう、いつものスペースは入れていません)
ちなみに 1KHz がカットオフの一次フィルタです。
voltage の方は適当なステップ入力を作ります。最終的にはこんな回路図になります。

過渡応答は次のようになりました。

周波数応答は次のようになりました。

出力波形の FFT 結果は次のようになりました。(時間軸は立ち上がりから 10ms 以内)

scilab の Xcos とほぼ同じ感覚なのですが、リアル回路も含めて周波数応答が調べられること、出力波形の FFT が調べられることが優位ですね。
もう一つ意外とモデル作りで苦労するのが「遅延要素」でして、これを伝達関数で表すと非常に面倒くさいことになります。で、LTspice にはそれがありました。
「bv」シンボルを選びます。
先ほどと同様に回路図に書き込むのですが、このシンボル何を考えているのか入力がありません。入力はシンボルのパラメータとして書き込むことになります。この辺はちょっと使い勝手が悪いです。「e」でも出来そうなことは書いてあるのですが、分かりませんでした。(どなたか教えて!)
そこで一通り回路図を描いた後、「bv」に入力する信号線の名称を調べます。

カーソルをノードに持って行くだけで分かります。ここでは V(n001) からの信号を遅延させるということで、次の式を Value 欄に書き込みます。
V=absdelay(V(n001),1ms)
ノード V(n001) の信号を 1ms 遅らせるという意味です。ファンクションはたくさん用意されているので、Help の
B. Arbitrary behavioral voltage or current sources.
を見て下さい。
シミュレーション結果は以下の通りです。

ちゃんと 1ms 遅れています。
こうやってみると結構守備範囲が広いシミュレータのようなので、今後も多用すると思います。
LTspice:ほとんどガキのレポートだな。
画像:やかましい!

↑ クリックをお願いします。