【一応新作】閉塞信号機を製作しました。中央制御装置(PC)で一括コントロールを行います。
— Unknown (@7k1ta) 2023年10月29日
電流容量不足のためかサーボが不調で、仮完成という状況ですが、発展させて様々な地上装置に対応させていきたいと思っています。#改造プラレール pic.twitter.com/IH3oORH11e
プラレール向けのCTCシステムの開発に取り組んでいます。
プラレール用閉塞装置としてはいくつか先行例がありますが、本システムの特徴は
- PCからの全面遠隔制御
- 有線接続・USB通信の採用
- 各機器は独立しており拡張性が高い
です。
概要
以下に本システムの概念図を示します。
本システムは、中央装置であるPCと各機器(ペリフェラルと呼びます)をUSB規格で接続し通信します。各機器は中央装置との一対一通信を行い、中央装置からの指令によりLEDの点灯やサーボモータの動作、ならびにセンサ入力値の送信を行います。機器同士での直接通信は行いません。
各機器で複雑なプログラムを動かさず、信号の入出力に徹することで、あまり性能の高くないマイコン(MCU)の採用を可能にし、コストの低減を実現しています。
通信にはUSB-MIDIを用いています。MIDIは電子楽器の通信に用いられる規格で、内部的には「この鍵盤を押したら青信号が点灯」「この鍵盤をこの強さで押したらサーボがある角度まで回転」といったような処理が行われています。
USB通信を行っていますが、上図の通り、PCとハブならびにハブ相互間の接続には直流12Vの電源を接続し、各ハブで5Vに降圧しています。これはPCからの5V電源(バスパワー)ではサーボモータ等の電流を食う部品を用いたときに電流不足が懸念される点や、配線抵抗による電圧降下の影響を避けることを目的に、このような体制にしています。実質的にはセルフパワーのUSBハブとして動作しています。また12V電源も各機器に供給可能な構成としています。
前述の通り各機器間相互での直接通信は行わないため、中央装置と機器間のデータの入出力のみを考慮すればよく、将来的に機器の種類(入換信号機や踏切など)を増やす際にも、中央装置のソフトウェアを改修するだけで済み(既存の機器に手を加える必要がない)、容易に対応できます。
各機器の解説
今回は中央装置・ハブならびに、ペリフェラルとして閉塞信号機を製作しました。
中央装置はWindowsのPCです。操作と演算を行う中央プログラムと、MIDI送信・受信プログラムで構成されます。MIDIの送受信はWinAPIを叩いています。
PCとハブ・ハブ間相互の接続には、太めの電源ケーブルと、通信用ツイストケーブルを組み合わせています。このうちツイストケーブルはLANケーブルから取り出したものを使用しています。
ケーブルはUSB規格の上限(らしい)5mの長さとしています。ハブにはHS8836Aを採用し、4分配(うち1つは次のハブへの接続専用)しました。前述の通り電源には12Vを印加しているため、間違えて本システム以外に接続しないよう、USBコネクタではない端子を用いています。
ペリフェラルにはMCUとしてCH552Tを採用しました。USBシリアル変換IC不要・USB直結で通信が可能という優れものであり、このマイコンがなければ本システムは製作に進まなかった可能性が高いです。
ここにセンサとして透過型フォトインタラプタを接続し、車輪の通過を検知しています。マイコンの割り込み機能で検知を行い、検知情報を一旦中央装置に送り、中央装置側でどの閉塞区間に列車が存在するかを演算し、信号機制御指令を各ペリフェラルに送信します。
赤信号を現示しているときには、サーボモータを用いてストップレールを停止側に操作します。列車が次の閉塞区間に入り切ったら黄信号を現示し、その次の区間では青信号を現示します。「閉塞区間に入り切った」ことの判定は、「最後の車輪が通過してから数秒間車輪通過がない」という条件で行っています。この方法により単一のセンサでの通過完了検知を可能にしました。
動作の様子です。 pic.twitter.com/n2lZJ5fB2T
— Unknown (@7k1ta) 2023年10月29日
今後の展望
ペリフェラルにはUSB通信のできるマイコンさえ搭載すれば残りの実装は自由であり、様々な地上設備を接続可能です。
まず実装したいのは踏切です。信号機同様フォトインタラプタで近接検知を行い、サーボモータで遮断機を昇降させ、何らかの方法で音を出せばよいと思われます。例えば京成電鉄特有の2本目の列車通過時にやたら早くなる遮断音なども再現できそうです。
最終的には、転轍機や場内信号等を一括で制御するPRC機能や、進路構成を行う電子連動装置機能を付加し、完全自動運転をしたいですね。
詰まった点・改善すべき点
- フォトインタラプタが通過検知を正常に行わず、冒進する事案が多々発生しています。レールへのセンサ固定方法を考え直す必要があります。また現在はレール側に穴を開けてセンサを設置していますが、レール側無加工で設置できるセンサを開発すると設置の自由度が上がりそうです。フォトインタラプタを自作することになりそうですが…
- ハブのLDOが結構発熱します。コンパクトさを優先して表面実装品を選択しましたが、十分な放熱ができるほどの基板面積がなかったようです。もっと大きくてもよいので、ヒートシンクが取り付けられる降圧レギュレータへの変更を検討中です。
- またサーボを動かした際には電流不足となるようで、CH552への供給電圧が一瞬不足し、リセットがかかってしまいます。Vccの最低値は3.0Vだから大丈夫だろうと思っていたのですが、ch55xduinoの設定の問題ですぐリセットしてしまうようです。書き込みをやり直して修正します。
CH552Eが4.5Vでブラウンアウトリセットしてしまう問題、やっぱりch55xduinoでそういう設定になっていたっぽい。Clock sourceを3.3V or 5V(16MHzまたは12MHz)にしたらVCC=3.3Vで動いた
— 長船 🗨️🐈⬛ (@s_osafune) 2023年3月22日 - CH552の割り込み(ch55xduinoにおけるattachInterrupt)はINT0/INT1のピンにしか効きません。知らずに基板設計をしくじりました。また割り込みはFALLINGしか効かないので注意しましょう。
- MIDIの送受信を行うプログラムが不安定で、エラーも吐かずに無言で落ちることがあります。拡張性や端末対応性を考えると、javascript(Web MIDI API)で再実装するべきだと考えています。そのあたりはなんもわからん…
- 現状ではプログラム的に列車が一方向への進行しか想定していないので、もしも将来的に展示に使うということになればそのあたりの冗長性を持たせることをしないといけないでしょう。
謝辞
TRFCの先輩であり、今回も助言とデータ提供をいただいたパシフィックさん(@pashina_979)と、学祭でM2の人間が乱入していろいろ設置してきても暖かい目で見守ってくださったTRFCプラレール分科会(@aobatpfc)の皆様に感謝申し上げます。