How to assemble DCC (route) control unit

(Loconet簡易(ルート)コントローラ)

 

2013620日:とうとう、量産版の基板が完成しました!!!

量産基板作り方マニュアルdoc形式ファイル2013/June

量産版基板使い方マニュアルdoc形式ファイル2013/June

 

 

はじめに:

本装置は、ポイント切り替え操作に連動させて複数のDCCアクセサリーデコーダを自動制御するために開発しました。

具体的には、Loconet経由にて、複数のDCCアドレスを一括制御(一般にルート機能という)できます。

さらに、センサー回路を追加すると、在線検知機能も装備可能です。

 

関連情報リンク先:

以下の組み立て作業で必要となるPICkit3PICライター)の説明は下記リンクへ。

http://www006.upp.so-net.ne.jp/tohrus2010/homepage2011/DCCcontrol2011/PICkit3HowTo-1.htm

 

SetSwitchFailed検知機能(20135月追加)の利用法の説明は下記リンクへ。

http://www006.upp.so-net.ne.jp/tohrus2010/homepage2011/DCCcontrol2011/SetSWfailed-1.htm

 

InputUnit3の使い方(実例)の説明は下記リンクへ。

http://www006.upp.so-net.ne.jp/tohrus2010/homepage2011/DCCcontrol2011/DCCcontrol-howto2011.htm

 

 

更新情報:

2013612日:BasicUnit(図2改), InputUnit3(図4-1改), 在線検知回路(6)の電源部(VccGNDの間)に電圧安定化用コンデンサを追加。

 

201367日:BasicUnit回路図(図2改)のSW3のプルアップ抵抗が抜けていました。以下の図2改は訂正済み。

 

201361日:InputUnit3回路図(図4-1改、4-2改)のRD4-RD7の配線が逆順でした。以下の図4-1改と4-2改は訂正済み。

 

20135月 バージョンアップ(大幅修正)しました。

BasicUnitInputUnit3の回路図を修正し公開ソフトウエアを更新。回路図の修正箇所はページ末の参考資料へ。

 

主な修正ポイント:

@BasicUnitへの追加機能として、コマンドステーションが一時的に制御失敗したときにLoconetに流すSetSwitchFailedコードを検知し、在線センサー機能(BDL168に類似)のアドレス248に擬似在線情報を送信する(RR&COなどのパソコンソフトで受信し、再制御のトリガとする)。

A旧BasicUnitDCCレールパワーのモニター機能とその回路を廃止。代わりに、Loconetに流れるPowerOnPowerOffコードの検知を行うようにした。

 

訂正情報:2013329日 図6改の左上の在線センサー部のフォトカプラーの配線を訂正しました。

訂正情報(2013327日):

図2改のRA3RA4の配線が逆でした。今まで公開していた回路図では在線センサー機能が働きませんでした。

もうしわけありませんでした。

 

公開ソフトの更新(以下の7件、いずれもPIC書き込みにはPICライター(PicKit3など)が必要です):

 

基本装置BasicUnit用 loconet-cstn04-2013May-2.HEX (<<==20135月に全面改訂)

 

キーボード型入力装置InputUnit3用 (ルート機能設定にレジストモードを使用するタイプ)

loconet-kybd2013May-tst2.HEX 基本版、ルート割り込み制御(チェーン機能)時には「割り込む側」として使用

loconet-kybd2013May-tst2.asm 同上のasmソースコード(参考用として公開)

loconet-kybd2013May-tst5.HEX 応用版、ルート割り込み制御時には「割り込まれる側」として使用

loconet-kybd2013May-tst5.asm  同上のasmソースコード(参考用として公開)

 

キーボード型入力装置InputUnit3 

(ルート機能設定にasmコード修正を必要とするタイプ、asmコードが理解できる方はこちらが便利)

loconet-kybd2013May-tst2-770.asm  基本版、ルート割り込み制御(チェーン機能)時には「割り込む側」として使用

loconet-kybd2013May-tst5-790.asm  応用版、ルート割り込み制御時には「割り込まれる側」として使用

 

 

在線検知回路(BlockDetectionUnit) ただし、レジストモード非対応用=アドレス固定

在線検知BD01 (HEXコード、adr=129-136固定、20119月更新)

在線検知BD02 (HEXコードadr=137-144固定、2011年9月更新)

在線検知BD03 (HEXコードadr=145-152固定2013追加)

在線検知BD04 (HEXコードadr=145-160固定2013追加)

在線検知BD05 (HEXコードadr=145-168固定2013追加)

在線検知BD06 (HEXコード、adr=145-176固定2013追加)

在線検知BD07 (HEXコード、adr=145-184固定2013追加)

在線検知BD08 (HEXコード、adr=145-192固定2013追加)

在線検知BD09 (HEXコードadr=145-200固定2013追加)

在線検知BD0A (HEXコードadr=145-208固定2013追加)

在線検知BD0B (HEXコードadr=145-216固定2013追加)

在線検知BD0C (HEXコード、adr=145-224固定2013追加)

在線検知BD0D (HEXコード、adr=145-232固定2013追加)

在線検知BD0E (HEXコード、adr=145-240固定2013追加)

在線検知BD0F (HEXコードadr=145-247(248不可)固定2013追加)

 

 

 

 

 

目 次

0PIC16F877APIC16F648A用ダウンロードHEXasmコード

はじめに:

本装置の概要:

1 .基本装置(BasicUnit回路)

2. アクセサリーデコーダ制御回路(InputUnit1,2,3):

3.  7セグメント数値表示回路(7SegDisplayUnit)

4.  在線検知回路(BlockDetection unit)

5. 補足(InputUnit1,3用のasmプログラムのカスタマイズ):

6. 参考資料(古い回路図、古い技術情報など):

 

注意事項:

以下に公開したHEXasmプログラムは市販のPICライターを使って、PIC16F648APIC16F877Aに書き込んでください。具体的な書き込み方はMicrochipMP-LABなどのPICライターの説明書を参照してください。以下のasmコードは書き込み前にコンパイル処理が必要です。一方、HEXコードはそのまま書き込みます。

 

0PIC16F877APIC16F648A用の公開ダウンロードHEXasmコードの全リスト

 

以下には***.HEXコードと***.asmコードの二種類があります。これらはPICライターでPICに書き込む手順が少し違います。

