HOME >> 鉄道模型実験室 > 新測定法のための自動運転制御システム

鉄道模型実験室  新測定法のための自動運転制御システム

   .

■ 走行用電源の極性切替方法

 要素検討の最後として、線路上を走行している試験車両の進行方向を切り替えるための仕組みを検討する。 線路には供給電源からの電力が接続されているが、車両の進行方向を変えるためには、その電気の極性を反対にする必要がある。 このプラスとマイナスの極の変更のために手段として、

  1. リレーを使って極性を変更する方法
  2. モータドライバICを使って極性を変更する方法

がある。 この方式を簡単に下のように比較してみた。

  リレー方式 モータドライバIC方式
サイズ 大きい コンパクト
重さ 重い 軽い
制御電圧 DC3〜24 4.5〜 と7〜のものあり
電圧降下 電圧降下なし 数ボルト電圧降下
チャタリング 発生あり⇒ノイズ 発生なし
価格 ≒ 500円 程度 ≒ 500円 程度
モデル例 omron G6A 東芝 TA8428K

 条件としては、Arduino から制御出来ること、制御する走行用電源の電圧は、0〜12ボルトとする、ユニバーサル基盤に取り付けられることなどを考慮した。

 それぞれの種類は多数あるので、素人には選定に困ってしまうが、それらしく仕様の製品のカタログを比較しながら勉強した。

 一番重視したのは、電圧降下の項目である。 今回使用しようとしているシステムは、動力車の性能測定を実施しようとするものであり、走行用の供給電圧には安定化電源を使うなど気を配って来た。 このため、回路中の漏れ電流や電圧降下は測定値の信頼度に影響するので可能な限り最小限に止めるようにしている。

 この結果、ドライバIC よりもリレー方式の方が優位であると判断し、リレー方式を採用することにする。

 そして、リレーには、

 

 ◆ シングルステイブル形
コイルの無励磁、励磁に応じて接点が切り替わり、それ以外は特別な機能をもたないもの。
 ◆1巻線ラッチング形
ひとつのコイルの極性を反転させて、接点を切り替えるリレー
 ◆2巻線ラッチング形
セットコイルとリセットコイルを有し、それぞれの状態を保存できるラッチング構造のリレー

があるとのこと。 ここでは、通電時間と制御回路を鑑み、2巻線ラッチング形を使ってみることにする。 そして選定したリレーは、OMRON製の2巻線型小型ラッチングリレー G6AK-274P-DC5V 、2接点2回路のプリント基板用小型リレーである。 コイル定格電圧は DC5.0Vであり、接点部定格負荷はDCの場合は30V-2AまでOKであるので、サイズも20×10×8mm の比較的コンパクトなさいずであった。

 このリレーを使ってのテスト実験は、リレーを信用して実施しなかった。 次に示す制御システムを構成して作動を確認したが、問題無く作動していた。

 

■ 制御システムの組立

 必要な要素が揃ったので、制御システムを組み立てることにした。 制御回路は要素に合わせて検討してきたが、最終的には右上の様な回路に落ち着いた。 走行用電源回路には切替ショックを和らげるためにコンデンサを挿入するつもりであるが、テストではコンデンサ無しで実験してみて、発生するノイズによって誤動作が無ければ取り付けない事にする。 また、モータドライブIC の回路にはカタログに示された10μFと 0.1μFのコンデンサを、その目的を理解していないままに図のように挿入しておく。 なんで二つも挿入するのかな? 大は小を兼ねないのかな?

 回路の組立は、二つのブレッドボードを使用して実施した。 組立時の状態を下に示す。 まずセンサー部を組み立てて、サンサーの動作をチェックした。 次にポイント駆動部と給電切替部を構成して、それぞれの動作をチェックした。

 次に、パソコンからスケッチをArduino に書き込み、Arduino 本体もボードに取り付けて、配線も実施した。 下の写真。 ブレッドボードを使った回路のため、リード線がゴチャゴチャしているが、何度も配線をチェックしながら慎重に実施した。 各要素の電源は、Arduinoが9ボルトのACアダプターを、ポイント駆動回路には12ボルトACアダプターを、走行用電源にはN-401のパワーユニットを使用している。

 また、TOMIX の配線コネクタはブレッドボード用のリード線を使って容易に接続出来ので便利である。 KATO製の場合は特殊なコネクタを作るか、あるいは配線を切断して細工する必要があるだろう。

 Arduino 本体と各要素部との間もリード線を使って配線している。 下左がArduino部で、右がセンサ部である。

 ポイント駆動回路と走行電源切替回路を下左に示す。 信号線もパワー線も同じリード線を使用しているが、テスト回路なのでOKとしておこう。 ブレッドボードが分かれているために、GND線だけはお互いに共通になるように接続している。

 線路には通電時に点灯する踏板型の方向指示LEDを使用して、通電とその方向を確認できるようにしている。 上右の写真。


