fslashtの日記: [SPYDER08] クモ、手足を得る (1)準備編 8
STATUS: 故障中x2
マイコンでメカを制御しようとするときは、ラジコンのサーボを使うのが一番簡単なようです。
サーボへの信号については、以下のページの解説がわかりやすいです。
ワンチップマイコンPICを用いたRC用サーボモータのコントローラ
15~20ミリ秒間隔でパルス信号を送り、そのパルスの時間でサーボの切れ角が制御できるようです(PWMってこと)。
実際のところどうなのかオシロスコープで測定してみました。
ラジコンは、以前組み立てたスウィフトを利用しました。受信機は、タミヤのTRU-02です。
受信機からステアリング用サーボへの信号をとりだしオシロに繋ぎました。(近藤科学のサーボ延長コードを途中で切断してオシロの接続しています)
オシロのほうは、とても古い機種かつ数年ぶりにひっぱりだしてきたので測定の精度はまったくあてになりませんが、だいたい20ミリ秒弱の間隔でパルスがきているのがわかりました。
パルスの幅は、だいたい1.5ミリ秒くらいかなあ。
送信機のステアリングを回すと、長さが変動します。
ステアリングセンターで1.5ミリ秒くらい。右に回しきると、1.7ミリ秒くらい。左に回しきると、1.3ミリ秒くらい。…と、アナログ的に変化します。※秒数はテキトーな感覚です
マイコンからも同じような信号をだしてやれば、サーボの制御ができそうですね。
ステアリング使っているサーボは、フタバのS-3003という製品です。
詳細な仕様は、ココに載ってました。
「Direction: Counter Clockwise/Pulse Traveling 1520-1900usec」と、あるので、パルス幅を、1.530ミリ秒から1.900ミリ秒の間で変化させればサーボホーンを左右いっぱいにふれるのでしょう。
パルス間隔については特に載ってなかったので、こちらはそんなに厳密じゃなくてもいいのかな。
パルス幅の制御は厳密にやらないといけないけど、タイマー機能でPWM出力を直接だせるので、CPUの負荷なく出来るはず。CPU占有してもいいなら、もっと簡単にできそうだし。
次回は、実際にサーボを制御してみようと思います。
/
ところで、サーボの信号って信号自体はデジタルだけど、値はアナログ(パルス幅の時間)なのね。だからアナログサーボっていうんだ…と、思ったらそうではなくて、デジタルサーボも制御信号は同じらしい。何が違うんだろう?
それにしても20ミリ秒間隔というのは意外と長いと思いました。たったの秒間50サンプルでしょ?
僕がラジコンカーの運転下手なのは、サンプリング間隔が長すぎて僕の繊細な操作についてこれないからに違いない!(絶対違う)
20msで十分 (スコア:1)
# とか言いつつ某ロボは1msだったりするけどね。個人的には無駄だと思うけど。
Re:20msで十分 (スコア:1)
でも信号うけてから動作するまでに(メカ由来の)タイムラグがあるにしても、それが最大20msずれるわけだから困ることもあると思う。
もっとも、一定周期でパルス送らないで、制御したいときにだけパルス送っても実は動いちゃったりするのかなあ。
Re:20msで十分 (スコア:1)
一定期間以上パルスが来ない場合のラジコンサーボの挙動はメーカーによって違います。
(同じメーカーでも製品によって違ったりします)
パルス無し時の挙動はラジコンサーボのモーターをPWM駆動するHブリッジの構成に依存しています。
パルスOFF時にモーターの両端子がオープン状態になるもの、ショート状態になるものの二種類があるようです。(間に抵抗が挟まれるタイプも作れると思うけどみたことないです)
あと、アナログサーボ(入力パルスのデューティ比と出力軸のボリュームによるフィードバックをオペアンプで処理してモーターをPWM駆動するタイプ)では、パルスの間隔(デューティ比ではなく、パルスの立上りの間隔)を変えると、サーボの出力トルクを調整できるらしいです。(5msec〜25msecくらいかな)
ラジコンサーボの制御とか特性については、ぐぐると二足歩行ロボ関連のページがいろいろひっかかるかと
(…なんて「釈迦に説法」な気がしてきた…)
Re:20msで十分 (スコア:1)
実際いろいろと参考にさせてもらってます。ありがたや。
マイコンはやり始めたばかりなので、知らないことだらけですよ~
サーボごとの特性にまで踏み込んで考えたことなんでありませんでしたし。
パルスなし時の挙動とか(制御の場合はショートさせてたほうがブレーキが効くからいいんでしょうね)、パルス幅によるトルク変化とか。いま、つかってるサーボは、S-3003なので使っている人多そう(二足歩行には力不足ぽいですが)。事例さがしてみます。
サーボの制御は今朝、一応動くところまでもっていけました。
ボリュームの抵抗値をADコンバーターで入力して、サーボの角度を決定しています。
操作に追従してサーボが動くのは楽しい。ディーティ比は適当なので、振り切りすぎるとサーボがギギギと悲鳴をあげます(ぉ
今困っているのは、サーボが安定しないことです。
ボリュームから手をはなして、角度を一定値にしているのに、小刻みにサーボがガクガク震えて安定しません。
ノイズか、ギアがどこか欠けたか、はたまたPWMが安定していないか。帰宅したら再調査しなくては。
Re:20msで十分 (スコア:1)
(ゴーレムくんの腕に使ってます)
サーボががくがく震えるのはパルスのデューティ比が微妙に振動してたりすると起きます。
割り込みでパルスを生成するタイプのプログラムで、割り込み時のタイムラグが一定にならない場合とか(CPU自体の制約で)
交換用ギアは「スーパーラジコン」で売ってます。(300円くらいだったか)
サーボ自体が1300円くらいで手に入るので悩みますけど。
Re:20msで十分 (スコア:1)
マイコンに繋ぐ前に普通にラジコンの受信機に繋いで動かしたときは政情に動いていたので、制御信号のパルスが原因かもしれないですね。
たしかに、ボリュームからADコンバートしたのをそのままつかっているので、常に微妙に変動しているかもしれません。
あと、デューティ比の変更はタイマー周期と非同期に、ADCからデータが取れ次第逐次おこなっているのでこれが影響しているかも・・・
この辺を重点的にしらべてみます。
サーボのギアはサーキットでクラッシュしたときに一度欠いちゃったことがあります。そのときは一緒にいった友人(RC暦長い)に直してもらったのですが、自分でできるかな。いずれ必要になりそうなのでギアは買っておきます。
Re:20msで十分 (スコア:1)
いつもHIYOKO家さんに行く時、どんな「おみせなんだろうねぇ」なんて話してたりなかったりw
今度のぞいてみよっと。
# おっとオフレスでしたぁ
-- ラテール部参加者募集中
Re:20msで十分 (スコア:1)
モデルガンやプラモデルもあります。
あとアキバ近辺のラジコンやさんでは、ラジコン天国 [rajiten.com]。
ひよこ家さんの目の前にも飛行機を中心としたラジコンやさんがありますね(気になるけど入ったことない)