さまざまなPFMの設定方法
Note
回路ファイルはTOPページからダウンロードできます。
周波数変調器[SFM]を使った周波数変調
Example
pfm/PfmSfm.scicir
周波数変調器[SFM]
を使って出力電圧との比較からシミュレーションのメイン周波数を変更することで、周波数変調を行う例です。
スイッチ:Qのターンオン時間は、周波数によって変わらないように Time
を選択し、5u
秒を入力しています。
軽負荷から重負荷に変化した際、周波数が変化していることを確認するために素子パラメーター変調器とテーブル電圧源を使って負荷R
の値を設定したテーブルによってシミュレーション中に変更しています。
テーブルは0.0051[s]で10から100に変化するものを使用し、素子パラメーター変調器[DPM]
を使用してRの抵抗値として反映しています。
周波数変調器[SFM]
解説
周波数変調器[SFM]
の入力信号電圧を Vi=Vin1-Vin2
(極性に注意:極性がついているほうがVin1)とします。
周波数変調器[SFM]
が自身の動作周波数 Fs
を以下の式にしたがって変調します。
変数 | 説明 |
---|---|
Fs | 変調周波数 |
Vi | 入力信号電圧 |
Gain | 変換ゲイン |
Fref | 基準周波数 |
Fmin | 最小周波数 (Fs<Fmin → Fs=Fmin) |
Fmax | 最大周波数 (Fs>Fmax → Fs=Fmax) |
周波数変調の場合、 周波数変調器[SFM]
Modulated
はFrequency
をチェックします。
また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
秒を入力しています。
シミュレーションの実行順序は以下の様になります。
- 0秒時点でサブ周波数に登録されている素子が動作し、
PWMSwitch
Q1
の時比率を更新し、スクリプトFreqSet
を実行します。 -
スクリプト
FreqSet
がスクリプトController
の演算結果を受け取り、サブ周波数SubFreq
にセットし周波数を変調します。 - 上記とは無関係に
Controller
が固定周期で実行されます。 - サブ周波数の実行タイミングの時点で
PWMSwitch
Q1
の時比率を更新し、スクリプトFreqSet
を実行します。 - 以降、2, 3, 4を繰り返します。
サブ周波数SubFreq
は PWMSwitch
Q1
とスクリプトFreqSet
をサブ周期で動かすように設定します。
この設定を行うことでスクリプト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
という出力変数がシミュレーションのメイン周波数に設定している値です。