HEXコードは手順が少なく取り扱いが簡単ですが、asmコードは修正可能なので応用が利いて便利です。

 

基本装置(BasicUnit)用 loconet-cstn04-2013May-2.HEX (<<==20135月に全面改訂)

 

キーボード型入力装置InputUnit1

キーボード型入力装置InputUnit1adr=001-008単一アドレス制御用サンプル)

loconet-kybd2011July877A-01.asm   

キーボード型入力装置InputUnit1adr=009-016単一アドレス制御用サンプル)

loconet-kybd2011July877A-02.asm    

これら二つはInputUnit1回路の押しボタン一つでDCCアドレス一つだけを操作するためのasmプログラムなので、そのまま使えます。これら2つは制御対象となるDCCアドレス設定(01-08ないし09-16)が違うだけです。もし必要なら、適当にDCCアドレスを修正して使用してください。ただし、DCCアドレス修正するには、DCCアドレスの二進数表現を理解する必要があります。詳細は下記補足を参照。

 

キーボード型入力装置(InputUnit1用、一括ルート制御用サンプル)

loconet-kybd2011May2.asm

これはInputUnit1回路においてルート機能、つまり、複数アドレスを一つの押しボタン操作で一括制御するためのプログラムです。実際に私が使用しているプログラムなのでアドレス指定やThrown/Closed命令を適当に修正して使ってください。プログラムを読みやすくするために、ポイント制御部分と信号制御部分は同様にパターン化してます。細かいことですが、ポイント制御部分は、信号制御部分よりも、命令間の時間間隔をやや長めにしています。詳細は補足を参照。

 

キーボード型入力装置InputUnit3 基本版20135月更新)

loconet-kybd2013May-tst2.HEX 基本版  (ルート設定はレジストモードによるタイプ)

loconet-kybd2013May-tst2.asm 同上のasmソースコード

loconet-kybd2013May-tst2-770.asm  基本版 (ルート設定はasmコード修正によるタイプ)

 

これらはルート割り込み制御時には「割り込む側」として使用するタイプです。割り込み制御しない場合はこれを推奨します。InputUnit3回路では、従来のInputUnit1回路を大幅改良して、市販DCCコマンドステーションから遠隔操作できるようにしました。InputUnit1にあった16個の押しボタンは8つに減りましたが、操作方法は同様です。

 

loconet-kybd2013May-tst2-770.asmInputUnit1同じ設定方法を採用しているため、asmコードを理解している方は便利です。

 

loconet-kybd2013May-tst2.HEX(と同.asm)はInputUnit1と違い、レジストモードにてDCCコマンドステーションからルート機能(8ルート、1ルート当たり最大14アドレス)を登録できます。つまり市販のDCC製品とよく似た設定操作になる。

 

20111018日の更新内容:レジストモードへの切り替え時に「SW1-2を押しながら電源を入れる」とし、容易にレジストモードに切り替わらないようにしました。また「SW1-7SW1-8を同時に押しながら電源を入れる」と、スロー動作モード(動作確認用モード)になる。

 

キーボード型入力装置InputUnit3 応用版20135月更新)

loconet-kybd2013May-tst5.HEX 応用版、

loconet-kybd2013May-tst5.asm  同上のasmソースコード

loconet-kybd2013May-tst5-790.asm 応用版

 

ルート割り込み制御時には「割り込まれる側」として使用するタイプです。割り込み制御(チェーン機能)しない場合は先述の基本版を推奨します。基本版と同じ回路図で動作もほぼ同じですが、違うのは、各ルート命令の6番目までと7番目以降の間に他のルート制御を割り込ませることができます。この機能は一つのルートから他のルートを呼び出すときに、各命令の動作順序に配慮しないといけない場合(チェーン機能)に使います。例えば、信号制御回路では便利な機能です。

 

20111018日の更新内容:レジストモードへの切り替え時に「SW1-2を押しながら電源を入れる」とし、容易にレジストモードに切り替わらないようにしました。また「SW1-7SW1-8を同時に押しながら電源を入れる」と、代表アドレスモニター表示モード(スロー動作モード)になる。

 

在線検知回路用

在線検知BDxBDL-loconet01-InputSept-1.HEX  (adr 可変129-24720119月更新) レジストモードによるアドレス設定

 

以下はレジストモード非対応(アドレス固定)

在線検知BD01 (HEXコード、adr=129-136固定、20119月更新)

在線検知BD02 (HEXコードadr=137-144固定、2011年9月更新)

在線検知BD03 (HEXコードadr=145-152固定2013追加)

在線検知BD04 (HEXコードadr=145-160固定2013追加)

在線検知BD05 (HEXコードadr=145-168固定2013追加)

在線検知BD06 (HEXコード、adr=145-176固定2013追加)

在線検知BD07 (HEXコード、adr=145-184固定2013追加)

在線検知BD08 (HEXコード、adr=145-192固定2013追加)

在線検知BD09 (HEXコードadr=145-200固定2013追加)

在線検知BD0A (HEXコードadr=145-208固定2013追加)

在線検知BD0B (HEXコードadr=145-216固定2013追加)

在線検知BD0C (HEXコード、adr=145-224固定2013追加)

在線検知BD0D (HEXコード、adr=145-232固定2013追加)

在線検知BD0E (HEXコード、adr=145-240固定2013追加)

在線検知BD0F (HEXコードadr=145-247(248不可)固定2013追加)

 

 

 

――――――――――――――――――――――――――――――――――――――

はじめに:

Loconetを装備したDCCコマンドステーションへ接続する基本装置(BasicUnit回路)を中心として、いくつかの周辺装置(InputUnit1,2,3など)を増設することにより、機関車走行制御以外の様々なDCC機能を持つことができます。写真1は最小構成であり、アクセサリーデコーダ制御(ルート制御を含む)ができます。写真2のように押しボタンを移設するとレイアウトプランに応じた操作盤をつくることもできます。従来の市販のDCC機器ではなかなかこのようなユーザーの使い勝手を考えた芸当ができません

 

装置の概要について:

BasicUnit(基本装置):

本システムの核となる装置です。ここからLoconet経由でDCCコマンドステーションへ接続します。用途に応じて、以下に示す様々な周辺機器を接続します。

 

