ワンコインで作るDCCデコーダ

部品代500円で作る簡易DCCデコーダを紹介します。


 トピックス

 2008.12.30 アナログ運転簡易対応、PWM周波数の引き上げを行ったVerを公開しました。

 今まで、運転会等でアナログ運転ができず悔しい思いをしていたので、レールの極性を読み取り、モータドライバを制御する簡易制御を追加しました。また、PWM制御によるモータの唸りが気になったので、PWM周波数を2倍程度引き上げました。処理が増えたので、PICの動作クロックを4MHzから8MHzに引き上げました。
 使用するCV値も増やしたので、CV設定方法の解説ページも更新しました。


 はじめに...

 鉄道模型をDCCシステムで楽しんでいる方が増えてまいりました。私も昨年導入してからというもの高価なデコーダを買っては所有車両に搭載工事を行ってきました。

 ある日ふと、購入したデコーダを眺めているとPICマイコンが搭載されていました。電子工作でよく使われているPICマイコンなら、デコーダを自作できるかもと思い、研究をはじめました。

 どうせ作るなら多くの人がDCCを導入しやすくするために、ワンコイン(500円程度)で製作できることを目指し開発を進めました。
ここでは回路および、機能の簡潔化で高い成功率で作成できると思います。

 また専用プリント基板を作成し、面実装部品を採用することで、さらに安価に!さらに小型に!製作することができましたので、別の機会にご紹介いたいと思います。


 概要

  NMRA規格のコマンドを受信し動作するDCCのデコーダです。ただしNMRAが規定するすべての内容を盛り込んではいませんので、準拠とは申しません。ご注意をお願いします。

 マイクロコントローラーには電子工作で人気のあるマイクロチップテクノロジー社のPIC12F683を用います。当初、PIC12F629やPIC12F675での開発を進めましたが、部品点数を少なくするためDCC信号の入力回路を簡略化すると正常にDCC信号を読めなくなること、モータの制御にPWM制御を用いるためにCCPモジュールを搭載しているチップという観点でPIC12F683を採用しました。プログラムは、アセンブラソースとHEXファイルを公開いたします。

 電源にはDCC信号電流を整流しDC12Vを生成しています。また、マイコン回路自体は5Vで稼動させるので、78L05を搭載し、5Vを生成しています。PICのPWM出力は74HC08による回路を経てのHブリッジ回路を制御し、モータをコントロールします。
 ヘッドライト等の制御に使用するFL専用デコーダはこちらのページを参照してください。

 特徴は以下のとおりです。

  PWM制御によるスムースかつ快適走行。PWM周波数は約250Hz〜約7.8KHzまで6段階をサポート。(BEMF機能は未サポート)

  スピードノッチ数は128ステップのみサポート(古典的な14,28ステップは未サポート)

  ライトは前後進自動切換え。電流は最大100mA程度。

  最低速度、最高速の設定が可能。(CV2、CV5)

  モータ用電流は連続1Aで、最大1.5A程度までOK。(アナログ運転は未サポート)

  2桁アドレス(001〜128)、4桁アドレス(0128〜9983)サポート。

  CV値の書き込みはOPSモードのみサポート。(PAGE、PHYS、Dirの各モードは未サポート)

  CV29の設定により、前後進の入れ替えが可能。(ライトと走行方向は個別に入れ替えできません)


 製作事例

 製作事例1

  モータ制御とF0の正方向、逆方向をサポートしています。サイズは全然大きいですが、機能的にはDZ123のイメージです。縦長に製作したので、なんとかNゲージでも搭載できると思います。16番なら余裕です。


 製作事例2

  モータ制御のみサポートしました。こちらもサイズは全然大きいですが、機能的にはEM13のイメージです。(ファンクション機能は小型化のため省略しました。)、当方では16番のキハ182のトイレ部分に搭載できるように製作しました。


 回路図

