HOME >> 鉄道模型実験室 > 自動運転制御ユニットのテスト

鉄道模型実験室  自動運転制御ユニットのテスト

   .

■ はじめに

 先回、報告したようにポイント駆動ユニットの機能が確認できたので、いよいよ測定台にセットしてテストを実施することにした。

  .

 

■ 測定台での予備テスト

 ポイント駆動ユニットの機能が確認出来たので、測定台の上に仮置きし、自動運転制御ユニットと接続して試験運転を実施した。 接続ポートは先回と同様に、D6とD7を使用する。 また、テスト用のスケッチも修正しArduinoに送信した。 テストの状態を下に示す。

#define FED11 13
#define FED12 12
#define FED21 11
#define FED22 10
#define SOL1 2
#define SOL2 3
#define SEN1 19
#define SEN2 18
#define STAGER 7
#define STAGEL 6
void setup() {
  pinMode(FED11,OUTPUT);
  pinMode(FED12,OUTPUT);
  pinMode(FED21,OUTPUT);
  pinMode(FED22,OUTPUT);
  pinMode(SOL1,OUTPUT);
  pinMode(SOL2,OUTPUT);
  pinMode(STAGER,OUTPUT);
  pinMode(STAGEL,OUTPUT);  
  pinMode(SEN1,INPUT);
  pinMode(SEN2,INPUT);
 digitalWrite(FED11,LOW);
  digitalWrite(FED12,LOW);
  digitalWrite(FED21,LOW);
  digitalWrite(FED22,LOW);
  digitalWrite(SOL1,LOW);
  digitalWrite(SOL2,LOW);
  digitalWrite(STAGER, HIGH);
  digitalWrite(STAGEL, LOW);
 delay (500);
  digitalWrite(SOL1,HIGH); 
  delay (500);
  digitalWrite(SOL1,LOW);
  delay (500);  
  digitalWrite(SOL2,HIGH); 
  delay (500);
  digitalWrite(SOL2,LOW); 
  delay (500); 
 digitalWrite(FED11,HIGH);
  digitalWrite(FED21,HIGH);
  delay (500);
  digitalWrite(FED11,LOW);
  digitalWrite(FED21,LOW);  
}
void loop() {
  while (1){
      if(digitalRead(SEN2) == HIGH)  break;
  }
  while (1){
      if(digitalRead(SEN1) == HIGH)  break;
  }
      digitalWrite(STAGER, LOW);
      digitalWrite(SOL1, HIGH); 
      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(SOL1, LOW);
      digitalWrite(STAGEL, HIGH);
 while (1){
      if(digitalRead(SEN1) == HIGH)  break;
  }
  while (1){
      if(digitalRead(SEN2) == HIGH)  break;
  }
      digitalWrite(STAGEL, LOW);
      digitalWrite(SOL2, HIGH); 
      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(SOL2, LOW);
      digitalWrite(STAGER, HIGH);      
}

 

■ 測定台への設置

 ポイント駆動ユニットと制御ユニットの機能が確認出来たので、予備テスト合格と判断し、工作を先に進めることにした。

 まず、自動運転制御ユニット側のシールドに設置したモータドライブIC の回路は取り去り、ポイント駆動ユニットとの接続用ポートを新たに追加した。 ただ、モータドライブICの足は7本もあり、半田を溶かしながらピンを抜く必要があるのであるが、7本も同時に溶かす必要があるため、どうしても上手くいかなかった。 最後には無理やり引っこ抜いたので IC の足はちぎれてしまった。 このため、もうひとつのICは、配線を切った状態で、そのまま残しておくことにした。

 このため、予定していたポイント駆動ユニットとの接続ポートをD2とD3ポートに変更した。

 また、Arduino のスケッチには、STAGE信号の記述も追加しておくことにした。 右旋回状態ではSTAGERとし、D7ポートを HIGH にし、左旋回状態では、STAGELとし、D6ポートを HIGH にして、測定用のArduino に信号を送るようにした。 修正したスケッチを右に示す。

 

 自動運転の制御部の設置状態を下に示す。 

 いろいろな配線が交差しており、どの線をどこにつなぐか、その方向は? 今は頭に入っているがそのうちに間違えてしまうのは明らかなので、接続解説図などを張り付けておく必要があるだろう。

 そして、測定台の傾斜をセンシングしていたユニットについても、場所を移動して設定し直した。 これは、奥の測定ゲートを中央部にせっちしたため、台の裏側で干渉してしまったのである。 傾斜角の測定は、再度校正する必要がある。

 次に、装置全体の様子を下に示す。

 

 また、この時の状態を動画に収めたのでご覧ください。 快調に作動しており、今までの苦労が報われたような気がします。

 次回は、いよいよ有線通信線のための工作を実施しよう。