ラジコンヘリ

E-SKY のラジコンヘリのブログです

全体表示

[ リスト ]

サーボアジャスタ

サーボアジャスタのプログラムのプロトタイプが出来ました。
まだ通信機能が無いので、設定変更のたびにコネクタを抜かなきゃなりません。
機体に搭載するにはとっても面倒で、正直やってられません。
しかし、一応動作する(らしい)し、設定変更が少ない用途には使えそうなので公開します。
たまさんのリクエストも盛り込み済です。

これひとつで、一般に言うサーボストレッチャ、サーボリバーサ、サーボスローの機能があります。
更に、動作範囲制限、センターデッドバンドも設定できます。
また、これらの機能の多くは、各動作方向ごとに別々に設定できます。
入力パルス幅の計測や出力パルス幅の制御は、16bitカウンタ(分解能0.5μsec)を用い、すべてハードウェアで
行っているので正確です。割り込み応答やソフトウェア処理によるジッタ(ゆらぎ)はありません。

将来は通信機能を搭載し、パソコンで設定したり、専用ターミナルで現場設定できるようにするつもりです。
また、「2chを1chにのせて送信する装置」の受信側になる予定です。

ファームウェアのダウンロードはこちら
(ダウンロードしたファイルの最後に「.txt」がついていたら、それを削除してください。)
サーボ動作範囲1.5倍版:SVAJ_b0_15.hex
サーボ動作範囲2.0倍版:SVAJ_b0_20.hex

動作のようす


回路図
イメージ 2

電源は5Vのみ対応。6Vはマイコンの動作保証範囲外。
CN3の配線を除くと、非常に単純な配線です。

製作例
イメージ 1


使い方

§接続
CN1をRC受信機に、CN2をサーボにつなぐ。
CN3はファームウェア書き換えや送信機センター記憶、シリアルコマンド送受信用(予定)。

§設定値の変更
PICkit2などでEEPROMの先頭から並ぶ値を変更する。
将来は、シリアルコマンド(UART 5V)の送受信をサポート予定。
各設定値の並び順は、先頭から、
Trim
DeadBand
Gain_L
Gain_R
Limit_L
Limit_R
Delay_L
Delay_R
Reverse
である
値は、各設定値を16進数で表したものを1バイトで設定する。
Trim設定値のみ符号付(1=0x01,-1=0xFF)、他は符号無し。
なお、アドレス0x20からの2バイトに、送信機センターの値が書き込まれている。

[設定項目]:規定値/設定可能範囲 説明

[Trim]:0/-128%(=0x80)〜127%(=0x7F) センタートリム。送信機のトリムと同じ。
スティックセンターのときのホーンの位置を調整する。

[DeadBand]:0/0%〜255%(=0xFF) センター付近で、送信機からの信号変化にサーボが反応しない範囲を
設定する。

[Gain_L]:150(=0x96)/0%〜255%(=0xFF) ホーンがセンターより左側の時、ノーマルに対する動作角の倍率を
設定する。ストレッチャ(コンプレッサ)機能。

[Gain_R]:150(=0x96)/0%〜255%(=0xFF) ホーンがセンターより右側の時、ノーマルに対する動作角の倍率を
設定する。ストレッチャ(コンプレッサ)機能。

[Limit_L]:150(=0x96)/0%〜255%(=0xFF) 左回転の動作リミット。リンケージの動作限界や、サーボ固有の
動作限界を設定する。これを超える信号が入力されてもホーン位置はここでロックされる。

[Limit_R]:150(=0x96)/0%〜255%(=0xFF) 右回転の動作リミット。

[Delay_L]:0/0〜255(=0xFF) ホーンが左回転する時、規定角度に到達する時間を設定する。
サーボスロー機能。0はサーボの最高速で動き、255(=0xFF)で最低速になる。
ただし、設定値と到達時間の関係は線形ではない。

[Delay_R]:0/0〜255(=0xFF) ホーンが右回転する時、規定角度に到達する時間を設定する。
サーボスロー機能。

※DelayのL/R(左/右)は、他の機能のようにセンターからの振り分けではなく、ホーンの位置によらない
回転方向をさす。

Delayの設定値と回転時間のおよその対応は以下のとおり。
0xFF → 24.0 (sec/60deg)
0xFE → 12.0 (sec/60deg)
0xFD → 8.0 (sec/60deg)
0xFC → 6.0 (sec/60deg)
0xFA → 4.0 (sec/60deg)
0xF8 → 3.0 (sec/60deg)
0xF4 → 2.0 (sec/60deg)
0xF0 → 1.5 (sec/60deg)
0xE8 → 1.0 (sec/60deg)
0xD8 → 0.6 (sec/60deg)
これらの値は、サーボ制御パルスの周期に依存している。上記は20ms周期の場合である。
FF9の場合は、これより10%程度遅いと考えられる。

[Reverse]:0/0,other 設定値がゼロ以外のとき、サーボの動作方向を逆にする。

