HOME >> 鉄道模型自動運転システム >  登山鉄道の自動運転システム 試運転の実施

登山鉄道の自動運転システム 試運転の実施

 Arduino の制御ロジックをスケッチとして記述し、無事書き込みも出来たので、試運転を実施した。 色々なトラブルが発生したが、その対応についても報告する。

  .

 

■ 試運転の実施

 最初に、街中駅とスイッチバックの間の往復運転で実施した。 運行関数は direction1(0) と direction2(0) を記述し、電車1台で走らせた。 その結果、トラブル無く走行できたので、フル記述を実施し、電車3本をセットして走行させた。

 いくつかの不具合と対応を説明する。

 

(1) ポイントが駆動しない場合があった

 これも、信頼していたKATO製ポイントでのトラブルなのであるが、ポイントを連続して作動させると応答をミスすると推定して、複数のポイント作動指示の間にdelay(500) 命令を挿入して対応した。

 

(2) モータ音が大きい

 これはPWM制御の周波数が低い事が原因である。 供給電力を制御するモータドライバの特性上、市販のパワーユニットの様な高い周波数での制御が無理であることと、Arduino では周波数を指定することが出来ず、その周波数は 490Hz の低周波数であった。 耳には一番聞こえやすい周波数であるが このままで、電車音を楽しむことにしよう!

 

(3) 2列車編成での問題

 今度は電車を2本にして走行させてみた。 すると、新たな問題が発生した。 キャンセルした電車の出番になると、その運行をパスして次のモードに移行するのだが、そのモードにスムースに移行する場合があると思えば、突然電車が暴走を始める場合がたびたび発生した。 そして、レールエンドに激突して脱線してしまうのだ。 最初は、何が起きているのか不明だった。

 3台で運行する場合はシーケンスは正常に進行するのに、2台で運行するとなぜか異常行動が出てくる。 推定として電車をキャンセルした情報が正確に処理されていないのではないかと考えた。 その解決のきっかけは、センサ回路の例からヒントを得た。 スイッチがOFFの時、LEDの電流が流れ始める電圧がジャンプしているので、この回路が空に浮いているからではないのかと!

  .

 しかし、オシロでの波形観察の時は問題無かったではないかとの疑問がある。 でも、プローブを接続していたので、空に浮いていた回路の電荷はプローブを通してGNDに逃げていたと解釈できるので、とりあえず残留電荷を逃がすためにLEDと並列に抵抗を入れてみることにした。 そのバイパス電圧が LEDの点灯開始電圧よりも高くなるようにと、3.3KΩの抵抗を追加して、スイッチのOFF 時のLED端部の電圧を確実にゼロに落す様に工作した。

 この対策は見事に成功した。 2編成の場合でも、また、1編成の場合でも問題無くシーケンスは進行して行き、運行ボタンをOFF にしておくと、初期の位置でピタリとシーケンスを止めて待機状態に移行するのである。 苦労した後の喜びはひとしおである。

 なお、何度かテストを繰り返したが、各路線での最適速度の調整は、実際のレイアウト上で実施する必要があると判断した。 また、少しぐらいの激突でも電車が脱線しない工夫が求められたので、2×5mm のヒノキの角材を使って脱線防止ガードを追加工作した。 右の写真。

 

(4) 発車時のロジックを加速方式に変更

 発車時における速度調整は、ゆっくりスタートして出口の通過信号を受けると通常速度で走行するように設定していた。 しかし、この低速走行スムースに行かない車両が有ったり、突っかかって動かないものもあった。 そこで、PWMでの制御について、段々と加速させる制御に変更してみることにした。 突っかかって動かない車両については、通常走行速度までアップする内に、どこかで動き出すだろうし、低速走行が苦手の車両にもマッチするだろうと考えた。 

// Tozan-Auto-14  2018/4/3

