HMC6352 ディジタルコンパスモジュールの実験

遠隔操作の際、車体の向きを知ることはとても重要です。 ジャイロセンサーは相対的な向きですので、現在の方位を得るためにコンパスモジュールは搭載したいデバイスです。 また、応答速度や安定性が高ければ、旋回動作にもコンパスを使用することを検討したいと思います。

HMC6352 ディジタルコンパスモジュール

HMC6352 ディジタルコンパスモジュール

HMC6352 ディジタルコンパスモジュールは、磁気の測定値ではなく、方位として出力するデバイスですので、ホスト側の負荷も軽減できそうです。

接続はI2Cですので、4線でOKです。 電源は3.3Vを使用しました。

スレーブアドレスは、21hで認識しています。

i2cdetect_cmp

HMC6352には、計測モードが3種類ありますが、デフォルトのStandbyモードで試してみます。

i2cset -y 1 0x21 0x57        //ウェイクアップ
i2cset -y 1 0x21 0x41        //読み出しコマンド”A”
i2cget -y 1 0x21 0x43 w   //読み出し

あとは、コマンドA、読み出し を、繰り返す毎に数値が得られます。 PHPで、テストスクリプトを作成しました。

<?php
//HMC6352 コンパスモジュール testプログラム

exec("i2cset -y 1 0x21 0x57");		// ウェイクアップ

exec("i2cset -y 1 0x21 0x43");		//キャリブレーション開始
echo "キャリブレーションを実施して下さい。\n";
$input = fgets(STDIN,4096);			//キー入力待ち
exec("i2cset -y 1 0x21 0x45");		//キャリブレーション終了

while (1){
	exec("i2cset -y 1 0x21 0x41");	//読み出しコマンド"A"
	$cmp = exec("i2cget -y 1 0x21 0x43 w");	// 読み込み
	$cmp = hexdec(substr($cmp,-2).substr($cmp,2,2)) / 10;

	printf("方位 %.1f 度\n", $cmp);

	sleep(1);
}
?>

 

キャリブレーション実施待ちのフローは、はじめはなっかたのですが、キャリブレーションを行わないと数値が全く安定しません。 データシートには、2回転を20秒以上実施とあります。 実際には、1回転行えば、ほぼ、安定した計測値が得られますが、サーボや走行用モーターの動作中は数値が不安定になります。

モジュールの取り付け位置を、サーボやモーターから、離す必要がありますね。 絶対方位の取得は魅力なのですが、現状ではモーター動作時に旋回制御センサーとしての役割を担うことは厳しそうです。

 

関連記事

  • 加速度センサーで距離を推定する加速度センサーで距離を推定する ハウスローバーにとって、走行距離の計測は重要な項目です。 最も基本的な方法は、車輪の回転を検知することですが、車輪のスリップや障害物の影響 […]
  • 移動量センサーを実験する移動量センサーを実験する ロボットの移動量測定には、フォトインタラプタなどによる車輪の回転量計測や加速度センサー等によるものなどがありますが、非接触で移動量を検出す […]
  • バッテリーのコンディションを監視するバッテリーのコンディションを監視する バッテリー駆動の機器では、バッテリーパックのコンディションを監視することがとても重要です。 以前から、バッテリーの電圧検出回路は搭載する予 […]
  • ジャイロセンサーの測定プロセスを優先するジャイロセンサーの測定プロセスを優先する ジャイロセンサーを使った旋回制御動作の際、指定した回転角より多く回転する動きを見せることがあります。 ドリフトや振動などの影響もありますが […]
  • 新型シャーシのモックアップを製作新型シャーシのモックアップを製作 制御回路やソフトウェアが一段落してきましたので、そろそろ試作感満載の仮シャーシをやめ、専用シャーシの製作に入りたいと思っています。 まずは […]
  • フォトインタラプタで距離を測定するフォトインタラプタで距離を測定する 加速度センサーによる距離の推定結果が思わしくなかったため、オーソドックスなフォトインタラプタ(フォトリフレクタ)を使用し、距離を測定するこ […]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です