無料ブログはココログ

« 2017年5月 | トップページ | 2017年7月 »

2017年6月

2017年6月22日 (木)

バスコレDCCコラボ編

  バスコレの動力はボタン電池で走行するので、直接DCCで制御する事は出来ませんが、前回のバスコレセンサー編の実験で、マグネットを使って停車させる事が出来ました。

Photo_2

そこで、列車が駅に停車したらバスも停車させる事にしました。

Photo_3

マグネットはサーボデコーダで移動させます(上写真サーボホーンの位置に注目してください)。yaasanさんのOEMServoDecoderスケッチを借用しました。列車の停車はフォトセンサーを2個使えば車速を検出できますが、面倒なのでサーボデコーダのスケッチをアドレスマスク無しのファンクションデコーダに変更して、DCCコントローラのスピードステップパケットを受信する事にしました。

CVPair FactoryDefaultCVs [] =
{
  CV_MULTIFUNCTION_PRIMARY_ADDRESS, DECODER_ADDRESS},
  CV_ACCESSORY_DECODER_ADDRESS_MSB, 0},
  CV_29_CONFIG, 0b00000110},
  ...
};

void setup()
{
  ...
  Dcc.init( MAN_ID_DIY, 10, FLAGS_OUTPUT_ADDRESS_MODE, 0 ); // ID, Ver, Flags, Ops)
  ...
}

  フォトセンサーとサーボモータは、踏切アクチュエータ用に作ったスマイルエキスパンド基板に繋ぎました

//各種設定、宣言
...
#define PIN_SERVO2  12 // smile connector#1 /MISO
#define PIN_STOP  13 // smile connector#3 /SCL

注1:電流100mAのサーボモータを駆動すると、5Vレギュレータの損失(PD)は(12[v] - 5[v]) x 0.1[A] = 0.7Wです。エキスパンド基板ではPD1WのTA78M05を使って5Vにドロップしています。DCCで使うシリーズレギュレータは最大電流よりも最大許容損失が重要です。

  DCC速度パケットでスピードステップを受信して、フォトセンサーがオンの時スピード0なら停車と判断します。excec_Function()は全LOCアドレスに反応するのでファンクション9に逃がしてますが、notifyDccFunc()でアドレスチェックすれば不用意にサーボが動き出すのを防ぐ事が出来ます。

//DCC速度信号の受信によるイベント
extern void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
{
  gSpeedCmd = Speed;
  ...
}

void loop()
{
  ...
  if( (millis() - gPreviousL6) >= 100)
  {
    int Stopstat = digitalRead(PIN_STOP);
    if(Stopstat == HIGH && gSpeedCmd <= 1)
    {
      exec_function(9, 1);
    }
    else if(Stopstat == LOW && gSpeedCmd > 1)
    {
      exec_function(9, 0);
    }
    ...
   }
  ...
}

2017年6月21日 (水)

Bトレに止まらんを組み込む

  CV化けが解決できた6000形ですが、この路面電車用動力ユニットは何故か集電不良が頻発します。集電ブラシを磨いて、デコーダへのリード線ハンダ付け位置も変更したのですが、劇的な効果はありませんでした。屋根上に巨大なウエイトを載せると安定しますが、本体だけでなんとかしなけりゃいけません。

ブロックパーツを削ってデコーダのスペースを確保出来たので、屋根裏が空いています。そこにバスコレの道路で使ったΦ0.7の鉄線を束にしてハンダ付けしたウエイトもどきを載せてみました。

Waight

あんまり効果はありません。

  そこで"止まらん"の出番です。yaasanさんの基板は残念ながら入りません。なのでRB160Mと手元にあった150Ω1/4Wを空中配線で組み込みました。電解は6.3x11が限界です。秋月では25V/220uFが最大容量の様です。

Tomarun

  結果は良好です。止まってしまう集電不良には効果が薄いですが、ギクシャク感が無くなり、気のせいか走り全体が滑らかに感じられます。容量は小さいですがBトレにお勧めします。基板にする隙間が無いのが悩ましいところではあります。

SmileSlim85が暴走

DCC化した6000形が突如暴走!!

  スピードステップを変えても反応せず。テストを繰り返すと頻度が増えるばかり。 コントローラの電源を切って停止させると、その後動力もファンクションも全く反応せず。 で、しつこく車体を突いてやるとまた暴走。

Cverror

原因調査

  パニックになる気持ちを抑えてようやく冷静に動きを観察しました。集電不良が頻繁に起きていて、どうやら再通電した時に暴走するようです。再びパケットを受け付けなくなったので、デコーダとモータを車体の外に取り出して、オシロで電源を観察するとなんの問題も有りません。もしやと思いDSblueboxでCV Readしてみると、なんとすべてのCVがでたらめの値ではないですか。なんだEEPROMデータ化けじゃないかと『DSbluebox様々や』。

副業時代は結構意識していた現象ですが、趣味の鉄道模型とCVの影に隠れて失念していました。

スケッチ書き直し

  Aruino IDEの[ツール] で B.O.D Enable(2.7V)に設定して、ブートローダを書き直しました。その後スケッチを書き込んで無事解決。Aruino UNOには無い設定ですね。

2017年6月18日 (日)

Bトレを無理やりDCC化その1

SmileSlimデコーダ

  Bトレの路面電車や機関車タイプにDCCデコーダを組み込んでみます。
使うのは試作実験中のSmileSlimデコーダでATtiny841で設計してますが、 未だ基板作成の目途が立たず、※暫定のATtiny85版です。

※実用版のデコーダを開発する為に、秘密裏に試作実験していたSmileSlim85版ですが、 DCCFest2017で展示しましたので、当ブログのウェッブページで内容を公開します。

動力ユニットの改造

  一番手は東京都交通局6000形に使う路面電車用動力ユニットです。 先ず保護抵抗の両端をカットしてモーターカバーを外すと、モーターと集電板が出てきます。

Photo

集電板+側のモータと接する突起をカットし、NEM651用のハーネスを集電板とモータにハンダ付けします(下左)。集電板とモータを元に戻したらモーターカバーを被せて完成です(下右)。

Photo_2

ブロックパーツの加工

  車体を構成するブロックパーツの天井部を、SmileSlimデコーダの部品実装エリアに合わせて切り欠きます。ブロックの側部も肉厚+デコーダの基板厚1mmだけ切り欠きます。

Photo_3

DCCデコーダの組み込み

  切り欠いたブロックパーツに下からデコーダを差し込みます。6000形は運良くヘッドライトの穴明けが出来ましたので、LEDも装着しました。

Photo_4

※モータドライバー(↑)を実装するの忘れてます。

走行テスト

  Bトレの車体組み立て手順に従って車体を完成させます。 Blueboxを使ってCV1:アドレス、CV2:スタート電圧、CV3:加速度、CV5:最大電圧を好みのレスポンスになる様に設定します。
  Blueboxはテスト走行モード(Loc Control)がありますので、結果を確かめながらCV書き込みが行えて大変便利です。他にデコーダが繋がっていないメイントラック上でCV書き込みも行っていますので、そのまま走行を楽しむ機会が増え、Blueboxがメインのコントローラになりつつあります。

Photo_5

« 2017年5月 | トップページ | 2017年7月 »