日本橋便りで伝えて欲しい内容がありましたら、希望テーマ(情報)を掲示板、メールなどで管理人までお知らせください。
出来る限り要望に答えたいと思います。(日本橋行きは毎月1回以上を考えていますので急な質問には答えかねますが)
随時、日本橋とは縁もゆかりもないテーマが時々登場しますが、お許しください。管理人の趣味的な内容の特集です。
キットに同梱の動作テスト用ソフトを使って、加速度計が正常に働いていることを確認できた。 この加速度計を自分の装置に組み込んで使用するためには、加速度計をコントロールするソフトを記述する必要がある。 そこでこの加速度計をコントロールするためのインタフェース規格を調べてみた。
入出力の物理インタフェース規格は「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 でよい。
加速度計から送られてくる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/01/26 に始まりました。