how to build homemade NMRA-DCC decoder

自家製DCCアクセサリーデコーダ その4

How to build a homemade NMRA-DCC accessary (stationary) decoder to operate solenoid switch machine and slow motor machine is shown here with a downloadable asm-program for microchip PIC16F648A. In order to compile the downloaded asm-program and write in PIC16F648A, microchip's MPLAB-IDE and PIC writer, such as microchip's Pickit3, are needed. The asm-program linked on this page is an up-grade version of previous version . Also, see the page for the detail.


Unlikne the previous version, DCC address in this decoder is registered with manual operations of DCC command station after assembling the circuit. Setable DCC address was extended 8 times of previous one, i.e. 256*8=2048. But, I only check 001-999, at present.

After the setup of DCC address, How the outputs (PORTB, i.e. RB0-RB7) of this DCC decoder work is the same as that of the previous one. .

If you have already assembled this DCC decoder with the previous version asm-program, just rewrite the programmed PIC16F648A with this version asm-program. It means that the hardware design is not changed from the previous and this versions, excepting that RA0,RA1,RA3,RA4,RA5 inputs have no meaning in this version.

このページで紹介するDCCデコーダは、以前のバージョンから進化して 拡張アドレス252以上が使えるようにしました。このうち、999までは動作確認済み。 実は、どこまで設定可能かは未確認ですが、理論上は256*8=2048まで設定できる はず。アドレス拡張に伴いDIP-SWによる設定は諦めて、 組み立て後にDCC command stationをもちいてDCCアドレス設定をおこないます。 一度設定すると電源を切ってもアドレス情報は保持されます。 つまり再登録するまでそのDCCアドレスが有効です。

すでに古いバージョンのDCCデコーダを製作している方は asmプログラムをここに公開しているものに書き換えるだけで済みます。 そのとき、RA0,RA1,RA3,RA4,RA5は以前として入力端子ですが、 GNDか+5Vに固定接続しておけば、何ら働きはありません。ただし、RA2 は(次節に示すとおり)DCCアドレス書き換えのために使用します。

---- DCCアドレス設定:

まず、(PORTA2)RA2=1(次の回路図ではSW-RA2 off)にして電源をいれます。 このとき、PORTB(RB0,RB2,RB4,RB6とRB1,RB3,RB5,RB7) が交互に反転しながら"1"と"0"を繰り返します(数秒間)。 この点滅が終わると、DCCアドレス登録モードに入ります。 次に、DCC command stationから設定したいDCCアドレスを指定しますが アドレスは4つごとに設定するようになっていて、 その第一アドレスを指定しなければいけません。 例えば、DCCaddr=01-04を設定したかったら01を指定します。 また、DCCaddr=993-996なら993を指定するという具合。 そして、closedボタンを押します(thrownではダメ)。 ここまでの操作がうまくいくと、再び、PORTBが交互 に反転しながら"1"と"0"を繰り返します(数秒間)。 点滅が終わると設定完了です。



----- Download of asm file (slow motoin motor and solenoid version, like Digitrax DS44)

---- DCCデコーダとしての出力パターン

DCCデコーダとしての出力端子はRB0,,,,,RB7です。これらは4アドレス分であり、 RB0、RB1(RB1はいつもRB0の反転出力)が第一アドレス、、、 RB6、RB7(RB7はいつもRB6の反転出力)が第4アドレスになっています。

出力パターンには二種類(slow motion motorモ−ドとsolenoidモード) あって、電源投入時のRA6状態で切替わります。このうち、 slow motion motorモード(RA6=0)ではコマンドステーションから一度操作すると、 これら端子電圧(0=>5V、5=>0V)が変化した後、維持される。また、 solenoidモード(RA6=1)ではコマンドステーションから一度操作すると、 これら端子電圧が変化した後、すぐに0V(または5V)に戻る。

以下に示す回路図では、RA6=0つまりslow motion motorモードとしています。 この状態でKatoやTomix製ポイントマシンを制御するために (つまり、solenoidモード的な動作をさせるために)RB0端子の先は コンデンサ充放電を利用したポイントマシン駆動用FET回路にしています。

蛇足ですが、RA6=1として、KatoやTomix製ポイントマシンを制御する回路は 比較的簡単かもしれません。でも、次の回路図に示すとおりRA6=0として、 コンデンサ充放電を利用する方が不意のコイル焼損トラブルを回避できるので 安全だと思います。



次図は回路図です。基本的には以前のバージョンと同じ回路図で動作しますが、 RA0、RA1、RA3、RA4、RA5は+5VかGNDに固定接続しておく必要がある。 この回路図ではGNDに接続してある。

ここには、出力端子RB0にsolenoid型ポイントマシン制御回路を接続した状態で描いて いますが、DS44的に使うならそこは無視して、Vc、GNDより上側だけを組み立て ます。(つまり下側は他の回路で置き換える、LEDなら抵抗を入れて直接点灯 させることができる)。ここでは 出力端子はRB0だけを使用していますが、RB1,,,,RB7も同様に使えます。

DC5V電源は7805レギュレータを経由して、DCCパワーラインから供給していま すが、他にDC5V電源を用意する方が安全確実ですね。

