« あれこれ考えてみる(原点を見直してみる...2) | トップページ | RZ1Basic v0.49 公開 »

あれこれ考えてみる(原点を見直してみる...3)

さて、前回のつづきです。

【ゼロ点補正データ】
ゼロ点補正の為のデータは、()内蔵EEPROM(不揮発性メモリー:電源の供給を切っても記録が残るメモリー)の0x0FE0〜0x0FFFの32バイトと、()SRAM(揮発性メモリー)の0x0340〜0x035Fの32バイトがゼロ点補正データが記録されている場所です。()さらに、プログラムは外付けEEPROMに記録されていますが、プログラム中にZEROコマンドで、ゼロ点の設定が書いてあるかもしれません。

まず、内蔵EEPROMや、SRAMに記録されるデータに関してですが、メモリーから値を読込んでみると、以下のような値で記録されています。

01FDFDFD 03000301 03000000 FF00FC00
0000FD01 00000100 FFFFFFFF FFFFFFFF

ゼロ点補正値は、ゼロ点設定の基本姿勢の状態における、それぞれのサーボモーターの値が100で、補正の数値がそのまま記録されるのではなく、100からのズレ量が記録されることになります。
Pagesscreensnapz001

こうすることによって、プログラムのMOVEなどで指定した角度を補正する式は、例えば以下のようになります。

Pagesscreensnapz003

上段が指定角度、下段が補正値ですが、つまり、そのまま足し算をすればOKということですね(※「計算結果が型の範囲外になると」を参照)。ちなみに指定角度/現在角度はSRAMの0x0300〜0x031F/0x0320〜0x033Fに、補正後の角度はSRAMの0x0360〜0x037Fに記録されます。

実際には、さらにDIR設定で反転させているサーボモーターの値を反転させて(100が中心なので、200-角度で計算できる:例、0xC8-0x49=0x7F)、目的の角度としてサーボモーターを動かすことになります。ちなみに、この値はSRAMの0x0380〜0x039Fに記録されています。

次に、あまり用いないんですが、プログラム中にZEROコマンドを書いて、ゼロ点補正値を設定することができます。ゼロ点のデータも、DIRの場合と同じ様に、電源を入れると内蔵EEPROMからSRAMにコピーされ、さらにZEROコマンドで、ゼロ点を指定していると、内蔵EEPROM、SRAMともに、その値に設定されます。

Omnigraffle_proscreensnapz001

ということで、今回はここまで

つづく。。。

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

|

« あれこれ考えてみる(原点を見直してみる...2) | トップページ | RZ1Basic v0.49 公開 »

工作・改造・解析」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: あれこれ考えてみる(原点を見直してみる...3):

« あれこれ考えてみる(原点を見直してみる...2) | トップページ | RZ1Basic v0.49 公開 »