#define FED11 13
  ********** 省略 ***********
#define SEN2 3

void setup() {
  pinMode(FED11,OUTPUT);
  ********* 省略 **************
  pinMode(SOL22,OUTPUT);
  pinMode(SEN1,INPUT);
  pinMode(SEN2,INPUT);

  digitalWrite(FED11,LOW);
     ******** 省略 *****************
  digitalWrite(SOL22,LOW);  

  digitalWrite(FED11,HIGH);
  digitalWrite(FED21,HIGH);
  delay (500);
  digitalWrite(FED11,LOW);
  digitalWrite(FED21,LOW);
  delay (500);
  digitalWrite(SOL11,HIGH); 
  delay (200);
  digitalWrite(SOL11,LOW);
  delay (500);  
  digitalWrite(SOL21,HIGH); 
  delay (200);
  digitalWrite(SOL21,LOW); 
  delay (500);     
}

void loop() {
  while (1){
      if(digitalRead(SEN2) == HIGH)  break;
  }
  while (1){
      if(digitalRead(SEN1) == HIGH)  break;
  }
      digitalWrite(SOL12, HIGH); 
      delay (200);
      digitalWrite(SOL12, LOW);
      delay (200);
      digitalWrite(FED22, HIGH); 
      delay (200);
      digitalWrite(FED22, LOW);

  while (1){
      if(digitalRead(SEN2) == HIGH)  break;
  }
      digitalWrite(FED12, HIGH); 
      delay (200);
      digitalWrite(FED12, LOW);
      delay (200);
      digitalWrite(SOL11, HIGH);  
      delay (200);
      digitalWrite(SOL11, LOW);

  while (1){
      if(digitalRead(SEN1) == HIGH)  break;
  }
  while (1){
      if(digitalRead(SEN2) == HIGH)  break;
  }
      digitalWrite(SOL22, HIGH); 
      delay (200);
      digitalWrite(SOL22, LOW);
      delay (200);
      digitalWrite(FED11, HIGH); 
      delay (200);
      digitalWrite(FED11, LOW);

  while (1){
    if(digitalRead(SEN1) == HIGH)  break;
  }
      digitalWrite(FED21, HIGH); 
      delay (200);
      digitalWrite(FED21, LOW);
      delay (200);
      digitalWrite(SOL21, HIGH); 
      delay (200);
      digitalWrite(SOL21, LOW);
}
  

 また、2ヶ所のセンサーは線路に工作してはめ込み、導線にてブレッドボード部まで接続している。

 

■ 制御ソフトの検討

 最後に、制御ソフトの検討を実施した。 当初はおかしな動きをしていたが、不具合部分を修正して、その最終仕様の状態を右に示す。

 

 電源の投入順番は、まずArduino に通電した後にソレノイド駆動のの電源を通電させる。 そしてArduino のリセットスイッチを押した後に、走行用電源を通電させることにしている。

 これは、走行用電源の給電ポイントが2ヶ所あり、極性が反転している場合があるためで、直線路上にギャップを切っていればショートする恐れが無いのであるが、直線路上で特性を測定するのでギャップを敢えて設けていないのである。 このためのフェールセーフは設けていないので、コントローラの安全対策を頼るしかない状態である。

 

 さて、スケッチの内容を説明しておこう。 最初に線路への通電方向をそろえ、ソレノイドを動かしてポイントの作動状態を確認する。 この初期設定が完了したら、スタンバイ状態に入る。

 センサーのLED点灯を確認して走行用電源を通電させるとシステムは動き出す。 その後のシーケンスは、「自動運転制御のテスト」で説明した内容に沿って記述している。

 ソレノイドへの通電時間は、すべて 200msec に設定しているが、今のところエラーは確認されていない。  単純なシーケンス処理なので、高度な機能を持つArduino にはもったいないのであるが、将来的には、傾斜台の自動リフト駆動や、測定用Arduino の一部の機能を持ってくるなどの希望を持っておこう。

 

 テスト走行の状態は「自動運転制御のテスト」にて既に紹介している。 動画でも紹介している通りエラーも無く快調に作動している事がわかる。 そこで、次のステップである本格的な工作に進める事にしよう。

 その大まかな工作手順は、

  1. 280-30の電動ポイントを入手してモータドライバICで確実に作動するかの確認する。 もし不作動の個体を引き当てた場合には、新しく追加購入するか、あるいは手持ちのリレーとコンデンサを使ってコンデンサ方式での確認を実施してポイントの駆動方式を決定する。
  2. 回路が決定出来たら、Arduino 専用の基板を使って、これらの制御回路専用のシールドを作成する。
  3. 新しい速度センシングゲートを工作する。
  4. 測定台の改造を進め、作成された部品類を取り付けて新しい測定方法をテストする。

と考えている。 今回のテスト結果は良好だったので自信を持って進めることが出来ると考えているので、楽しみながら工作を進めることにしよう。