[送信機センター記憶]:CN3の3(Vss)と5(ICSPCLK)をショートして電源投入すると、その時の送信機センター
を記憶する。正常に記憶できると、Limit位置の左、右、続けてセンターとサーボが動く。

§補足
Gainを変えても、Limitによる動作限界、Trimによるセンター位置、Delayによる動作速度は変化しない。

各設定値は、100% の時ホーン振れ角40度を基準としている。(これはフタバ基準)。つまり、Limit=200% や
Gain=200%は、片側の振れ角が80度となる。
また、フタバFF7で出力パルス幅を調査したところ、エンドポイントやトリム・サブトリムを最大まで使うと、振れ角は150%になる。よって、各サーボメーカーはこの振れ角(150%)までは標準で対応していると考えられる。
右回転/左回転、右側/左側の表記は、フタバのあるサーボの場合である。メーカーやサーボの種類によっては、表記と逆の場合がある。

§用途
FPVのパン・チルト、グライダーのエルロン(特に2サーボ)、スケール機の引込脚やエアブレーキなどに最適。自由度が高いため、多様な用途に使える。

設定値の具体的な変更手順や、応用例は次の記事で。


フー。ドキュメント書くのって疲れる。
見てのとおり回路はメッチャ簡単。PIC12F683とパスコン、コネクタだけです。DIPなら空中配線で出来そうです。CN3を省いて、ICクリップで接続することも出来るでしょう。
現状では、送信機からの電波が途絶えたり、異常な信号を受けた時のエラー処理、強力なノイズを受けた時の万一の誤動作等の対策が一切ありません。このあたりの対策は、あとで盛り込むつもりです。しかし、逆接続等に対する回路保護は将来も予定していません。
もし試してみようという奇特な方がみえましたら、そのあたりを充分ご理解の上お試しください。

質問・要望受付中です。

閉じる コメント(13)

顔アイコン

すごいですねー!。
解説もナレーションがクール。
PIC活用を真似したいところですが、自分としては、C言語が第1関門かな?

2010/2/13(土) 午後 4:44 [ TADA3E ]

顔アイコン

PICの中にEEPROMが内蔵されてるってこと?
PIC使った事無いんで。(^_^;)

にしてもスゲーなー。量産するの?

2010/2/13(土) 午後 7:02 大ちゃん

顔アイコン

第一弾からすげぇ〜!
試してみたい奇特な方ですが、それにしてもタイミング悪い!昨日秋月でポチって今日色々入荷したけど、PIC12F683は一個も買ってない!(泣)
もしかして、名古屋マルツにある?
あれ?!ソースコードは???CopyRightって書いて公開しましょうよ!
でも、やっぱり内部カウンタは16bitがいいですね!
第二弾も楽しみ!

2010/2/13(土) 午後 8:40 [ Y.Mita ]

顔アイコン

訂正!
ソースもHEXも公開せずに、男ジャイロの様に1個¥3,000程度で売ってもいいかも?
ヤフオクで販売して、ラジコン代稼ぎにいいかもね!

2010/2/13(土) 午後 8:52 [ Y.Mita ]

顔アイコン

このサイズでこんなに多機能
スローなんかは引き込み脚にも使えるし


質問です。
デッドバンドでも振れ抑制には十分なんですが大きいPICになればデッドバンドじゃなくてセンター付近が100%以下での作動角で制御
左右20度を越えたあたりから動作角度が100〜150%〜200%と拡張していくなんてことやサーボ1,2にリバースかけて尚、差動とかっていうのも可能なんですか??


