無料ブログはココログ

2017年7月18日 (火)

非対称DCCの動作テスト

  非対称DCCを生成するブレーキトラックボードの動作をレポートしていなかった様です。改めてご紹介します。

非対称DCC波形

Asymmetwave

ダイオード3個分で約2Vです。純正のBM1でも検出できない例が報告されていますので、あと1個追加した方が良かったかも知れません。

結線

Connection

  要点は、ギャップを設けたレール側をブレーキトラックボードに接続する事です。入れ子にすると非対称DCCになりません。

  Nuckeさんの日本型信号機デコーダの停止信号リレー出力をJ1またはJ2(上りと下り用に2CHあります)に接続します。

デコーダのCV値

  デコーダはLENZのSilver21+です。CV51=2でABC activatedを有効にします。CV51=10にすると自動往復運転します。 Silver21+版はCV115で非対称DCC検出感度を設定できます。出荷時の12では検出しない事があったので、CV115=6を書き込みました。

動作

信号が青なら通過します。

Through

DSmainの"Turnout"操作で信号機を赤にしたら停車しました。停車距離はCV52の Braking distanceで変更出来るようです。

Stop

  青にすると再び発車します。使用感は悪くありませんが、4閉塞を設置すると配線がごちゃごちゃしそうです。非対称DCC、在線検出、信号機を一体基板に押し込めばスッキリすると思いますが、汎用性が失われますね。 何よりも既存のスマイルデコーダが使えないので、プライオリティは低いです。

2017年7月13日 (木)

DSblueboxのファームウェア

DSbluebox_r4g

  DSblueboxのファームウェアをR4gに更新しました。CVリードのリトライ回数を設定出来ます。 前回R4fでしきい値調整を行って、手持ちのデコーダで読み出しエラーは無くなりました。
なので何を試したかと言うと、CVリード時の走行距離が長いのが気になっていたLENZのデコーダです。
リトライが原因かと思っていましたが、リトライ回数をデフォルトの2から1に変更しても変わりません。スマイルデコーダの

void MOTOR_Ack(void)
{
   analogWrite(MOTOR_PWM_B, 0);
   analogWrite(MOTOR_PWM_A, 250);

   delay( 6 );

   analogWrite(MOTOR_PWM_A, 0);
}

Smileslim

と比較すると静かに走行するので、PWMデューティ比を低めに、delayを長めに取っている様に思います。

Silver21

プログラムトラックから飛び出してしまう事も有るので、長ければ良いものでもありませんが、車重が軽いBトレは暴れまくるので、LENZの動きを参考にBトレ用にチューニングしてみようかと思います。そのためにも今回のDSbluebox_r4gは強い味方になってくれると思います。

2017年7月 4日 (火)

センサーレールリベンジ

挫折タイプ

  1. ATtiny841を使用したセンサー基板ですが、盤間配線はハーネス作成の利便性を優先してフラットケーブルにしました。リボンケーブルが目立ちますが、それ以上にヘッダーの大きさが目に付きます。
  2. 基板を2枚構成にしましたが、道床内の配線が大変で、Bトレにデコーダを組み込む以上に難易度が上がり、出発信号は省略を余儀なくされました。

Sensor_old

リベンジタイプ

  1. 先ず2枚の基板を共用にして、基板作成コストを半減します。
  2. 道床内の配線を最小限にし、盤間配線のコネクタは日圧の1.5mmまたは2mmを検討しています。
  3. スケッチの書き変えで、S88による外部制御とスタンドアロン動作どちらでも使える設計にします。
    (DCCfestで展示したバスコレはスタンドアロンモードでした)
  4. スタンドアロン動作では、+5V供給用にスマイルデコーダを1台使用します。
    (DCCパケットのSpeedで「停車」判定、DIRで「てこ」制御にも使います)
  5. 信号機コネクタをセンサーコネクタ共用にして、道床の加工無しでセンサーの設置を可能にします。

Sensor_new

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が暴走