Nゲージの自動踏切、信号機の要のセンサーを動かしてみる!!

電子工作

今回は踏切、信号機でも必要になる【車両の検知】について、センサーに何を使うか、実際に部品を購入して動作の確認までしてみます。

なお我が家の前提は、アナログ仕様です。DCCはやりません。やれません。

1.検知(センサー)の種類

 車両の検知をするのに、センサーにどんな種類があるのか調べました。

  • フォトセンサ(CdSセル)
  • フォトリフレクター
  • TCSセンサー(TOMIX製)
  • フォトカプラー
  • リードスイッチ

ここに挙げた以外にもあるようですが、使用環境、、使いやすさ、コストなどから使われているセンサーはここで挙げたセンサーが多いみたいです。

2. センサーの長所、短所

 ざっくり表に長所、短所をまとめました。 (違うところがあったらゴメンなさい!)

センサーの種類長所短所
フォトセンサー価格が安い。(30~100円/個程度:秋月電子)蛍光灯などの外光に左右される。(誤検知)
フォトリフレクター価格が安い。 (40~100円/個程度:秋月電子) 黒い色に反応しにくい。(検知しない)
TCSセンサーレールとセンサーになる金属との間を車輪が通ることで
検知する接触式なので確実。
値段が高い。(メーカー価格1430円/個以上)
フォトカプラー本物の電車のようにレールを区間ごとに絶縁して電気的に検出するので確実。 価格が安い。
(65~200円/個程度:秋月電子)
フォトカプラー内のダイオード分電圧が落ちる。

 フォトカプラーの短所については、確認していないのでどの程度の影響になるのか不明です。他の方のブログに書かれていたのでそんなものかなあという感じです。フォトカプラー(レールをギャップで区切って在線検知に使用)を使っている方は、自動運転をされている方が多いようにみえます。

3.TCSセンサーの動作を確認してみる

 センサーに何を使うかですが、なんとなく確実に動作しそうな(個人的感想です)TCSセンサーを使ってみたいのと、TCSセンサーが使えないところが発生した場合に備えて、フォトリフレクターを使ってこの2つのセンサーの動作を確認してみます。(結構いい加減な決め方です)

 まずは、TOMIX製のTCSセンサーからやってみます。

センサーにコードを取り付けます。基板(緑の部分)の左右どちらからでもコネクタが挿入できるようになっています。ただしコネクタには上下の向きがあるので注意が必要です。

センサーをレールに取り付けます。

センサーの反対側のコネクタは、このままで使用しない、使えないので日本圧着端子(JST)製のZHコネクタに付け替えました。(上がJSTのZHコネクタ、下がオリジナル)

ZHコネクタにすることで、ブレッドボード・ジャンパーワイヤがコネクタに挿せて利便性が上がります。

動作確認は、 前にArduino Unoが壊れたので今は Arduino Pro Mini(秋月電子で購入)を使用しています。このままではパソコンとつなげないのでUSBシリアル変換アダプターをつないで使用します。これでAruduino Unoとほぼ同等に使えます。UnoもPro MiniもマイコンはATmega328で同じものです。ただし、パッケージ(形状)は違います。

