忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 DCC館 http://1st.geocities.jp/dcc_digital/ DCC2号館 http://dcc.client.jp/

2017/07    06«2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »08
今日も、わけのわからない書き込みです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と書く必要がありました。


拍手[0回]

PR
お名前
タイトル
メール(非公開)
URL
文字色
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
パスワード   コメント編集に必要です
管理人のみ閲覧

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
<< Back  | HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]