DCCコントローラー開発用基板

DCCコントローラー開発用基板を作りました。

20200707-0-32-06

 

DCCコントローラーを作るといっても、私の場合はコアな部分は、NMRAやDesktopStationさんのライブラリを使って、インターフェースを自分好みに組み上げるだけなので、AruduinoNanoベースの開発基板をつくりました。これにスイッチやらボリュームやらを接続して、コントローラー回路を開発するつもりです。

現在計画中なのは、某鉄道模型バーの新装開店祝いにする 簡単DCCコントローラーと 某クラブ用のDC・DCCのどちらにも使えるデモ用の自動往復運転システムです。

| | Comments (0)

DCC小型コントローラー

DesktopStationさんが、試作お試し(人柱?)発売されたDCCコントローラーD99HACX PowerHackをケースに組み込んでみました。 これはKATO パワーパックスタンダードSXの基板を入れ替えて、DCCパワーパックに改造するキットですが、CV値やアドレス読み出しのできる小型DCCコントローラーが欲しかったので、タカチの小型ケースTW7-4-11G に組み込んでみました。

20200607-9-18-18

20200607-9-16-21

内部配線です。ボリュームは手持ちの20KΩを使いましたが、問題なく動きました。

20200521-12-29-59

ケースへのタクトスイッチなどの穴開けの位置決めは、基板をスキャナで撮ってプリントアウトしたものをケースにテープで仮止めして穴開けをおこなうと簡単でした。

なおこのキットは、ショートや過負荷に対して敏感すぎるので、テスト用には好適ですが、DesktopStationさんが推奨されているモータードライバーICの交換も検討しようと思います。

なおD99HACX PowerHack 基板キットは、量産にはいたらず現在は販売されていません。

※6/10追記

使ったのは PowerHacではなくD99HACXでした。



 

 

 

| | Comments (0)

Oprating KATO SoundBOX by DCC controller

youtube の動画に英語でコメントがついたので、DCC同人誌掲載された私のページの英訳改訂版PDFつくりました。

PDFダウンロードはここをクリック

Sboxdcc

| | Comments (0)

DCC同人誌に記事が掲載されました

DesktopStationさんが発行されているDCC同人誌3号に「サウンドボックスをDCCで操作する」という記事を書かせていただきました。

Dccdoujin

こちらからダウンロードできます。

是非ダウンロードしてお読みください。

 

| | Comments (0)

蒸機のDCCデコーダー

別記事へのコメントで、サウンドデコーダーへの質問いただきましたので書いておきます。

テンダー機はこれまで、レンツのシルバーミニ+MRC1665サウンドデコーダーの組合せが多いです。

6500の実例

8760の実例

サウンド対応のタンクロコでは、SoundTraxxのTsunamiを積んでいました。

従来モーター用デコーダーとサウンドデコーダーを分離して搭載していたのは、一体型だと機炭間のコードの接続が大変というのが一番の理由です。分離搭載だとPFM/SL1アナログサウンドと同じく渡り線一本ですみます。バックマンのサウンド搭載済の完成品も数両持っていますが、ほぼ永久連結状態です。あとは一体型は高価なので、トラブルで焼いてしまったときの経済的損失が大きいということもあります1万円札に火がついて燃えてしまったようなものです(笑)

ただ分離型ではサウンドオンリーデコーダーのブラスト音レートは実際のスピード=モーター回転数に同期するのではなく、コントローラーからの指令速度に一致するので、特に発車時や低速走行時にはズレが目立つことがあります。モーターデコーダーのBEMFフィードバック機能を使って、できるだけDCC指令スピードとモーター回転数のズレを少なくすることでかなり補正できますが、調整がかなり面倒ですし完全ではありません。機関車だと牽引する列車重量によっても起動状態が変わってきますので、その調整が難しいです。ブラスト音が鳴り出す前に動輪が回転していたり、動輪はまだ回転していないのにブラスト音が鳴っているのは興ざめです。

それに対して最近の一体型では、BEMFを測定してモーター回転数を検知して走行サウンドを走行速度に同期させますので、調整が楽です。現在製作中の8450にはTsunami2を搭載予定です。

また分離型で二つのデコーダー搭載した時は、CV値の重複があるので、CV値書き替えるときは、一部のCV値は機炭分離して書き替える必要があります。

なお 蒸気が好き さんのコメントはスレッドの付け替えさせていただきました。

