MIRS2009 電子コンパスとの通信プログラム |
MIRS0901-SOFT-0005 |
版数 |
最終更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2009/2/26 |
坂代 |
武藤 |
初版 |
1.目的
2.概要
3.まとめ
1 目的
本ドキュメントは、電子コンパス(HMC6352)とMG3とのシリアル通信を行うプログラムについてまとめたものである。
2 概要
今回用いた電子コンパスHMC6352は、直接シリアル通信をすることはできないので、PICを介し、I2Cを用いてシリアル通信を行った。
それについては別ドキュメントにて説明しているのでここでは割愛する。
使用したポートはS1ポートである
以下に、作成した関数を示す。
ファイル名 |
関数 |
戻り値 |
動作説明 |
|
void
ini_ds() |
|
ファイルディスクリプタのopen・設定変更 HMC6352の初期設定 |
int
ds_get() |
0〜359 |
HMC6352から現在角度を読み取り、16進のchar型データを 10進のint型データに変換 |
|
void
*ds_thread() |
|
グローバル変数に一定周期で現在角度を代入 同時に、周回数をカウント |
また、HMC6352には、周りの磁場の環境をふまえた値を返せるように、最適化を行う機能がついている。
その最適化を行うためのコマンドを送るプログラムを calib.c
に記述した。
3 まとめ
電子コンパスによる角度の取得によって、MG3のモーターが空回りしても角度を正確に知ることができ、非常に役立った。
また、通信速度も比較的速いので、非常に細かいタイムスライスで角度を知ることができた。
関連文書 |