2021年3月6日土曜日

Asymmetric DCCの信号を認識するテストのおはなし

 前回書いた投稿で、Railcom対応機能を持ったデコーダを開発していますというのを書きましたが、ついでにAsymmetric DCCの信号を認識する機能を試験的に載せてみましたので、その部分のみを少し書きたいと思います。

Asymmetric DCC自体はAutomatic Brake Control (ABC)として、Lenzなどの一部のデコーダに搭載されていますが、アメリカとドイツで特許が出ているためか車両側の実装例みたいなものを挙げている人が見つからなかったのと、動作がおもしろかったので電気的な仕様を探りつつ、とりあえず回路を作ってみることにしました。
(参考:Google Patents)

線路の電気波形についてや、線路への配線についてはGoogle Patentsのリンク先で元々の特許で使用されている図が見れますので読んでいる前提で割愛させていただきます。

動作としては、左右の線路のピーク電圧をダイオードを挿入することでわざと偏らせ、それを車両側で認識してやることでアクションを起こせればいいということになります。

そこで、下記のような回路を作成しました。
マイコン側でADCで読ませたりすると何かと面倒そうだったので、デジタルピンのオンオフを読み取れば済んでしまう程度までは回路側で面倒を見てしまうことにしました。




同じ構造の回路を左右のレール分で、2回路積む形になります。
各ラベルの接続元・接続先は下記となります。
  • RAIL+ / RAIL- : レール左右
  • ABC+ / ABC- : マイコンの入力ピン (マイコン側でプルアップ)
  • VRAIL+ / VRAIL-: この回路図内で完結
ざっくりとした動作は下記となります。
  1. RAIL+側の電圧が高い状態のときに、C11にある程度チャージされる。
  2. RAIL+側の電圧が下がり、RAIL-側の電圧が上がっても、C11の電圧はゆっくりと下がるため、VRAIL+の電圧はある程度維持される。
  3. 線路電源のピーク電圧が同一の状態であれば、VRAIL+とVRAIL-の電位差がほとんど無いため、Q21のコレクタ側はプルダウンされたままとなり、Q22はオフ状態が保たれる。
  4. ピーク電圧をずらした状態になると、VRAIL+とVRAIL-の電位差が発生するためQ21のコレクタ側の電圧が上がり、Q22がオンになる。
  5. マイコン側で適宜ポートをポーリングして、当該ポートが「0」になっていれば回路が動作していると判定する。
マイコン側でポーリングに行くタイミングが重要で、線路電源の反転後、一定の時間で読みに行く必要があります。
今回の実装では線路電源の反転を検出後、約40us後にポーリングを行い、250回ポーリングするごとに回路が動作していた回数を確認し、確実に検出するようにしています。

実は最初の実装では約1msごとの一定周期で読み取りを行う動作としましたが、このようにするとアドレス00を使用した際に正常に読めなくなります。
アドレス00を使用すると、ビット0を送出するときに、左右のレールに電圧を掛ける時間を変えてしまっているので、今回使った回路ではさすがにコンデンサが放電しきってしまい、読み取ることはできなくなります。



実は今回、実装を行った後で特許を読んだのですが、車両側の実装方法は見事に違っていました。
(図で見る限りではもう少しシンプルな実装になっていますが、特許文書を読んでいくとコンパレーターなどという単語が出てくるので、この図の回路だけでは動かないと思います)

マイコン側で一定周期後にポーリングという手法は結果的に合っていたようです。



今回開発したデコーダをそろそろ公開しようと思っていろいろ調べたのですが、少なくとも日本では特許申請はされてなさそうなのですが、アメリカ・ドイツではまだ失効していないようなので、ちょっとどうしようかと考えております。

ドキュメント上からはごっそり削除した上で公開するか、あるいは国内向けと限定して出すかですかね。

実装方法が違うということで逃げるという手もありそうですが、もう少し考えてみます。

1 件のコメント:

  1. お世話になっております。見覚えのある基板だと思いました。車輌側の実装の独自性を上手い事法的保護されるようになれば良いなぁと思いました。
    ところで、アナログDCの自動往復運転回路で停止線路のフィーダーにダイオードを仕込んでおいて自動停止させ、タイマーで定期的に極性反転させて出発させる方法が有るのですが、DCCの自動ブレーキと回路を共用出来るのか気になっています。自分で試作すれば済む話なのですが…

    返信削除