ラズパイでIoT鉄道模型をつくってみる(2) 電動ポイントを切替える

ラズパイから鉄道模型の電動ポイントを切替える方法についてのメモです。

1. コンデンサ方式
2. モータドライバIC方式

IoT鉄道模型ではリレーを使いコンデンサの充放電により電動ポイントを切替えているのですが、
モータドライバICでパルスを送信することでもポイントを切替えることができることが解りました。

ラズパイを使って鉄道模型の速度制御を行うのと同じ回路構成でポイントも制御できる上に、ハードウェアはシンプルになるので、今更ですがモータドライバICを採用すれば良かったと思っています。
2018/12/3の記事の補足です。

Nゲージ鉄道模型の電動ポイント

使用したのはTOMIXの電動ポイントです。DC12Vの2線で制御されます。
パワーパックに接続した専用のコントローラに接続して使用します。レバーの切換えに応じてでポイントが切り替わります。これが正しい使い方です。

TOMIX ミニ電動ポイントPL140-30(F)

電動ポイントの動作原理

分解したことが無いので詳細は知らないのですが、Webで検索するとDC12Vをコンデンサに充放電することでパルス状の信号を与えてソレノイドのコイルを駆動しているようです。逆方向のパルスを与えることでソレノイドに逆方法に動かし、ポイントを双方向に切替えます。

ソレノイドなのでコイルには動作時のみの短時間電圧をかける必要があります。電圧をかけ続けるとコイルが過熱し危険です。

こちらはIoT鉄道模型のポイント切換え時のソレノイド電圧波形です。

約12Vのピークから、20msecで約6V、50msec経過で約2Vに減衰したパルスであることが解ります。コンデンサによる充放電の波形です。

電動ポイントのソレノイドのコイルの直流抵抗を実測すると約10Ωでした。
単純計算で 12V/10Ω = 1.2A 1A強の電流が瞬間的に流れていることになります。以外に高い値ですね。

ラズパイで操作するには

やりたことはOn/Offですが、物理的にモノ(ポイント)を動かすには相応のエネルギーが必要です。
ラズパイのGPIOではパワーが不足するので、何らかの手段でDC12Vのスイッチングを行うことになります。

1. コンデンサ方式

現在採用している方法です。

人間が切り替えるレバーの代わりにリレーを使います。ラズパイのGPIOは3.3V 15mA程度のようなのでリレーを駆動するには電流が不足しています。リレーの機種によりますが使用したOMRON 5V G5V では コイル抵抗50Ωなので5V/50Ω=100mA必要です。GPIOからまずトランジスタでスイッチングします。

GPIOからOn/Off信号 -> トランジスタをOn/Off -> リレーをOn/Off -> コンデンサの充放電切換え -> ソレノイドへパルス印加

  • GPIO ON時: トランジスタOn: リレーOn リレー端子8が+12Vに接続され、コンデンサが充電されその充電電圧が電動ポイントへ印加されます。充電完了と共に出力はゼロに。
  • GPIO Off時: リレー端子が6に切り替わることでコンデンサが放電を開始し、放電電圧が電動ポイントへ逆方向へ印加されます。
  • 部品

    リレー: OMRON 5VG5V-2
    電解コンデンサ: 16V 3300μF
    トランジスタ: 2SC1815
    抵抗: 1K
    ダイオード: リレーコイル保護用

    ポイントを切替え、1.5秒後に戻した際の波形です。

    プログラム

    GPIO11をポイント切換え用に使用しています。

    import time
    import RPi.GPIO as GPIO
    
    GPIO11 = 11  # pin 23
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(GPIO11, GPIO.OUT)
    
    GPIO.output(GPIO11, False)
    time.sleep(1.5)
    GPIO.output(GPIO11, True)
    
    GPIO.cleanup()
    

    2. モータドライバIC方式

    ソレノイドを駆動するにはパルス状の短時間の電圧印加が必要なだけであり、必ずしもコンデンサの充放電波形が必要なのではありません。
    つまりパルスをワンショット出力すれば良いのではと思い、列車の速度制御に使用したモータドライバIC TA7291P で試してみました。

    これは線路に接続して鉄道模型を速度制御する回路そのままです。線路への代わりに電動ポイントへ接続します。
    自作回路でコネクタの代わりにピンヘッダなので、線路用のコネクタもポイント用のコネクタも接続できます。

    モータドライバICからパルスを1個出力

    ・デューティ100%で出力
    ・50msecスリープする
    ・デューティ0%で出力ON

    単純な方法ですが、思い通りに動作してくれました。
    電圧は12Vに届いていませんが、想定通り50msecのパルスが出力されています。
    おお、ポイントも切り替わりました。

    0.5秒後に反対方向に切り替えた波形

    30msecのパルスでもポイントは切り替わりましたが、20msecでは動作しませんでした。
    これはOK

    プログラム

    import time
    import RPi.GPIO as GPIO
    
    GPIO17 = 17  # pin11
    GPIO27 = 27  # pin13
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(GPIO17, GPIO.OUT)
    GPIO.setup(GPIO27, GPIO.OUT)
    
    pwm1 = GPIO.PWM(GPIO17, 60)
    pwm2 = GPIO.PWM(GPIO27, 60)
    pwm1.start(0)
    pwm2.start(0)
    
    # ポイント切換え50msecパルス
    pwm1.ChangeDutyCycle(100)
    time.sleep(0.05)
    pwm1.ChangeDutyCycle(0)
    
    time.sleep(0.5)
    
    # ポイント切換え逆方向
    pwm2.ChangeDutyCycle(100)
    time.sleep(0.05)
    pwm2.ChangeDutyCycle(0)
    
    pwm1.stop()
    pwm2.stop()
    GPIO.cleanup()
    

    制御回路の共通化

    これで速度制御も電動ポイントの切替も全く同じモータドライバICの回路で実現できることが確認できました。
    ポイント用のリレー+電解コンデンサ+トランジスタがモータドライバ1個になるので、コストダウンの上サイズもぐっと小さくなります。

    それぞれ同時に使用するので、回路は別にして複数用意する必要はありますが、
    せっかくなのでモータドライバICによる制御回路にバージョンアップしようかと思います。

    “ラズパイでIoT鉄道模型をつくってみる(2) 電動ポイントを切替える” への1件の返信

    1. ポイントの切り替えにモータドライバーのパルスをワンショットで出力することで対応するという方法はまさに画期的なアイデアだと思います。これまではリレーを使って切り替えるという方法を採用するのが普通でしたが、タイミングによってはポイント切り替え用コイルを焼損するおそれもあり、鉄道模型マニアが一番困っていた部分であると思います。できれば自動運転の途中で、タクトSWを押すことで割り込みでポンント切り替えができると大変使い勝手がよくなるなあと思いました。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です