忍者ブログ

あやの

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



例の小型サーボモータを使って、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
お名前
タイトル
メール(非公開)
URL
文字色
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
パスワード   コメント編集に必要です
管理人のみ閲覧

ブログ内検索

プロフィール

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