HOME >> 鉄道模型自動運転システム >  登山鉄道の自動運転システム システムの構想

登山鉄道の自動運転システム システムの構想

 レイアウトの大改造に合わせて、制御するマイコンを Raspberry Pi から、Arduino に変更し、さらにポイント作動の信頼性向上のためTOMIX 製からKATO 製に変更して、新たに自動運転システムに再挑戦する。 

 

■ 制御コンピュータの選択 (Raspberry Pi とArduino の比較)

 偶然にも Raspberry Pi を入手したので、勉強のためにと、この自動運転用の制御に使用してみた。 入手した Raspberry Pi セットは、IoT システムの入門セットであったが、応用としてこの自動運転に挑戦したのである。  Raspberry Pi システムで注目した点は、

  1. マルチタスクが容易に実施出来るとのことなので、複数の列車の同時運行が可能であったこと。
  2. Wi-fi が内蔵されており、うまく行けば スマホから制御できるかも知れないという期待があった。

 しかし、一番の違いであった OS によるマイコン・システムであったので、開始時や終了時には、適切な処理が必要なので、気楽に電源をON/OFF することが出来なかった。 また、手順を間違えるとシステムがクシャクシャになりそうであった。

 その点、Arduino は組込型のマイコンであるので、スイッチON ですぐに運行開始状態に入る事が出来るし、途中で電源をOFFに しても、システム上はその後に何ら問題は生じさせないのである。 勿論、電車は途中で止まってしまうのであるが・・・・・・・。 そして、コンピュータを再度ON にすれば、初期状態から問題無く作動し始めるのだ。 これは、システムの緊急停止時の処理を特別に考慮する必要がないので、このような自動運転には向いていることを、改めて認識した次第である。

 また、システム開発時には、レイアウトにセットした Raspberry Pi本体に、モニタ、キーボード、マウスなどのケーブルも接続しなけらばならなかったので、多くの制約があった。

 このような訳で、上記の二つのメリットを諦めて、制御用のコンピュータとしてArduino を選択した

 

■ レイアウトの概要

 この登山鉄道は幾多の変更の後、現在は下記の様なレイアウトである。

  .

 線路配置は、山の中腹にある登山口駅を中心にして、山頂駅に向かう路線と麓の街中駅駅に向かう線路があり、後者には途中でスイッチバックを設けている。 登山口駅には二つのホームがあり、それぞれの路線に向かうホームとする。

 そして、レイアウトは今までのレイアウトをそのまま使用する。 このレイアウトではTOMIX 製のミニカーブレールを多用した線路で構成しているが、ポイント部分だけは、より作動が安定している KATO 製に取換ることにする。

 各路線の先端は、激突防止と到着信号を備えた自作のレールエンドを設置し、構内の減速走行のために、車両検知センサをそれぞれの入り口に設置する。

 また、レールエンドの状態を表示するため、LEDを使って信号機などで表示させる工夫もおこなう。

 

