- ベストアンサー
サーボの誤差のフィードバックと、角度をキープする方法
こんばんは、いつもお世話になっております。 RCサーボモータでロボットを作成しようと思い、PWM制御方式について勉強してみました。PWM制御は、電圧を加えたり、加えなかったりして、サーボを任意の角度にするという方法であると認識しています。 そこで、2つの疑問が出てきました。 1.サーボモータは現在の角度から相対的にどれくらい動かすかを決めるものですよね。では、誤差が発生した場合は、どのようにして正しい位置に戻すのでしょう?サーボには原点というような概念があるのでしょうか? 2.例えば、サーボに棒をつけて、棒を持ち上げるとします。任意の角度まで上がったら電圧をとめますよね?電圧を止めた場合、棒にかかる重力によりサーボが回されてしまうと思うのですが、どのようにしたら任意の角度で固定することができるのでしょう?ちょうど、サーボが固定されるくらいのパルスを与えるのでしょうか?? 申し訳ないのですが初心者なので、専門用語をできるだけ使わないように教えていただけるとありがたいです。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
RC用は良くわかりませんが、サーボモーターには位置検出(速度検出)機構がついているはずです。最も簡単なものではサーボモーターの回転軸に可変抵抗(ボリューム)を取り付け、その抵抗値の変化から現在位置を知るというものでポテンションメーターと呼ばれます。この方式ではアナログ的に回転軸がどの位置にあるかを検出し、目標値と比較しその差が規定値以内なるようにモーターを回転させます。また、抵抗の変化ではなく回転によってパルスを発生するエンコーダーや発電機(パルスジェネレーターなど)を備えそのパルスの数から現在位置を知る方法もあります。この方法では最初に原点位置を決めておき起動時には必ずその位置から始動させ、そこからのパルス数で現在位置を検出します。ほかにも色々な方式があり、用途に応じて使い分けられています。 基本的にサーボモーターでの位置決め精度は位置検出機構の精度とモーターその物の機械的精度によって決まるので、誤差というのはこの部分の工夫で精度を上げるしか方法がないでしょう。同じように位置決めをするモーターとしてステッピングモーター(たとえばプリンターのヘッドの駆動用など、身近なところで数多く使用されています)という物がありますが、こちらは現在の位置を検出する機構をもってしません。ステッピングモーターでは与えられたパルス数によって何度回転するかが決まっているので、起動時に一度原点に戻し必要な位置に動かすのに必要なパス数を加えれば、位置の検出をしなくても必ずその位置移動します。ただし、モータのトルク以上の力がかかって、パルスが加えられても回転が起こらないような状況がおきてしまうと、それ以降の位置決めはすべてくるってしまいます。そこで、規定以上のトルクがかかった時(駆動電流から検出できます。)には原点に復帰し再度位置決めを行う必要があります。 サーボモーターの種類にもよりますが、通電されていない状態である程度のトルクがかかっても位置がずれないようになっているものが多いでしょう。必要に応じてブレーキ機構をもったものもあります。 それからPWMとはパルス・ワイズ・モデュレーションの略で、確かに電流のON・OFFで制御していますが、PWMもWの部分が重要です。ワイズ(Width)とは幅のことで、電流が流れている時間と流れていない時間の幅をコントロールすることによって、一定時間内に流れる電力をコントロールするものです。このようにON時間とOFF時間(ON時間+OFF時間は一定)の比率を変えることをデューティー制御とも呼びます。これはあくまでモーターに加える電力の制御方法で回転数やトルクの決定方法としては有効ですが、位置決めとは直接関係ありません。位置決めはあくまで位置検出機構と目的値の指定との間の差によってなされるものです。
その他の回答 (1)
- Pesuko
- ベストアンサー率30% (2017/6702)
ラジコンの事は知りませんが、多分一緒でしょうから産業用サーボの内容から説明します。 >サーボには原点というような概念があるのでしょうか? 通常電源ONにした時原点移動を行います。 原点移動を行わないものはフィードバックの信号がアブソリュート型(絶対位置)のものです。 通常はインクメンタル型(相対位置)です、したがって電源を入れたとき 現在地がわからないので原点復帰を実行します。 >誤差が発生した場合は、どのようにして正しい位置に戻すのでしょう 誤差とは行き過ぎた場合という事でしょうけど、通常は台形制御、S字制御 等の速度カーブを持った関数で、目的地点の手前で減速して目的地点で停止しますから、行き過ぎることは無いです。 もちろん行き過ぎた場合はバックさせますが。 >任意の角度で固定することができるのでしょう 産業用はモーターのドライバーに停止命令を実行させればドライバーが実行してくれるのです、 ミクロ的に見てモーターを1パルス以内で行ったり来たりさせています。 http://www.nmri.go.jp/eng/khirata/mcon/ch04_03.html http://homepage1.nifty.com/rikiya/software/112servo1.htm http://industrial.panasonic.com/jp/i/25000/fa_pro_acs/fa_pro_acs.html http://www.orientalmotor.co.jp/cgi-bin/WebObjects/OM_Servo/