InputUnit1InputUnit3DCCアクセサリーデコーダ制御装置、ルート制御機能付き):

BasicUnitに接続して使用する周辺装置です。市販のDCCコマンドステーションではキーボードでDCCアドレスを指定してClosed/Thrownを操作しますが、本装置はアドレスごとに押しボタン一つを割り当てて、原始的ながらキーボードよりも操作性を向上させているのが最大の特徴です。さらに一つの押しボタンに複数アドレスを登録し、それらを一括制御する機能(ルート機能)が使えます。本装置は増設可能であり、しかもInputUnit1,2,3の三種類は混在できます。

 

一基板当たりの設定可能ルート数、1ルート当たりの設定アドレス数、ルート機能の遠隔制御、備考

InputUnit1   32個の押しボタン     ほぼ無制限   不可   設定にはasmプログラミングが必要

InputUnit2(廃止)1個の押しボタン       256    不可    設定はDCCコマンドステーションから。

InputUnit3   8個の押しボタン        14    可能    設定はDCCコマンドステーションから

 

BDxx(在線検知装置):

DigitraxBDL168からトランスポンダ機能を省略したものと同等(ただし在線検知レスポンスはやや遅いかも)。アドレスは129-2488つごとに一つの基板として使える。BD01129-136BD02137-144、という具合にBD15241-248となる。追加機能として、BasicUnitDCC-PowerLineコネクタをDCCコマンドステーションのRailA,Bに接続しておくと、DCCレールパワーを監視しながらパワーオフからオンになるときに全在線情報を自動再送する(BDL168と同様な機能)。

 

7SegLED-DisplayUnit(7セグメントLED表示回路):

Loconetに流れているアクセサリーデコーダアドレスまたは在線検知アドレスとそれらの状態をモニター表示する。本機につながれたInputUnit1,2,3BDxxが発する情報だけでなく、Loconetに接続されている他の機器(コマンドステーションやスロットル、BDL168など)からの情報もモニターできる(BasicUnit基板上のSW1で切り替え)。ただし、たて続けに複数のDCCアドレスが連続送信される場合は最終アドレスのみ表示する。

 

 

LocontBasic2

写真0:システム構成例(InputUnit1以外がすべて装着された状態、

もちろん、InputUnit1,InputUnit2,BDxxはこの状態からさらに増設可能)

 

DCCcontrolDiagram

図0:システム構成の概念図(ケーブルの種類については以下のリスト)

 

各機器間の接続ケーブル類の一覧(図0を参照)

DCC-LineDCCコマンドステーションからレールへ向かう通常のフィーダ線Rail-A,Bです。

レール電圧を監視して在線検知回路で利用するために、DCCコマンドステーションとレールの途中でこのBasicUnitを経由させます。

Cable0Loconetケーブルです。DCCコマンドステーションとBasicUnitを接続します。

以下は本機システム特有のケーブルです。

Cable1InputUnit1,2,3からBasicUnitへポイントや信号機の制御命令を送るために接続します。

Cable2在線検知回路BD01,BD02,,,BasicUnitを接続する。

Cable3SegLED表示機能とInputUnit3のルート機能のためにBasicUnitと接続します。

 

説明: 説明: P1010008

写真1:最小構成の例、基本装置(右)とキーボード型アクセサリーデコーダ制御装置InputUnit01(左)

 

説明: 説明: LocontInpt1

写真2:レイアウト制御盤の作例

:キーボード型アクセサリーデコーダ制御装置(InputUnit01または03)の押しボタンSWを移設

 

本装置は信号制御回路を効率的に遠隔操作するために開発されました。基本的には従来のDCCコマンドステーションでできる操作や機能を単純化しただけの簡単な装置である。

 

基本機能のまとめ:

@本機をLoconet経由でDCCコマンドステーションに接続し、アクセサリーデコーダを制御する。特に、複数のアクセサリーデコーダを一回の押しボタン操作でまとめて制御できる(ルート制御機能)。InputUnit3のルート機能はDCCコマンドステーションやパソコンから遠隔制御できる。

A在線センサー回路を追加すると、そこで検知される在線情報をLoconetに送信することができる(パソコン自動運転での利用)。

BLoconet上に流れているアクセサリーデコーダ制御情報と在線検知情報を

3桁数値表示によりモニターできる。なお、Thrown/Closed, 在線・不在の状態表示には小数点が使われる(各種の動作確認、レジスタモード(後述)での利用)。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー以下は組み立て、使い方に関する情報

.基本装置(BasicUnit回路)

説明: 説明: LocontBasic3

写真3:BasicUnit7SegLED-DisplayUnit。(20135月以前の回路基板の様子)

 

補足:20135月最新版と従来版の違い:上写真BasicUnit基板のLEDは廃止。レジストモード切り替えJp2PORTC,2)ジャンパ線も廃止。アクセサリーデコーダ動作テスト用押しボタンSw1,Sw2は、BasicUnit回路ではなく下記のInputUnit-Test回路に移設。

.

BasicUnitの回路図を次の図2改にしめす。

 

動作モード切り替えSWについて

@Jp2PORTA.1: =1のときアクセサリーデコーダ制御情報を表示し、=0のとき在線検知情報を表示する。

ASW3PORTA.5: =1のときコマンドステーションをDCC power off =0のときDCC power on

BJp1レジストモードONOFF20135月廃止)

 

組み立て時の動作確認:

 

送信部の動作テスト:PORTA.5: =1のときDCC power off =0のときDCC power onとなる。これにより、BasicUnitからLoconetを介して接続されたコマンドステーションの電源を遠隔操作できる。

 

