先日記事にしましたトラックに信号機を取り付けることにしました。ダミーの信号にしようかと思ったのですが、せっかくですので列車が通過したときに赤信号にかわるようにしました。今回はその試作品の話です。例によって制御にはArduinoのマイコンを使用しました。
下記の写真は信号機と制御回路をブレッドボードとArduinoに組み込んだ写真です。

回路図はマイコンを使用するのでかなり簡単です。次にそれを示します。信号機はメルクリン製品を使用。アノード(プラス極)が共通で赤黄青それぞれがカソード(マイナス極)につながっています。したがって信号灯をつけるためにはアノードがHIGHでカソードをLOWにする必要があります。

車両検知にはフォトレフレクター(赤外線センサー)TPR105を使用します。このデバイスは赤外線LEDで光を出し、何か反射するものがあるとそれをフォトトランジスターが感知をしてONになるという構造をしています。検出距離は1-10mm。大きさは2.5MM x 2.5Mで6.5mmゲージの線路に設置するのにはちょうどいい大きさですね。実物のATSセンサーのような感じで収まります。なお列車を検知した場合は信号はLOWになります。下記写真はブレッドボードに実装したフォトレフレクターの状況を示しています。

実はCCDカメラは肉眼では見えない赤外線にも感知します。次の写真は発光部から赤外線が出ている状態をカメラの目でみたものです。新しいカメラはフィルターでこのような赤外線が感光しないようになっていますが、一昔前のものでみるとテレビのリモコン等も光るのがわかります。違う見方をすれば昔のデジカメは必要のない光までも取り込んで写真を撮っていたことになりますね。これが実際の肉眼で見た景色と写真に違和感があることの一つの要素だったのですね。

さてマイコンのプログラムですが、下記のようなシーケンスになっています。

プログラムそのものも結構簡単なものになりました。列車通過すると赤信号にかわり2秒そのままで黄色になりさらに2秒で青信号に戻るという感じです。列車がこないとずっと青信号のままで待つことになります。このプログラムはオブジェクトで
1.348バイトのサイズです。ArduinoのメインのマイコンATMega328は32Kバイトまでのプログラムが格納されますので、今回この制御回路には少しもったいない気がしますが、ATMega328が250円、下位のマイコン(例えばATTiny2313;プログラムサイズ2Kバイト)でも150円程度。金額的にはそんなに大きくないのでArduinoの互換性を保つためにATMega328を使うことにしました。
このような試作回路を組み込んで列車感知の代わりに指で感知させて信号を変化させた動画をみてください。
今後はこの試作検知回路を基本として次のような機能をレイアウトに組み込むために追加予定です。
(1) ATMega328のみを別基板に組み立てる。Arduinoと互換性を保ったまま基板縮小(組み込むための省スペース)と単機能化。
(2) 日光やその他の電子機器のリモコンが照射されても誤作動しないようにプログラムを改良。
(3) かつレールに逆方向の電流が流れている場合は信号を常時赤にする回路およびプログラムを追加する。
それではまた。
下記の写真は信号機と制御回路をブレッドボードとArduinoに組み込んだ写真です。

回路図はマイコンを使用するのでかなり簡単です。次にそれを示します。信号機はメルクリン製品を使用。アノード(プラス極)が共通で赤黄青それぞれがカソード(マイナス極)につながっています。したがって信号灯をつけるためにはアノードがHIGHでカソードをLOWにする必要があります。

車両検知にはフォトレフレクター(赤外線センサー)TPR105を使用します。このデバイスは赤外線LEDで光を出し、何か反射するものがあるとそれをフォトトランジスターが感知をしてONになるという構造をしています。検出距離は1-10mm。大きさは2.5MM x 2.5Mで6.5mmゲージの線路に設置するのにはちょうどいい大きさですね。実物のATSセンサーのような感じで収まります。なお列車を検知した場合は信号はLOWになります。下記写真はブレッドボードに実装したフォトレフレクターの状況を示しています。

実はCCDカメラは肉眼では見えない赤外線にも感知します。次の写真は発光部から赤外線が出ている状態をカメラの目でみたものです。新しいカメラはフィルターでこのような赤外線が感光しないようになっていますが、一昔前のものでみるとテレビのリモコン等も光るのがわかります。違う見方をすれば昔のデジカメは必要のない光までも取り込んで写真を撮っていたことになりますね。これが実際の肉眼で見た景色と写真に違和感があることの一つの要素だったのですね。

さてマイコンのプログラムですが、下記のようなシーケンスになっています。


プログラムそのものも結構簡単なものになりました。列車通過すると赤信号にかわり2秒そのままで黄色になりさらに2秒で青信号に戻るという感じです。列車がこないとずっと青信号のままで待つことになります。このプログラムはオブジェクトで
1.348バイトのサイズです。ArduinoのメインのマイコンATMega328は32Kバイトまでのプログラムが格納されますので、今回この制御回路には少しもったいない気がしますが、ATMega328が250円、下位のマイコン(例えばATTiny2313;プログラムサイズ2Kバイト)でも150円程度。金額的にはそんなに大きくないのでArduinoの互換性を保つためにATMega328を使うことにしました。
このような試作回路を組み込んで列車感知の代わりに指で感知させて信号を変化させた動画をみてください。
今後はこの試作検知回路を基本として次のような機能をレイアウトに組み込むために追加予定です。
(1) ATMega328のみを別基板に組み立てる。Arduinoと互換性を保ったまま基板縮小(組み込むための省スペース)と単機能化。
(2) 日光やその他の電子機器のリモコンが照射されても誤作動しないようにプログラムを改良。
(3) かつレールに逆方向の電流が流れている場合は信号を常時赤にする回路およびプログラムを追加する。
それではまた。
スポンサーサイト
