リレー回路のシミュレーションをする

# 概要
リレーで電卓を作ったり、CPUを作ったり、時計を作ることを構想していました。

しかし、大規模な回路となる以上、事前にシミュレーションを可能にすることで

* 設計回路の検証
* 配線時のテスト 

がより簡単になります。

LTspiceを使ったシミュレーションを説明します。


# 参考になった記事
SWについて

https://fujisannoblog.com/post-3183/

https://electronics.stackexchange.com/questions/497149/how-to-model-voltage-controlled-switch-in-ltspice

ブロック化について

https://spiceman.jp/ltspice-hierarchical-circuit-block/


# リレーのモデルとテスト
まず、電圧制御スイッチ（SW）という部品を使って次のようにリレーのモデルを作りました。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/fb2e949a-0229-0ece-a9ee-2462b487daf8.png)

* $Coil$が$4.8V$以上になると、S1の抵抗が$100MΩ$、S2の抵抗が$1mΩ$になります。
* $Coil$が$4.8V$以下になると、S1の抵抗が$1mΩ$、S2の抵抗が$100MΩ$になります。

つまり、**ONではS1が導通、OFFではS2が導通**となるように模擬しています。


最後に、電圧計測で正しく表示できるよう、A,B接点にプルダウン抵抗を挿入しています。

## モデルテスト
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/3d3ae2fd-1996-c489-3157-57c985019834.png)
このようなテスト回路で実験しました。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/c00eef3b-abb4-de09-108b-0f613e03c021.png)

接点の出力電圧が、正しくコイル電圧に対し反転した状態になっています。
（追記）A,Bが逆です。

# 自己保持回路テスト
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/1b7929ed-d729-d2e7-abfa-6ece7dd430a3.png)
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/55193b91-04eb-6cd8-0129-693dc3205810.png)

なぜか、B端子の電圧が保持されない。
あと、5ｖ供給端子の電圧降下が大きい。


原因は、入力として、スイッチではなく入力電圧を変化させていたため、
「スイッチを切る」　！=　「電圧を0にする」
であること。
入力電圧（0V）と5V供給電圧がつながった状態になり、ほぼショート状態である。

よって、ダイオードを挟むことが最も現実に即していると考える。
ー＞シミュレーションがものすごく遅い
->回路の配線が間違えていて、発信回路になっていた！

実際のリレーと違い、切り替えに遅延が発生しないモデルであるため、かなり高速の発信となり、結果的にシミュレーションにかなりの時間がかかる。

# リレー

https://akizukidenshi.com/catalog/g/gP-01229/

の場合、

* 感動電圧（ONになる電圧）:4V
* 開放電圧(OFFになる電圧）:0.25V
* 動作時間（ONになるまでにかかる時間）:6ms
* 復帰時間（OFFになるまでにかかる時間）:3ms
* コイル抵抗:167Ω

コイルのインダクタンスは載っていませんでした。

# 遅延をモデル化

http://www.gxk.jp/elec/musen/1ama/H19/html/H1908A05_.html

リレーをコイルと抵抗の直列だった場合

```math
V_{R} = V_{in}(1-e^{-\frac{R}{L} t})
```
となり、時定数$t=\frac{L}{R}$の時$0.632V_{in}$となる。

```math
R=167Ω\\
t = 6ms\\
\therefore L = t*R = 1.0H
```
となる。
（動作時間はコイルによるものではなく、機械的なものなのでこのインダクタンスの計算は実際のトランスのインダクタンスを求めるものではない、あくまでモデル）


また、このままでは、逆起電圧が発生する。

https://detail-infomation.com/relay-back-electromotive-force/

ダイオードを挟むか、スナバ回路を入れるようだ。

スナバ回路はC,R直列部品でインピーダンスは低周波ほど大きく、$\omega = \frac{C}{R}$以降はRで一定になります。

つまり、高周波成分をショートさせ、除去することと同義になります。


LR直列回路を先ほどのモデルに入れシミュレーションを実行すると
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/b8fc6414-81f4-6b5a-fa8c-a00873c82a08.png)

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/266571b9-caa3-13d7-5231-e0005ac1eef6.png)

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/f2e709d0-c7a1-7ce5-833f-2f93caa0f5bc.png)