TCSセンサーの動作確認用にオシロスコープをつないでいます。本当はもっと良いオシロが欲しいけど資金がないのでこれでガマン(´;ω;`)

キハの中間車(M車)を走らせてセンサー上を行き来します。画面右から左方向への走行がセンサーの正方向です。この時のオシロの波形です。プルアップにしているので通常状態は5Vですが、車輪がセンサーを通るとGNDに落ちるので、波形がくぼみます。プログラム上センサーが車両(車輪)を検知すると、マイコンの端子がピン変化割り込みでONし、LEDを点灯(500msec)します。別途この時の動画をアップします。

うまく動いてくれてホッとしました。と言いたかったのですが、逆方向(左から右方向に走行)の時にセンサー上を通ってもオシロの波形を見るとGNDに落ちることはないのですが、LEDが時々点灯してしまいます。えー、何で??

・・・たぶん原因は、前のオシロの波形を見てわかるようにかなりノイズが載っています。どうもこれが悪さをしていたようで。なので、マイコン3ピンのTCSセンサーの入力ピンとGND間に0.1uFのセラミックコンデンサを入れてみました。

だいぶ波形がきれいになったことがわかりますか?5Vの部分もひげ上のノイズも減っているのがわかります。これで、逆方向に走行した際のLED誤点灯(誤動作)がなくなりました。

以下は、今回TCS動作確認に使用したスケッチです。

/* TCSセンサー動作確認スケッチ
*
*  ~想・作★小・路~/シーゲル
*/

const int DIN_PIN = 3;  //TSCから信号入力ピン設定:D3ピン
const int LED_PIN = 7;  //LED出力ピン設定:D7ピン
int flg = 0;  //フラグ

void setup()
{
    pinMode( DIN_PIN, INPUT );  //TSCから信号入力ピン
    pinMode( LED_PIN, OUTPUT );  //LED出力ピン出力設定
    attachInterrupt(digitalPinToInterrupt(3),tcs_vect,FALLING); //ピン変化割り込み設定
}

void loop()
{
   if (flg == 1){           //フラグが1だったら以下の処理を行う
  //割り込みが発生したらLEDを点灯
  digitalWrite( LED_PIN, HIGH );  //LED点灯
  delay(500) ;                    //500ms経ったら
  digitalWrite( LED_PIN, LOW );   //LEDを消灯
  flg = 0;     //フラグを0に戻す
   }
}

/* ピン変化割り込み処理 */
void tcs_vect(void)
{
 flg = 1;     //フラグを1にする
}

こちらが最初の回路です。

今回TCSセンサーの動作の確認をしたかったので、進行方向は正側しか確認していません。逆走の検知はTCSセンサーのコネクタ1ピンを使います。

下が誤動作対策でコンデンサを入れた回路です。(コンデンサこの位置で良いのかな?)

4.フォトリフレクタを動かしてみる

フォトリフレクタは秋月電子で売っているTPR-105が小さいのでこれを使います。

フォトリフレクタのリード部分をピンバイスでレールに穴を開けて取り付けます。

レールの裏側です。ユニバーサル基板はいらなかったもしれないけど、とりあえず基板を介してリード線とつなぎました。GNDはまとめています。(2ピンと4ピン)なので、部品の足は4本出ていますが、リード線は3本です。

TCSセンサーの時とあまり変わりませんが、ブレッドボードとマイコンボード、右に映っているVRはフォトリフレクターの感度調整用です。

フォトリフレクタは、アナログ入力をデジタル値に変換しArduinoのシリアル通信でパソコンにデジタル値を表示させるのでオシロはつないでいません。

デジタル値が1015くらいから950前後に変わったところから下の部分が、車両がセンサー上を通っているところです。

使用したキハの中間車のM車は、裏全体が灰色で凸状になっているため比較的容易にセンサーで車両検知できました。

対照的に客車(オハ35)のような床下が黒でスカスカだとほぼ検知できませんでした。反応する部分がほとんどありません。床下部分にアルミホイル、白い紙のようなものを貼れば改善できます。踏切の動作をさせるトリガーにするだけなら、センサーの初めにかかる車両の一部に貼るだけで済むと思いますが、踏切上で停止しているかの判断には向かなそうです。

/* フォトリフレクタ動作確認スケッチ
 *
 * フォトリフレクタ:TPR-105
 *
 *  ~想・作★小・路~/シーゲル
*/
 
 void setup() 
 {
     Serial.begin(9600) ;     // シリアル通信のスピード(ボーレート)の設定(9600bps)
 }
 
 void loop() 
 {
     int analogValue = 0;     // アナログ値を格納する変数(ここでは初期値を0にしています)

     analogValue = analogRead(0)  ;   // 指定したアナログピン(A0ピン)からアナログ値を読み取り、10bitのデジタル値に変換します。
     Serial.println(analogValue) ;    // シリアルモニターにデジタル値を表示します。
     if (analogValue < 1000)          //デジタル値が1000未満だったら
     { 
        digitalWrite(7,HIGH) ; // LED点灯
     }
     else                             //デジタル値が1000以上だったら
     {
        digitalWrite(7,LOW) ;  // LED消灯
      }

 }

ちょっと気になったので追加で旧客の床下に手元にあった白っぽいビニールテープを貼って試してみました。

結果はテープを貼った部分は検知するようになりました。しかし貼っていない台車部分は、今の条件では検知できませんでした。でも踏切区間や信号の動作をさせる場合には先頭車になる車両だけ反応すればよいので、こんなことをする必要はないですね。興味本位の確認でした・・・

5.今回のまとめ

TCSセンサーは問題なく使用できそうです。ただし、センサー自体の大きさもあり取付箇所に制限を受けそうです。まれなケースかもしれないですが説明書に下のような記載があります。それほど長い区間にならないと思いますがアプローチレールにかからないように使わないといけないです。今回カーブレールで試してないので、カーブレールも時間があるときに確認したいと思います。

フォトリフレクターは他の人のブログでも使用されている人が結構多いように思うので、うまく使えるように工夫がいりますね。

今回のまとめ動画作りました。こちらもご覧ください。

ご覧いただきありがとうございました。次回は、踏切の警報灯(LEDの点滅)、警報音の動作を見ていこうと思います。

コメント