受信部の動作テスト:後述の7セグメントLED数値表示部(7SegLED-DisplayUnitを取り付けると、このBasciUnitまたはコマンドステーションなどが発信するLoconet上の在線検知情報またはアクセサリーデコーダ制御命令の通信状態を受信しモニターできる。

 

 

図2改:BasicUnit(基本装置)回路図(20135月全面改訂):

ただし、これはMS100を経由しない場合。MS100を経由する場合の違いはページ末の参考資料を参照。

部品:R110kR2=200ohmR3=800ohmOscillator20MHzPIC16F877AC1=0.1microF

SC1815,SA1015R9=4.7K、左上端のコンデンサC47microF程度。

 

参考データ:MAX232(ADM2302)の端子は以下のとおり。ICチップを上から見た図。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2. アクセサリーデコーダ制御回路(InputUnit):

以下のInputUnit1,2,3回路を基本装置BasicUnit回路に接続すると、アクセサリーデコーダ(ポイントや信号機、001999)を遠隔制御できる。特に、ルート機能を装備しているのが最大の特徴。InputUnit1,2,3のいずれもが16芯ケーブルを介して増設可能であり、しかも混在して使用できる。

 

ルート機能とは?:

複数のポイントや信号機などを一つの押しボタン操作により一括制御する機能です。

DigitraxDCS50DCS51のように市販のDCCコマンドステーションによってはルート機能を装備していない場合があります。またはDCS100のように、装備していても一括操作できるポイントの数が少ない場合がほとんどです。InputUnit1,2,3はそのようなDCCコマンドステーションに対し信号制御回路を操る上で十分な容量のルート機能を提供します。

 

本装置にはInputUnit1,2,3の三種類あります。

@InputUnit2は廃止。

AInputUnit1asmコードのプログラミングが理解できる方向けである点と、DCCコマンドステーションから遠隔操作する機能を有していない点が欠点です。その代わりに、一つのPIC16F877Aで最大16ルートが操作できる。

BInputUnit3は最大8ルートまで設定できる。さらに、DCCコマンドステーションから遠隔操作する機能を有しており、市販品に近いルート設定機能(レジストモード)も装備しました。これにより、asmコードのプログラミング不要。さらに、20135月から、asmコードのプログラミングによるルート設定も可能となりました。

 

各回路図の説明:

InputUnit-Test:動作テスト用の回路20133月新規追加)

これによりBasicUnit回路の動作テストをします。この回路はBasicUnit回路がうまく動かない場合に試してください。10DIP-SWで二進数10桁のDCCアドレス(十進数で001-769)を入力しておき、2つの押しボタン(Closed/Thrown)によりLoconetへ命令を送信する単純な仕掛けです。

 

図3aInputUnit-Test回路:動作テスト用の簡易入力回路20133月新規)

図中の右に水平に延びる13本の配線は無視してください。この回路中の整流ダイオード13個は省略可能。ただし、これを省略すると本機とInputUnit1,2,3は併用不可です(BasicUnitへは本回路だけを接続)。使い方としては、まず、DIP-SW0からDIP-SW910SWに二進数10桁のDCCアドレス(001-769)を設定します。その状態でPushButtonClosedを押すとClosed命令が、PushButtonThrownを押すとThrown命令がBasicUnit回路からLoconetに送信されます。なお、PushButton-Lockを押している間は、PushButtonClosedないしPushButtonThrownを押しても無効になります(ロックされる)。

 

 

InputUnit1キーボード型、とにかく設定可能なルート数が多い。1ルート当たりの命令数もほぼ無制限に増やせる。

図3に回路図を示す。この一つの基板に32個の押しボタン(=設定可能なルート数)が並んでおり、各々の押しボタンにほとんど無制限にアクセサリーデコーダアドレスを一括登録できる。一つの基板に、PIC16F877Aをふたつ配置する。公開しているサンプルasmプログラムをユーザー各自で修正した上で、それらPIC16F877Aに書き込む必要がある。

 

 

kybd877A

図3:キーボード型入力装置InputUnit1回路(これ一つで最大32アドレスを制御可能、本回路は複数を増設可能)

部品:汎用小信号用整流ダイオード(1S2076Aなど)R1=10kPIC16F877A、オシレータ20MH

 

 

InputUnit2(記述情報はページ末へ移動、2011廃止

 

InputUnit3キーボード型、ルート機能の遠隔操作が可能。

InputUnit1と同様のキーボードスタイルの操作性を踏襲しつつ、InputUnit2のようにレジストモードを装備した。さらに、市販のDCCコマンドステーションのSWモードで770以上のアドレスを入力すると遠隔操作できるようにした。InputUnit1と違い、押しボタン数は8(=設定可能なルート数)と少なくなった。公開HEXコードを書き込む場合の1ルート当たりの命令数は最大14個(asmコードの場合はほぼ無制限)。

 

 

InputUnit3は回路がやや大型化したので回路図を2分割して以下に示す。

 

4-1改:InputUnit3回路図2013年6月1日改訂)左上端のコンデンサC47microF程度。

R1=10k, R2=200, R3=1k注意:2つのLEDに接続しているR1R3の間違いです。 20136月加筆,

 

 

4-2改:図4-1改のつづき2013年6月1日改訂)

 

InputUnit3

写真4aInputUnit3基板(試作品)の全景、レジストモード用の20ピンコネクタは基板裏に隠れている。

 

InputUnit3回路図の補足:

4-1,4-2は回路図である。少し分かりにくいが、図4-1は回路図全体を示していない。その代わりに、図4-2はそれぞれ図4-1の下側の延長部分の回路を示す。InputUnit1の図3と違うのはRD01-08PORTD)端子の8つの押しボタンスイッチが消えて、その代わりに、図4-2下部に示すとおり、15ピンコネクタにより7セグLED表示装置(7SegLED-DisplayUnitまたは)基本装置BasicUnitに接続する必要があることと、図4-1右側に示すとおり、レジストモード用の20ピンコネクタによりBasicUnitへ接続し、InputUnit2と同様なレジスタモード機能を装備したことである。ただし、レジストモードでは右側のPIC16F877Aだけがルート設定ができる。

 

InputUnit3のレジストモード(ルート設定方法)

InputUnit3は通常モード(NormalMode、これはInputUnit1とほぼ同じ)以外にレジストモードとスローモードで動作する。このうち、レジストモードはルート設定をおこなうために用いる。

 

手順@:ルート設定をしたい(コード書き込み済み)PIC16F877AInputUnit3基板の右側のICソケットにセットする。レジストモードに入るために、InputUnit3BasicUnitへの接続は図4-1の右の20ピンコネクタ(レジストモード用)だけでおこなう。このとき、4-1の左の20ピンコネクタ(NormalMode用)は外すことに注意。ちなみに、この時点でBasicUnitの電源を入れるとレジストモードに入れないのでダメ。

 

