HOME >> 鉄道模型自動運転システム >  往復運転モデルを作る その2

登山鉄道自動運転システム  往復運転モデルを作る その2

■ はじめに

 システムを制御する電気回路について、ハード回路を制作する前に各要素の機能をそれぞれ検証していく事にする。 今回はCdS センサを使用した車両の通過センサを検証する。

 

  .

■ 通過センサの検証

 通過センサは「電気回路の検討」で紹介した回路をコントロールパネルの裏側に設けることにした。 これは調整用の可変抵抗器の傍で回路を組むのが良いと判断したからである。 回路図を下に、実際の回路を右に示す。

 まず、今回のテストに必要な2回路分を組み立てて実験を実施した。 LEDは赤色を使用し、パネルの表側に頭を出すようにしている。 そして実験の様子は、全体を下左に、回路部分は下右に下に示す。

 パネルに設けた可変抵抗器は全部で8個あり、下段のボリュームは速度調整用でスイッチ付である。

 

 ファイル名:Goback-mode23.py
 作成日    :2017年5月17日
 ************************************************
 import RPi.GPIO as GPIO  GPIOを使用する
 from time import sleep  sleepコマンドを使用する
 
 GPIO.setmode(GPIO.BCM)   GPIOのコマンド指定
 GPIO.setup(23,GPIO.OUT)  ポートを変更している
 GPIO.setup(24,GPIO.OUT)  ポートを変更している
 GPIO.setup(6,GPIO.IN)   ポートの指定
 GPIO.setup(26,GPIO.IN)
 GPIO.setup(2,GPIO.IN)   ポートを追加する
 GPIO.setup(3,GPIO.IN)

 v1 = GPIO.PWM(23, 1000)  PWMの指定1
 v2 = GPIO.PWM(24, 1000)  PWMの指定2

 v1.start(0)   PWMの開始
 v2.start(0)
 global duty
 
 def direction1():  運転モード1の関数
   duty = 50
   while GPIO.input(2) == GPIO.LOW:  出口までスロー運転
     v2.ChangeDutyCycle(0)
     v1.ChangeDutyCycle(duty/2)
     sleep(0.2)
   while GPIO.input(3) == GPIO.LOW:  到着まで全速運転
     v1.ChangeDutyCycle(duty)
     sleep(0.2)
     v1.ChangeDutyCycle(duty/2)  到着するとスロー運転
     sleep(2)      じっくり時間を取ってから
   while GPIO.input(6) == GPIO.HIGH:  停止信号をチェック
     sleep(0.2)
     while  GPIO.input(6) == GPIO.HIGH: 2重チェック
       sleep(0.2)
    return
 
 def direction2():  運転モード2の関数
   duty = 50
   while GPIO.input(2) == GPIO.LOW:  出口までスロー運転
     v2.ChangeDutyCycle(0)
     v1.ChangeDutyCycle(duty/2)
     sleep(0.2)
   while GPIO.input(3) == GPIO.LOW:  到着まで全速運転
     v1.ChangeDutyCycle(duty)
     sleep(0.2)
     v1.ChangeDutyCycle(duty/2)  到着するとスロー運転
     sleep(2)      じっくり時間を取ってから
   while GPIO.input(6) == GPIO.HIGH:  停止信号をチェック
     sleep(0.2)
     while  GPIO.input(6) == GPIO.HIGH: 2重チェック
       sleep(0.2)
    return
 
 try:       メイン部分。走行ダイヤを記述していく。
   while True:
     direction1()  運転モード1を実行せよ
     sleep(1)
     direction2()  運転モード2を実行せよ
     sleep(1)
 
 except KeyboardInterrupt: プログラム終了 Ctrl+c
   pass
 v1.stop()   PWMの終了
 v2.stop()
 GPIO.cleanup()  ポートのリセット

■ 制御プログラムの検討

 今回のハード回路は簡単であったので、さっそく制御プログラムを修正することにした。 新しく追加したセンサは、電車がホームに近づいた事を知らせるセンサであるので、先回のプログラムの一部を手直しして対応する。

 検証した実験の順番は、

  1. 通過センサの機能確認として ボリューム調整と赤色LEDの点灯確認を実施する。 思惑どうりに機能していた。
  2. 運行モードの記述には、通過信号をクリアーした後に、停止信号をチェックする記述として、走行状態を確認した。
  3. 通過信号をクリアーした後に速度を半減させて走行するように記述した。 順調に進む。
  4. ここで欲が出てきて、出発時も減速発信するように記述を追加した。

 右のプログラムは上記の4の段階で、箱根登山鉄道の場合の速度設定の場合である。 今後は電車毎にDutyの値を読み込んで行くように想定している。

 

■ 動画の紹介

 これらの検討途中での様子を、今回も動画で紹介します。

 鉄コレ電車を使用し、ゆっくりホームに入線させる。 上記の3番目の状態である。 先回紹介したようないやいや運転は見事に解消されていることが分かる。

 今度は登山電車を使用したばあいである。 全体のdutyは50%に設定している。

 さらに、出発時もスロー発車させた場合で、上記4番目の状態に該当し、右に紹介したプログラムで運転中である。

 

■ 今後の進め方

 通過信号処理についての機能も確認できたし、往復運転の基本機能も確認できた。

 しかし、PWM制御における周波数の設定値については、まだ検討する余地がある。 使用しているモータドライバーはどこまでの周波数まで対応できるのか仕様書には明記されていないが、ネット等の情報によると高周波には対応できない様子である。 電車の通常モータとのマッチングやセンサおよびLEDとの兼ね合いで、もう少し系統だって検討する必要があるだろう。

 この場合は、Duty比も関係するので、次のステップで考えている速度設定処理回路を検討した後に実施することにしよう。

 

 

ページトップへ戻る .


 2017/5/18 作成  M.T.