void direction1(int densha) {
  if (analogRead(densha) < 400 ) {   //電車の設定の有無チェック
    return;                       //無の場合はこの運行をパスする
  }
  digitalWrite(P1_PIN, LOW);      //経路を設定する
  delay(500);
  digitalWrite(P2_PIN, LOW);
  delay(500);
  digitalWrite(P3_PIN, LOW);
 delay(500); 

 analogWrite(Fl_PIN, 0);  //フィーダー出力0
  for (i=0;i<17;i++ ) {              //走行加速開始
    duty = analogRead(densha);       //VRの値を読込む
    duty = (duty - 500) *(0.1 + 0.025*i ); 
    analogWrite(Fr_PIN, duty);       //フィーダー出力
    delay(200);
  }
  t2 = digitalRead(T2_PIN);         //到着点通過チェック
  while (t2 == LOW ) {              //到着点通過待ち
    duty = analogRead(densha);      //VRの値を読込む
    duty = (duty - 500) * 0.5;      //通常速度
    analogWrite(Fr_PIN, duty);      //フィーダー出力
    t2 = digitalRead(T2_PIN);       //到着点通過チェック
    delay(50);
  }
  e2 = digitalRead(E2_PIN);         //到着チェック
  while (e2 == LOW ) {              //到着待ち
    duty = analogRead(densha);      //VRの値を読込む
    duty = (duty - 500) * 0.2;      //低速走行
    analogWrite(Fr_PIN, duty);      //フィーダー出力
    e2 = digitalRead(E2_PIN);       //到着点通過チェック
    delay(50);
  }
  delay(500);
  analogWrite(Fr_PIN, 0);
  delay(1000);
  return;
}
 下に示す今まで記述していた内容を、

t1 = digitalRead(T1_PIN);           //出発点通過チェック
while (t1 == LOW ) {              //出発点通過待ち
   duty = analogRead(densha);      //VRの値を読込む
   duty = (duty - 500) /4;         //デューティ比の計算、低速走行
   analogWrite(Fl_PIN, 0);          //フィーダー出力0
   analogWrite(Fr_PIN, duty);       //フィーダー出力
   t1 = digitalRead(T1_PIN);        //出発点通過チェック
   delay(50);
}

 次の様に変更した。

analogWrite(Fl_PIN, 0);               //フィーダー出力0
for (i=0;i<17;i++ ) {                  //走行加速開始
  duty = analogRead(densha);          //VRの値を読込む
  duty = (duty - 500) *(0.1 + 0.025*i );    //デューティ比の計算
  analogWrite(Fr_PIN, duty);          //フィーダー出力
  delay(200);
}

 ここで、analogWrite でのデューティ比は、0〜255 の値を指定すると、0〜100 %のデューティ比を指定することになるので、VRの最大値がデューティ比 100 % を指定する 255 になるように設定する。

 VRの最大値はアナログ入力を A/D 変換した値で、1023 である。 そしてVRスイッチの ON 時の値が2.5volt 即ち 510 であるので、この下駄の部分を差し引いて、1023 - 500 の値が0〜255 の値になるように係数を決めれば良いjことになる。 523/255 = 0.49 = 0.5 が最大係数となる。 実際には、その車両にあったスケール速度になるようにボリュームを調整すれば良い。

 そして、スタート時は、係数が 0.1 から始めて、0.025 ずつ増加させて行き、次の通常速度時の係数である 0.50 に達するまでには、16回繰り返せばよい事になる。 通常速度時の係数が 0.3 の場合には8回の繰り返しで到達する。

 この時の遅延時間設定か、あるいは増加刻み量を変えれば加速具合が調整できるのである。 まずはこのような設定で走らせて様子を見ることにしよう。

 この時のスケッチの内容の一部を右に示す。

 

