NATOCインタフェスボードの試作
2013年1月30日
NATOC Nゲージ自動列車操作システムでは標準インタフェイスとして共立電子産業のRBIO-2UというUSB接続のリレーボードを採用しています。
ただし11760円と少し高価で9〜12Vの電源が必要になってきます。
そこでarduinoを使ってインタフェイスボードを作ってみました。
arduinoを使ってNゲージを操作する実験は今まで次のような事をやってきました。
SL鉄道模型ポイント電動化(arduino編)
SL鉄道模型転車台電動化実験その1
SL鉄道模型転車台電動化実験その2
arduinoで速度制御
arduinoは5Vまでなら直接出力ができるのでそのままである程度は車両をコントロールできます。
ただし重い車両や電動ポイントを動かすには12V位の出力が必要となってきます。
そこでarduino用の拡張ボードを作成してこれでNゲージをコントロールしてみます。
必要なパーツはもちろんarduinoが必要ですが、メインはリレーとなります。
次期NATOCではRBIO-2U互換のコマンドでこのインタフェスを動かす予定なのでリレーもRBIO-2Uと同じ1回路2接点のものを使用します。
パーツとしては次のものが必要です。
Arduino Uno 2480円
基板用リレー 1回路2接点 / G5V-1 DC5V 231円×9個
リレーは車両のコントロールに2個、ポイントひとつあたり2個で3機分であと転車台のON/OFFで計9個必要です。
なお転車台の操作はサーボで行うため別途サーボモーターが必要ですがこのインターフェイスボードに接続できるように設計しました。
後はプリント基板と配線材ですが、これもRBIO-2Uの接続ケーブルがそのまま使えるようにRBIO-2Uと同じコネクターを使用しています。
EH-Aベース付ポスト トップ型03P 21円×9個
ミニICB基板 84円
連結ヘッダーソケット 8P 55円×2個
QIケーブル8P-8P 160円×2個
arduinoとの接続は8P のQIケーブル2本で行っています。
Nゲージとの接続はこちらをご覧ください。
RBIO-2Uの11760円に対して大体半分の5262円で作成できる事になります。
arduinoがあればそれを使う事ができますし安いリレーを使えば価格は抑える事ができます。
上の配線図はCN1(車両制御前進用)の出力を表しています。
arduinoのGNDとarduinoの各出力ピンをリレーのコイルに配線します。
リレーのコイルは極性がないのでリレーの2番ピンと9番ピンどちらでも構いません。
コネクターのCOMをリレーの5番または6番に配線します。
コネクターのNCをリレーの1番に配線します。
コネクターのNOをリレーの10番に配線します。
同様にCN2(車両制御後進用)も配線します。
これを繰り返して9個分のリレーとコネクターを配線していきます。
各コネクターとarduinoの出力ピンの関係は以下の通りです。
CN1(車両制御前進用)-6番PIN
CN2(車両制御後進用)-arduino7番PIN
CN3(ポイント1直進用)-arduino8番PIN
CN4(ポイント1分岐用)-arduino9番PIN
CN5(ポイント2直進用)-arduino10番PIN
CN6(ポイント2分岐用)-arduino11番PIN
CN7(ポイント3直進用)-arduino12番PIN
CN8(ポイント3分岐用)-arduino13番PIN
CN9(転車台電源用)-arduino4番PIN
arduinoの出力コネクターは2つに分かれていて右側(4,6,7)を車両制御用、左側(8〜13)をポイント用にしています。
なおarduinoの3番と5番は後述のPWM用の出力としますので転車台電源のON/OFFは4番PINの出力を使っています。
arduinoのNATOCインターフェイス用のスケッチはこのPIN番号で制御しますのでNATOCを使う時は上のPIN番号に従ってください。
基板の実装写真です。
左側の青い部分はPWM用のモータドライバ―と上のリード線はサーボモーター用の信号線でこれらについては後で説明します。
リレーが上の段の左からCN1,CN3,CN5,CN7で下の段がCN9,CN2,CN4,CN6,CN8でリレーの下がそれぞれのコネクタで左がNO、真ん中がCOM、右がNCです。
基板の上がarduinoとの接続コネクターで左が1〜8番PIN、右が9〜13番PINとGNDと接続されます。(0番PINとAPREFは未使用)
裏側はあまりお見せできるようなものではないのですが右の写真は左写真のCN1(ハイライト部分)の拡大写真です。
ピンク地の番号がarduinoのピンで水色地の番号がリレーのピンで記号はコネクターの端子を表します。
arduinoの6番とリレーの9番、リレーの5番とコネクターのCOMを配線します。
リレーの2番は基板に張り巡らせたGND線の銅線にハンダ付けします。
このGND線の一か所とarduinoのGND(右コネクターの右から2番目)を配線しておきます。
リレーの1番とコネクターのNC、リレーの10番とコネクターのNOは配線でなくてハンダでつなげました。
なおCOMと接続するリレーのピンは5番と6番どちらでも構わないのでそれぞれ配線しやすい方で構いません。
またリレーのピンの2番と9番は逆でも構わないのでarduinoのコネクターのピンに近い方を接続します。
同様に先述の各コネクターとarduinoのピンの関係を元にリレーとコネクターを9組全部実装します。
Nゲージとの接続図です。
Nゲージとの接続の詳細はこちらをご覧ください。
なおポイント用のバリスタ(過電圧吸収素子)はarduino版では要らないないようです。
もしポイント切替時に誤動作するようでしたらバリスタを付けてみてください。
なお今回はRBIO-2Uと互換性のあるボードを作製したためコネクター経由でしたが直接Nゲージのコネクターを基板に配線しても構いません。
その場合は配線材を減らせるのでもっと材料費を抑える事ができます。
今回電動ポイントとの接続はポイントの延長コードではなくヘッダーピンで自作しました。
ヘッダーピンを2本分カッターで切り取り拡張インタフェイスのケーブルをハンダ付けします。
延長コードだと+-が逆には接続できないようになっていますがどちらの方向でも接続できるので熱収縮チューブを分けてポイント側の+-のケーブルを間違わないようにしています。
基板の余った部分にPWM用のモータードライバーを実装します。
arduinoで速度制御をするやり方はこちらをご覧ください
今回もこれに基づいて実装します。
右側に写っているのがモータードライバーのTA7291Pです。
左下の黒いのが電源用のACアダプターのコネクターでその上が出力を用のコネクターで上が主電源用で下が転車台電源用です。
転車台電源は主電源の出力をCN9のリレーで制御するように配線しています。
TA7291Pの実装ですが1番PINをGND線の隣になるよう配置しています。
この場合9番PINが下の段のGND線に触れるかも知れませんが9番はオープンなので触れても構いません。
また7番PINはTA7291P自身の電源で前回はarduinoの5V端子と接続していましたが今回はこの端子はコネクターと接続していないので電源用のACアダプターの+端子と接続しました。
TA7291Pの電源電圧範囲は4.5V〜20Vなのでこの範囲ならACアダプターから電源を取っても構わないと思います。
一応参考のために基板裏側の写真ですが実装部品に合わせて配線してください。
なお主電源にモータードライバー出力をする場合はCN1とCN2は不要となります。
モータードライバーのみで行う場合はこれらの実装は行わなくても構いません。
次にサーボモーターとの接続を行います。
転車台はリレー制御ができないのでサーボモーターでの制御となります。
また私のようにSL鉄道模型の手動ポイントをサーボで動かした場合はポイント制御もサーボで行う必要があります。
arduinoとの接続コネクターの2番とリード線を配線します。
QIケーブル3S-3Pの片方の信号線(橙色)をカットしたものをarduinoの5VとGNDに差し込みます。
カットした信号線と先ほど作製した基板のリード線とを結線します。(1Pのコネクターを使用しています)
QIケーブルの片方をそのままサーボのソケットに差し込みます。
サーボが複数の場合はそれぞれの線を分岐させます。
ちなみに基板とヘッダーピンでこの様のなものを作って使用しています。
今回のインタフェスボードはNATOCの次期バージョンで検証しました。
次期バージョンでは転車台制御の他今回作製したボードもサポートする予定です。
なお現在のバージョンでも通信速度を9600BPSにしてやれば動くはずですが、NATOCとの接続がうまくいきません。
どうもarduinoとWindowsの相性の問題のようで、WindowsでCOMをオープンした直後はしばらくarduinoの応答が受け付けられないようです。
インタフェイスの初期化のところでタイムアウトとなってしまいます。
なお実験でCOMをオープンした後、しばらく間をおくと正常につながるようです。
今回使用したNATOC対応のスケッチはこちらです。
コマンドの仕様はRBIO-2Uに基づいて作成しています。
AT OKを応答
PCR#* リレーON/OFF、#=リレーID(0〜9:;<=),*=ON/OFF(1/0)
PCT#*** リレーON→OFF(時間指定)、#=リレーID(0〜9:;<=),***=ON→OFFの時間(1/100秒)
PCS#**timeout センサー制御、#=センサー番号(0〜5),**=しきい値(パーセンテージ00〜99)、timeout=タイムアウト(秒数0〜可変長)
センサーからの値がしきい値以下になったらOKを応答します。
タイムアウトの時間までしきい値以下にならなかった場合はNGを応答します。
なおタイムアウトはセンサーのチェック回数に換算するため正確な時間ではありません。
PCPspeed PWM制御、speed=(速度パーセンテージ-100〜100) 0の場合は停止(ブレーキモード),0以下の場合は反転,0以上の場合は正転
上記以外 サーボ制御、そのままサーボに転送
コマンドは1度に連続して送信できます。
例えばRCR01R10はリレーID0をオンにしてリレーID1をオフにします。(車両の前進制御)
arduinoのソフトについてはこちらの記事やarduinoのサイトを参照してください。
上記のコマンドはarduinoのツールのシリアルモニターで実行する事ができます。
なおNATOCの次期バージョンはまもなくリリースする予定です。
このバージョンを使えば本インターフェイスボードでNATOCの自動制御が行えます。
今回行った作業は配線を間違えるとarduino、ポイントおよびNゲージ車両の破損を伴いますのであくまでも自己責任という事でお願いします。
特にポイントは1秒以上電流が流れると発熱するので十分気を付けてください。
目次に戻る