無料ブログはココログ

2017年12月17日 (日)

BトレもNjに

Bトレの台車をNjに改造

  改造に使用したのはKATOの小形車両用台車 通勤電車1です。

11099

冶具

  近所のドイトで5mm厚の樹脂版は低発砲塩ビ板だけで強度が不安でしたので、バスコレ道路に使った1mm厚塩ビ板の端切れを5枚重ねて仕上がりの厚さは5.15mmでした。これに1mmと2.5mmのドリル穴を空けます。

改造

  1. 車軸抜きは片側は簡単に抜けましたが、反対側を抜くのに苦労しました。結局中空パイプをラジペンで強く握り、車輪を手で押さえてどうにか抜けました。

  2. 車輪の移動はM2ナットの厚みが1.5mmだったので此れを車軸に通し、ベンチバイスで押し込みました。『カチッ』と音がして軸が動いたらナットで止まるまでゆっくりバイスを締め込みます。
Vice

  3. 一番苦労したのは中空パイプのカットです。カッターに力を入れるとパイプが冶具から浮いてきて短く切り過ぎそうです。力を抜くと何時になったらカット出来るのかちっとも進みません。もう一度改造する時は冶具の上に0.1mmの金属板を乗せてハイパーカットソーで切ってしまおうかと思います。

Jig

  4. 台車枠はカプラーポケットを削らなければいけないかと思いきや、反対側の床板に固定する出っ張りが強度確保のためか6.5mm幅です。ここをアートナイフの先で丹念に削りました。カーブで車輪が当たって走行性が劣るかもしれません。

Cuppler

  どうにか削り終わって、改軌した車輪を取り付けてzゲージの線路に乗せてみました。負荷も無く直線上ですから転がりは滑らかです。車体に組み込んだらどうなる事か不安ですが、今日はもう手元暗がりで限界なので明るくなったら続きを再開します。

Onrail

2017年12月15日 (金)

ミント缶は4桁アドレスの夢を見るか

ミント缶DCCコントローラを4桁表示に改造

http://twaydcc.cocolog-nifty.com/top/2017/10/7led-e667.html
でテストした7セグLEDドライバーを使ってミント缶を改造してみました。
TM1637のSOICパッケージはaitendoで\60、秋月でSOP20ピン変換基板が\50、2桁7セグLEDは\60でした。
改造スケッチを一発で動かす自信は無かったので、オンボード書き込みが出来る旧R1基板を使いました。

  [写真1]
Mintcan_r1

改造手順

  1. 7セグLEDに繋がるTr1、Tr2、R2~R8を全て取り外します(写真1)
  2. R2~R8に繋がるパターン10箇所をカットします(写真1の赤い線)
  3. R2~R8の位置に7セグLEDの足を広げて配置します(写真2)
  表示が見やすい様に7セグを浮かして取り付けていたのが幸いして、7セグの足を曲げて付けても高さが揃いました
ミント缶を設計された方(ご存じyaasanさんです)は4桁改造を見越しておられたのでしょうか。既存の7セグの隣にぴったり並びました。

  [写真2]
7segled

  4. TM1637をSOP変換基板に乗せて全ての制御ピンを接続すれば完成です(写真3)

[改造部の回路図]

Tm1637mod

  [写真3]
Prosess_long

操作方法

  ミント缶のボタンで4桁アドレスを扱うのは不可能と考えていましたが、DCC電子工作連合の忘年会で良いアイデアを頂戴しました。扱えるアドレスは2桁の99通りのまま、このアドレスを4桁に変えてしまえと言うものです。
  4桁へのアドレス書き変え手順はCVプログラムモードとほゞ同じなので、F1ボタンを押しながら電源オンする事でアドレス書き変えモードとしました。△▽ボタンで元のアドレス0~99を選択してF2ボタンを押すと4桁アドレス設定に切り替わります。(写真3)
何故F2かと言うとF0とF1は設定した4桁アドレスの確認目的でファンクション操作に使う為です。写真3の4桁アドレス設定でDPが点灯している桁の数値を△▽ボタンで0~9に変更します。F0ボタンで設定桁を移動します。4桁全てを設定してF1ボタンを押すと4桁アドレスが登録され、書き変え元アドレス選択に戻ります。このモードでは速度設定ボリュームと先ほどのF0、F1ボタンで設定した4桁アドレスの動作を確認する事が出来ます。 写真4はBトレ江ノ電の車体番号1201を設定して走行テストした様子です。(動画じゃなくてすみませんが無事動きました)

Testrun

改造スケッチmintcan_long.zip

デコーダへ4桁アドレスを書き込む

  ミント缶で書き込むにはCVプログラムモードでCV17、CV18を希望のアドレスに設定し、CV29にビット5を1に(+32)した数値を書き込みます。4桁アドレスの設定方法は下記URL  WebNuckyさんの「CV17, CV18:4桁アドレス(0128~9983)の設定方法」をご覧ください。
  http://web.nucky.jp/dcc/decoder3/cv-ver3.html
  Desktop StationさんのDSblueboxなら"Write LocAddr"で3か所のCVを1回で書き込むので、頻繁に4桁アドレスを書き変える方には DSblueboxをお勧めします。

2017年11月11日 (土)

Elecrowの長孔加工

ミント缶DCCコントローラの基板が入荷

  Elecrowからようやく基板が届きました。Desktop Stationさんから引き継いだガーバーデータで追加発注したので全く同じ基板が出来る筈でしたが、電源コネクタのCN1に問題が。

Long_hole

ガーバーファイルに画像を添付して『長孔にしてね』とコメントを入れたのが災いしたのか、完全に無視されました。質問メールも、出荷連絡メールも無く突然宅配便が到着です。余計な作業を省き合理化を進めている結果でしょうか。それとも単に運が悪いだけ(!?)。ガーバーデータに忠実なので、なんら問題無い加工ですけど、どうしよう...

  幸いな事に秋月電子通商でユニバーサル基板取付用コネクタ[C-09408]を見つけたので、無事頒布再開できます。
次回から長孔は外形線で描く事にします。

2017年10月21日 (土)

NmraDCCライブラリ

NmraDCCライブラリ2016

  DSturnout decoderのステイショナリロコデコーダ改造で気が付いたのですが、mrrwa.orgのDCCライブラリ2016年版からinit()関数でCV29に書き込むパラメータが変更されています。init()関数呼び出しのパラメータでCV29の値を決めたい趣旨は理解できますが、一番よく使うDcc.init(MAN_ID_DIY, 100, FLAGS_MY_ADDRESS_ONLY, 0); で困った事が起きます。
NmraDcc.cppのinit()

void NmraDcc::init( uint8_t ManufacturerId, uint8_t VersionId, uint8_t Flags, uint8_t OpsModeAddressBaseCV )
{
  ...
  writeCV( CV_29_CONFIG, ( readCV( CV_29_CONFIG ) & ~cv29Mask ) | Flags ) ;

NmraDcc.hの定義

#define FLAGS_MY_ADDRESS_ONLY  0x01

で、FlagsパラメータにFLAGS_MY_ADDRESS_ONLYを渡すとCV29のビット0が常に1、すなわちDirection反転で進行方向と反対のヘッドライトが点灯します。両運転台車両は少数派、重連モードで対処すりゃいいなど実害は少ないのでしょうが、問題である事に変わりありません。
FLAGS_DCC_ACCESSORY_DECODERは0x80。これが本来の目的なのでしょう。FLAGS_OUTPUT_ADDRESS_MODEの0x40はリザーブドなので、こちらもCV29には書き込まない方が無難かと思いますが、2015版以前でも0x40は書き込まれます。
  スケッチをDirectionビットに対応すると進行方向が一致しなくて悩みましたが、CV29の書き込みを2015版以前に戻して解決しました。

  writeCV( CV_29_CONFIG, ( readCV( CV_29_CONFIG ) & ~cv29Mask ) | cv29Mask ) ;

2017年10月19日 (木)

ステイショナリロコデコーダ

DSturnout decoder

  DesktopStationさんのターンアウトデコーダをステイショナリデコーダに改造しました。『ポイントデコーダはステイショナリでしょ』と言われそうですが意味合いが違います。モータデコーダをステイショナリに使用する例で、DCCからPWMをアナログトラックに供給して、ロクハンのC11「大樹」の走行が目的です。
  改造と言ってもスケッチを書き変えただけです。書き込むスケッチはSD5_MotorR1.zipを使いました。DCCラインの不具合を処理した2016版のNMRAライブラリがアーカイブされていますが、コールバック関数が2014版のままなので、2015版以降に合わせて2つの関数を変更しました。

1. extern void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
-> extern void notifyDccSpeed( uint16_t Addr, DCC_ADDR_TYPE AddrType, uint8_t Speed, DCC_DIRECTION Dir, DCC_SPEED_STEPS SpeedSteps )
2. extern void notifyDccFunc( uint16_t Addr, FN_GROUP FuncGrp, uint8_t FuncState)
-> extern void notifyDccFunc( uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint8_t FuncState)

モータードライバー

  ターンアウトデコーダにはALLERGO社のA4953が使われていますが、出力が ON - Free PWM駆動なので、リニアなモーター制御が出来ません。モータの逆起電力を吸収させるため ON - Break PWMで駆動するように motor_ctrl.cppを変更しました。

#ifdefALLEGRO
  analogWrite(MOTOR_PWM_B, 255);
  analogWrite(MOTOR_PWM_A, 255 - 250);
#else
  analogWrite(MOTOR_PWM_B, 0);
  analogWrite(MOTOR_PWM_A, 250);
#endif

Img_1565

  モータ駆動のPWMポートはD3とD11で、OUT2に繋がっています。D5,D6のOUT1も使用可能にして2台分のモータデコーダにすれば、アナログトラックを複線化して2列車の同時運行も可能になるでしょう。

«7セグLEDドライバーのテスト