| | Comments (2)

ミニUSBスロットル

amazonで売っている、USB差し込み型の小さなAruduino Leopord互換機を使って、スマホやタブレットのUSBソケットに差して使う速度ツマミのみのDSair2用のミニUSBスロットル作ってみました。

20191013-1-36-52

速度ツマミのみでファンクションスイッチなどはついていません。ファンクションや方向切替はスマホやタブレットの画面タッチでおこないます。
どうしても画面タッチの速度調整に慣れないのでこんなもの作ってみました。
難点はUSBソケットに差しているのでやや不安定なコトです。

20191013-1-38-37

☆10/15追記

iPhoneなどiOSのデバイスにOTGケーブルでつないだら動きませんでした。そういえばマックをクリーンインストールしたときに、USBの最大消費電力を100mAにするようにAruduinoのライブラリーのUSBCore.hを改造するのを忘れていました。MacではアプリケーションフォルダーのArduinoのアイコンを右クリックして「パッケージ内容を表示」を選択してから、Contents>Java>hardware>arduino>avr>cores>aruduino>USBcore.hと辿っていきます。エディターを使ってUSBcore.hの270行目のUSB_CONFIG_POWER_MA(500) の500を100に書き替えます。詳細は電機屋の毎日ブログ(2019/3/06)を参照してください。と自分の覚え書きのつもりで書いておきます。

改造したライブラリーでコンパイルしたプログラムを書き込むとiOSのデバイスにつないでも無事動きました。

☆2020/1/24追記 こういうのもできればよいと思います。

20200124-0-41-03

| | Comments (4)

タブレットをスタンドに置くと・・・

タブレットをスタンドに置くと、コントローラーらしくなりますね。

20190514-21-16-54

今週は工作はせず、ひたすら車両整備です。

 

| | Comments (0)

KATOのサウンドボックスをDSair2で自動運転する

20190425-23-38-31

 

KATOのサウンドボックスの通信ポートにSoundBoxDecoderを接続し、DSair2のDSbasicを使って往復自動運転しました。

SoundBoxDecoderは自作しましたが、その後fujigayaさんが専用基板をつくられたのでそれを利用して作るのが簡単だと思います。まだ市販のデコーダー完成品はありません。

サウンドボックスの音声出力端子には、Bluetooth音声発信器をつないで、Bluetooth受信機を搭載した貨車のスピーカーに音を飛ばしています。機関車はDCC化していませんが、サウンドデコーダーを搭載したのと同じように貨車のスピーカーからブラスト音や汽笛などが聞こえます。

車両の位置検出にはfujigayaさんが開発されたs88-Detectorをつかっています。今回はホール素子を利用した貨車の床下に取り付けた磁石による検出としました。s88-DetectorをDSair2に接続しています。

 

この動画はhttps://youtu.be/NaZTmCOA0Ioからもご覧になれます。

まだ現在は発車前の汽笛だけですが、もう少し機関車の動きにあわせていろいろな音を鳴らしたいと思っています。

サウンドボックスの通信ポートを直接コンピューターから制御しても自動運転できますが、DCCのDSair2自動運転機能とs88-Detectorの車両位置検出機能を使えば、比較的簡単にプログラミングしてDCCを介した自動運転制御ができます。

もちろんスマホやタブレットを使って通常のDCC運転のようにサウンドボックスをマニュアル制御することも可能です。KATOのスマートコントローラーと同じような操作ができます(ただし こちらは音量や同期などの設定はできません)ただ現時点ではこちらは自動運転へのアプローチは用意されていません。

なおこのシステムは、5/19のKKC作品展会場で運転デモンストレーションいたしますので、興味のある方はぜひご来場ください。

 

| | Comments (0)

VBA(Excel)でDSairを制御する(続)CV値読み書き

Excelを使って、DSairのマニュアル運転操作をしようという方は、まずおられないと思います。

やはりデコーダーのCV値の管理がメインになると思います。

というわけでCV値の読み書きです。

読込は 前回書いたHTTPDSAir関数を使って

Sub DSair_cv_read_com(LocoAdress, CVNo)

  fc = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=GV(" + LocoAdress + "," + CVNo + ")" + " ?" + Str(Time())

  HTTPDSAir (fc)

End Sub

LocoAdressは、OPSモードで使用するときデコーダーのアドレスを文字列として指定しますが、それ以外では”0”をいれます

