The Negligible Lab

Astray in the forest of electrical and electronic circuits. Adrift in the gap between time and frequency domains. 独立独歩を是とする。

制御電源のLaplaceオプションの罠

Laplaceオプション

LTspiceには

  1. ビヘイビア電源(B, Arbitrary behavioral voltage or current sources)
  2. 電圧制御電圧源(E, voltage-dependent voltage source)
  3. 電流制御電流源(F, current-dependent current source)
  4. 電圧制御電流源(G, voltage-dependent current source)
  5. 電流制御電圧源(H, current-dependent voltage source)

の各種制御電源が用意されておりますが,上記のうちB, E, GにはLaplaceオプションが用意されております。 これは,入力信号に対して,Laplaceオプションで記述した伝達関数を(周波数領域で)乗じたものを出力とする機能であり, ある意味で非常に強力です。

罠とは何か

2次系のハイパスフィルタ(HPF)の伝達関数G(s)は次式で書けます。

G(s) = \displaystyle \frac{s^{2}}{s^{2} + 2 \zeta \omega_{n} s + \omega_{n}^{2}}  \tag{1}

ご存じの通り,\zetaは減衰係数,\omega_{n}は固有角周波数です。

例えば,ノードuの電位にLaplaceオプションとしてG(s)を適用し,その結果をノードyの電位として出力するビヘイビア電圧源として書けば,

B1 y 0 V=V(u) Laplace=s**2/(s**2+{2*zeta*omega_n}*s+{omega_n**2})

と表現できる気がします(zeta = \zetaとomega_n = \omega_{n}は.paramで具体的な値を与えることができます)。 ここで,\zeta = 0.6\omega_n = 5~\mathrm{rad/s}として,ステップ入力を与えてみると…。

f:id:s-inoue2010:20200629020158p:plain
Laplaceオプションの罠に引っかかった例

HPFなので,ステップ入力が加わった瞬間に出力が立ち上がり,時間が十分に経過すると零に戻ります。 いや❗ 少々判り難いですが,零に戻っていないではないか❗ なぜだ…❓

Laplaceオプションの制約

さて,過渡解析(.tran解析)は当然ながら時間領域での計算ですから,LTspiceは,Laplaceオプションで記述された伝達関数を,何らかの方法で時間領域に変換しているはずです。 伝達関数sの関数で与えられているので,微分方程式に戻しているのかと思っていたのですが,ヘルプを読む限り,そうではなさそうでした。以下は電圧制御電圧源Eのへルプからの引用です。

The transfer function of this circuit element is specified by its Laplace transform. The Laplace transform must be a function of s. The frequency response at frequency f is found by substituting s with sqrt(-1)*2*pi*f. The time domain behavior is found from the impulse response found from the Fourier transform of the frequency domain response. LTspice must guess an appropriate frequency range and resolution. The response must drop at high frequencies or an error is reported. It is recommended that LTspice first be allowed to make a guess at this and then check the accuracy by reducing reltol or explicitly setting nfft and the window. The reciprocal of the value of the window is the frequency resolution. The value of nfft times this resolution is the highest frequency considered. The Boolean XOR operator, "^" is understood to mean exponentiation "**" when used in a Laplace expression.

そう! LTspiceは周波数応答を逆フーリエ変換(上記では単にFourier transformと書いていますが,逆フーリエ変換と理解しています)して時間領域でのインパルス応答を求め,入力信号との畳み込み積分から出力信号を求めているようです。 そして,太字で記載している箇所(原文は太字ではありませんが)が重要です。

周波数応答を求める際に何Hzまで計算するかですが,当然無限大までは計算できませんからどこかで打ち切ります。 すると,逆フーリエ変換で求めたインパルス応答に誤差が生じます。 しかし,例えば,2次ローパスフィルタ(LPF)のように,高周波領域では40 dB/decで減衰していく等の特性であれば,この誤差を軽減できるということです。

罠の回避術

こんな書き方で回避できます。

B1 x 0 V=V(u) Laplace=-({2*zeta*omega_n}*s+{omega_n**2})/(s**2+{2*zeta*omega_n}*s+{omega_n**2})
B2 y x V=V(u)

この例ではB1とB2を直列接続していますが,もちろん,B2の方をB2 y 0 V=V(u)+V(x)としても同様です。 要するに,

G(s) = \displaystyle \frac{s^{2}}{s^{2} + 2 \zeta \omega_{n} s + \omega_{n}^{2}} = 1 - \displaystyle  \frac{2 \zeta \omega_{n} s + \omega_{n}^{2}}{s^{2} + 2 \zeta \omega_{n} s + \omega_{n}^{2}} \tag{2}

と書き換え,右辺第2項を負号を含めてLaplaceオプションで作り,さらに第1項(伝達関数 = 1),すなわち入力信号そのものに加算します。 これで,右辺第2項の分母はsの2次式,分子はsの1次式になっているので,周波数が無限大の場合にゲインが零となります。 B1とB2を合わせて全体としてHPFを形成します。実際にやってみると下図のようになります。

f:id:s-inoue2010:20200629022130p:plain
Laplaceオプションの罠を回避した例

Laplaceオプションの使い方を改善した青い波形V(y2)(y _ {2}(t))は,t \to \inftyy _ {2} (t) \to 0となっています。

プロパーな伝達関数であれば,分母多項式sの次数よりも分子多項式sの次数を1つ下げるような式変形が可能だと思いますので,高周波ゲインが零に漸近する伝達関数Laplaceオプションに記述しつつ,時間領域での加減算によって,全体として高周波ゲインが非零であるようなHPFやバンドエリミネーションフィルタ(BEF,ノッチフィルタとも)等を作ることができます。

ただいま開発中の制御ライブラリContrailleでは,この反省を生かして,Laplaceオプションの周波数が無限大の場合にゲインが零となるように作っています。

解析に用いたschematic

参考として,LTspiceschematicを示します。

f:id:s-inoue2010:20200629022402p:plain
Laplaceオプションの罠:schematic