【LTspice入門】電源(V/Bシンボル)を使って自作コンポネントを作成する方法
※ 当ページには【広告/PR】を含む場合があります。
2021/10/06
「電源」
「カスタム電圧源」
Vシンボル電源とBシンボル電源?
Vシンボル
V*** [+側のノード] [−側のノード] [電圧波形を表す関数]
PULSE
SINE
EXP
SFFM
PWL
Bシンボル
B*** [ノード1] [ノード2] V=[電圧の評価関数]
電圧の評価関数
電圧源①/Vシンボル
自作電圧源(Vシンボルベース)
v1.asy
v1.subckt
POS: (1)
NEG: (2)
GND: (3)
Version 4
SymbolType BLOCK
LINE Normal 34 -33 -33 34
LINE Normal 0 95 0 47
LINE Normal 97 1 48 1
LINE Normal -97 1 -48 1
CIRCLE Normal 48 47 -48 -47
SYMATTR Description My custom Voltage Source
SYMATTR ModelFile v1.subckt
SYMATTR Prefix X
SYMATTR Value MY_CUSTOM_V1
PIN -96 0 RIGHT 8
PINATTR PinName NEG
PINATTR SpiceOrder 2
PIN 96 0 LEFT 8
PINATTR PinName POS
PINATTR SpiceOrder 1
PIN 0 96 TOP 8
PINATTR PinName GND
PINATTR SpiceOrder 3
矩形波
正弦波
三角波
矩形波
PULSE
PULSE(V1 V2 Tdelay Trise Tfall Ton Tperiod Ncycles)
V1: 初期電圧
V2: 立上電圧
Tdelay: 開始遅延時間
Trise: 立上時間
Tfall: 降下時間
Ton: 立上電圧の持続時間
Tperiod: 周期
Ncycles: 繰返し回数(指定が無い場合は無限)
.SUBCKT MY_CUSTOM_V1 1 2 3
V1 1 3 PULSE(0 10 0 0.0001m 0.0001m 1.0m 2.0m)
.ENDS
正弦波
SINE
SINE(Voffset Vamp Freq Td Theta Phi Ncycles)
Voffset: オフセット電圧
Vamp: 振幅の大きさ
Freq: 周波数(Hz)
Td: 遅延時間
Theta: 位相の重み係数
Phi: 位相差
Ncycles: 繰り返し回数(指定が無い場合は無限)
.SUBCKT MY_CUSTOM_V1 1 2 3
V1 1 3 PULSE(0 10 0 0.0001m 0.0001m 1.0m 2.0m)
.ENDS
三角波
「裏ワザ」
PWL(t1 v1 t2 v2...)
非公式の裏ワザ
同じパターンを5回繰り返す:
PWL REPEAT FOR 5 (0 0 1m 1 2m 1 3m 0) ENDREPEAT
同じパターンを連続して繰り返す:
PWL REPEAT FOREVER (0 0 1m 1 2m 1 3m 0) ENDREPEAT
時間軸を半分に、高さを2倍にする:
PWL TIME_SCALE_FACTOR=0.5 VALUE_SCALE_FACTOR=2 (0 0 1m 1 2m 1 3m 0)
.SUBCKT MY_CUSTOM_V1 1 2 3
V1 1 3 PWL REPEAT FOREVER (0 0 1m 10 2m 0) ENDREPEAT
.ENDS
電圧源②/Bシンボル
自作電圧源(Bシンボルベース)
b1.asy
b1.subckt
POS: (1)
NEG: (2)
GND: (3)
Version 4
SymbolType BLOCK
LINE Normal 0 64 0 32
LINE Normal 64 0 32 0
LINE Normal -64 0 -32 0
RECTANGLE Normal 32 32 -32 0
ARC Normal -32 -32 32 32 32 0 -32 0
SYMATTR Prefix X
SYMATTR SpiceModel MY_CUSTOM_B1
SYMATTR Description My practice #1
SYMATTR ModelFile b1.subckt
PIN -64 0 RIGHT 8
PINATTR PinName NEG
PINATTR SpiceOrder 2
PIN 64 0 LEFT 8
PINATTR PinName POS
PINATTR SpiceOrder 1
PIN 0 64 TOP 8
PINATTR PinName GND
PINATTR SpiceOrder 3
矩形波
三角波
矩形波①
ノードを指定した電圧値参照
V(3)
V(4,5)
.SUBCKT MY_CUSTOM_B1 1 2 3
V1 4 3 PULSE(0 10 0 0.0001m 0.0001m 1.0m 2.0m)
B1 1 3 V=V(4)
.ENDS
矩形波②
ビヘイビア
.SUBCKT MY_CUSTOM_B1 1 2 3
.params tper=2.0m vamp=10
B1 1 3 V=vamp*if(time/tper-int(time/tper), 1, 0)
.ENDS
if(x,y,z) If x > .5, then y else z
time
三角波①
.SUBCKT MY_CUSTOM_B1 1 2 3
.params tper=2.0m vamp=10
B1 1 3 V=vamp*(1-2*abs(0.5-time/tper+int(time/tper)))
.ENDS
1. int(time/T) としてステップ関数を生成
2. int(time/T) - time/T で振幅の大きさ1の鋸歯状波を作る
(ただしマイナス側のオフセット)
3. 0.5 + int(time/T) - time/T で y=0 中心とした鋸歯波に補正
4. 絶対値(abs)をとり三角波(振幅は半値)に変形
5. 三角波が原点を通過するように 1 - 2 * (三角波) で調整
三角波②
.SUBCKT MY_CUSTOM_B1 1 2 3
.params tper=2.0m vamp=10 amp=1.0e3
B1 1 3 V=amp*idt(vamp*if(time/tper-int(time/tper), -1, 1))
.ENDS
time/tper
amp
まとめ
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー