忍者ブログ

あやの

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

2019/02    01«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  »03
なんとか形になりましたの、パンタグラフ昇降スケッチの紹介します。



例の小型サーボモータを使って、SmileFunctionDecoderの応用例として、
パンタグラフ昇降を想定した、サーボモータを動かしてみました。
ちなみに、プログラム内でこんなパターンを作っておきます。

//panta patern
//Cmd,Time,deg
//O:出力,E:終了
byte upptn[7][3]  = {{'O',0,0},{'O',4,90},{'O',4,70},{'O',4,90},{'4',5,80},{'O',4,90},{'E',0,0}};
byte downptn[5][3] = {{'O',0,80},{'O',4,0},{'O',2,10},{'O',2,0},{'E',0,0}};

動画では、F4は単純に200msで0degから90degを動かしています。
F3がパンタグラフの昇降を模擬させています。




参考にした動画はこれでです。
パンタグラフが架線にあたり、一度跳ね返っている動作を模擬しましたw
下ろすときも、なんとなく跳ね返っている動作を入れました。



ATtin85のPWMは8bitしかないので、細かな角度設定が実は難しいです。
周波数も狙った値にできなくて、キャリアは236Hzです(いいのかな?)
0〜90degの分解能は1.3degです。(中途半端ですね・・・)
なので、サーボモータの移動量はfloatで計算させています。




メモ
Arduino使って、状態遷移を使って動かす場合、一定の時間で駆動される(イベントドリブン)
プログラムを作る場合、状態遷移部分に定期的にアクセスする必要があります。
処理が重くなっていないかを確認するのに、I/Oピンに信号を出力させて、
オシロスコープで波形を確認して周期を確認します。

digitalRead()で読み込んだ値に!を付けて反転させて、digitalWriteで出力させ、



波形でみると、こんな感じにパタパタするので、上記のプログラムの場合、10ms周期でアクセス
される為、ちゃんと動いていることが確認できます。
digitalWriter(O3,!digitalRead(O3)); の組み合わせはちょっと便利です。




シリアルデバックする際に、float内の変数を出力させようと、sprintf を使っていましたが、
ちゃんと表示されず、変だなと思ったらArduinoはdtostrf()を使わないとダメだそうです。
 

拍手[0回]

PR
ちょっと前に購入した、
小型のサーボモータ「HK-5320 Ultra-Micro Digital Servo 1.7g」を取り寄せてみました。
ですが、とりあえず、SmileFunctionDecoderに繋げてみました。

買ってきた時のレビュー
ちなみに、通常は0deg〜90degの範囲で使いますが、実験した所±15degほど余裕がありました。
(0deg〜120degまで行けます)


分度器の左が0deh、上が90degです。


DCCの電源を入れると0degに合わせます。
動画ではその後,F4を記録したコマンドを受信して、90degに変わります。


サーボモータ駆動時は結構電流を消費しているので、5Vラインの落ち込みが
大きいので、キープアライブコンデンサが必要かも。

動画はF4でOn/Offを制御させ、Offで0deg、Onで90degまでサーボモーターが動きます。
CV設定で色々パラメータをもたせました。

#define CV_zeroDeg 60       // 0deg時のPWMの値
#define CV_ninetyDeg 61     // 90deg時のPWMの値
#define CV_onDeg 62         // on時の角度
#define CV_offDeg 63        // off時の角度
#define CV_initDeg 64       // 起動時の角度
#define CV_onSpeed 65       // off->onに移行する時間
#define CV_offSpeed 66      // on->offに移行する時間

この処理入れたら、また8kbyteのメモリをほぼ食い尽くしてしまいました。

onからoffに戻したときに、行き過ぎてしまうので、どっかバグっているかも。

今後の実装予定
・シーケンス(プログラム運転)機能
(パンタグフを上げた時の架線との接触時にビヨンビヨンするギミック等w
・スロットルとの連動した角度設定
 何使うんだw(単に面白そうだからw
・リクエスト、アイディアありましたら、ください。

拍手[0回]

ブログ内検索

プロフィール

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