2013年03月05日

メルクリン・モトローラ方式の線路信号解析

いわゆるメルクリンデジタル・メルクリンモトローラ・MMなどなどのいろいろな言い方がありますが、総合してAC式とか言われている鉄道模型の制御方式の信号分析をしてみました。

この分析の目的は、最終的にはコントローラを自作することですが、まずはデコーダーをワンコインの材料費で作ることを目標に取り組んで行こうと思います。既に、試作部品を調達済で、実験が進み次第報告していきます。

まずは、メルクリンの線路信号の種類を取り上げていきます。

marklin-motorola-signal01.png

MS2が出力する信号は、大きく分けて3種類のプロトコルに分けられます。

信号名用途信号長パルス幅備考
機関車信号(Loc)機関車の運転とファンクション操作18bit208us/pulse
アクセサリ信号ポイント・信号の操作18bit104us/pulse機関車信号の拡張信号も兼ねる
MFX信号MFX対応デコーダの操作85bit?100us/pulseコマンド・データ・CRCなどを含む。応答機能も有り。


信号のパルス幅がそれぞれ異なるのが困りものですが、立ち上がりエッジ検出の外部割込みと、タイマを工夫することで、1つの実装でそれぞれを自動で判別することができます。立ち上がりエッジの間隔を対まで測定してあげれば、3種類は容易に分けられます。

具体的に、デコーダの実装方法について記載していきます。

marklin-motorola-signal02.png

パルスの幅が大きいものが"1(High)"で、短いものが"0(Low)"です。パルスの立ち上がりは常に一定間隔ですので、この間隔を対まで測定すれば、上記の信号の種類を特定できます。

次に、パルスが1なのか0なのかの判別ですが、立ち上がりのタイミングでタイマをリセットし、コンペアマッチタイマを使ってたとえば50us程度経過したらデジタル入力(DI)ポートで信号値を確認する処理を入れます。このとき、1のときはパルス幅が長いのでHighが取得でき、0のときはパルス幅が十分短いのでLowが取得できます。この値をバッファにセットする処理を立ち上がりエッジのタイミング等で入れる処理を実装すれば良い訳です。

信号の終端の判別は、タイマのオーバーフロー割り込みを使うことで容易に判別できます。タイマがオーバーフローするということは、立ち上がりエッジの信号が来ない=データ列が終わり、ということを示しているからです。

通常のマイコンであれば、上記のタイマ機能は当然のように対応しています。
posted by yaasan at 07:57 | Comment(0) | 鉄道模型
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。