DCCデビューした

こんにちは。車内補充券をお願いするときに「マニアなんですが」と前置きすると話が早いことに気づいたmipsparcです。

ここ数日でDCC(Digital Command Control/デジタル指令による鉄道模型制御)をはじめるのに成功しました。

DCCには以前から憧れがありましたが、私がDCCで実現したいことは以下です。

  • 低速からのなめらかな加速
    • アナログ制御では電圧が低い低速での走行が不安定になり、ある程度勢いをつけないと発進できません。
  • 勾配や曲線での安定した速度
    • アナログ制御では一定の速度を維持するのは容易ではありません。
  • 安定したヘッドライト・テールライトの常点灯
    • 常点灯はアナログでも可能ですが、チラツキがあったり、速度によって明るさの違いがあります。
  • 再現性のあるコンピュータとの接続
    • コンピュータ制御でいろいろなマスコンと接続したいのですが、外部デジタル入力可能なアナログコントローラは市販されていません。これまでは自作していましたが、1点もので再現性がなく、信頼性にも大きな不安がありました。

Twitterで仲良くしてくださっている@LOCKE00さんに宣伝されて、DesktopStationさんのDSair2というDCCコマンドステーション(コントローラのこと)を導入することにしました。

当時はキットなら学割もあったので、ありがたく利用させていただきました。はんだ付けは苦手ではないので、制作はあっさりできました。

FlashAirという無線LAN APになるSDカードを差し込むと、無線で操作できます。FlashAirを取り外すと、USBで制御できます。後半でUSB経由でコンピュータ制御をしています。

DSair2でアナログ鉄道模型を動かす

アナログ鉄道模型コントローラとしても使用できるため、まずはアナログ+USB接続+Linuxで試してみました。コマンドリファレンスは以下です。ソースコードを読めばわかるのですが、実はWiFiでもUSB接続でも、共通のコマンドが使えます。

WiFi: https://desktopstation.net/wiki/doku.php/dsair_wifi_specification

USB(シリアル): https://desktopstation.net/wiki/doku.php/desktop_station_s_serial_communication_specification

#coding:utf-8
import serial
import time
def send(s, value):
s.write(value.encode('ascii') + b'\n')
s.flush()
def init_dsair2(s):
time.sleep(0.3)
send(s, 'setPower(0)')
time.sleep(0.3)
send(s, 'setPower(0)')
time.sleep(0.3)
s.reset_input_buffer()
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=0.1, write_timeout=0.1, inter_byte_timeout=0.1)
# DSair2を再起動
send(ser, 'reset()')
time.sleep(1)
# 1回目の初期化
init_dsair2(ser)
send(ser, 'setPing()')
if (not ser.read(50).decode('ascii').endswith('200 Ok\r\n')):
print('DSair2を正常に認識できませんでした。終了します')
exit()
else:
print('DSair2を正常に認識しました。')
# 2回目の初期化
init_dsair2(ser)
print('DSair2 起動完了')
for speed in [0, 400, 350, 350, 350, 350, 350, 350, 280, 280, 280, 250, 0]:
way = 1
command = f'DC({speed},{way})\n'
send(ser, command)
time.sleep(0.2)

 

失敗編: デコーダとコマンドステーションの相性問題

KATO DE10に組み込むため、KATO公式で指定されているデコーダ Digitrax DN163K4Aを2つ手に入れました。機関車は内部構造が複雑でしたがなんとか組み込み、動かそうとすると… 明らかにうまく動いていない。

なんと、DSair2とDigitraxのデコーダは相性問題があり、動かないことがあるようです。DSair2の説明にも書いてあるので私の責任なのですが、これはDCCの大きな課題ですね… アナログ鉄道模型ならどんな組み合わせでもまず動くので。規格はあるのにインターオペラビリティがない。

成功編: DSair2とSmileDecoder N18とE531系

失敗で心が折れてしまって数ヶ月ブランクがあったのですが、気を取り直して再度挑戦してみることにしました。

今度は動作確認がとれている同人ハードのSmileDecoder N18をKATO E531系に組み込むことにしました。Next18(N18)というのはコネクタ規格の名前です。

KATOの一部の鉄道模型はDCCフレンドリーといってKATO純正のデコーダを組み込みやすく設計してあります。このスロットに差し込むためのExpBoardという同人ハードのボードと、屋根裏に設置するEC-Slimというボードを使うことで、DCCフレンドリーの鉄道模型に容易にNext18規格のデコーダを取り付けることができます。

床下から屋根裏の配線材に迷って、適当に余っていた太めのポリウレタン銅線を使ったところ、バネ性が強すぎて難儀していまいました。他の方はどうされているのか知りたいです。

ともかく、車両には無加工でデコーダの取り付けに成功しました。試しに動かしてみると…動いた!!

下記の動画では、三鶯重工(サンイン重工)のワンハンドルマスコンOHC-PC01AとPythonで繋ぎこんでいます。

成功編: DSair2とKATO(Digitrax) FL12とE531系

E531系の動力のDCC化には成功しました。

先頭車はアナログのままなので、ヘッドライトとテールライトが常時点いてしまっています。そこで先頭車用のデコーダを搭載します。ライトのデコーダは相性問題が少ないとのことで、試しに純正デコーダ FL12をまた試してみることにしました。

組み込みは簡単で、裏の小さい蓋を開けて、差し込むだけです。最初は接触不良かうまくいかなかったのですが、数回チャレンジしてみると、正常に動作しました。完璧です!

成功編: DSair2とDE29x2_56KとKATO DE10

E531系の成功に味をしめて、DE10に再チャレンジしてみたくなりました。

永末システムさんのデコーダは動作するとの情報をいただき、KATO DE10に対応したDE29x2_56Kを購入して導入してみました。

チップLEDもそこまで苦労することなく実装に成功し、実車に搭載すると…

一発で動きました! 多少音がするのが動力のせいなのかBEMFによるものなのかわかりませんが、そこまで気になるほどではありません。

ライトも正常に光り、成功です!

ワンハンドルマスコンでDCC車両を動かす

出身サークルの文化祭展示用にでも使えるかと、リアルなワンハンドルマスコンでDCC車両を動かせるようにしました。

動画は上のほうにはったやつです。ソースコード(リポジトリ)を以下に貼っておきます。Python3です。

https://github.com/mipsparc/ECController

 

結論

DSair2とワンハンドルマスコンと各種デコーダにより、シンプルでスマートにDCCによる運転体験システムの構築ができました。

DSair2が一旦生産終了してしまったようなのは残念ですが、シリーズの後継機種がそのうち出るということなので、期待しています。

サウンドや室内灯といった固有の機能もそうですが、走行の安定性も得られるDCCをみなさんも始めてみませんか?

 

カテゴリー: コンピュータ, 鉄道, 電気電子, 買った, Python パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中