回路図(pdf)はこちら

 回路図(手書きですみません)です。



 回路の説明

 回路を簡単に説明しておきます。

 レールからの電力をブリッジダイオードを介して整流します。電流容量は1.5Aもあれば十分でしょう。 10μFのチップ積層コンデンサで平滑し直流12Vを得ます。12VはHブリッジを介してモータに電流を供給する電源になります。3端子レギュレータIC(78L05)を用いてPICマイコンの電源となる5Vを得ます。

 レールからのDCC信号は33kΩの抵抗を介してPICマイコン(PIC12F683)のGP3端子に入力します。マイコンでソフト処理された速度信号はPWM信号としてGP2端子に出力されます。進行方向はGP0,GP1端子にそれぞれ出力されます。

 74HC08のAND回路でPWM信号を必要な進行方向の制御に変更し、モータ制御を行うためのHブリッジ回路に入力します。
 Hブリッジ回路はMOS−FETを使用しディスクリートで構成しました。当初、TA7291等のモータ用のブリッジICを用いていましたが、内部の電圧損失が大きく速度が落ちてしまうこと、PWM周波数を高くすると追随できずモータの動きがギクシャクすることからディスクリート構成としました。

各端子の使用方法は次のとおりです。

  GP0 方向出力(逆方向)
  GP1 方向出力(正方向)
  GP2 PWM信号出力
  GP3 DCC信号入力
  GP4 F0出力(拡張用)
  GP5 F1出力(拡張用)

 GP4で出力しているF0信号は74HC08の残りの回路で方向条件をあたえ、2CS1815によるドライブ回路をつけてライトに供給する電流を制御できるようにしています。

 ソフトウェアとしてはF1(GP5端子)も動作するように製作してありますので、F0と同様のトランジスタ外部回路を作成すれば動作します。(輝度の高いLEDで電流を抑えればPICで直接ドライブも可能です。)ここら辺りは皆さん工夫してみてください。

 前述の製作事例2では、ファンクション機能は小型化のため省略しました。

 集電が安定しない車両に搭載すると電源電圧が不安定になりPICマイコンがリセット繰り返し、走行がギクシャクする場合があります。この場合、5V回路のコンデンサの容量をUPさせると改善できる場合があります。(ただし、集電不良は根本解決することが賢明です。)


 部品リスト

 パーツ集めで秋葉原等の電気街に足を運ぶのも電子工作の楽しみのひとつですが、最近はネット通販を上手に利用し部品あつめをすることも便利かと思います。

 特に通販で特定のお店を利用しなければ入手できないパーツはありません。強いて言えば高さ5mmの小型電解コンデンサでしょうか。これはチップ積層コンデンサに置き換えて小型化を図っても構いません。パーツ点数は少ないと思いますので頑張って集めて下さい。

 表中の金額は当方で利用したお店を参考に見積しています。部品の纏め売りで単価が安くなっている部品を私が良く利用するので少量の部品を調達すると割高になる場合があります。まとめ買い欄に「@」印があるものはまとめ買いした際の単価を示しています。

 590円と当初の目標には若干届きませんがなんとか500円台をキープできました。(その後、面実装部品で作成しましたが、500円を達成できました!)。

 また、リスト以外に「ハンダとこて等の工具」、「電線」、「ユニバーサル基板」の等の用意が必要です。

種類 品名、規格 数量 単価 小計 備考 主な入手先 まとめ買い
IC PIC12F683 1 150 150 DIP 秋月
74HC08 1 30 30 DIP 鈴商
78L05 1 20 20   秋月
トランジスタ 2SC1815 2 10 20   秋月
FET 2SK1132 2 42 84 相当品可 サトー  
2SK2231 2 59 118 相当品可 サトー  
2SJ377 2 50 100 相当品可 秋月
ブリッジダイオード 700V 1.5A DI1510 1 19 19 相当品可 秋月
抵抗器 1/6W 1KΩ 4 1 4   秋月
4.7KΩ 4 1 4   秋月
33KΩ 1 1 1   秋月
電解コンデンサ 10μF 16V 1 20 20 高さ5mm小型品 千石  
10μF 6.3V 1 20 20 高さ5mm小型品 千石  
      合計 590      

 入手先のお店の情報はリンクのページからたどって見てください。


 部品の概要

 ワンチップマイクロコンピューター:PIC18F683

 PICとはマイクロチップテクノロジー社のワンチップマイコンのことで、電子工作ではよく利用されているマイコンです。
 PIC12F683はPIC12Fシリーズの中では高性能の部類で、PIC16Fシリーズとほぼ同じに扱えます。
 プログラムの書き込みには、Pickit2等のマイクロチップテクノロジー社純正プログラマに加え、秋月電子の書き込みキットも利用できます。

PICなどマイクロコントローラーは目的の動作をするようにプログラムを書き込んで使う部品です。
プログラムを書き込まないで製作した場合は動作しません。
書き込み方法はこのページを参照してください。


以下はPickit2を用いた書き込みの様子です。


 3端子レギュレータ:78L05

 3端子レギュレータとは電源ICの仲間です。
 変動する電源から、安定した決まった電圧の電源を生成する目的に用いられます。
 外形は2SC1815等を同じTO92パッケージです。

 ブリッジダイオード:DI1510

 DCC信号を整流し、直流電力を得るためにブリッジダイオードを用います。秋月電子で入手できるブリッジダイオードから700V 1.5Aのものを選びました。交流の入力側と直流の出力側が隣同士にならんでいるため実装に便利です。DIPタイプですが、スペースの関係上、縦に搭載することが多いです。

 N,PチャネルMOS-FET:2SK2231、2SJ377

 モータ電流を制御するためのHブリッジ回路に用います。小さな形状の割には大きな電流を制御できます。データーシートを参照すると最大5Aの電流を流せますので、今回の用途には十分です。また、オン抵抗も0.16Ωと充分低いので発熱は少ないので放熱器は付けません。
 MOS-FETは静電気に対して弱い部品ですから注意しましょう。お店ではMOS型ICと同じように静電対策してある袋に入れてくれます。外観とリード線の名称はデータシートを参照してください。

 NチャネルMOS-FET:2SK1132

 モータ電流を制御するためのHブリッジ回路に用います。モータに流す電流を制御するのではなく、PICが出力する5Vの電圧からHブリッジが使用する12Vの電圧制御の変換用に用いています。小さな形状のFETです。MOS-FETは静電気に対して弱い部品ですから注意しましょう。お店ではMOS型ICと同じように静電対策してある袋に入れてくれます。外観とリード線の名称はデータシートを参照してください。

 汎用ロジックIC:74HC08

 汎用ロジックICの74HC08です。2入力のAND回路を4つ内蔵しています。モータ機能のみのデコーダを作成する場合は未使用の入力ピンは5VかGNDに必ず接続し、出力はオープンとします(IC破損の防止のため)。

 丸ピンICソケット:DIP8ピン

 PIC12F683の取り付けで使います。ICソケットの中にスペースを稼ぐために部品を取り付けるので、一部カットして使います。
電気的な極性はありませんが、ICの1番ピンを示す凹みがありますので、注意してください。

 1/6w炭素皮膜抵抗

 1/4W品では大きくて製作しにくくなりますので、1/6W品の小さな炭素皮膜抵抗を用いてます。
小さくてカラー表示が判別できない場合はルーペでの確認や、テスターで抵抗値を確認しましょう。
極性はありません。

 電解コンデンサ(高さ5mm小型品)

 電解コンデンサは千石電商で扱っている高さ5mmの小型品を使用しました。10μF(マイクロファラッド)を2個使います。サイズはφ4mm×高さ5mmのものを使用しました。
 使用する電圧は12Vと5Vなので耐圧16V品と6.3V品を使用しました。
 サイズがφ5mmでもOKなら25V耐圧のほうが部品の定格に余裕が持てます。DCS50Kの実測では12.7Vで問題ありませんがDCCの規定では22Vまでと規定されています。
 5V系に入れる10μF/6.3Vは同じφ4mmサイズで22μF/6.3Vがありますので、集電不良でマイコンのリセットが頻発するようでしたら、22μFとしてみてください。ここら辺は皆様の工夫でOKかと思います。
 なお、極性があります。リードが長いほうが+極です。

 チップ積層セラミックコンデンサ

 ハンダ付けに自信がある方は、小さいチップ積層セラミックコンデンサをお勧めします。製作事例2では電解コンデンサの代わりに、2個のチップ積層セラミックコンデンサを使いました。10μFを2個使います。サイズは比較的ハンダ付けがしやすい3216サイズを使用しました。
 電圧は12Vと5Vなので耐圧25V品と10V品を使用しました。両方25V耐圧でも構いません。極性はありません。


 ソフトウェア

 ワンコインDCCデコーダのソフトです。

 ソースファイルはMPLABでアセンブルしてください。HEXファイルも置いておきます。

 動作しない場合の調整方法は下述いたしますが、自己責任でのご利用をお願いします。当方でのサポートも致しかねます。
 すべてのDCC環境で、動作保証するものではありません。
 なお、著作権は主張します。無断転載は禁止します。また、商業目的の利用も禁止とします。

 尚、ファイルは右クリックし対象を保存を選択して下さい。そのままクリックして保存すると拡張子がtxtになる場合があります。

