ホーム > 製品概要 > EMMA-U0A > サーボ制御 Vol.2

会社概要

・EMMA-U0A(エマ・ユーゼロエー) ソフトウェア

サーボ制御 Vol.2

サーボ制御 Vol.2

 ソフトウェアの構造上、タイミングが異なり、定規のマス目に相当する計測間隔も違うと、かなり複雑なプラグラムを組まなければならない。そうなると、定規のマス目は広くなってしまい、精密なタイミング生成は困難になる。
 CPU単体がもつ拡張機能を使用すれば、かなり楽になるだろう。しかし、拡張機能を発動させるための時間がタイミングの誤差を生む事は、現在、重要視されていない。
 理想値ではなく、実動作上でのアセンブリ言語とその他、高級言語とのタイミング精度の差は、CPUの動作速度から見るならば10倍は超える。勿論アセンブリ言語が優れている。割込みなどのCPU拡張機能を使用しないアセンブリ言語のタイミング精度は、使用するクロック生成器の精度だといっても過言ではない。

 詳しい説明の前に、私が使用したラジコン用サーボモータのコントロール方法について触れようと思う。まず、制御信号はON時間が0.55msから2.55msの間の方形波である。ONの時間にサーボモータの位置が対応、比例している形になっている。勿論OFFの期間についても制約がある。ラジコン用サーボモータ全般において、このOFFの期間は大体15ms程度であり、これを大きく下回る、または上回った場合、軸の位置やその他のスペックについても保証されない。平たく言ってロクな動作をしないという奴だ。要するに、位置データは最大2.55msと15msを足した、17.55ms程度に一回しか更新できないという事だ。これは大体1秒間に57回程度しか位置の更新が出来ないという事で、例えば1秒間に180°動かすと決定した場合、
 180° / 57回 ≒ 3.16°
となり、3.16°ごとにガタガタと移動することになる。イメージは時計の秒針に近い。これを緩和するためにOFFの期間を6msまで減らせるように、EMMA-U0Aのサーボモータは改良されている。これにより、大体1秒間に117回程度のデータ更新が出来るようになっている。
 サーボモータをロボットに組み込んだ際、動いている最中にプルプルと痙攣を起こす現象があるが、データの更新周期が遅い事が一つの要因である事を、上記内容によりある程度、説明されたのではないだろうか。

 制御信号が0.55msから2.55msのON時間と、15ms程度のOFF時間で構成されている事は説明したとおりであるが、実際、サーボモータを制御する上で最低限必要な要素は、ON時間である。このON時間を決められている範囲内で増減する事が直接、サーボモータの位置を決定する事になる。ソフトウェアでこれを生成する方法は、上図のように、まず信号をONにして、0.55msの時間を適当に稼ぐ。その後、設計者が定めた時間ごとにカウントしていく。上図で言えば1~8の数字が振ってあると思うが、この間隔を定めるのである。上図の場合、変化する時間を8等分しているので、定めるべき時間は
 (2.55ms - 0.55ms) / 8等分 = 0.25ms
となる。さて、この間隔ごとに1・2・3・・・とカウントしていくわけであるが、どうこれを利用するかである。ゆくゆく考えてみれば、ON時間とサーボの位置が対応しており、0.55msをサーボ位置の端とすれば、2.55msも反対側の端である。つまり、上図で言う1~8までの数字こそが、サーボの位置に相当するわけである。そこで、カウントしていく数字の利用方法は、
 「移動させたい位置、つまり1~8までのいずれかの数字にカウントがきた場合、信号をOFFにする」
である。
くどい様だがもう一度最初から、説明しよう。
 ○信号をONにして、0.55msという時間を適当に稼ぐ。
 ○その後、設計者の定めた時間ごとに1・2・3・・・と数字をカウントしていく。
 ○定める時間は変化する時間を、何等分にするかで決定される。
 ○カウントしていく過程で、もしサーボモータを留めたい数字(位置に対応している)に
  カウントが来たなら、信号をOFFにする。
という具合である。
 最後に、15ms程度OFFの時間を稼げば一段落つく。これを繰り返せば、サーボモータは任意の位置を保つ事になる。もしくは、この処理を繰り返す過程で、位置に対応する1~8までの数字での中で、信号をOFFにするべき数字を変化させれば、サーボモータの位置が変化していくのである。


ページの先頭へ

Copyright 2009 ROBO Engine Co., Ltd. All Right Reserved.