で読込命令を出して

Sub DSair_cv_read_res()

     fc = "/command.cgi?op=130&ADDR=128&LEN=264" + " ?" + Str(Time())

     DSair_res = HTTPDSAir(fc)

    CVValue = Mid(DSair_res, 42, 3)

End Sub

で値を読込みます。

ただし読込命令を出して、DSairがデコーダーにアクセスして、内部メモリの値が読み込んで書き替えられるまで、2−3秒かかるので、そのあいだにスリープなどの命令をいれて時間稼ぎする必要があります。

関数にすれば

Function DSair_cv_read(LocoAdress, CVNo)

    fc1 = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=GV(" + LocoAdress + "," + CVNo + ")" + " ?" + Str(Time())

    HTTPDSAir (fc1) 'CV値の読み込み命令を出す

    sleep 4000 '4秒時間を空ける

    fc2 = "/command.cgi?op=130&ADDR=128&LEN=264" + " ?" + Str(Time())

    DSair_res = HTTPDSAir (fc2) '内部メモリの書き替えられたCV値の読み出す

    DSair_cv_read = Mid(DSair_res, 42, 3)  '関数の返り値がCV値です。

End Function

となります

CV値の書き込みは

Sub DSair_cv_write(LocoAdress, CVNo, CVValue)

  fc = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=SV(" + LocoAdress + "," + CVNo + "," + CVValue + ")" + " ?" + Str(Time())

  HTTPDSAir (fc)

End Sub

で実行できます。

サブルーチンや関数の引数 LocoAdress, CVNo, CVValue は文字列です。

また上記のプログラム例は、エラー処理を省略しています。

 

 

 

 

| | Comments (0)

VBA(Excel)で、DSairを制御する

Dsair

DSairには、DSBasicという立派な制御言語がありますが、wifi経由のhttp通信で制御するので、VBA(Visual Basic for Application)でも制御できるはずだと思いプログラミングしてみました。

ちょっと落とし穴にはまったのは、エクセルのVBAではhttp通信のキャッシュ?がかかってしまい、同じ命令をGetリクエストすると、メモリ値が変化しているはずなのに最初と同じリプライが返ってくることでした。これはネットで、無意味なコマンドを文字列につけて送るというテクニックが紹介されていましたので、Getリクエストの文字列に時刻文字列をつけて送ってクリアしました。こういう現象は、JavaScript で動いているサーバーではおきることがあるらしいですが、詳しい理屈は私には理解できませんでした。

最低限の機能のマクロつきブックをサンプルとしてアップロードしておきますので、興味のある方は自分のエクセルで、いろいろプログラム書き加えて遊んでください。DSBasicの方がVBAより制御向きだと思いますが、CV値の管理とかにはVBAの方が向いているかもしれません。DesktopStationさんには、CV値書き替え関連のDSair Wi-Fi Specificationのコマンド公開を是非お願いしたいと思います。また永末さんところの赤い箱は、VBAの制御ライブラリーが提供されていたので、そのVBAマクロからの移植とか赤い箱とDSAir両用プログラムの開発とかには使えるかもしれません。
このエクセルマクロプログラムをお試しになった方あれば、是非コメントをください。

ココログの新仕様では、画像以外のファイルはアップロードできなくなったようです。今回、DesktopStationさんのHPからダウンロードしていただけるようになりました。下記アドレスからダウンロードしてください。
https://desktopstation.net/follow/DSAir_excelmacro.zip

 

☆4/4追記

vbaでDSair2へwifi 経由でコマンドを送信しているのは下記の関数です。一部略

Function HTTPDSAir(DSAir) As String

Set httpReq = CreateObject("MSXML2.XMLHTTP")

httpReq.Open "GET", "http://flashair" + DSAir

httpReq.Send

HTTPDSAir = httpReq.responseText

Set httpReq = Nothing

End Function

運転コマンドはDSAirに /command.cgi?op=131&ADDR=0&LEN=64&DATA=DSair内部コマンド という文字列を入れます

共有メモリ読み出しは  /command.cgi?op=130&ADDR=128&LEN=264 です

上に書いたようにhttpのキャッシュを回避するために、
この文字列には意味のない文字列(プログラム例では時間文字列)を加えます。

なおこのプログラムを使用するためには参照設定で[Microsoft HTML Object Library]を参照する必要があります。

 

| | Comments (0)

より以前の記事一覧