(5) 走行させる電車について

 先回の走行テストでは、1本の電車を使って運行具合を確認した。 その後、複数の編成を走らせようとしたがその選択に迷ってしまった。 出来るなら同じ系列の電車を揃えて走らせたいのだ。 所有している箱根登山鉄道の車両は、TOMIX 2620 箱根登山鉄道 1000形ベルニナ号(旧塗装)と、98007 箱根登山鉄道 2000 形サン・モリッツ号(レーティッシュ塗装)の2編のみである。  同じ車両を増やす方法もあるが、最近はほとんど日が当たらない鉄コレ電車を引っ張り出すことにした。

 その車両達を下に示す。

 この鉄コレシリーズは、車両の長さが少し長目であるが、この登山鉄道のレイアウト上ではなんとか走行可能であった。 でも幾つかのトラブルが発生していた。

 まず、トレーラ車両は車体が軽いのでレールエンドに衝突すると飛び上がって脱線してしまうのである。 停止前の速度を調整したが、低速にしすぎると他の場合での走行がもたついてしまう。 その車両にぴったりの設定を行っても、他の種類の電車ではアンマッチとなってしまうのである。 運行プログラム上でこのマッチングを行うのは難しいと感じたので、車両側で対応することにした。 下左の写真のように、重りを追加したのだ。 22グラムの車体に 11グラムも重りを追加して 33グラムまでアップさせると、脱線を回避させる設定が出来るようになった。

 また、走行途中での脱線やカプラーの自然開放の問題も発生した。 修正に次ぐ修正によって、線路面の状態が不整状態となってしまっているのである。 線路上面の凸凹は勿論、カーブ具合やうねりなど不均一な路面となってしまっていた。 目で確認しながら設置したはずであり、Bトレを走行させていたときは問題無かったのであるが、台車スパンの長い車両では路面のうねりの影響が特に大きいようである。 

 このため、カトーカプラーをTNカプラーに交換して対応し、脱線対策は上記の重りの追加で対応した。 そして、この鉄コレ編成の3本の電車で運行させて効果を確認しました。

 運行は、色々な種類の電車と運行パターンを組み合わせて遊んでみたいと思っている。 箱根登山鉄道の場合は2編成で運行するとか、動力車の1両編成で他の鉄コレを走らせるとか工夫してみよう。

 

(6) ポイント駆動のトラブル

 一番のトラブルは、やはりポイント駆動が正常に作動しない場合であった。 ポイント切替が指定どうりに作動しないと指定外の路線を走行してしまうのである。 対策は「ポイントの駆動回路」にて説明した。 最後まで残ってしまったトラブルである。

 

(7)信号機の破損

 トラブル対応などで、取り外したりしている間に、不注意で信号機を破損してしまった。

 TOMIX製の信号機を応用したものであるが、根本部からポッキリと折れてしまった。 復活の手段はあるが、これも面倒なので、以前製作した信号機に取り換えることにした。 上左の写真が破損状態で、上右の写真は手作りの新しい信号機をレイアウトに取り付けた状態である。

 

■ 最終仕上げ

 システムの作動がやっと安定的に作動するようになったので、ここで自動運転システムを完成とし、地面やストラクチャの仕上げ作業を実施した。

 

■ まとめ

 今回の失敗を振り返って、反省点を整理しておこう。

  1. 電動ポイントの駆動回路としてコンデンサを使用する方式は、昔から鉄道模型の電子工作に使われてきた方式であるが、手動スイッチを使用する場合は問題ないものの、電磁リレーを使用する場合には、その電流容量に注意する必要があるようだ。
  2. 当初、自分が選択したリレー仕様はかなり無理だったようである。 リレーの選択には充分に注意しよう。
  3. 今までは安易に電解コンデンサを使用していたが、その使い方も勉強となった。
  4. スケッチの修正など、パソコンからArduino に送信する場合、シリアル通信ポートを開けて置くと、いちいち配線を外す必要が無いのでこの配慮は有効である。
  5. 回路の修正のために、基盤を取り外す必要があったが、ゴチャゴチャした配線の脱着が必要であり、誤接続の恐れもあった。 基板を分散する場合は、その配線接続の簡単化を考慮しておく必要があると痛感した。
  6. 手動運転と自動運転のスイッチ一つで切り替えれる工夫があると便利なのだが・・・・・・。

■ 最終仕様のスケッチの紹介

 使用した最終仕様のスケッチについて、参考として添付します。

       Tozan-auto-14.ino

 

**************************************  完  *******************************************************************************

ページトップへ戻る .


 2019/8/20 作成