MIRS2009 電子コンパスとの通信プログラム

MIRS0901-SOFT-0005

 

 版数

最終更新日

作成

承認

改訂記事

A01

2009/2/26

坂代

武藤

初版


1.目的

2.概要

3.まとめ


1 目的

 本ドキュメントは、電子コンパス(HMC6352)MG3とのシリアル通信を行うプログラムについてまとめたものである。

 

2 概要

  今回用いた電子コンパスHMC6352は、直接シリアル通信をすることはできないので、PICを介し、I2Cを用いてシリアル通信を行った。

それについては別ドキュメントにて説明しているのでここでは割愛する。

 

使用したポートはS1ポートである

 

 以下に、作成した関数を示す。

 

ファイル名

関数

戻り値

動作説明

 

 

dcom.c

void ini_ds()

 

ファイルディスクリプタのopen・設定変更

HMC6352の初期設定

int ds_get()

0359

HMC6352から現在角度を読み取り、16進のchar型データを

10進のint型データに変換

void *ds_thread()

 

グローバル変数に一定周期で現在角度を代入

同時に、周回数をカウント

 

また、HMC6352には、周りの磁場の環境をふまえた値を返せるように、最適化を行う機能がついている。

その最適化を行うためのコマンドを送るプログラムを calib.c に記述した。

 

3 まとめ

 電子コンパスによる角度の取得によって、MG3のモーターが空回りしても角度を正確に知ることができ、非常に役立った。

また、通信速度も比較的速いので、非常に細かいタイムスライスで角度を知ることができた。


 

関連文書