■ 制御に必要な入出力項目

 ます、Arduino シリーズのなかで、どの種類が使用できるのかを選定するために、このシステムに必要となる入出力項目を検討する。 

 これは、必要とするポート数に影響するのでまず、路線図のイラストを元に、設置するセンサやポイントの位置を決めておこう。

 

 ◆ 各レールエンドに入線する前に、激突防止のため通過センサーを設置する。 通過信号と呼ぶ。 このセンサーを通過すると電車を減速させことにする。 出発時は最初にゆっくりと発車させて、駅を出ると速度を上げる制御とする。 各レールエンド部の4ヶ所に設けている。

 

 ◆ 電車がレールエンドに到着したことを知らせるセンサを各レールエンドに設ける。 到着信号と呼ぶ。 この信号によってこのステップの制御は終了し、次のステップの制御に移行するようにする。 なお、ハード的にマイクロスイッチによって給電を遮断するので、電車への負担、即ち、動輪のガリガリ空転を防止できる。

 

 ◆ レールへ電力を供給する給電方法は、先回の同時走行を実施し田場合は3ヶ所で給電していたが、今回はマルチタスクを実施しないので、一列車ずつ順番に走行させるため給電はひとつの制御で良い。 そして、往復運行があるので右レール用と左レール用の二つのPWM制御出力が必要となる。

 

 ◆ ポイント操作用の出力として、3個のポイントをON/OFF 制御する出力ポートが必要となる。 なお、給電箇所を一ヶ所にした今回の方法では、各ポイントを選択式に設定しておく必要がある。

 

 ◆ 走らせる電車は、色々な電車を走らせようとしているので、それぞれの個体に合わせた速度設定が必要となる。 そこで、可変ボリュームを使用して、速度調整が出来るようにする。 このため、3個のアナログ入力ポートが必要である。 なお、使用する可変抵抗器には、スイッチ内蔵式のものを使用し、電車を設定しない時は、ゼロ電圧にして、電車が無い事をArduino に知らせ、運行ダイヤをパスさせるように工夫する。 これによって、3台でなくても、1台でも、2台でも運行させることが出来のである。

 

  .

 ◆ 使用者が操作させるスイッチとして、運行開始のボタンを設ける。 勿論、電源のON/OFF のためのスイッチはシステムとして当然設置するが、Arduino への信号は不要である。 ただし、電源が通電している状態を表示する緑のLEDは点灯させる。

 そして、Arduino の初期設定が終わり、運転可能な待機状態に入ったことを見計らって、運転開始を指示するのがこの運行開始のボタンである。 このボタンはホールド機能付きとして、ON状態であれば運行を開始し、かつそれを継続するが、OFF の状態であれば、運行ダイヤをひと通り実行後は、運転をストップさせるようにする。 こうすると、初期状態に戻った時点で、制御状態は、最初の待機状態になるのである。

 これは、すべての列車が、当初の位置に戻っている状態となり、ここで、システムの電源をOFF すれば、次回もスムースに運転が開始できるのである。 これは、その日の運行が終了し、すべての電車が車庫に戻ったのだと解釈することが出来るのだ。

 

 ◆ ホールド機能付きの一時停止ボタンも設ける。 これは脱線等のトラブルが発生した時、運行制御を一時的に停止させ、トラブル対応後は、このスイッチを戻すと、また運行を再開するようにする。 先回のシステムでは給電用の12V 電源をOFF させることで対応していたが、脱線等のトラブル対応中に通過センサを作動させてしまい、停止していない制御シーケンスを先に進める状態が発生してしまった。 このため、通過センサの電源もOFFする対策を実施したが、今回は、外部割り込み処理を採用してみることにした。

 

 ◆ 以上の項目を検討した結果、Arduino UNO で使用できる I/O ポートは、一つ余っていたので、アラーム用として、LEDを点灯させることにした。 何に使うかは、今後考える事とし、とりあえずハードとして設置して置くことにする。

 

 以上の検討、必要なポートのリストを右上に示す。 ポート数の多い Arduino Mega の使用も念頭に於いていたが、標準の Arduino UNO でも可能な事が分かった。 ただし、I/O ポートをすべて使用する事に、一抹の不安を抱いている。 Timer0 関数 や tone() 関数、また、 シリアル通信と競合するピンがあるだが、今回はこれらの関数は使用しないので心配無いと考えているが、果たしてどうだろうか。

 

  .

■ 運行ダイヤの設定

 今回採用するArduino はマルチタスクが苦手なようであり、不可であると説明されている資料もあるし、マルチタスクらしき制御方法もあるらしいが、難しそうなので諦めることにした。

 このため、運行ダイヤは一列車ずつ、それぞれ順番に走らせるダイヤとした。 従って、このレイアウトには4個の駅があるので、空いている駅にひとつの電車をそれぞれ詰めていく運行ダイヤを運用するとすると、使用できる電車本数は、

    4−1= 3

の最大3本である。 

 そのダイヤを右に示す。 スイッチバック部は、登山口駅から都市駅に向かう途中なので、電車を待機させる場所としては使用できない。 そして、空いている頂上駅に向かう電車を始発とし、各電車が元の位置の戻った状態を終電とする運行ダイヤである。 連続運転ではこのパターンを繰り返し実行し、1台または2台で運行させる場合には、その電車の運行モードをパスして対応する。

 この運行ダイヤは、走る電車が異なるものの、同じパターンを3回繰り返すことになる。

 ここで、出発地点と到着地点のモードは、往復を考えると6種類ある事が分かるので、それぞれ、Direction 1 〜 6 まで運行モードとして設定した。 この運行モードに運行する電車番号を対応させて走らせる方法とした。 

 使い馴れた Arduino UNO が使える事がわかったので、次にハード回路の検討をする。

 

ページトップへ戻る .


 2019/8/17 作成