で、今回はたわいもない内容なのでngspiceを直で使うことにする(GUI苦手なんよねーGUIは右の人差し指に作業が集中するのでじじいにはこたえるんよ)。で、まずはインバーターをどうするか。通常は発振回路評価とかで74HCU04とかを使うわけで、この記述を探すっと、LTspiceにあるらしいじゃないか、、、いや、すばらしい。ここ(https://github.com/texane/power_inverter/tree/master/ltspice/logic/74hc)にあるので、ありがたく頂いてくる。
で、まずはインバーターとしてちゃんと動くことを確認する。
- * inverter_74hcu04.cir
- .title inverter_74hcu04
-
- .include 74hc.lib
-
- XU1 1 2 3 0 74HCU04 vcc1=3.3 speed1=1.0 tripdt1=1e-9
- VCC 3 0 DC 3.3
- VIN 4 0 PULSE ( 0 3.3 0 0 0 0.5ms 1ms 10)
- R1 2 0 1k
- R2 4 1 10k
-
- .control
- tran 0.01ms 20ms
- plot v(1) v(2) v(4)
- .endc
- .end
source inverter_74hcu04.cir
で、実行。すると、
となるので、インバーターとして動作していることがわかる。
で、どんな特性なのかいちおう調べておくってことで、パルスの代わりにPWLで三角波をいれることでリサージュっぽいものを見てみる。
- * char_74hcu04.cir
- .title char_74hcu04
-
- .include 74hc.lib
-
- XU1 1 2 3 0 74HCU04 vcc1=3.3 speed1=1.0 tripdt1=1e-9
- VCC 3 0 DC 3.3
- VIN 4 0 PWL(0 0 10ms 4 20ms 0)
- R1 2 0 1k
- R2 4 1 10k
-
- .control
- tran 0.01ms 20ms
- plot v(1) v(2) v(4)
- .endc
- .end
では、32.768kHzのクリスタルを発振させてみる。クリスタルの等価回路定数はあまり公開されていないので、実測する必要があるけど、EPSONは32.768kHzクリスタルの等価回路定数を公開しているので、これでやってみる。 まぁ、こんなかんじ。
- .title xtal_osc
- * xtal_osc_study_002.cir
-
- .include 74hc.lib
-
- XU1 1 2 5 0 74HCU04 vcc1=3.3 speed1=1.0 tripdt1=1e-9
- R2 1 2 10MEG
-
- L1 1 3 2986.16
- C1 3 4 7.9e-15
- R1 4 2 40e3
- C2 1 2 1.5e-12
- C3 1 0 680e-12
- C4 2 0 680e-12
- VCC 5 0 DC 3.3
- .ic v(1)=3.3
- *.options abstol=1e-12
- *.options pivtol=1e-13
- *.options reltol=0.003
- *.options vntol=1e-6
- *.options chgtol=1e-14
- *.options trtol=7
-
- .options abstol=1e-12
- .options pivtol=1e-13
- .options reltol=0.003
- .options vntol=1e-6
- .options chgtol=1e-14
- .options trtol=5
-
- .control
- tran 10us 10000ms
- plot v(2) v(1)
- .endc
- .end
こんなかんじ。現実は結構簡単に発振開始するけど、シミュレーションではなかなか難しい。でさらに、発振開始時間ってけっこう神のイカヅチ(.icで初期状態を入れているところ)によってかわる。高い電圧だと、早く発振開始する。発振開始時間って結局現物で繰り返し評価するしかないって現実をやっぱそうかーって受け入れる。が、もっと現実に近い発振開始時間にするにはどうしたらいいのか。
、、、メンドクサくなってきたので、今日はこのくらいにしておく。