【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

LIS331HH(ST)という加速度センサを使って電子工作をしていますが、初心者でよくわかりません。
詳しい方教えてください。
水平な机の上に基板を置いてデータを取った場合、
x軸=0G、Y軸=0G、Z軸=1Gとなると思うのですが、
実際にデータは16ビットのデータが出力されます。例(z軸=1450hexとかでてきます)
この出力の16ビットデータをZ軸=1Gに変換するにはどのような計算をすれば良いか教えてください。現在の設定値は±6G、50Hzです。分解能は12ビットです。

それから、データシートのSensitivityという項目がよくわかりません。
FS bit set to 0012 bit representationで3mg/digitとあるのですが、
この値から1Gを出そうとしたのですが、うまく計算があいません。
こちらについても教えていただけると嬉しいです。
よろしくお願いいたします。

質問者からの補足コメント

  • へこむわー

    悩んでいるのは、X軸、Y軸、Z軸の出力されているデータの単位が良く分かりません。
    このデータはどのような単位なのでしょうか?
    やりたい事は、出力された16ビットのデータをGの単位のデータに変換したいのです。
    設定は±6G、50Hzです。
    変換式が知りたいです。教えてください。よろしくお願いいたします。

    それから、LIS331HHの分解能は12ビットだと思っていますが、あっていますか?
    自信がないので教えてください。
    なぜ自信がないかと言うと、色々検索すると分解能16ビットと書いてるページがでてくるからです。
    12 bit representationとあるので、12ビットだと思っています。
    データシートの読み方が良く分かりませんのでご指摘頂けると嬉しいです。

      補足日時:2017/05/26 19:15
  • うーん・・・

    同じメーカーのほぼ同じような加速度センサ(LIS3DH)の製作記事があるのですが、
    下記のような記述があります。

    「値は12bitの2の補数なのでプラス側が0から0x7FF(1023.)、
    マイナス側が0xFFF(-1.)から0x800(-1024.)となります。
    ±2gの場合、1024で割ればgが求まります。」

    12ビットの2の補数は理解できますが、
    なぜ?±2gの場合、1024で割ればgが求まるのかが
    良く分かりません。
    また、今回は±6Gですので、その場合はいくつで割ればgが求まるのでしょうか?
    詳しい方教えて頂けると悩みが解決します。
    もしくは参考になるようなサイトなどでも良いです。
    よろしくお願いいたします。

      補足日時:2017/05/26 19:39

A 回答 (4件)

>同じメーカーのほぼ同じような加速度センサ(LIS3DH)の製作記事があるのですが、


>下記のような記述があります。

>「値は12bitの2の補数なのでプラス側が0から0x7FF(1023.)、
>マイナス側が0xFFF(-1.)から0x800(-1024.)となります。
>±2gの場合、1024で割ればgが求まります。」

>12ビットの2の補数は理解できますが、
>なぜ?±2gの場合、1024で割ればgが求まるのかが
>良く分かりません。
>また、今回は±6Gですので、その場合はいくつで割ればgが求まるのでしょうか?
>詳しい方教えて頂けると悩みが解決します。
>もしくは参考になるようなサイトなどでも良いです。
>よろしくお願いいたします。

回答>>12ビットは1024ではなくて4096ですので割るのは4096で割らなくてはなりません。±6Gの場合は4096で割り算します。
    • good
    • 0

>それから、LIS331HHの分解能は12ビットだと思っていますが、あっていますか?


>自信がないので教えてください。
>なぜ自信がないかと言うと、色々検索すると分解能16ビットと書いてるページがでてくるからです。
>12 bit representationとあるので、12ビットだと思っています。
>データシートの読み方が良く分かりませんのでご指摘頂けると嬉しいです。

回答>>分解能は12ビットです。このICはX,Y,Z軸の加速度のデータとしてそれぞれ下位バイトと上位バイトと別々に出力されてます。合計のビット数は8+8=16ビットになりますがデータの有効ニット数は12ビットのようです。9ページのTable 3. の So の項目の条件に 12bit  representation とあります。
    • good
    • 0
この回答へのお礼

詳しい説明をありがとうございました。

お礼日時:2017/05/30 11:25

>そのようにすると3mg/digitの値がでてくると言うことでしょうか?



回答>>はい、この場合は測定された加速度は1Gです。その1Gを測定された2つの値の差で割り算しますので1digitあたりの加速度としてでてきます。
 ですから、データシートの9ページの仕様テーブル Table 3. の So から
  FS bit set to 00の場合は 3mG/digit typ
  FS bit set to 01の場合は 6mG/digit typ
  FS bit set to 11の場合は 12mG/digit typ
 に近い値になるという事です。
尚、出力データおよびデバイス(本IC)の設定はデータシートの23ページ以降に説明されてます。上記FSビットの設定は
 CTRL_REG5(Table15. Register address mapのアドレスが出てます。)を設定します。詳細は27ページの7.4 CTRL_REG4 (23h)にあります。
この中にFS1, FS0の記述がありますのでこれに従って設定します。

出力OUT_X、OUT_Y,OUT_Zのアドレスは23ページのTable15に、またそれぞれの測定結果は29ページの7.9から10ページの7.11までに説明されてます。それによればデータは2の補数形式で記述されてるようです。
    • good
    • 0
この回答へのお礼

詳しい説明をありがとうございます。

お礼日時:2017/05/30 11:24

こちらのデータシート(

http://www.st.com/content/ccc/resource/technical …)の14ページの2.5.1 Sensitivity に説明されてるようにしましたか?
すなわち、
 まずセンサを水平に置いて出力の値をノートします。
 次にセンサを180度回して裏返しにします。そしてまた出力をノートします。
 以上の操作でセンサに±1Gが加わったことになります。
 このノートした2つの測定値を大きな方から小さい方を引き算してその結果を2で割れば実際のセンサーのsensitivity(感度)になる。
このように測定及び計算しましたか?
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。説明の意味がわからなくて質問しました。そのようにすると3mg/digitの値がでてくると言うことでしょうか?
詳しく説明していただきありがとうございます。
出力データ(16ビット)をGに変換するのはどのような計算をすればいいのでしょうか?
水平に置いたときに、Z軸は1Gのはずなので、データが1Gでてるのを計算で確認したいのです。
多分、z、Y、Zは少しずれてると思うので、そのデータを確認してオフセット調整する必要があると思っています。
G変換する計算式を教えていただけると嬉しいです。データシートに書いてあるのでしょうか?

お礼日時:2017/05/26 19:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!