SSブログ

Nゲージレイアウト、はる記念鉄道の製作9 [鉄道模型レイアウト製作]

こんにちは。

春兎崎(はるうさき)駅の側線の線路を敷きました。特急車両が乗っている線路です。
Q8107488.jpg

風景的に側線は貨物線にしようとしつつも重要な役割を担ってもらいます。いちばんコントロール台に近い線路なので、車両を組み立ててレイアウトに投入、また走り終えた車両の回収を行う線路として使います。
Q8107487.jpg

下図の青線のように車両を投入し・・・
20190811-2.jpg

走り終えるときは下図の赤線の経路で側線へ戻します。
20190811-3.jpg

しかし何もしないと青線を走ってきた車両と衝突してしまいます。衝突を回避するよう手動で操作すれば別に問題ないのですが、それすらも面倒なので、どちらかの列車を自動で減速や停止して衝突を回避することを行ってみたいと思っています。

その他、勾配区間のスピードの変化を抑える制御も行ってみたく、そのために車両が通ったことが分かるセンサーを設置する予定です。そのセンサーの実験をしてみました。

センサーはいろいろな方法があるかと思いますが、反射型フォトセンサー RPR200 というパーツを使ってみることにしました。
Q7217404.jpg

これは赤外線 LED の光を反射物で反射させて隣のフォトトランジスタで受けるというもので、2 本のレールの間に上を向けて設置し、車両が通ると車両で光が反射してフォトトランジスタが導通し、車両が通ったことを検知することができそうです。

また、レールの間に設置することで、ATS 地上子のような機器に見えて格好いいかも知れないと思っていました。

RPR200 は発光部から 6~8mm 離れた位置に反射物があるのがいちばん感度よく検知できるようです。そこで RPR200 をユニバーサル基板に奥まで差し込み・・・
Q7217410.jpg

土台のベニヤ板(5.5mm厚)に穴を開けて下から RPR200 を載せた基板を差し込むと、車両の床下機器の下や台車下が発光部から約 6mm の距離になりました。
Q7217409.jpg

ただ 6mm の距離は意外と大きく、センサーが ATS 地上子に見えるどころか、穴ボコが開いたように見える結果になってしまいました。うーん、まあ、そんなに目立たなそうだし・・・これで進めてみますか。
Q7217412.jpg

今後、走行用 PWM の発生、ポイントの切り替え、衝突回避、操作画面の表示など、いろいろな制御をラズベリーパイで行う予定にしています。今後のことも踏まえて、こんな回路で試してみました。
20190811-1.jpg

センサーで検知したら LED を発光させるだけです。ただし検知を確認して LED を発行させる処理はラズベリーパイに組み込んだプログラムで行います。

センサー部は車両の床下の状況で何回も反応する可能性があることと、車両が通ったという記録を保持したいので、センサーの出力は RS フリップフロップで保持するようにしました。リセット後、センサーが最初に反応すると RS フリップフロップの出力が 1 で固定します。その状態をラズベリーパイで読み取るのですが、ラズベリーパイの GPIO は今後いろいろな用途で使うと足りなくなるので、I/O 拡張用の IC、MCP23017 を追加し、I2C を通じて読み取るようにしました。ラズベリーパイの GPIO は 電圧 3.3V で、 その他の回路は 5V で動作させる予定なので、I2C ライン上に 3.3V と 5V のレベル変換 を行う秋月電子さんのキットを挟みました。

ラズベリーパイでは、一定時間毎に MCP23017 を通じて RS フリップフロップの出力が 1 になっているか調べ、車両が通ったことを知るようにしました。また RS フリップフロップは次の検知に備えてリセットする必要がありますが、これはプログラムで実装することにします。

車両の床下は黒や灰色になっており、これだとセンサーがうまく反応してくれません。光が反射して確実に反応するよう床下を白くするのがよさそうです。まず仮で白のテープを貼ってみました。
Q7217413.jpg

これでセンサーを通過させてみますと・・・
Q7217414.jpg
Q7217415.jpg

きちんと検知して LED が点灯しました!
Q7217416.jpg

車両によって白テープをつける位置はこんなふうに変わりますが、きちんと反応してくれました。
Q7217419.jpg
Q7217421.jpg

しかし、テープが貼れる適当な床下機器がなくて床板に直接貼った場合は、センサーからの距離が遠くなり反応しませんでした。
Q7217422.jpg