コイルに加わる電圧（緑）は4.5Vほどまで増加してから（ダイオードの順方向電圧降下で4.0Vまでしか上がらない）少し電圧が下がり、
スイッチが入ってA端子の電圧（赤）がGNDまで落ちています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/f4690893-37dd-c9c9-d3a7-4bf9f93e7284.png)
このような回路の場合を見ると逆起電圧が発生しています。


# エッジ検出回路

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/36df551a-deb8-b293-af61-0e96e4cae16c.png)

このように複数連結することで、遅れを発生させることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/11730ddb-979c-6123-a11b-7a68b3c45f9f.png)

リレーX4の出力をB端子にすることでエッジ検出ができている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/4ba1beb7-a433-e58d-b9fc-26a35b1bce9c.png)

1段でも十分検出可能。



http://www.tsystem.jp/freecircuit/freecircuitrelay18.html

コンデンサをつけることにより、動作の遅れを作り出しエッジ検出を行っている。







# シフトレジスタ回路

http://www.tsystem.jp/freecircuit/freecircuitrelay19.html


リレーの自己保持回路の弱点は1を保持することはできるが、0を保持することができないことである。

上のリンクのシフトレジスタは、データを保持する前に保持回路を0にリセットすることで、デフォルトを0にすることで上の問題に対応している。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/23164960-943e-fbfd-7573-069d9b2f0fa0.png)


あとは、
クロック立ち上がりに対してR5にパルス->R7にパルス
クロック立ち下がりに対してR6にパルス->R8にパルス
を生成することが必要になります。

http://www.tsystem.jp/freecircuit/freecircuitrelay18.html

にある
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/0b0cb9c2-cbe0-1eaa-720e-13e29802b53f.png)

エッジ検出回路をシミュレーションすることは今のモデルではシミュレーションできない。なぜなら、リレーコイルR2は電流駆動で、これまでの電圧駆動では正しくシミュレーションできません。

https://electronic-circuit.com/ltspice-switch/

今度は電流駆動スイッチを使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/30b5e721-e2de-0fcf-eb08-6c9292740885.png)
正しく動作する、リレーモデルができました。

しかし、上のモデルを再度シミュレーションすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/9345c1dd-d248-4c73-23ca-56006bb32e0c.png)

このように、リレーX2のコイルにかかる電圧は、＋、－両方にコンデンサのおかげで発生しているが、プラスにしか反応しないため、立下りエッジには反応できていない。

https://ac-blog.panasonic.co.jp/%E7%9B%B4%E6%B5%81%E9%A7%86%E5%8B%95%E3%83%AA%E3%83%AC-%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E3%82%B3%E3%82%A4%E3%83%AB%E6%A5%B5%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8B%E3%82%82%E3%81%AE%E3%81%A8%E3%81%AA%E3%81%84%E3%82%82%E3%81%AE%E3%81%AE%E9%81%95%E3%81%84

調べたところ、リレーには極性がないものが多いみたいで、コイルの極性が書かれていない場合、コイルどちらの向きに電流を流してもONと判定するようだ。

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/5051fa31-563c-57ca-fbb3-1afc5b66802e.png)

このような全波整流回路を通してから電圧スイッチに与えるモデルとした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/aca701ad-99a8-ebc8-27c8-ef8e3d89be65.png)

正しくシミュレーションできた。

同じ回路を実際に試して、エッジ検出ができていることが確認できた。

さらにいろいろシミュレーションしていくと今度はタイミングのかぶりや遅れによるバリのようなノイズが気になってきた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/ad77f31a-2a4e-fb8d-4628-0fd3238943e1.png)

上の画像ではインパルスのように一瞬上がっている。
ちょっとめんどくさいので今回は仕組み上必要のない部分には遅れを入れず、シミュレーションすることにする。

# シミュレーション中に引っ掛かったこと

5~8Vしか使っていないのに、10kV とか出てしまう。なぜだろう
->電圧源にダイオードを挟んだら解決した

二つ以上の電圧源が並列状態になって失敗しているのではないだろうか。