デコーダの自作(試作編)

 DCCを始めると、すべての車両にデコーダを搭載したいのが人情ですが、デコーダはご存じのようにそれなりに値の張る物なのが困りものです。

 そんなとき手元にあるDigitraxのデコーダに使われているICをふと見ると、PIC16F88。。。、PIC12F675。。。、んっ、デコーダってPICマイコンなんだぁ〜と気づきました。

 Webとか2ちゃんとかいろいろ検索し、調べてみるとデコーダを自作している諸兄がいらっしゃることが判明。

 DCCをよく知るには、デコーダを自作してみようと考えました。ただし、大きさや手間を考えると、買ったほうが安いのかなぁ。。。等とも思ったのですが、何はともあれ、デコーダを自作してみました。


 いろいろと調べてみると、自作デコーダの多くはAVRマイコンとPICマイコンで作られていることが多いようです。手持のレンツのデコーダを見ると確かにAVRマイコンが搭載されていました。

 PICのアーキテクチャは古いとかいろいろと言われていますが、参考とできる文献の多さや入手性の観点からPICマイコンで自作をすすめることにしました。


 自作にあたり、一から自作するもの良いのですが、まずは他の方が作られた自作デコーダを参考にさせていただこうと考えました。

 ネットを検索すると、アクセサリデコーダの自作記事がヒットしたので、まずはアクセサリデコーダをつくることにしました。

 詳しくは、しみずさんのページを参照してください。自作デコーダ以外にも、DCCや信号に関する記事が沢山あり、参考になります。本職の信号屋から見ても鉄道信号について詳しく調べられておられると関心した次第です。

さて、以下の写真が自作のアクセサリデコーダです。

 しみずさんのページにある回路図に、DCC信号から5Vを3端子レギュレータで供給する回路を追加し、ACアダプタ等での給電を不要としてみました。手持ちのDCS50に接続し、SWITCH操作でポイントを切り替えるように、t、cの指示を出してみます。

 DCS50Kでの操作に応じてLEDの点灯が切り替わります。をぉ〜、アクセサリデコーダが300円あまりの部品でできてしましました。しみずさんに大感謝です。ありがとうございます!

 ちなみにしみずさんのページではPIC16648Aで制作されていましたが、手持ち部品の関係でPIC16F628Aで制作してみました。


 続いて、車載デコーダについての制作事例を検索してみました、なかなか見つからなかったのですが、北軌舎さんのページを見つけました。

 詳しくは北軌舎さんのページを参照してください。回路はモータドライバICが指定のものが入手できなかったので、東芝のIC(TA7267BP)に置き換えています。

 以下の写真が自作の車載デコーダです。PICマイコンはPIC16F84Aです。クロックは8MHzです。

 でかい!という印象でしょうか。。。。 いちおう、検証できるように16番の車両に搭載できることを目指しました。面実装の部品等を使用すれば、Nゲージにも搭載可能になるかもしれません。

 制作後、いろいろと検証してみました。

 DCS50Kを接続して、動作させてみたところ、動かない。。。。 いろいろと悩んだ結果、DCS50Kは128ステップの信号を出力しており、制作したデコーダは28ステップの命令しかサポートしていないことが判明しました。そこで、DCS50Kを設定変更し、28ステップ命令で動作させてみると、動きました。車載デコーダが約500円の部品で動いています。
北軌舎さんに大感謝です。ありがとうございます!

 ただ、残念ながら、このデコーダのソフトは128ステップ命令や4桁アドレスには対応していないです。

 このデコーダはモータをPWM制御しているのですが、私が選んだモータドライバIC(東芝TA7267BP)がPWMへの応答が悪く、動きがちょっとギクシャクします。したがってパワーMOS−FETによるモータドライバを自作する必要がありそうです。


 試作のまとめとしては、デコーダを自作しても実用的なものが作れそうという結論にいたりました。

 もう少し横着して、海外のサイトを検索してみて、デコーダをいくつか試作してみましたが、どうもうまく動作しません。しばらくソフトを解析していましたが、人の作ったソフトは一から作るより難解。とくに外国の方が作られたソフトは流儀が違うのか理解ができない。。。。
 あきらめました。自分でソフトを作ったほうが早そうです。

 当方としては、先頭車のライト制御用のファンクションデコーダ(FL12相当)を第一段階として、第二段階としてモータ制御できるデコーダを作る計画を立てました。

 日本で広く普及しているDCS50Kをはじめ、多くのコマンドステーションがサポートしている128ステップや4桁アドレスをサポートできるものとすることを目標としました。

デコーダの開発を行うに当たり方針や概要の検討を行いました。以下がその内容です。


開発方針(機能)
 アドバンスト速度命令(128ステップ)をサポートする。
 4桁アドレス(CV17,CV18,CV29)をサポートする。
 スタート電圧(CV02)、最高電圧(CV05)をサポートする。
 ファンクションはF0〜F3程度サポートする。
 モータはPWM制御で行う。
 コンシスト制御は使用頻度がすくないのでサポートしない。
 CV書き込みはOPSモードのみサポートとする。
 CV値をリセットする機能を設ける。(CV08にデー多を書き込むとリセット)
 CV29による正方向、逆方向の入れ替えをサポートする。

開発方針(ハードウェア)
 マイコンはPICマイコンを使用する。
 部品点数を減らすためPICは内部発振モードで使用する。
 ファンクションデコーダは小型化のためPIC12F629や675,683を使用する。
 車載デコーダはPIC16F628AやPIC16F648Aを使用する。

開発方針(ソフトウェア)
 開発効率を高めるために言語はC言語とする。

以上で開発を進めることとします。


 まずは、PICとC言語のお勉強をするために本を買いました。この本です。今までH8マイコンを主に使ってきたので、最初、PICのアーキテクチャになじめませんでしたが、この本のおかげでなじめました。機能の少ない8ピンPICを対象としていることから内容が易しいです。

 試作用の基板をいくつか作成し、DCC信号を読み出すことを目指しました。・・・がなかなかうまくいきません。

 DCCの信号を読み取るには電圧と時間の関係を判断する必要がありますが、どうもC言語によるプログラミングではタイミングの制御的に限界があることがわかりました。(C言語でデコーダを作成されている方もいらっしゃるので、Nuckyの技術力不足が原因です。)
 そこで、基本に立ち返りアセンブラにてソフト開発をすすめることとしました。
 初心者の方がアセンブラを理解するのにおすすめの本はこれです。他のマイコン等でアセンブラを多少なりとも経験した方はこの本を薦めます。


 多少、行き詰まり感が出てしまいました。このままでは悔しいので、成功に結びつけるには実績のあるハードを使うのが良いだろうということで、しみずさんのページを参考にして製作したアクセサリデコーダのハードを利用して、車載デコーダのソフト開発をすすめることとしました。


戻る

inserted by FC2 system