いろいろ調べてるけど、STS3032の回転モードでの絶対位置角度を
読みだす方法がわからない。
なので、仕方ないのでとりあえずは、
止まった時にモードを標準のサーボモードに切り替えて角度を読み出し、
動き出した時には演算で角度を計算していくことにした。
やり方自体は何も難しくない。
EEPROMのロックを解除して、モードを書き換えて、またロックする。
この3行書くだけ 0 が標準サーボモード
st3032.unLockEprom(1);
st3032.writeByte(1, SMS_STS_MODE, 0);
st3032.LockEprom(1);
これでPosition値が読めるので現在の角度位置を読んで・・・
動き始める時その前に 3 の回転モードに戻す。
st3032.unLockEprom(1);
st3032.writeByte(1, SMS_STS_MODE, 3);
st3032.LockEprom(1);
これで気になるのはEEPROMの書き換えなんであまり頻繁にやると
傷むのかな?ってとこ。 説明書にはEEPROMとか出てくるけど実際の
メモリーは何なんだろう。。。
それと、ROM書き換えはやっぱり時間が掛かる。ちゃんと測ってないけど
0.5秒程度?くらいありそう。0.1秒ごとにROMモード書き換え読み出し
やってみたら0.5秒程度ごとにサーボが一瞬止まる。。。
サーボの仕様範囲の負荷でストールさせたりしなければそれで短時間の間は
十分角度はあまり誤差もなく扱えそうな感じ。
STS3032のいいとこはシリアルサーボでよくある
電流、温度、パワー(PWM%)等々の他に、バッテリーの電圧も
測ってくれるところ。 これけっこう便利。
電源、付けっ放しでどんな感じで減ってくのが簡単にモニタ出来ていい。
いろいろモニタしながら動かせるようにしてみたのがこちら。
#シリアルサーボ #STS3032 #回転モード で使う時は角度の読み取りができないようなので止まった時に一瞬標準モードに切り替えて角度を読み取り、また回転モードに戻すってので暫定対策。ROMの書き換えを頻繁にしないような使い方にしないと。https://t.co/yKYaRJw65z#M5stickC #Arduino pic.twitter.com/Ha4IdAvkB0
— しん (@shinichi_nin) 2022年10月9日
保持モードにして回してやろうと力を入れると踏ん張り加減に応じたパワー値が
わかるのも何かと使えそう。
#シリアルサーボ #STS3032 #回転モード で使う時は角度の読み取りができないようなので止まった時に一瞬標準モードに切り替えて角度を読み取り、また回転モードに戻すってので暫定対策。ROMの書き換えを頻繁にしないような使い方にしないと。https://t.co/yKYaRJw65z#M5stickC #Arduino pic.twitter.com/Ha4IdAvkB0
— しん (@shinichi_nin) 2022年10月9日
一旦これで暫定対策ってことで組み込んで動かす方をやってかないと。