Outputs of DCC stationary decoder are assigned to PORTB (RB0,,,,,,RB7) which are located below GND and Vc1. On the other hand, PORTA located above GND and Vc1 is inputs. RA0,RA1,RA3,RA4,RA5 are non-use and must be connected to either of GND or Vc1. How RA6 works is commented below. RA7 is used as the input of DCC serial command line (power line) through a phtocoupler TLP521. Using a photocoupler is to electrically isolate PIC circuit from DCC power line for safety.

Regurator7805 is employed to supply DC5V power of PIC circuit from DCC power line. For safety, you may prepare additional DC5V power supply instead of 7805.

In above figure, RA6=0 is set, i.e. RA6 is connected to GND. This is slow motion motor mode, where output voltage level is maintained after close/thrown command was sent from DCC command station.

If RA6=1 (connected to Vc1) is set, solenoid machine mode, where output (RB0, RB2, RB4, RB6 depending on DCC addr) is impulsive after close/thrown command and returns to 0V in approx. 0.5sec. This mode may be directly applicable for solenoid machine of turnout track. But, in above figure, RA6=0 is set to control the solenoid machine connected to RB0. As shown in the figure, the use of a large capacitor 2200microF with RA6=0 is more safe than that of RA6=1.

----- How to register DCC address.

At present (pleliminary version of asm-program linked above), any initial DCC address is not set. So, you must register any DCC address, following below. (Exactly, any DCC address should be set but I don't know what number it is.)

Set RA2=1 before DC5V power turns on, i.e. SW-RA2 is off. When the 5V power turns on, frashing of outputs PORTB (RB0,RB2,RB4,RB6 and RB1,RB3,RB5,RB7) is observed for a few seconds, if you connect any equipment such as LED unit to PORTB. When the frashing ends, you are in registration mode for DCC address setup.

Set a DCC address, which you want, in DCC command station. Note that the 1st DCC address of every 4 address must be set. E.g., if you want to register adr001-004, set 001. If you want to register adr993-996, set 993. So, it must be always 4 times of a integer plus one (=4*n+1). Then, send "closed" command. Note that "thrown" is not accetped here. If the command is normally accepted, frashing of outputs PORTB is observed for a few second, again. When the frashing ends, the registration has been completed.

Finally, don't forget return to RA2=0, to go out of the registration mode !!!

Even if you turn off the DCC decoder and then turn on, the DCC address is memorized until you again register.

---- How output PORTB works.

Assume that addr=01-04 has been registered. For slow motion motor mode, Set addr01 and send "Closed" through DCC command station. RB0=0 and RB1=1 are output. Set addr01 and send "Thrown" through DCC command station. RB0=1 and RB1=0 are output. Set addr02 and send "Closed" through DCC command station. RB2=0 and RB3=1 are output. Set addr03 and send "Closed" through DCC command station. RB4=0 and RB5=1 are output. Set addr04 and send "Closed" through DCC command station. RB6=0 and RB7=1 are output. For solenoid mode, every output becomes impulsive. Anyway, always, RB0 and RB1 show inversed output, each other. Also, RB2 and RB3. RB4 and RB5. RB6 and RB7

The following comments are taken from this the page of previous version. .



This circuit is applicable for solanoid machine of turnout tracks, such as Kato, Tomix and so on. These FET transisitors (2SK1306 and 2SJ175) may be not popular. But, you will be able to easily find many transisitors with similar spec. Large capacitor 2200microF is used to stop the continuously drawing current to drive solenoid. The use of this capacitor is for prefect safety to avoid burning solenoid, even if you fail to operate or assemble anything.

Photo coupler TPS621 will be popular. If this is not available, you may replace by the other photo coupler. In that case, you may have to adjust 2.4Kohm (try less resistance value).

As shown in above figure, DC5V required for PIC16F648A is supplied via 7805 regulator from DC12V. DC12V is also required to drive solenoid. However, DC12V can be easily supplied from DCC rails, by using a rectifier with a bridge diode. In this case, this DCC deorder circuit can work as standalone.

--- 2007/9/27 回路図修正。 動作安定性向上のため、 二つの2SC1815の各々のベース端子からGNDへ抵抗経由でプルダウン接続をいれました。 さらに、2SK1316のゲート端子の抵抗を10kに変更。特に、後者は重要。


ちょっと、乱雑な図ですが、 上図は自家製デコーダによるポイントマシン制御回路。図には示していませんが、 DCCレールからブリッジダイオードにより整流してDC12V電源を 構成すれば(次図)、そこから図中のD1と7805経由で5V電源(Vc1)がつくれるので、 DS51KやDS52のような自立型(外部電源不要)デコーダになります。

整流ダイオードD1とC=47microFはDCCレール電圧が不安定になったときに PIC16F648A動作を安定させるために入れています。 FETトランジスタ2SJ???,2SK???は古い製品なので同等品を探した方がいいかも。

これら部品は秋葉原の秋月電子、千石通商、名古屋大須のタケイ、 大阪日本橋の共立電子などで揃うけど、店員さんに 「同等品ください」な〜んて大雑把なことを言うと 相手にしてくれないから(笑)、自己責任で似たようなものを探してください。

ブリッジダイオードによる電源部。 これの左側をDCCレールに接続。

C=2200microF経由でポイントマシンを駆動するため、 電流が流れっぱなしで ポイントマシンを焼く心配がないようになっています。 とは言え、動作保証できないので、あしからず。

goto home page