スレッドの評価:
  • 回答数:0 平均:0
  • 1
  • 2
  • 3
  • 4
  • 5
ワンコインデコーダー4.2 モーター用 CV29について
#1
ワンコインデコーダー4.2を動力車のモーターに搭載しております。
初期値での走行は問題なくできているのですが、
スピードテーブルを使ってモーター特性を調整しようとしたところ
どうもCV29の設定がうまく反映されません。

具体的にはCV29:2→18にしても反映されず、
試しに他数値にしても前進・後退も変更されない状況です。
もちろんスピードテーブルは数値変更済み、
その他用途として、両極性やポイントでコーターは問題なく使えています。

何台かデコーダーを製作し搭載していますが
全く同じ症状です。

使用プログラム:[font]1822-0.94beta

ご教示いただけますようお願いいたします。[/font]
返信
#2
POROPORIさん

反応遅くなりすみません。nuckyです。
申し訳ありませんが、CVの説明が間違っており、誤解を生んでいると思います。
CV29にスピードテーブルの設定がありますが、値の設定によらず、以下の動作になります。

まず、スピードテーブルを使用できるのは、14STEPか28STEPで動作するときのみです。128STEPでは動作しません。
(128STEP分のスピードテーブルを記憶するフラッシュメモリの容量が足りないので機能実装していません。)
スピードテーブルを使用したい場合は、コマンドステーション側で14STEPや28STEPの信号を出力するように設定してください。

加えて、気を付けなければならないことがあります。
デコーダ側でCV29を14STEPや28/128STEPに変更しても、コマンドステーションから128STEPの制御命令がくると、128STEPモードで動作します。(これは、Digitraxなど他社のデコーダでも同じ挙動です。)

ワンコインデコーダは14STEPや28STEPのときは、CV29の設定に関わらずスピードテーブルの値を使用しているので、初期値で動作するのであれば、CV値を適宜設定すれば、スピードテーブルは反映されると思います。
返信
#3
はじめまして。新しくユーザー登録させていただきました。よろしくお願いします。

Nucky様のワンコインデコーダー4.2をモーター制御用にしてHOの蒸気機関車に搭載しようと検討している全くの初心者です。速度設定は128ステップを使おうと考えています。

スピードテーブルについてですが、Min,Mid,Maxの3つを指定して調整するもの(CV2,6,5)、と28スピードテーブルを用いた指定があると思うのですが、Nucky様のワンコインデコーダー4.2をモーター制御用にすると、128ステップでは、28スピードテーブルが使えないが、Min,Mid,Maxによる指定は使えるということでよろしいのでしょうか?
それとも、Min,Mid,Maxによる指定も使えないのでしょうか?
返信
#4
うみうみさん
こんにちはnuckyです。

HOのSLとのことですが、プラ製はまだしもブラス製SLなどのモーター容量の大きくロッドの抵抗もあるモデルにはワンコインは不向きです。理由はモータードライバICの電流容量が小さいこと、BEMFがないことによります。

申し訳無いのですが、Min,Mid,Maxの3つを指定して調整する機能も実装しておりません。アセンブラによるソフトなので数値演算機能の実装を見送った経緯があります。

モーター用として高機能な用途は他の高性能なデコーダの利用を想定しています。

ワンコインデコーダは簡易なデコーダをワンコインでDIYで作ろうがコンセプトです。ご理解いただけるとありがたいです。
返信
#5
Nucky様

早速のご返事とアドバイスありがとうございました。大変助かりました。
ご丁寧なご返事で、恐縮です。ご本業の傍らの皆様の様々なご援助をとてもありがたく思っています。
(02-22-2020, 09:53 AM)nucky が書きました: うみうみさん
こんにちはnuckyです。

HOのSLとのことですが、プラ製はまだしもブラス製SLなどのモーター容量の大きくロッドの抵抗もあるモデルにはワンコインは不向きです。理由はモータードライバICの電流容量が小さいこと、BEMFがないことによります。

申し訳無いのですが、Min,Mid,Maxの3つを指定して調整する機能も実装しておりません。アセンブラによるソフトなので数値演算機能の実装を見送った経緯があります。

モーター用として高機能な用途は他の高性能なデコーダの利用を想定しています。

ワンコインデコーダは簡易なデコーダをワンコインでDIYで作ろうがコンセプトです。ご理解いただけるとありがたいです。
返信
#6
Nuckyさん

[font]PORIPORIです
以前CV29のご回答頂きありがとうございました。

さて、このスレッドのタイトルから若干それますが、
c[/font]1822-0.94betaなどのプログラムをベースに
c
v3、cv4の加速度、減速度の機能を追加することは理論上可能でしょうか?

もし、機能追加が可能であれば
プログラム変更のヒントを教えていただけますと幸いです。
プログラム初心者ですがヒントを頼りに勉強できればと考えております。
(出過ぎたことを言ってしまいごめんなさい。。)

よろしくお願いいたします。
返信
#7
PORIPORIさん。こんばんは。

ワンコインデコーダの速度は、DCC信号からの数値をそのまま処理してモータ制御に反映しています。

CV3やCV4の機能(加速率や減速率)を追加するには、DCC信号からの数値を一旦メモリに蓄え、
その値と現在の数値と差がある場合は徐々にメモリの数値に近づけていくような処理が必要だと思います。
こちらの処理は比較的に容易にできると思います。

一方で、その数値を近づけていく処理を一定時間間隔で行う必要があります。
それでないとマイコンはあっという間に処理完了して、目に見えて分かる形で速度変化がゆっくりとならないからです。
ただ、いまのソフトの構成では、こちらの処置は少々厄介です。

ワンコインデコーダでは、DCC信号の読み込み精度を上げるために、割り込み処理を使用しないようにしています。
このため、一定時間ごと(例えば0.1秒おき)に、数値を近づける処理をしてモータ制御に反映するなどの工夫が必要ですが、
この一定時間ごとにという処理のトリガーをかけるのが少し難しいです。

いま少し考えたのですが、割り込みを使わずに実現するには、DCC信号を読み込み命令解析するごとに
メモリの値に近づけていくというのも一つの方法かと思いました。

いづれにしても、ワンコインは時代遅れのアセンブラ言語で開発しているので、プログラムの初心者ということでしたら、
C言語等を別のハード(Arduino等)で勉強されたようが今後に役立つと思います。
C言語であれば、マイコンのみならず、パソコン等にソフトの知識にも役立てることができるからです。

アセンブラはマイコンの動きを1行1行組み立てていく、不思議な面白さがあるですが、ハード固有の知識も要求され、
それが面倒であるのも事実ですし、簡単な数値演算ですら実際は不得意です。
2倍や、2で割るなどは2進数なので、ビットシフトすれば良いのですが、
C言語のように数式で記述が一切できないので、使いづらい面もあります。

あまりアドバイスになっておらず、申し訳ございませんが、ご参考まで。
返信


ページジャンプ:


このスレッドを閲覧中のユーザ: ゲスト: 3