手順A:InputUnit3SW1-2を押しながら(2011/10/18更新)、BasicUnitの電源を入れると、LEDが数回点滅しInputUnit3の右側のPIC16F877Aはレジストモードに入ったことがわかる。つまり、DCCコマンドステーションからルート設定できるようになる。

 

手順B:次に、8つの押しボタンのうちルート設定したい押しボタンSW1-1SW1-2、、、、(8つのうちいずれか一つ)を一回だけ押すLEDが3回点滅する。

 

手順C:次に、DCCコマンドステーションをSWモード(機関車でなくポイントなどを操作できる状態)にしておいて770-998の一つのアドレスを設定した上でClosed命令ボタンを押し、さらに押しボタンSW1-1を押すLEDが一回点滅し、そのアドレスが「代表アドレス(ルート機能を呼び出すためのDCCアドレスであり、770-998のいずれか一つ)」として登録される。

 

手順D:次に、そのルートに登録したい一つ目のDCCアドレスをDCCコマンドステーションに設定した上で、操作したい命令(ClosedまたはThrown)ボタンを押す。そして、SW1-1を押すとLEDが一回点滅し、そのDCCアドレスが登録される。

 

手順E:以降、順次、2つめ、3つめのDCCアドレスを同様にして設定していく。

 

手順F:そして、15個目のアドレスを設定したら、LEDが高速点滅状態を維持して、レジスタモードが完了したことを知らせる。BasicUnitの電源を切り、すべてのコネクタを通常モードに戻す。つまり、図4-2の右の20ピンコネクタは外す。必要ならばルート設定されたPIC16F877AICソケットから外して左のソケットに移す。なお、15個目までに設定したいアドレスが無くなったら、999を設定しClosedボタンを押し、さらに押しボタンSW1-1 を押す。これによってルート設定を完了できる。

 

InputUnit3のスローモード(ルート設定情報の確認方法):

ノーマルモード(通常の操作モード)ではルート機能は高速で一括処理されるため、レジストモードで書き込んだ個々の命令(DCCアドレスとThrown/Closed命令)を確認するのは困難です。そのため、ルート機能の一括制御をスロー実行するスロー(動作)モードを用意しました。これにより、7SegLED-DisplayUnitに表示されるDCCアドレスを読み取りながら、個々の命令を確認することができます。

 

このスロー動作モードへ入るには、SW0SW7を同時押ししたまま電源を入れるだけです。その後、SW1,2,3,,,,7のいずれかを押すとスロー動作がはじまる(注意、1桁表示の状態は無視してください。3桁表示状態をDCCアドレスとして読み取る。Thrown/Closedについては、Closedのとき小数点が点灯する)。

 

 

 

補足1:同時押し禁止機能(InputUnit1,2,3共通):

これらInputUnit1,2,3の複数の押しボタンを同時に押すと、BasicUnitへの通信が乱れて誤作動する危険がある。これを解消するために、一つの押しボタンが押されてルート機能がスタートすると、他の押しボタンをブロックする機能を装備している。

 

補足2:組み立て後の動作確認(InputUnit1,2,3共通):

これらInputUnit1,2,3装置をBasicUnitに接続し、これら装置の押しボタンを押すと、PIC16F877APORTB全端子とPORTA2,3DCCアドレス情報(001999)、PORTE0,1Thrown/Closed命令が発せされる。 ルート制御の場合は、一回の押しボタン操作により、ルート設定されたDCCアクセサリーデコーダアドレスと制御命令(Thrown/Closed)が自動的に順次送信(秒間約5命令の速度)されるから、それら出力端子にテスタを当てて電圧を測ると、針がユラユラ振れることで、正常動作の様子がわかる。

 

補足3InputUnit3限定機能:一つのルートから他のルートを呼び出す機能(チェーン機能)

InputUnit3の場合、一つのルート設定で15個までのポイントや信号機(DCCアドレスとThrown/Closed)の操作が一括制御できるわけだが、16個以上を一括制御したい場合はチェーン機能をもちいる。具体的には、一つのルート設定の15個の中に770-998のアドレスのClosed命令を登録すればよい。こうすると、一つのルートから他のルートを呼び出せるので、16個以上のアドレスを無制限に登録できる。

 

補足4InputUnit3のチェーン機能における動作順序の注意点:

 

書き込みプログラムとしてloconet-kybd2013May-tst2.asmを用いる場合は、一つのルート設定内では登録した順序のとおりにDCCアドレスを順次実行していく。しかし、その途中で「代表アドレス」を登録してチェーン機能を実行する場合、その「代表アドレス」の実行はいつも後回しにされる。これでは、実行順序を細かく制御したいときに困る。そこで、、、

 

loconet-kybd2013May-tst5.asmを用いる場合は、一つのルート設定内では6番目までは登録した順序のとおりにDCCアドレスを順次実行していく。6番目までに「代表アドレス」を登録してあると、そのチェーン機能を実行した後で、7番目以降が順次実行される。ただし、チェーン機能の中でさらに他のチェーン機能を実行する場合は実行順序が限りなく細分化されていくので混乱しやすい点に注意すること。

 

もう一つの注意事項として、一つPIC16F877Aに登録したルートどうしでは、チェーン機能は働かない。つまり、チェーン機能を使うには、「呼び出す元のルート」と「呼び出されるルート」は別のPIC16F877Aに登録すること。

 

呼び出されるルートが複数あるとき、一般に、それらの実行順序は不定となる(実行時の微妙なタイミングにより変化)。もし、実行順序をレジストモードで登録した順序どおりにしたいなら、それら複数の「呼び出される」ルートは同一のPIC16F877Aにまとめて設定すること。

 

補足5:InputUnit3の代表アドレス表示モード201110月に追加)

SW1-7SW1-8を同時押しながら電源を入れると、レジストモードにて登録した8つの代表アドレス(DCCコマンドステーションから呼び出すためのアドレス)をSW1-1からSW1-8まで7セグLED表示装置(7SegDisplayUnit)に順次表示する。そのままスロー動作モードになる。ただし、表示されるのは実際のアドレスから7682563を引いた数値になる。レジストモードにて未登録の場合はアドレス256を表示する。

 

補足6InputUnit3の一括命令における最終命令の指定方法:(20126月に加筆):

