前回、非線形な従属電源モデルの特性係数を外部から与えることができるようになりました。これも「POLY記法」のお陰です。とっつき悪いですが慣れれば強力。でもPOLYは非線形といわずとも線形なモデルでも活躍可能。今回はアナログ電圧の加算器のビヘイビアモデルをPOLYを駆使?して書いてみます。簡単?
※「SPICEの小瓶」投稿順インデックスはこちら
※ Analog Devices, Inc. LTspice XVII(x64) (17.0.36.0)を使用させていただいて動作確認しております。
電圧制御電圧源、POLY(2)
復習のため、SPICEの電圧制御従属電圧源の書式、とくにPOLY(2)の場合を日本語で書いてしまうとこんな形でないかと思います。
Eテキトーなお名前 出力ノードペア POLY(2) 入力ノードペア1 入力ノードペア2 定数項 係数x 係数y 係数x^2 係数xy 係数y^2 …
入力ノードペア1間の電位差をVx、入力ノードペア2間の電位差をVyとすると出力電圧は、
定数項 + 係数x * Vx + 係数y * Vy + 係数x^2 * Vx^2 + 係数xy * Vx * Vy + …
のように幾らでも長く「近似」できるみたいです。しかし、高次の項を全部無視(係数を書かなければそこから先は0だとみなしてくれるっす)してしまえば
定数項 + 係数x * Vx + 係数y * Vy
なんだ定数項=0、係数x=係数y=1などとしたら、単なる足し算でないの。ということでPOLY(N)を使って1次の項だけ生かすようにすれば、アナログ電圧加算器ができちまいます。オペアンプ使っても加算器は作れますが、これはビヘイビアレベルのモデルです。
モデルファイル(.SUBCKT)
POLY(2)使って、2入力の電圧加算器のモデルを書いてみました。入力1の電圧Vxと入力2の電圧Vyにたいして
A * Vx + B * Vy
という電圧を出力するモデルです。前回やったとおりAとBは{}で囲んでモデルの外から値を代入できるようにしてみました。また、出力インピーダンスの「調整」用に{R}もパラメータ化。入力インピーダンスの方は決め打ち。深い意味はありませぬ。メンドかっただけ。
上記のモデルファイルを呼び出すように、専用のシンボルも用意いたしました。だだの四角形だけれども。設定したアトリビュートは右に。
モデルをエクササイズするための回路
上記のシンボルをおいて、サイン波とステップ波的な電圧を加え合わせて出力する回路を作ってみました。
ここで、シンボルのアトリビュート画面を開いて、以下の黄色のマーカ部分を入力。これで二つの係数は1(単なる足し算)、出力抵抗は10Ω(負荷抵抗に比べたら十分強力だろ~)となります。
シミュレーション結果
黄緑色が出力波形です。赤色はV2の発生するステップ状の入力波形。V1の入力波形は前半黄緑と被ってみずらかったので表示していないですが、0Vを中心とした正弦波形です。見事に加算されとります。ビヘイビアモデルだし、当たり前か。