さまざまな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を入力しています。
シミュレーションの実行順序は以下の様になります。
- FRD素子が0秒時点で動作し、
Q1
の時比率を更新し、FreqSet
を実行します。 FreqSet
がController
の演算結果を受け取り、FRD素子にセットし周波数を変調します。- 上記とは無関係に
Controller
が固定周期で実行されます。 - FRD素子の実行タイミングの時点で
Q1
の時比率を更新し、FreqSet
を実行します。 - 以降、2, 3, 4を繰り返します。
FRD素子はPWMスイッチQ1
とFreqSet
を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
という出力変数がシミュレーションのメイン周波数に設定している値です。