上述のとおり、14個以下の命令を登録するときは、最後に999cを登録することにより、ルート一括命令の終了としている。

999c登録を忘れると、ルート命令が終わらない場合がある(基盤電源OFFで停止して、レジストモードで再登録してください)。

 

補足7:InputUnit3のレジストモード中のやり直し操作:(20126月に加筆):

レジストモードでは、SW1-1を押した時点でDCCコマンドステーションで最後(直近)に設定したDCCアドレス+Closed/Thrown命令が登録されます。分かりやすく言うと、7セグメント数値表示に示されたアドレスが登録される。ゆえに、DCCコマンドステーションで入力ミスした場合は、(SW1-1を押す前に)改めて入力するだけでよい。しかし、DCCコマンドステーションで入力ミスした後にSW1-1を押した後は、その登録情報を修正できませんので、一旦、電源OFFして(最初から)再登録してください。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

3. 7セグメント数値表示(DisplayUnit)回路:

図5に回路図をしめす。基本装置に接続してLoconetに流れているアクセサリーデコーダのアドレスまたは在線検知情報を表示できる。表示できるのは001999である。さらに、Closed/Thrown状態や在線状態の表示として、1の位の小数点が点灯する。

7segLED

図5:7セグメント数値表示部

部品:2SC1815, R1=5K, R2=330ohm,7セグメントLEDは3桁のCommon Cathode

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

4. 在線検知装置(BlockDetection unit)

Digitrax BDL168からトランスポンダ機能を省略したものを想定して開発した。アドレスが129-248に制限される以外は機能的にBDL168同等を目指した(たぶん同等)。使い方としては、基本装置(BasicUnit回路)に接続してLoconetへ在線情報を伝送する。

 

説明: 説明: LocontBDL1

写真5:在線検知装置のネットワーク構成例。ただし、DS1は無視してください。ここにはPIC16F648APORTAに接続すべき在線検知回路も示されていない。BD1から基本装置にケーブル接続(青い矢印)する。

 

図6に回路図(基板3つと、それらの接続例)をしめす。一つの基板で8箇所の在線検知が可能であり、そこで得られた検知情報は6芯ケーブルを経由して1a基本装置に集約されて、Loconetへ送信される。図7に示すように、最大15個の基板を基本装置に接続できて、ゆえに最大120箇所の在線検知が可能である。

機能的には、Digitrax BDL168からトランスポンダ機能を省略したものと同等である。なお、この在線検知機能を生かすには、基本装置でPORTA.1: =0とする。図6には在線センサー回路として電流検知型回路を一つだけ例示した。同様な回路を一つのPIC16F648A(のPORTA端子)に8つ接続できる。なお、信号制御回路基板の在線センサー回路の出力をPORTA端子に接続してそのまま利用できる。

 

 

図6改:在線検知回路、ただし、レジストモード対応版(3組×8アドレスの回路を示す。在線検知回路は左上に一組だけ示す。)(20119月に更新)

訂正情報:2013329日 左上の在線センサー部のフォトカプラーの配線を訂正しました。

部品:R1=200ohmR2=10k,  R3=1k, PIC16F648A、在線検知回路は信号制御回路(type-Aまたはtype-B基板)のものを参照。

左下端のコンデンサC10microF程度。

 

 

WS000030

図7:在線検知回路のネットワーク構成例。BD01,02,03、、、、BD15は各一つで8区間の在線検知ができる。BD01129-137アドレスグループ用、BD02136-144アドレスグループ用、、、、、BD15241-248用である。図6ではBD01,BD02,BD03だけを示しているが、この図ではそれ以上に増設している。ここでBasicUnitは基本装置である。図7右の最大構成では129248アドレスが使用可能となる。

 

図7は接続例であり、たとえばBD01BD15を入れ換えても正常動作します。20119月ソフト更新により、レジストモードを新設し、回路を組み立てた後で、アドレスグループを設定(下記)することにしました。このため、PIC16F648ARB2,3端子の部分のSWLED回路を追加したが、他は20119月以前の回路図と同じ。

 

レジストモード(BDL在線アドレス登録の仕方):

各々のBDxxには129-136137-144、、、、、という具合に241-248までの各々をアドレスグループとして登録できる。なお、以下の設定方法が面倒な方やわからない方のために、本ページ冒頭に「アドレス設定済みダウンロード用HEXコード」を用意しました。

 

以下に述べるとおり、設定したいアドレスグループは、レジストモードにおいて電源ON時の在線状態(PORTAの下4ビットの状態)に応じて設定されます。まず、PORTB3SW1ON(接地)してこの回路の電源を入れると、LEDが二回点滅して消灯する。これでレジストモードに入る。次に、PORTB3SW1OFFすると、「そのときの在線状態」により、希望のアドレスグループが設定される。設定後は電源を切り、設定完了。ここで「そのときの在線状態」とはPORTAの「下4ビットの二進数」の入力状態を意味するので、在線センサーの代わりにPORTA0,1,2,3に4連DIP-SWを付けて(レジストモード時以外はプルアップしておく)も設定できる。例えば、それら4センサーすべて在線状態のときは241-248グループが設定される。また、PORTA0が在線、かつ、PORTA1,2,3,4が不在のときは129-136グループが設定されるという具合。

 

 

説明: 説明: P1010003

写真6:Digitrax SE8Cと在線センサー回路。紛らわしいですがSE8Cは本装置とは無関係です。右下の基板が在線センサー回路8箇所分です。このような在線センサー回路を製作して、図6のPIC16F648APORTA端子に接続する。または、信号制御回路の在線センサー回路の出力をそのまま使える。

 

――――――――――――――――――――――――――――――――

5.補足(asmプログラムの説明)

 

補足:キーボード型InputUnit3回路asmプログラムの説明(InputUnit1回路については以下に後述)

 

以下の作業をするに当たり、Pickit3などのPICライター(PIC書き込み装置)が必要です。

 

基礎知識(16進数について):

