物理の小道


日本橋だより 〜現況報告と雑感〜

日本橋便りで伝えて欲しい内容がありましたら、希望テーマ(情報)を掲示板、メールなどで管理人までお知らせください。
出来る限り要望に答えたいと思います。(日本橋行きは毎月1回以上を考えていますので急な質問には答えかねますが)
随時、日本橋とは縁もゆかりもないテーマが時々登場しますが、お許しください。管理人の趣味的な内容の特集です。


2004/10/18 ロボット研究  第5回 (日本橋だより 旧第37回)

    〜 「2軸(X-Y)加速度計」の詳細報告 〜


「2軸(X-Y)加速度計のコントロール法

 キットに同梱の動作テスト用ソフトを使って、加速度計が正常に働いていることを確認できた。 この加速度計を自分の装置に組み込んで使用するためには、加速度計をコントロールするソフトを記述する必要がある。 そこでこの加速度計をコントロールするためのインタフェース規格を調べてみた。

入出力インタフェース規格詳細

 入出力の物理インタフェース規格は「RS232C」で 「通信速度:9600ビット/秒、データ長:8ビット、パリティ:無、ストップビット:1ビット」 の無手順のフォーマットだ。 また、データ形式は加速度測定開始命令は、パソコン側から、文字「G」(アスキーコード47H)をRS232C経由で送ると、 この加速度計が加速度を測定し、測定データとして「4バイトの2進数データ」を送り返してくる。 送り返された測定データの形式は、始めの2バイトがX軸方向のデューティ比×10000したもの、 次の2バイトがY軸方向のデューティ比×10000したものとなっている。 なお、X軸、Y軸共に1バイト目が上位バイト、2バイト目が下位バイトになる16ビットデータである。

加速度への変換方法

 測定された2バイトデータをデューティ比(実数型)にし、その値を x (実数型変数)とする。  加速度を y とすると、デューティ比から加速度に変換するには、次の関係式を使えばよい。
  y = ( x - 0.5 ) * 8.0
簡単な操作で加速度に変換が可能だ。

測定データから加速度(実数型数値)にプログラミングの流れ

 説明するためにBASICを使ってプログラミングしてみよう。 送られてきた測定データ(X軸データ)を1バイト目を C1$、2バイト目を C2$ としよう(共に文字型変数)。
まず、整数型に変換するには X0=ASC(C1$)*256+ASC(C2$) とすればよい。 デューティ比を R(実数型数値)とすると、デューティ比に変換するには R=X0/10000.0 でよい。 加速度を G(実数型変数)とすると、デューティ比から加速度に変換するには G=(R-0.5)*8.0 でよい。

C言語を使ってのプログラム例

 加速度計から送られてくる2バイトデータから加速度数値に変換する関数をC言語を使ってプログラムしてみると次のようなプログラムになる。


double ByteData2Gvalue(char c1,c2)
{
    double r,g;

    r = ( c1 * 256 + c2 ) / 10000.0;
    g = ( r - 0.5 ) * 8.0;
    return g;
}

 難しくなるが最適化したプログラムに書き換えて見ると次のように短いプログラムになる。

double ByteData2Gvalue(char c1,c2)
{
    return ( (((c1<<8 + c2 ) / 10000.0) - 0.5 )*8 );
}

2004/10/18 管理人(志)

   → サイトトップへ  へ

このページは、2004/01/26 に始まりました。