F28まであるコントローラ の緊急停止修正とRailComDisplayの相性調査 [DCCコントローラ]
へのへのもへじさんがPitIn-PaceCarとか、ほぼ基板の電車を作っているので、私もそういう基板だけ電車をちょっと作りたいなあと思いつつ、とくに速度計を作りたいわけでもないので、自分にとって面白い基板電車とは何か?を妄想中です。elecrowは基板の大きさが10cmを超えると突然価格が上がるので、10cm未満にして、HOゲージでとやって行くと、どうしても、プラレールチックな(そしてプラレール(115mmぐらい)よりも短い)ものになります。基板を2枚つなげて、20cmにしても、それでも20m*1/80=25㎝の普通の車両の長さに満たないし・・・。毎度のことながら、妄想中が一番楽しいのと、中国もどうせ春節中で、頼んでもすぐには作れるわけでもないので、うだうだと2月中、考えようと思います。
さて、本題で、まずは、「F28まであるコントローラ の緊急停止修正」ですが、緊急停止するバグを修正しました。
DCCの、スピード命令は
0を送ると、停止、
1を送ると緊急停止、
2~127が1~126の速度指令になる
という、妙な決まりになっています。そこをすっかり忘れてて、停止は0、スピード指定は1~127と送ってしまい、ときどき停止で緊急停止になるんだけれどもどうして?という指摘をいただきましたので、修正しました。スケッチはこちらの最新になります。多分これで直ると思います(と言いつつ、物での確認していません)
次に、「RailComDisplay繋げたら、命令出してすぐはLocoAddressを返してくれるんだけれども、すぐに表示が”ー”に戻るんだがなんでですか?」という質問がありました。DSair2は、一度作った命令を定期的に再送信していますので、それに合わせてLocoAddressを返してくれているようです。が、それに対して、私のCheapControllerは3回連続で送信した後は、なんと、すべてを忘れてIdlePacketを出し続ける仕様にしています。(と偉そうに言いつつ、その仕様が正しいのかどうかは知らないですが)。ということで、デコーダのほうも、RailComをすぐに出してくれなくなるんじゃないかと思っています。(このごろオシロが無いので確認できていません)。在線検知で使うなら、パケットを定期的に送信すべきかなあとも思います。
そして、DCCのパケットのインターバルはどのくらいですか?という質問がありました。私のコントローラだと、1ビットが150usぐらいとしてPreambleを15回ぐらい、その後3バイトぐらい命令送って、その後、RailCom用に500usぐらい電力出力を休止します。ですので、インターバルで、
150us(15bit+8bit*3bit/byte)+500us = 6.35ms
かかります。DCCの命令長は可変ですので、3バイトよりも短くなることもあるかもですが。
で、この命令を出した後に、ボタンの検出やLEDとかの画面表示とかやっていたりします。
詳しくはオシロで確認するのがよくわかると思います。現在は500usのほぼ0電圧時間があるため、パケットがどうなっているか解析しやすいと思います。
つぎに、RailComDisplayの相性調査です。コントローラはDSair2です。最初に行っておきますが、デコーダは数種類しか持っていません。
まずは、E217系。DesktopStation様にFL12がFWD,REVで切り替わんないです。とクレーム入れていた時期のものですね。EM13とFL12を使用していますが、どちらも普通に制御できました。もちろんRailcomへの反応はありません。
次に京急2100系です。これは、前照灯はNuckyさんのワンコインデコーダ。モーターはdsDecR4に、VVVFスケッチを入れているものですね。で、ちゃんと動きました。もちろんRailcomへの反応はありません。
で、最後にHOのロマンスカーVSE。載っているのはNagodenさんのMp3V5?とNuckyさんのワンコインデコーダ。これも全く問題ありませんでした。もちろんRailcomへの反応はありません。
あとは、RailComDisplayを途中に繋いで、CVReadしても値は読めました。ぐらいでしょうか?
以上です。
さて、本題で、まずは、「F28まであるコントローラ の緊急停止修正」ですが、緊急停止するバグを修正しました。
DCCの、スピード命令は
0を送ると、停止、
1を送ると緊急停止、
2~127が1~126の速度指令になる
という、妙な決まりになっています。そこをすっかり忘れてて、停止は0、スピード指定は1~127と送ってしまい、ときどき停止で緊急停止になるんだけれどもどうして?という指摘をいただきましたので、修正しました。スケッチはこちらの最新になります。多分これで直ると思います(と言いつつ、物での確認していません)
次に、「RailComDisplay繋げたら、命令出してすぐはLocoAddressを返してくれるんだけれども、すぐに表示が”ー”に戻るんだがなんでですか?」という質問がありました。DSair2は、一度作った命令を定期的に再送信していますので、それに合わせてLocoAddressを返してくれているようです。が、それに対して、私のCheapControllerは3回連続で送信した後は、なんと、すべてを忘れてIdlePacketを出し続ける仕様にしています。(と偉そうに言いつつ、その仕様が正しいのかどうかは知らないですが)。ということで、デコーダのほうも、RailComをすぐに出してくれなくなるんじゃないかと思っています。(このごろオシロが無いので確認できていません)。在線検知で使うなら、パケットを定期的に送信すべきかなあとも思います。
そして、DCCのパケットのインターバルはどのくらいですか?という質問がありました。私のコントローラだと、1ビットが150usぐらいとしてPreambleを15回ぐらい、その後3バイトぐらい命令送って、その後、RailCom用に500usぐらい電力出力を休止します。ですので、インターバルで、
150us(15bit+8bit*3bit/byte)+500us = 6.35ms
かかります。DCCの命令長は可変ですので、3バイトよりも短くなることもあるかもですが。
で、この命令を出した後に、ボタンの検出やLEDとかの画面表示とかやっていたりします。
詳しくはオシロで確認するのがよくわかると思います。現在は500usのほぼ0電圧時間があるため、パケットがどうなっているか解析しやすいと思います。
つぎに、RailComDisplayの相性調査です。コントローラはDSair2です。最初に行っておきますが、デコーダは数種類しか持っていません。
まずは、E217系。DesktopStation様にFL12がFWD,REVで切り替わんないです。とクレーム入れていた時期のものですね。EM13とFL12を使用していますが、どちらも普通に制御できました。もちろんRailcomへの反応はありません。
次に京急2100系です。これは、前照灯はNuckyさんのワンコインデコーダ。モーターはdsDecR4に、VVVFスケッチを入れているものですね。で、ちゃんと動きました。もちろんRailcomへの反応はありません。
で、最後にHOのロマンスカーVSE。載っているのはNagodenさんのMp3V5?とNuckyさんのワンコインデコーダ。これも全く問題ありませんでした。もちろんRailcomへの反応はありません。
あとは、RailComDisplayを途中に繋いで、CVReadしても値は読めました。ぐらいでしょうか?
以上です。
2021-02-06 16:01
コメント(0)
コメント 0