20201229

LTSpiceの素子の値を経時変化 三角波も作った。

抵抗値Rの経時変化

電気回路シミュレーターのLTSpiceを使って、時間が経つと電気抵抗が上がったり下がったりする素子を作りたい。
操作すると抵抗値が変化する可変抵抗とかではない。
時間が変数となって、値が上がり下がりする抵抗値を入れたかったのだ。

検索したら見つけたページ

時間が経つにつれて上がる抵抗は、
抵抗Rを、変数(時間time)を使って式で表す。

valueに

R=10000-100*time

と入力すれば、10kohmから、1秒ごとに100ohm減っていく抵抗を表現できる。

R=を忘れたら動かなかった気がする。

LTSpice_schematic_Rtime.png

R=10000+100*time

と入力すれば、10kohmから、1秒ごとに100ohm増えていく抵抗を表現。

静電容量Cの経時変化

さっきのコンデンサ版。
こちらもやはり、LTSpiceを使って、時間が経つと静電容量が上がったり下がったりする素子を作りたい。
時間が変数となって、値が上がり下がりする静電容量を入れたかったのだ。

こちらも上のページと同じサイトで、解決策を見つけた。

なぜかCを直接入力できず、電荷量で指定することになる。

時間が経つにつれて上がるコンデンサ(キャパシタ)は、 電荷量Qを、変数(電圧xと時間time)で表すことになる。
電圧xを入れないと、静電容量っぽい振舞ではなくなる。
Q=CV

普通の1uFのコンデンサを作りたければ

Q=1u*x

xの所には電圧が入るので、入れ忘れてはいけない。

Q=静電容量*xと書く感じ。

Q=1u*x+1n*time*x

一秒あたり1 nFずつ容量が増えていく。
Q=CV
図では2 Vを印加しているので、一秒ごとに2nクーロン電荷が多くたまるようになるから、実質2 nAの電流が流れる感じになっている。

LTSpice_schematic_Ctime.png

三角波を式で書く

三角波についてはPWLを使うのがお約束らしいが、だめだ。
GUIを使って値を指定するのが気に入らない。(大変。)

式を使って書く。(こっちの方が大変だった…)

結論を先に書くと、

componetから電圧源を選択するとき、bvを使用して(voltageではだめ)、

V=(abs(int(time)-time+1/2)-0.25)*4

と書くと、三角波になる。

LTSpice_schematic_bihaviorV(triangle).png

入力した式の意味

式を作る作戦

  1. int(time)として階段関数を作る。

  2. そこに-timeして鋸歯状波を作る(-側にオフセットがかかっている。)

  3. +1/4して(オフセットを引いて)0を中心とした鋸歯状はを作る。
  4. 絶対値をとると、三角波ができる(+側にオフセットがかかっている。波高は0.25)
  5. *4して波高を調節。

手順1~2を図にすると、

int_slope_sawtooth.png

手順3~4を図にすると、

abs_triangle.png

最後の2枚の図は、pythonで書いてみた。

一応コードを載せておく。

import numpy as np
import matplotlib.pyplot as plt


x=np.linspace(0,4,1001)

y1= x.astype(np.int32)
y2=x
y3=y1-y2


f,(ax1,ax2,ax3) = plt.subplots(3,1)

ax1.axhline(y=0, xmin=-10, xmax=10, c="k")
ax2.axhline(y=0, xmin=-10, xmax=10, c="k")
ax3.axhline(y=0, xmin=-10, xmax=10, c="k")

ax1.plot(x, y1)
ax2.plot(x, y2)
ax3.plot(x, y3)

ax1.set_ylim(-4,4)
ax2.set_ylim(-4,4)
ax3.set_ylim(-4,4)

plt.show()



f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2)

y4=y3
y5=y3+0.5
y6=np.abs(y3)
y7=np.abs(y5)

ax1.axhline(y=0, xmin=-10, xmax=10, c="k")
ax2.axhline(y=0, xmin=-10, xmax=10, c="k")
ax3.axhline(y=0, xmin=-10, xmax=10, c="k")
ax4.axhline(y=0, xmin=-10, xmax=10, c="k")

ax1.plot(x, y4)
ax2.plot(x, y5)
ax3.plot(x, y6)
ax4.plot(x, y7)

ax1.set_ylim(-4,4)
ax2.set_ylim(-4,4)
ax3.set_ylim(-4,4)
ax4.set_ylim(-4,4)

plt.show()

LTSpiceを使って矩形波などを書く方法については、以前書いていた。(2016年!4年も前からマイナー記事を書き続けている。)


今年は新型コロナ一色の年だったが、私生活的には意外といい年だったと思う。

【LTspiceの最新記事】
posted by yuchan at 17:00 | Comment(1) | LTspice
この記事へのコメント
ヨシハラ様

お世話になっております。
初めてのお問い合わせを送らせていただきます。
AOMEI Technologyでございます。

お忙しい中、申し訳ございません。
この度は、弊社の製品AOMEI Backupperのレビュー記事を頂きたくて、ご連絡申し上げます。

貴サイトの記事を拝読いたしました。プログラミングの面白い記事に感心しております。AOMEI Backupperは多機能のバックアップソフトです。よろしければ、AOMEI Backupperをご体験して頂き、レビュー記事を作成していただけませんか。

詳しくはメールで宜しいでしょうか。
ご検討のほど、よろしくお願いいたします。
Posted by AOMEI Technology at 2021年01月28日 12:25
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: