さまざまなPFMの設定方法

Note

回路ファイルはTOPページからダウンロードできます。


SFMブロックを使った周波数変調

Example

pfm/PfmSfm.cvt2

SFMブロックを使って出力電圧との比較からシミュレーションのメイン周波数を変更することで、周波数変調を行う例です。
スイッチQ1のターンオン時間は、周波数によって変わらないように Time を選択し、5uを入力しています。

SFMブロック解説

SFMブロック の入力信号電圧を Vi=Vin1-Vin2 (極性に注意:極性がついているほうがVin1)とします。 SFMブロック が自身の動作周波数 Fs を以下の式にしたがって変調します。

Fs 変調周波数
Vi 入力信号電圧
Gain 変換ゲイン
Fref 基準周波数
Fmin 最小周波数 (Fs<Fmin → Fs=Fmin)
Fmax 最大周波数 (Fs>Fmax → Fs=Fmax)

周波数変調の場合、ModulatedはFrequencyをチェックします。また、オプションのActiveボタンをチェックすれば周波数変調器が機能し、チェックしなければ機能しません。

Note

周波数変調器のパラメーターのなかで、あらかじめ分からないのが基準周波数Frefの値です。
これは、次のようにして決定すればよいでしょう。まず、周波数変調器のActiveボタンのチェックをはずし、周波数変調器が機能しないようにします。そこで、動作周波数を変えながら定常解析を繰りかえし実行します。
出力電圧がある程度目標出力電圧に近くなったら、そのときの動作周波数を周波数変調器の基準周波数Frefとします。そして、最後に周波数変調器のActiveボタンをチェックします。このようにすれば、周波数変調器は出力電圧を目標出力電圧に近づくように動作周波数を変調します。

シミュレーションは Waveform を用いて 10[ms] 行ってください。
その後、負荷抵抗 R の値を 10Ωから100Ωに変更し、Continue... シミュレーションを 10[ms] 行ってください。

グラフは、ちょうど負荷が切り替わったタイミングを表示しております。
重負荷から軽負荷に変わったタイミングで周波数が広くなっている様子が分かります。


デジタル制御による周波数変調

Example

pfm/PfmFrdPrc.cvt2

この例は、固定周期で演算するマイコンが、周波数変調制御を行うことを想定したものです。
PRC素子とFRD素子を使用しサンプリング周期とスイッチングの周期を個別に設定することで実現します。
まず、Controllerというシンボル名のPRC素子はメイン周期で制御され、メイン周期は固定周期で動作します。これによって、Controllerは固定周期でサンプリングを行い、周波数変調のための値を生成するプログラムを実行します。次にスイッチQ1の周波数を変調したいとすれば、FRD素子の周期をFreqSetというシンボル名のPRC素子から可変させることで、周波数変調を行います。

ただし、スイッチQ1のターンオン時間は、周波数によって変わらないように Time を選択し、5uを入力しています。

シミュレーションの実行順序は以下の様になります。

  1. FRD素子が0秒時点で動作し、Q1の時比率を更新し、FreqSetを実行します。
  2. FreqSetControllerの演算結果を受け取り、FRD素子にセットし周波数を変調します。
  3. 上記とは無関係にControllerが固定周期で実行されます。
  4. FRD素子の実行タイミングの時点でQ1の時比率を更新し、FreqSetを実行します。
  5. 以降、2, 3, 4を繰り返します。

FRD素子はPWMスイッチQ1FreqSetをFRD周期で動かすように設定します。 この設定を行うことでFreqSetの実行タイミングをFRD素子によって決定でき、FRD素子が実行するタイミングの最後で処理されます。

ここで、FRD素子とControllerは非同期であり、周波数の更新タイミングは、FRD素子が実行されたタイミングです。

Note

FRD周期を可変にするためには周波数を渡すPRCブロックFreqSetをFRD素子に設定する必要があります。
FRD素子に登録されていないPRCブロックはメイン周期で実行され、不正なタイミングでFRD周期を変更してしまいます。
不正なタイミングで実行される素子の動作は保証されませんのでご注意ください。

以上により、固定周期(メイン周期)でサンプリング及び、演算をし、演算結果を可変周期のFRD素子に渡すことが可能となります。

シミュレーションは Waveform を用いて 1[ms] 程度行ってください。

周波数が変わっていく様子を確認することができます。
シミュレーション結果中 FreqSet.i:FIN という出力変数がシミュレーションのメイン周波数に設定している値です。


PRCブロックを使った周波数変調

Example

pfm/PfmProgram.cvt2

PRCブロックでシミュレーションのメイン周波数を変更することで、周波数変調を行う例です。
スイッチQ1のターンオン時間は、周波数によって変わらないように Time を選択し、5uを入力しています。
この状態で周波数変調を行えば、スイッチのオン時間は固定したまま周波数だけを変調することが可能です。

setparam("Fs","Value",i);

FreqSetというシンボル名の中の、 setparam関数 がシミュレーションのメイン周波数を変更しています。

シミュレーションは Waveform を用いて 10[ms] 程度行ってください。

周波数が変わっていく様子を確認することができます。 シミュレーション結果中 FreqSet.i:FIN という出力変数がシミュレーションのメイン周波数に設定している値です。