あと、
>電波が途絶えたり
これはとりあえずの対策でFS入れておけばいいのですかね??
後の症状は何をしてもだめっぽいし(w

2010/2/14(日) 午前 8:43 [ たま ]

顔アイコン

私も奇特なクチです(笑
これヘッドトラッカーにバッチリですね〜。
PICkit2持ってますが、普通にPCに繋いで
上記の設定してクリックでOKですよね。

あ、何かプログラムするの?
難しい奴・・・(汗

2010/2/15(月) 午前 8:12 hide

顔アイコン

TADA3Eさん
>C言語が第1関門かな?
私もCはあんまり好きではありません。
確かに記述は短くなるんだけど、その分記号によるトリッキーな表現の感じがします。
記述が短くても、展開される機械語が短いわけじゃないし。
アセンブラの方がしっくりくるけど、手間が膨大なんで・・・。

2010/2/15(月) 午後 0:19 [ kom ]

顔アイコン

大さん
>EEPROMが内蔵されてるってこと?
そうだよ。256byteある。10bitA/D、コンパレータ、8bitカウンタ2本、16bitカウンタ1本、PWMコントロールモジュールなんてのも入ってる。
>にしてもスゲーなー。量産するの?
大さんが普段やってることに比べたら、子供の遊びみたいなもんでしょ。
信頼性の要求が桁違いだもんね。
量産の予定はありません。欲しいから作っただけですよ。

じつは、プログラムの中に、16bit×8bit/8bit の演算があるんだけど、最初の掛け算で24bitになるんで、32bitに型変換してました。当然32bitの演算ライブラリがインクルードされちゃうんだけど、そのライブラリがでかい。ま、予想はしてたけど。
16bit×8bit=24bit と 24bit/8bit=16bit の関数を作るか、大さんに何か良いアイデアが無いか聞こうと思ってました。
でも、16bitをオーバーフローしない方法を思いつきました。
コンパイルしたらだいぶ小さくなった(^^)v

2010/2/15(月) 午後 0:21 [ kom ]

顔アイコン

Y.Mitaさん
奇特な方第一号ありがとうございます。
コレが原因で落ちても怒らないでね(;^^A
>名古屋マルツにある?
たぶんある(通販サイトには載ってる)と思うけど、高いよ。
>ソースコードは???
ソースはとても人様に見せられるようなものじゃないです(^^;
Mitaさんにならソースあげても良いけど。
>1個¥3,000程度で・・・
はははっ。自分だったら\3000-じゃぁ買わないなぁ・・・。

>第二弾・・・
コレ(サーボアジャスタ)のシリアル通信版か、例の「2chを1chに乗せて送る装置」(←いちいちめんどくさいので、今後 Channel Compressor と呼ぶことにします)か、どっちを先につくろうかな。

2010/2/15(月) 午後 4:03 [ kom ]

顔アイコン

たまさん
>大きいPICになれば・・・動作角度が100〜150%〜200%と拡張していく
送信機のEXP機能と同じですよね。
そうですね。メモリ容量があって、高速ならできるでしょう。PIC18シリーズのように、掛け算命令があるとずいぶん楽でしょう。
じつはあれから、べき乗の関数を使ってそういうのをプログラムしてみました。が、このマイコンでは、案の定メモリ不足でした(ToT)

>サーボ1,2にリバースかけて尚、差動
各サーボにこのサーボアジャスタをそれぞれ1個つなげばできますよ。
受信機のひとつのチャンネルを分岐して、それぞれ独立して設定できますから。
そういう意味じゃないのかな?

>FS入れておけば・・・?
そうですね。

>後の症状は何をしても
規定範囲外のパルスを受けたら、直前の正常なパルスを出すとか、センターに戻すとかならできます。マイコンの暴走対策は、一定時間内にキャンセルしないとマイコンをリセットする機能があるので、それを使おうと思っています。

2010/2/15(月) 午後 4:28 [ kom ]

顔アイコン

hideさん
おー。奇特な方第2号ありがとうございます。
>バッチリですね〜。
ヘッドトラッカーとエルロン2サーボをターゲットに考えました。サーボスローはおまけです。
>上記の設定してクリックでOKですよね。
プログラム書き込み済みのサーボアジャスタをPICkit2につないで、
コントロール画面で
Program Memory の □Enable のチェックをはずす。
EEPROM Data の □Enable のチェックを入れる。
[Read]をクリック。
で、現在の設定が表示されるので、必要な個所を変更。
[Write]をクリック。
で設定完了です。
この作業の時には、受信機とサーボをはずさなきゃなりません。
↑これがメッチャ面倒(^^;

>何かプログラムするの?難しい奴・・・
いえいえ。ドイツ語のヤツに比べたらどーってことありませんよ。
プログラムは書き込まなきゃならないけど。
なにより、設計者本人に聞けるから楽でしょ(^^)

2010/2/15(月) 午後 4:50 [ kom ]

顔アイコン

>プログラムは書き込まなきゃならないけど。
なにより、設計者本人に聞けるから楽でしょ(^^)
間違いないです(www
過去のどの恋人よりも長く電話しそうでは(wwww


その前にプログラム覚えなきゃね(w
20年以上、前の高級言語(検定)1級じゃ話にならない(www
ちんぷんかんぷんです。

やってみたいのは山々なんですがどっぷりつからないと絶対無理なの知ってるし・・・


それとこれFPVのみならず大戦スケールユーザーおおよろこびですよ
あの差動感がたまりませんからね。

作ってみたい!!うちのNCで基盤いけるかな???
細いミルあるんですけど多分刃先持ってかれるだろうなぁ。

2010/2/15(月) 午後 6:32 [ たま ]

顔アイコン

たまさん
>ちんぷんかんぷん
以前何らかの言語でプログラム組んだ事があるなら、記述が違うだけで考え方は似たようなもんだからいけそうです。同じ手続き型の言語ならね。
たまさんならすぐできそうですけどね。
>うちのNCで基盤いけるかな
私が作った基板では、一番狭いところで0.5mmのパターン間だから、できそうですよ。
片面基板だともうちょっと大きくなっちゃうかも。
まずユニバーサル基板か、空中配線(笑)で試してみてはいかがでしょう。

2010/2/15(月) 午後 11:34 [ kom ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事