40.Loconet マルチ表示ユニットの作成
はじめに
車輌番号表示機の開発後に、車輌のアドレス表示だけでなくCTC制御盤
のように在線やポイント開通方向なども表示できないか考えていました。
実際のポイントや線路に装置を取り付けて配線するのではせっかくのDCC
のメリットが出ません。
Loconetには、車輌の制御から、ポイント、信号などのアクセサリ機器の制御
に関係するコマンドが流れているので、これを活用してできないかということで
BDL168による在線表示ユニットとポイント切替のコマンドを出力するスイッチ
表示ユニットを作成しました。
1.仕様
1.方式
Loconetから出力されるコマンドを利用し、BDL168のセクション(在線)
コマンド及び、ポイントなどアクセサリ機器を制御するスイッチコマンドを
取得して、マイコンの出力ポートへON/OFFさせます。
セクションとスイッチはコマンドと用途が違うのでプログラムば、個別で
作成しますが、基板は共通とし、汎用性のあるものとします。
用途別に個別機能追加が必要な場合は、拡張ボードを付加することで
対応するものとします。
2.仕様PIC
I/Oのピン数、USART機能からすでに使用しているPIC16F873Aとします。
3.Loconetとの通信
USARTモードを使用し、Loconetとは受信のみとします。
USARTは以下の設定とします。
Mode : Asyncronous transfer mode only
Speed: 16K bps(12h 20Mhz)
Bit : startx1 datax8 stopx1
※Loconetはボーレート16600bpsと特殊です。ここでは設定値から16447bps
にしています。
4.PIC16F873A ピンアサイン
RB0〜RB6 出力
RA0〜RA3 出力
RA5 出力
RC0〜RC2 出力
RA4 状態表示用 LED
RC3 セットアップ用ジャンパーピン
RC6 TX(送信)(未使用)
RC7 RX(受信)
5.セットアップモード
5-1.セクション表示ユニットの場合
1.本機とコマンドステーションと必要に応じスロットルを
Loconetケーブルで接続し、本機のジャンパーピン(JP)
をショートピンで接続して電源を投入します。
2.スロットルのスイッチ操作でBDL168のアドレス番号を
指定して[t]を押します。
3.登録されると本機のLEDが0.5秒間隔で点滅します。
4.ジャンパーピンを外し電源を切ります。
5-2.スイッチ表示ユニットの場合
1.本機とコマンドステーションと必要に応じスロットルを
Loconetケーブルで接続し、本機のジャンパーピン(JP)
をショートピンで接続して電源を投入します。
2.スロットルのスイッチ操作で登録したいスイッチ番号を
指定して[t]を押します。
3.登録されると本機のLEDが0.5秒間隔で点滅します。
4.ジャンパーピンを外し電源を切ります。
※登録した番号から+15までの計16アドレスがボードのポート
に出力されます。
6.コマンド受信と動作
6-1.セクション表示
Loconetより、セットアップモードで登録されたBDL168の
ボードアドレスのセクションコマンドのみ受信して、該当の
ポート(1〜16)に出力します。 検出で”H” 未検出で”L”
となります。
6-2.スイッチ表示
Loconetより、セットアップモードで登録されたスイッチ番号
から+15まで16個のスイッチ番号を受信し、該当のポート
(1〜16)に出力します。 「t」で”H” 「c」で”L”となります。
7.BDL168のコマンド
7-1.LoconetのBDL168からくるSection On/Off のコマンド
先頭が0xB2で始まる4バイトのコマンド
B2 aa bb cc
aa = 0 A7 A6 A5 A4 S3 S2 S1
bb = 0 n S0 L A3 A2 A1 A0
n=1 常時1
L=1 検出 L=0 未検出
A7〜A0 BDL168のアドレス
S3〜S0 セクション番号(0〜15)
cc = check SUM;
7-2.LoconetのSwitch のコマンド
BC aa bb cc
aa = 0 A6 A5 A4 A3 A2 A1 A0
bb = 0 0 S1 S2 A10 A9 A8 A7
A7〜A0 Switchのアドレス
s1=0 Thrown s1=1 Close
s2=0 output off S2=1 output 0n
cc = check SUM;
7-3.Switch の t Or C を選択時のコマンド (セットアップモードのみ)
B0 aa bb cc
aa = 0 A6 A5 A4 A3 A2 A1 A0
bb = 0 0 S1 S2 A10 A9 A8 A7
A7〜A0 Switchのアドレス
s1=0 Thrown s1=1 Close
s2=0 output off S2=1 output on
cc = check SUM
注:DCS50KとDT300で出力が違い dt300では ONと0FFを続けて
出力するが、DCS50KではONのみを出力します。
2.プログラムの開発
開発ツールは、MicroChip社のMPLAB IDE v8.92です。
基板は共通ですが、機能ごとにプログラムは分離しました。
セクション表示
ASMファイル MDBMSC01.asm 2015/07/01 Ver1.00
HEXファイル MDBMSC01.HEX 2015/07/14 Ver1.00
スイッチ表示
ASMファイル MDBMSW01.asm 2015/07/01 Ver1.00
HEXファイル MDBMSW01.HEX 2015/07/14 Ver1.00
3.回路図
回路図はこちら (pdfファイルです)
4.部品リスト
名称 | 回路表記 | 品名 | 数量 |
PIC | Q1 | PIC16F873A | 1 |
ICソケット | Q1 | 28ピン | 1 |
ダイオード | D1 | 1N4148 | 1 |
抵抗 1/6w | R2 | 1kΩ | 1 |
R3,R5 | 10kΩ | 2 | |
R4 | 680Ω | 1 | |
R6 | 47kΩ | 1 | |
セラロック 20MHz | X1 | CSTLS20M0X51-B0 | 1 |
積層セラミックコンデンサー | C1 | 0.1μF | 1 |
電解コンデンサー | C3 | 10μF 16V | 1 |
C2 | 22μF 16V | 1 | |
ターミナルブロック2P緑・縦・特小 | MPT 0.5/2-2.54 / 1725656 | 2 | |
6極6芯モジュラージャック | J2-1 J2-2 | 7002-6P6C | 2 |
1連 ピンヘッダ 2P | JP | 1 | |
1連 ピンヘッダ 10P | J1 J2 | 接続方法により各自で変更 | 2 |
1連 ピンヘッダ 6P | ICSP | 1 |
入手しやすいパーツにしています。(秋月電子でほとんど購入可能です)
・C3の電解コンデンサーは、容量を大きくすると、PICKitとの接続による
ICSPの機能が効かなくなります。10μF以下を使用してください。
5.プリント基板と実装
PCBEでプリントパターンを作成して 海外のPCBCARTに発注しました。
ポートからの出力の抵抗など設置せず外付けにすることとしました。
電源は、外部から5Vの安定化電源の供給を受けることとし、基板内に
実装していません。
表面 裏面
作成した基板
実際に基盤に実装した様子
6.拡張基板(参考)
メインユニットから16本の出力ポートと5Vの電源のピンがあるのでこれを
上下に接続することで、任意の回路を組んでコントロールすることができます。
写真はRailroad & Co. のTrainControllerから出力される信号のスイッチコマンド
(2つのスイッチアドレスで1組)を1つの信号表示に変換するユニットです。
CTCの場合、3灯でも表示は赤・青の2灯表示するケースが多いのでこれに
あわせて3灯信号を2灯に変換してLEDで表示させるユニットです。
基板に乗っているICはPIC12F609です。安価なものであればロジックICと
値段も変わらずプログラムでロジックを変更できるメリットがあります。
アイデア次第でいろんなものが作れると思います。
組込事例 (H様作成中 写真もH様より提供)
額縁のようなパネルに表示ボードを作成
裏にはセクション・転轍(ポイント)・信号用のボードがたくさん
並んでいます。
表示の一例:在線・転轍(ルート)・信号と表示されています。
開発後記
実はこのユニットは2度目の作成になります。
下の写真が初期のバージョンでトランジスタアレイのドライバを積んでいました。
サイトをご覧くださっているH様からお話をいただき、再度見直しをして
H様の企画と並行して進めておりました。
H様にはこの場を借りて感謝・お礼申し上げます。
ご注意: ・このサイトに記載してある内容・製作・改造に関し、万一損害が生じても
当方では責任を持ちませんのでご自身の責任の範囲でお願いします。
・サイト内のコンテンツの転載・商用利用は固くお断りいたします。