scilabで遊ぼう (6) [プログラム三昧]
今回から、実際の回路のシミュレーションをします。
scilabで、LCフィルタを作る
今回のシミュレーションの題材は、トランジスタ技術、2008年7月号と9月号に掲載されていた「dsPICで作るDC-DCコンバータのソフトウェア」という記事から採用しました。 まずは、出力直前に配置されているLCフィルタを作ります。
-->L1=39d-6; -->C1=680d-6; -->w0_lc=1.0/sqrt(L1*C1); -->Q=0.8; -->s=poly(0,'s'); -->lc_cont=syslin('c',w0_lc^2/(s^2+s*(w0_lc/Q)+w0_lc^2)) lc_cont = 37707391 ------------------------ 2 37707391 + 7675.793s + s -->scf(1);clf;bode(lc_cont,1,1e4);
LとCの値は決まっているのですが、Qの値は不明です。 そのため、適当に"0.8"としておきました。 ボード線図からわかるように、1000Hz付近にカットオフ周波数を持つ2次ローパス・フィルタの特性になっています。
このフィルタの出力は、20kHz(50µ秒周期)でサンプリングされるため、A/Dコンバータから得られる値の周波数特性は変化します。 このサンプリングに相当する操作を行うのが、"dscr"関数です。 ただし、"dscr"関数は、伝達関数ではなく状態空間モデルを扱います。 そのため、伝達関数と状態空間との間の変換を行う"tr2ss"関数と"ss2tr"関数を駆使します。
-->Ts=50d-6; -->lc_filter=ss2tf(dscr(tf2ss(lc_cont),Ts)) lc_filter = 0.0363518 + 0.0413237z -------------------------- 2 0.6812747 - 1.6035993z + z -->scf(1);clf;bode(lc_filter,1,1e4);
ナイキスト周波数である10kHzに近い箇所で特性が変化しています。
唯一の連続時間要素であるLCフィルタを離散時間表現に変換したので、この後は、離散時間での操作だけでシミュレーションすることができます。
2009年1月1日追記
あれ? 離散時間表現には、絶対時間の概念が無かったはずなのに、ボード線図は、絶対周波数で描かれています。 どうなっているんだ?
付録 : 「scilab で遊ぼう」索引
- scilabで遊ぼう (1)
- scilabで遊ぼう (2)
- scilabで遊ぼう (3)
- scilabで遊ぼう (4)
- scilabで遊ぼう (5)
- scilabで遊ぼう (6)
- scilabで遊ぼう (7)
- scilabで遊ぼう (8)
- scilabで遊ぼう (9)
- scilabで遊ぼう (10)
- scilabで遊ぼう (11)
- scilabで遊ぼう (12)
- scilabで遊ぼう (13)
参考文献
トランジスタ技術 (Transistor Gijutsu) 2008年 07月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2008/06/10
- メディア: 雑誌
トランジスタ技術 (Transistor Gijutsu) 2008年 09月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2008/08/09
- メディア: 雑誌
コメント 0