以下のasmコードにおいてDCCアドレスを設定するとき、アドレス数値をすべて16進数とします。16進数は我々が日常使う10進数(1,2,,,,,,,8,9,0の数え方)とは少し違います。周知の通り、10進数では、0,1,2,3,,,,,,,,9までカウントすると、次は10の位に繰り上がるため、10,11,12,,,,となります。これに対し、16進数では、01,2,3,,,,,9まで同じですが、その後、A,B,C,D,E,Fとカウントし、16の位に繰り上がります。つまり、10,11,12,,,,,,1F,20,21,22,,,,,,FFという具合。10進数と16進数を識別するために、16進数では001hとか0FFhのように末尾にhを付けます。

 

 

基本版loconet-kybd2013May-tst2-770.asmの使い方(修正方法)

このファイルをダウンロードしてMIPLABIDEなどで開いて眺めると、次の3箇所@ABCを見つけることができます。@とBは用途に応じて修正が必要です。Aは基本的に調整不要です。Cは設定したいルート情報(DCCアドレス)が多いときに調整してください。

 

手順@:まずは、ルート制御の遠隔操作用アドレス(代表アドレス=769-998)を設定する。

一つのPIC16F877Aには8つのルートを登録できます。各ルートはInputUnit3基板上の押しボタンSWで起動できますが、それ以外に、

コマンドステーション(SWモード)から遠隔操作により起動できます。遠隔操作のためには、下記のようにして、ルートごとにアドレス(769--998のうち一つ)を割り当てます。

 

次図の冒頭にmovlw 001hという行があります。ここでは、16進数で001hとするとDCCアドレス770を意味します(詳細は手順Bを参照)。こうすると、DCCコマンドステーション(SWモード=ポイント制御用のモード)にて770Closed命令を送ると、押しボタンSW1に登録したルート機能(次の手順B)が起動します。同様に、movlw 002hという行は771が押しボタンSW2に登録されていることを意味します。同様に、006h777SW8に登録されています。これら001h002h003h、、、、の数値を他の変更すればそれぞれの押しボタン(SW1からSW8)に割り当てるアドレスが変わります。例えば、loconet-kybd2013May-tst5-790.asmでは、SW1からSW8の各々へ015h(=790)から01Ch(=797)を割り当てています。ちなみに、SW1からSW8へ割り当てるアドレスは通し番号でなくてもよく、バラバラに登録できます。

 

手順A:ルート機能の実行速度の調整

ここは調整不要ですが、念のため解説します。次図の途中で、スロー表示モードにおける実行速度はmovlw 014hを、通常時の実行速度はmovlw 028h(これで秒間5命令程度)としています。これら16進数の値を変化させると実行速度が調整可能です。最速は001h、最スローは0FFhです。接続するDCC機器やレイアウト規模により、早くしすぎると誤作動の可能性があるので注意してください。

 

 

手順B:ルート情報の設定

さて、ここが最も重要な修正箇所です。次図はOPER01(Operation01)というラベルから始まる部分です。

この下にreturnというラベルが現れる部分(次の手順C)までが、押しボタンSW1を押したときに実行されるDCC命令を順列に列挙しています。Operation01-Command001以下の4行は最初に実行される命令であり、10進数でアドレス001Thrown命令としています。一般的に10進数の00116進数でも001hですが、このコードでは一つずらして000hとすることに注意Thrown命令はcall Thrw00において実行されます(Closed命令にしたいならcall Clsd00)。また、ここでは、

bcf PORTA,2

bcf PORTA,3

としていることで、10進数001(=16進数000h)から256(=0FFh)が設定可能なアドレス範囲です。つまり、

bsf PORTA,2

bcf PORTA,3

とすると、10進数257 (=16進数000h)から513(=0FFh)が設定可能なアドレス範囲です。同様に、

bcf PORTA,2

bsf PORTA,3

とすると、10進数513(=16進数000h)から768(=0FFh)が設定可能なアドレス範囲です。同様に、

bsf PORTA,2

bsf PORTA,3

とすると、10進数769(=16進数000h)から999(=0E6h)となります。

 

 

手順C:ルート情報の終端

次図はBのつづきです。ここに示していませんが、冒頭のmovlw 002h そのすぐ上でbsf PORTA,2 bsf PORTA,3が設定されているので、10進数アドレス771を意味します。直後にcall Clsd00となっているので、これは771c命令です。もし771cが他の押しボタンに割り当てられていれば、このルート機能を実行後に、そのルート機能が起動します。たとえば、このasmコードのSW2には771が登録されている(手順@の図を参照)。

 

次図ではセミコロン「;」から始まる行が続いていますが、これは「コメント行」といい、実行時には無視されます。ここを実行したいときは、「;」を消した上で手順Bで各DCCアドレスを変更すればいい。最後に、このルート命令はreturnで終了します。

 

 

 

応用版loconet-kybd2013May-tst5-790.asmの使い方(修正方法)

 

これの設定方法は@からCと同じです。違うのは次図の中央部(赤矢印の部分)だけ、このように赤矢印部分を挿入すると、、、、772c実行、そして、773c実行されて、その次に少し間をあけて241cが実行されますが、赤矢印の部分で772c773cに登録された他のルート設定(それが他のPIC16F877Aに登録されているルート設定ならば)実行されます。この機能はルート命令の実行順序を細かく制御するために使いますが、その具体例はDCCcontrol-howto2011.htmをご覧ください。

 

 

 

 

補足:キーボード型InputUnit1回路単一制御用asmプログラムの説明

 

次リストは冒頭リンクのloconet-kybd2011July877A-01.asmPush1(押しボタン1)の処理部分だけを示す。押しボタン1を押すとここが実行される。movlw 00h  ;;;; dcc address 01の部分がDCCアドレスを指定する部分。つまり、00hの部分を修正すれば他のアドレスを制御できる。例えば、アドレス01を指定するには1を引いて00とし、さらに、16進数に変換して00hとする。同様に、アドレス02だと01h、、、、、、アドレス1009hとなり、アドレス110Ahとなる。そして、Closed/thrown命令についてはbcf PORTE,0/1 またはbsf PORTE,0/1の部分で指定する。たとえば、次リストはClosed命令処理なのでPORTE,0としているが、bcf PORTE,0bsf PORTE,0の2つの処理が一組となっていることに注意。

 

