2018年11月03日

DCCのCV読み出しの仕組み

DCCコマンドステーションには、デコーダの設定情報であるCVを読み取る仕組みがあります。DCC自体は、コマンドステーションからデコーダに命令を送るだけの仕組みしかありません。

ただし、DCCの規格を管理しているNMRAとしては、いくつかの追加の機能で、デコーダの情報を読み取る仕組みを規格として2つ定めています。

(1) CV ackによるCV値の読み出し
(2) Railcom(BiDi)

ここでは、欧米問わず、間違いなく搭載されている(1)のCV ackによるCV値の読み出しについて解説していきます。

CV ackは、デコーダが搭載された車両が一瞬、微動する挙動があると思いますが、60mA以上の電流を消費した場合はCV ackが成立した、という意味になります。

CV(サービスモード)に関する規格書s-9.2.3_2012_07には、特にCV値を読み取るための仕組みは記載されていませんが、CV BIT MANIPULATION機能のBit Verifyを使うと、実はCV値を読み出すことが出来ます。

bit_manipulation.png

CV値は8bit(1バイト、0〜255の範囲の値)のデータの大きさなので、8回、Bit Manipulationを行って、CV ackの反応を8回見ると、反応があるときは1、反応が無いときは0とすると、2進数の00001111などと復元でき、10進数に戻すと15、と読み替えることが出来るわけです。

コマンドステーションは、こうやって、CV値をデコーダから読み出しています。

では、デコーダ側ではどうすれば良いかというと、CV ackに対応する回路やソフトを作り込む必要があります。

■ CV ackの回路の作り方

MP3デコーダやワンコインデコーダでは、モータを繋げて動かすことが前提ですので、モータを動かすことで代用しています。もし、モータが無いデコーダではどうすればいいか?トランジスタ出力回路と抵抗を付けて、電流をダミー消費する回路を作るしかありません

Untitled.PNG

■ ソフトの作り方

自分で1からソフトを作る場合は、お任せですがMP3デコーダなどで使用しているNMRA DCC Libraryを使用する場合は比較的簡単です。PIN_CVACKには、ピン番号を入れて下さい。

// This function is called by the NmraDcc library when a DCC ACK needs to be sent
void notifyCVAck(void)
{
analogWrite( PIN_CVACK, 255 );
delay( 8 );
analogWrite( PIN_CVACK, 0 );
}

posted by yaasan at 18:11 | Comment(0) | 鉄道模型
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。