(公開版)ソースファイルはこちら    (アナログ対応、PWM周波数2倍版)ソースファイルはこちら

(公開版)HEXファイルはこちら     (アナログ対応、PWM周波数2倍版)HEXファイルはこちら


 注意:アナログ対応は簡易制御です。レールの極性を読み取り、モータドライバの方向制御をおこなっているだけで速度制御は供給電圧がそのままモータに加わるようになっています。PICマイコンが正常に動作するのには約5V程度の電圧が必要であり、特にNゲージ等のモータ容量の小さい模型は低速運転が効きません。DCC運転がメイン機能で、アナログ対応は、あくまで簡易機能とお考え下さい。


 製作手順

 まずは車両に搭載できないような大きなユニバーサル基板で試作することをオススメします。
 確実に動作するものを作ってから小型化するのが結果的に早道です。

 試作に成功したら、車両搭載用に小さく作ってみます。


 以下の手順で作業を進めます。

  1.基板の製作
  2.基板のパーツ実装
  3.ケーブル接続

1.基板の製作

 車両に搭載できる基板サイズ及び、部品を搭載できるスペースを検討の上、ユニバーサル基板を切断します。

2.基板のパーツ実装と配線

 前述の製作事例をごらんください。部品を立てて搭載したり、空中配線をして小型化を図ります。

3.ケーブル接続

 線路からの黒、赤電線をブリッジダイオードの交流側端子に接続します。
 Hブリッジの出力部から、灰、橙電線をモータ配線として接続します。
 またライト制御用に青、白、黄色電線を各々接続します。


 調整手順

 車両に搭載するまえに、デコーダが正常に動作するかを確認します。、まずソケットにPICを挿さない状態で、電源ピンに5Vが出ているかを確認します。それから、プログラムを書き込んだPICマイコンを準備しソケットに挿入してから動作確認をします。

 動作確認の手順としてはDCC信号を正常に読み込めているかの検証を行います。スロットルや進行方向に応じてモータへの出力の電圧や極性が変化するか、ファンクション制御でライトが点灯するかを確認してください。

 私は、車両に搭載しなくてもデコーダの動作確認ができるような基板を作成しています。市販のデコーダでも活用できますので、皆さんもぜひ作って見てください。

 どうしても、DCC信号の読み込みがうまくいかないようなら、プログラムのソースファイルにある、読み込みタイミングの調整値を変更し、HEXファイルを作成しPICに書き込んでみてください。初期値は16進数で09です。ソースでは0x09と表記しています。これを0x08とか0x0a等にしてみて試してください。初期値の選定には手持ちのDigitraxのDCS50Kを使用し、値を変化させ読み込み可能な範囲の平均値から算出しています。

 DCC信号の読み込み及び、モータ電圧の制御に問題がないようであれば、アドレス等、必要なCV値をこの段階で予め行っても良いでしょう。


 車両への搭載

 動作確認が終了したら、車両に搭載します。ショート保護回路は搭載していませんので、各部の絶縁には十分に注意しましょう。(最悪、部品が焼損します。)

 当方では、16番のキハ182に搭載し走行試験を継続中です。Digitraxのデコーダではスロットルを最大にしても12V近くは出ず、運転会等の線路が長く繋がったところでは電圧降下の影響で超スロー運転となってしまっていましたが、自作デコーダでは12V近くまで出力でき、速度が向上しました。ディスクリートによるHドライバの成果と思います。


 CV設定方法

 CV設定方法はこちらのページを参照してください。


 最後に...

 意外に簡単に自作DCCデコーダが作れると思いませんか?

 基板の形をサイズを工夫し小型化もできると思いますから、Nケージへの搭載もなんとか可能かと思います。
 配線ミスさえしなければ短時間で仕上がってしまいますから、時間をかけて丁寧に作りましょう。

 自分で作ったDCCデコーダで運転を思い存分に楽しみましょう!


Web Nucky TOP page

inserted by FC2 system