さまざまなPFMの設定方法

Note

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


周波数変調器[SFM]を使った周波数変調

Example

pfm/PfmSfm.scicir

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

軽負荷から重負荷に変化した際、周波数が変化していることを確認するために素子パラメーター変調器テーブル電圧源を使って負荷Rの値を設定したテーブルによってシミュレーション中に変更しています。

テーブルは0.0051[s]で10から100に変化するものを使用し、素子パラメーター変調器[DPM]を使用してRの抵抗値として反映しています。 fig

周波数変調器[SFM]解説

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

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

周波数変調の場合、 周波数変調器[SFM] ModulatedFrequencyをチェックします。
またActiveのチェックを外すことで素子を無効化することができます。

基準周波数の決め方

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

シミュレーションはWaveform 解析を用いて 10m 秒行ってください。

軽負荷から重負荷に変更すると周波数が広くなっている様子が分かります。

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

Example

pfm/PfmFrdPrc.scicir

Info

このサンプル回路ではスクリプトを使用します。
スクリプトを使用するサンプル回路にはオプション:DigitalPaletteが必要です。

この例は、固定周期で演算するマイコンが、周波数変調制御を行うことを想定したものです。
スクリプトとサブ周波数を使用しサンプリング周期とスイッチングの周期を個別に設定することで実現します。

スクリプトControllerはメイン周期で制御され、メイン周期は固定周期で動作します。これによって、Controllerは固定周期でサンプリングを行い、周波数変調のための値を生成するスクリプトを実行します。

次に PWMSwitch Q1の周波数を変調したいとすれば、スクリプトFreqSetから可変させることで、周波数変調を行います。

ただし、PWMSwitch Q1のターンオン時間は、周波数によって変わらないように モード time を選択し、5u秒を入力しています。

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

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

サブ周波数SubFreqPWMSwitch Q1とスクリプトFreqSetをサブ周期で動かすように設定します。

fig

この設定を行うことでスクリプトFreqSetの実行タイミングをサブ周波数SubFreqによって決定でき、サブ周波数SubFreqが実行するタイミングの最後で処理されます。

ここで、サブ周波数SubFreqとスクリプトControllerは非同期であり、周波数の更新タイミングは、サブ周波数SubFreqが実行されたタイミングです。

Warning

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

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

シミュレーションは Waveform 解析を用いて 1m 秒程度行ってください。

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


スクリプトを使った周波数変調

Example

pfm/PfmProgram.scicir

Info

このサンプル回路ではスクリプトを使用します。
スクリプトを使用するサンプル回路にはオプション:DigitalPaletteが必要です。

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

スクリプトFreqSetの、 setparam関数 がシミュレーションのメイン周波数を変更しています。

シミュレーションは Waveform 解析を用いて 10m 秒程度行ってください。

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