なお、PORTA,2PORTA,3は拡張アドレス(256—999)の上2桁を指定するときに修正する。このプログラムはアドレス256以下しか使用していないので、青四角で示したとおり、常にbcf PORTA,2bcf PORTA,3とすることにより、アドレスの上2桁(lower bit , higher bit)00で固定としている。そこで、bcfbsfに置き換えるとアドレスの対応する桁は0から1になる。一方、アドレス下8桁はPORTB0、、、、7に指定することで、アドレス001-256が指定される。

 

説明: 説明: asm-prog01

 

 

 

補足:キーボード型InputUnit1回路一括制御用asmプログラムの説明

 

冒頭リンクのloconet-kybd2011May2.asmでは、一つの押しボタン(例えばPush1)を押すと、そこに登録してあるDCCアドレスを順次指定して、Thrown/Closed命令を送信する。次リストにはPush1の処理のうち、最初に実行される2つの命令、つまりDCCアドレス228Closed226Closedへの命令処理の部分だけを示す。ただし、厳密には、call swLpSt call YdStも複数のDCCアドレスを一括した命令処理であり、その複数のDCCアドレスはプログラムの下方にまとめて定義してある。つまり、call swLpSt call YdStの一括命令が実行された後に、228Closed226Closed、、、、、が順次実行される。

 

 

説明: 説明: WS000074

 

 

DCCcontrol-Cable

写真7:InputUnit01,0216芯フラットケーブル接続方法。この様にして増設していく。InputUnit01,02を混在させてもよいし、接続順序も指定なし。

 

 

 

 

6.参考資料(古い回路図、古い技術情報など):

 

BasicUnit関係の古い資料:

 

BasicUnit01

図1旧:20135月までのBasicUnit回路図:

ただし、これはMS100経由接続の場合であり、RS232Cアダプターを使う必要がある。

注意:RA3RA4BDUnitsの配線については次の図2旧が正しい。

部品:R110kR2=330ohmR3=800ohmoscillator20MHzPIC16F877AC1=0.1microF

PhotoCouplerTLP621または521

 

 

図2旧:20135月までのBasicUnit回路図:

ただし、MS100を経由しない場合、Loconetケーブルに直接接続するのでRS232Cアダプタは不要。

部品:R110kR2=330ohmR3=800ohmoscillator20MHzPIC16F877AC1=0.1microF

PhotoCouplerTLP621またはTLP521、2SC1815,SA1015R9=4.7K

 

図2改:赤と青の太線は20135月の改訂箇所です。図2旧と比較してください。

 

 

InputUnit回路の古い資料:

 

InputUnit02押しボタン単体型、ルート数は少ないけど、1ルート当たりの命令数がやたら多い

20119月廃止)

 

InputUnit02PIC16F648A用ダウンロードHEXコードはこちら

キーボード型入力装置loconet-kybd2011June648A.HEX

(レジストモードの不具合バグ修正のため20119月更新。今後は更新せず廃止とします。)

 

図4に回路図を示す。InputUnit01ではasmプログラムを各自で修正しPIC16F877Aに書き込む作業が必要である。そのために、ユーザーに対しPIC回路やプログラミングに関する多少の知識と経験が要求される。この問題を解消するために、市販のDCCコマンドステーションからアドレスを入力し登録できるようにしたのが本装置InputUnit02である(レジストモード)。一旦、アドレス登録すると電源を切っても保持される。一つの基板には2つの押しボタン(=設定可能ルート数)だけが付いており、ゆえに、機能としては、InputUnit0116分の1であるが、一つのルートに最大128個のアドレスを一括制御として登録できる点が長所である。

 

図4の左のPIC16F648Aはレジストモードとして使えるようにしてある。レジストモードとして使用するときは、レジストモード用の16芯コネクターを基本装置に接続する。レジストモードでは、キーボード型や他の押しボタン単体型の制御回路基板はすべて基本装置から外すことに注意。

 

 

説明: 説明: LocontInpt2

写真4:InputUnit2の試作基板。一つの押しボタン(SW1、SW2)で一つのPIC16F648Aに登録したDCCアドレス情報を一括送信する(レジスタモードではアドレス登録に使用)。この基板には2組のPIC16F648A回路を組み込んである。

 

補足:InputUnit02レジストモード:

一括制御したい複数DCCアドレスを登録するには、図4の左側のPIC16F648Aソケットを使う。基本装置BasicUnitをレジスタモード(基本装置の解説を参照)としておき、この回路基板のレジスタモード用16芯コネクターを基本装置に接続し、その基本装置をLoconetを経由してコマンドステーションに接続し、基本装置の電源を入れる。このとき、LEDが数(4)回点滅してやがて点灯状態になることによりレジストモードになったことを知らせる(ノーマルモードつまり通常の操作モードでは消灯状態になる)。

DCCコマンドステーションをSWモードとしてDCCアドレスを指定し、さらにClosed/Thrown命令を送信する。次に、図4のSW1を一度押すとそのDCCアドレスとClosed/Thrown命令が記憶される。このとき、LEDが数(2)回点滅してから再び点灯状態になり、次の入力待ちになる。この入力操作を繰り返し、最後にアドレス999としてClosedまたはThrown命令を登録すると、消灯して登録完了を知らせる。電源を切り、基本装置のレジストモードを解除し(注意、この解除操作を忘れずに!)、レジストモード用の16芯コネクターを外すと、設定完了。レジスト処理が終わったPIC16F648Aは図4の右側のPIC16F648Aソケットに移設して動作させることができる。

kybd648A

図4:押しボタン単体型入力装置InputUnit2:(この回路図一つで2アドレスを制御可能、しかも本回路を増設可能、左のPIC16F648Aはレジスタモードとして、DCCアドレス登録することができる)

部品:汎用小信号用整流ダイオード(1S2076Aなど)R1=10k, R2=330ohmPIC16F648A

 

 

以下はInputUnit3回路の20135月までの古い回路図

 

image015

4-1旧:InputUnit3の回路本体

(更新:20127RA4RA5の配線に致命的な間違いを見つけ修正しました)

 

 

image016

4-2旧:図4-1旧の右部分

 

 

WS000102

4-3旧:図4-1旧の下部分

 

4-1新と図4-1旧の違いを赤い太線と2つの青線四角エリアで示す。特に、右上のコネクタ(レジストモード用)の17番端子は廃止、18番端子は新設となる。青線四角エリアはRD4からRD7の並びが逆順に修正されている。

 

 

                                          以上