そのような場合でも、こんなふうに床下機器の一部だけでも白色にすれば反応しましたので、何とでもなりそうです。
Q7217424.jpg

操作画面の表示はスマホなどで行おうと考えていますので、その練習として、RS フリップフロップのリセットをスマホから行うようにしてみました。スマホ画面上のボタンを押すと、RS フリップフロップがリセットされて LED が消え、次の車両の通過に備えることができます。
Q7217417.jpg

ラズベリーパイに Web サーバーとして Apache + PHP を入れてあります。スマホからのリクエストを受け取ったら UNIX ドメインソケットを通じて、本レイアウト用の専用サーバープログラムに情報を伝達し、その情報を受けて pigpio を使って GPIO を制御するようにしました。サーバープログラムは複数のスレッドを起こし、Web サーバーと情報のやり取りをするスレッド、GPIO を制御するスレッドなど、役割を分離することとしました。

サーバープログラムが動作している様子・・・
20190802-1.jpg

センサーの反応を確認するためだけなのに、なんだか大がかりな仕組みになってしまいました。でも、スマホでの操作、ラズベリーパイの中の情報伝達と役割の分離、拡張 I/O の制御など、今後行いたいことの基礎が今回の実験を通じてすべてできたと考えています。

スマホでの操作と書きましたが、ブラウザで操作するため、スマホ以外にもパソコンや、ラズベリーパイのタッチモニタなどいろいろな機器で操作できるので、よくよく考えると面白いなと思いました。
Q8027459.jpg

失敗談です。

サーバープログラムを動かしていると、センサーで検知していないのに LED が突然点灯することがありました。センサーの誤反応ではなさそうだし、プログラムのバグでもなさそうだし、これくらいでノイズが乗るとも思えないし、分かりませんでした。念のため I2C ラインのプルアップ抵抗値を下げてみたりしても変わりませんでした。結局原因は MCP23017 の GPA、GPB の空き端子を開放していたのが良くなかったようです。GPA, GPB の初期状態は入力ピンになっているので 1 と 0 どっちつかずの状態で動作が不安定になっていたようです。初期化時に空き端子を内部プルアップする命令を発行するようにしたら問題の発生はなくなりました。電子回路は詳しくないので、解決するまで何日も悩みました。


★最近のはるちゃん★

堅い内容と茶色っぽい写真ばかりですみませんでした。目が覚めるような色ですっきりしていただけたら幸いです。
Q7277437.jpg

いつもと同じ、何気ないはるちゃんの様子です。
Q7287454.jpg
Q7287456.jpg

nice!(43)  コメント(6) 
共通テーマ:趣味・カルチャー

nice! 43

コメント 6

yamatonosuke

春兎崎駅は特急が止まる大きな駅だったんですね(^^♪
たいへんそうですが完成する日を楽しみにしています。
はるちゃんはちょっとふっくらしました?
by yamatonosuke (2019-08-12 02:27) 

TakiHaru

yamatonosuke さま、おはようございます。
はい、妄想の世界なので、特急も新幹線(持っていないけど)も
停車できます。
まだ線路すべて敷いていませんので、これだけで 1 年かかりそうです。
体重は変わっていないのですが、ふっくら見えましたか。
いずれにしても見た目、標準?より太っているように思いますので
減量させないといけませんね。

by TakiHaru (2019-08-12 07:45) 

響

どんどん進化していますね。
数年後にはAi搭載とか?
春兎崎駅って本当にあるといいな~。
by (2019-08-12 16:12) 

TakiHaru

響さま、こんにちは。
AI搭載ですか! そこまではとても考えられませんが、
私は運転操作を楽しむというより、走っている姿を
ニヤニヤしながら眺めているほうが好きなので、
操作はすべてAIでやってくれたらありがたいですね。
あくまで妄想の駅ですが実在するような駅の姿にしていきたいですね。
by TakiHaru (2019-08-12 18:41) 

garden

う~ん
分からない・・・。
でも、はるちゃん元気そうで何よりです。
by garden (2019-08-14 22:21) 

TakiHaru

garden さま、おはようございます。
昼間は 40 度超え、最低気温も 30 度超えの酷暑になっていますが、
はるちゃんは 24H エアコンの部屋で元気に過ごしています。
by TakiHaru (2019-08-16 06:15) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。