あやの
NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 借りている容量が最大に達しましたので、移転します。 ★移転先:http://maison-dcc.sblo.jp/
今日も、わけのわからない書き込みですw
SmileFunctionDecoder使って、サーボモータ用のスケッチ(プログラム)を
作っているんですね。
■やった事
オシロスコープで5Vラインとサーボモータ制御線を観察
サーボモータの制御終了後、現在の角度をCV値としてEEP-ROMに書き出すようにした。
線路電圧が掛かった最初に前回の最終角度を読みだし、コマンドステーションから
送られていくるコマンドと比較して、角度スーイープ処理を入れて初期角度を設定
するようにした。
■わかった事
5V系に電解コンデンサを33uFつけてみたが、電圧降下にあまり効果がなかった。
(三端子レギュレータの供給能力不足)
サーボモータを急変させると電流が多く流れる。
起動時に前回の角度を読み出す方法はうまくいった。
DCS50Kは前回のファンクッションの状態を覚えており、
最初F4=offしばらくして、F4=onを送ってくるので、前回onで終わらせた状態を
EEP-ROMに記録しているのに、一度サーボモータがoffになって、またonになる
動きが見られた(どうしようもない・・・)
■次やる事
パンタグラフステートマシンも同様の処理を加えて動作確認
パンタグラフとサーボモータ間の光ファイバロッドの修理
----
以下の波形は黄色がサーボモータの制御波形、水色がデコーダの5V
サーボモータの角度を急変させた時、2.82Vまで低下しています。
5Vラインに電解コンデンサを足しても、大差ありませんでした。
数百uFくらい積まないとだめなんでしょうね)
多少5Vがドロップしても動くので良しとします?!
プログラムはこんな感じに、サーボモータの制御完了時に現在の角度を書き出す様に
しました。
analogWriter()関数を使っていると、シリアルデバックコマンドの関数がメモリに
入りきらないので外してカット&トライでデバックしていましたが、
中々取れないんで、夕飯以降はw
analogWrite()関数を全部コメントアウトして、シリアルデバックしていました。
※サーボモータの動作がないので、数値だけでデバックする事になります。
ステートマシンで作ってあるので、ステートと現在の角度をシリアル出力させるだけで、
分岐条件とか目に見えるので、すぐバグが見つかります。
間違って、Dcc.setCV(initDeg.nowDeg); と書いていました。
※変数initDegはCV番号では無く、初期角度を格納している変数w
CV_initDegと書く必要がありました。
SmileFunctionDecoder使って、サーボモータ用のスケッチ(プログラム)を
作っているんですね。
■やった事
オシロスコープで5Vラインとサーボモータ制御線を観察
サーボモータの制御終了後、現在の角度をCV値としてEEP-ROMに書き出すようにした。
線路電圧が掛かった最初に前回の最終角度を読みだし、コマンドステーションから
送られていくるコマンドと比較して、角度スーイープ処理を入れて初期角度を設定
するようにした。
■わかった事
5V系に電解コンデンサを33uFつけてみたが、電圧降下にあまり効果がなかった。
(三端子レギュレータの供給能力不足)
サーボモータを急変させると電流が多く流れる。
起動時に前回の角度を読み出す方法はうまくいった。
DCS50Kは前回のファンクッションの状態を覚えており、
最初F4=offしばらくして、F4=onを送ってくるので、前回onで終わらせた状態を
EEP-ROMに記録しているのに、一度サーボモータがoffになって、またonになる
動きが見られた(どうしようもない・・・)
■次やる事
パンタグラフステートマシンも同様の処理を加えて動作確認
パンタグラフとサーボモータ間の光ファイバロッドの修理
----
以下の波形は黄色がサーボモータの制御波形、水色がデコーダの5V
サーボモータの角度を急変させた時、2.82Vまで低下しています。
5Vラインに電解コンデンサを足しても、大差ありませんでした。
数百uFくらい積まないとだめなんでしょうね)
多少5Vがドロップしても動くので良しとします?!
プログラムはこんな感じに、サーボモータの制御完了時に現在の角度を書き出す様に
しました。
analogWriter()関数を使っていると、シリアルデバックコマンドの関数がメモリに
入りきらないので外してカット&トライでデバックしていましたが、
中々取れないんで、夕飯以降はw
analogWrite()関数を全部コメントアウトして、シリアルデバックしていました。
※サーボモータの動作がないので、数値だけでデバックする事になります。
ステートマシンで作ってあるので、ステートと現在の角度をシリアル出力させるだけで、
分岐条件とか目に見えるので、すぐバグが見つかります。
間違って、Dcc.setCV(initDeg.nowDeg); と書いていました。
※変数initDegはCV番号では無く、初期角度を格納している変数w
CV_initDegと書く必要がありました。
PR
ブログ内検索
カテゴリー
最新記事
(12/31)
(12/31)
(12/29)
(12/23)
(12/18)
リンク
プロフィール
HN:
あやのすけ
性別:
非公開