SSブログ

scilabで遊ぼう (6) [プログラム三昧]このエントリーを含むはてなブックマーク#

WS000199.png

今回から、実際の回路のシミュレーションをします。

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);
 
WS000218.png

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);
 
WS000219.png

ナイキスト周波数である10kHzに近い箇所で特性が変化しています。

唯一の連続時間要素であるLCフィルタを離散時間表現に変換したので、この後は、離散時間での操作だけでシミュレーションすることができます。

2009年1月1日追記

あれ? 離散時間表現には、絶対時間の概念が無かったはずなのに、ボード線図は、絶対周波数で描かれています。 どうなっているんだ?

付録 : 「scilab で遊ぼう」索引

参考文献

トランジスタ技術 (Transistor Gijutsu) 2008年 07月号 [雑誌]

トランジスタ技術 (Transistor Gijutsu) 2008年 07月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/06/10
  • メディア: 雑誌
トランジスタ技術 (Transistor Gijutsu) 2008年 09月号 [雑誌]

トランジスタ技術 (Transistor Gijutsu) 2008年 09月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/08/09
  • メディア: 雑誌

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。