抵抗値Rの経時変化
電気回路シミュレーターのLTSpiceを使って、時間が経つと電気抵抗が上がったり下がったりする素子を作りたい。
操作すると抵抗値が変化する可変抵抗とかではない。
時間が変数となって、値が上がり下がりする抵抗値を入れたかったのだ。
時間が経つにつれて上がる抵抗は、
抵抗Rを、変数(時間time)を使って式で表す。
valueに
R=10000-100*time
と入力すれば、10kohmから、1秒ごとに100ohm減っていく抵抗を表現できる。
R=を忘れたら動かなかった気がする。
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の電流が流れる感じになっている。
三角波を式で書く
三角波についてはPWLを使うのがお約束らしいが、だめだ。
GUIを使って値を指定するのが気に入らない。(大変。)
式を使って書く。(こっちの方が大変だった…)
結論を先に書くと、
componetから電圧源を選択するとき、bvを使用して(voltageではだめ)、
V=(abs(int(time)-time+1/2)-0.25)*4
と書くと、三角波になる。
入力した式の意味
式を作る作戦
int(time)として階段関数を作る。
そこに-timeして鋸歯状波を作る(-側にオフセットがかかっている。)
- +1/4して(オフセットを引いて)0を中心とした鋸歯状はを作る。
- 絶対値をとると、三角波ができる(+側にオフセットがかかっている。波高は0.25)
- *4して波高を調節。
手順1~2を図にすると、
手順3~4を図にすると、
最後の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年も前からマイナー記事を書き続けている。)
今年は新型コロナ一色の年だったが、私生活的には意外といい年だったと思う。