同じサーボが連続して壊れた
2014年9月2日
2014年9月3日改訂
2014年9月4日改訂
2014年9月11日改訂
2014年9月22日改訂


 デアゴスティーニの週刊ロビですが電源のトラブルを直しましたが。
 実はもうひとつトラブルを抱えていました。

 頭を左右に振るサーボID14が動かなくなっていました。
 首を直した時に気が付いたのですがこのサーボは手や足のサーボと違って動かなくても気が付かない場合があります。
 全く動かないのではなくサーボテスターで確認した所、右45度に移動したままの状態になってしまいます。



 最初はサーボのRAMに変な値が書き込まれているのかと思い、工場出荷の状態に戻したのですが症状は改善されませんでした。

 手持ちの予備のサーボに交換したのですが交換したサーボも全く同じような状態になってしまいました。
 これはおかしいと思ったので今回新しくサーボを購入して調べてみました。


 このサーボの稼働範囲を調べてみました。



 -30°〜45°位です。

 まずテストプログラムを調べてみました。
 テストプログラムはテストプログラムSDカードのtempsdmotion.RM4です。



 最初のポーズで角度0x0000c3、スピードトルク0x0064でサーボを動かしています。
 これは10進数で193、100となり角度19.5°に1秒トルク100%で動かす事になります。
 このサーボの動きでロビは一回だけ頭を左に少し振ります。(ただし頭を上げる動作と同時にやるので分かりにくいです)
 その後のポーズで原点に戻します。

 ちなみにテストプログラのサーボID14に対する補正角度は0°なので実際の位置も19.5°となっていて稼働範囲内に収まっています。

 サーボの移動はメモリ0x0a00に各サーボの移動位置と移動速度が書き込まれる事によって実行されます。
 サーボID14は、最初から28番目の数字が角度、29番目の数字が速度トルクを指定するようです。

 テストプログラムだとサーボID14の動きが分かりずらいので少し変更しました。
 頭を左右に振り続けます。
 以下のファイルダウンロードして解凍後、テスト用SDカードに入れてください。

 tempsdmotion.zip

 なお変更に当たっては必ずオリジナルファイルのバックアップを取っておいてください。
 ロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。


 次にロビのSDカード(ロビのココロ)の初期化プログラムを調べてみました。
 初期化プログラムはmain5_InitFlag確認補完無し_シーン1固定0415_test2.RM4です。



 立ちポーズ正面というポーズですが角度0x000000、スピード0x0009でサーボを動かしています。
 角度は原点にするので0でいいのですがスピードが9で実速度にすると0.09秒となります。
 ほとんどのサーボはスピード0x0064(1秒)で動かしているのにサーボID14とサーボID15だけがこのスピードで動かしているのが気になります。
 この値はこのポーズだけでなく他のポーズでも同じ値(0x0009)か0x0014(20=0.2秒)で動かしています。

 この値はサーボにかけるトルクのパーセンテージを指定しているので9%のトルクで動かす事になり問題ありません。

 実際にサーボに負荷をかけずに初期化プログラムを走らせたのですが素早く動く事はなかったのでこれがサーボを壊す原因ではなさそうです。
 ちなみに起動する前にサーボホーンを動かしておくと起動プログラムではゆっくりと原点に戻します。

 気になるプログラムに「004ん9.RM4」というのがあります。
 これはロビが「ん」と言って首をかしげるプログラムだと思いますがここでサーボID14を-380(-38度)動かしている部分があります。

 サーボID14の原点オフセットは標準のSTARTUP.XMLでは75なので実質-30.5°動かす事になります。
 しかしサーボID14の稼働範囲は-30°〜45°位なので稼働範囲を越えています。

 全部のプログラムを調べた訳ではないのですがこのサーボは稼働範囲が狭いので越えてしまう可能性があります。

 サーボID14の稼働範囲ですがサーボID15(顔を上下)の動きによって変わってくるようです。
 詳しくはこちらの記事を参照してください。


 これ以上サーボが壊れるとまずいのでサーボID14の稼働範囲を小さくしてなるべくサーボに負荷がかからないようにしました。
 STARTUP.XMLに各サーボモータに初期設定を行うためのデータが定義されているところがあります。

 各サーボの設定値の7番目のデータがサーボが動く範囲の最小値で8番目のデータがサーボが動く範囲の最大値でサーボはこの範囲しか動きません。



 サーボの稼働範囲に対してマージン(50)を取って最小値を-250(0xff06)、最大値を350(0x015e)にしました。
 これでプログラムでこの範囲を越えて指定されてもサーボはこの範囲内しか動かなくなります。

 壊れた原因はロビ設定ファイルエディタ のテストためID14の稼働範囲を大きく越えてサーボに負荷をかけ過ぎたせいかも知れませんので、通常に稼働しているロビは大丈夫かもしれません。
 なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。


 ロビ設定ファイルエディタで稼働範囲の下限値と上限値を修正できるようにしました。
 ラジオボタンを「稼働範囲下限値」または「稼働範囲上限値」に切替える事でこれらの値が修正できます。

目次に戻る