2021年10月20日アーカイブ

デジタルコンパス

| コメント(0)

 最近は9軸で測定しますがシンプルなタイプ。

HMC6352モジュール
 HMC6352モジュール

 すでに生産していないのですが、デッドストック活用なので引っ張り出しました。
 HoneywellのデジタルコンパスであるHMC6352をモジール基板化したもので、ストロベリ=・リナックスから販売されていたものが見つかったのでArduinoでチョチョッと動作の検証をしてみました。
 内蔵のプロセッサで処理しI2Cで磁北の角度を直接数値で得る事ができる便利なデバイスです。
 アナログ出力もありますが通信できればそのまま数値(0〜3599)で処理をできるので今回はアナログ処理は検証していません。

HMC6352検証中
 検証中

 例によってI2C接続のキャラクタ液晶を使って得られた数値を表示してデバイスを検証します。
 得られる数値は地軸の北を示しているのではなく磁北を指しているので、極北との偏角を処理する必要があります。日本では北極点と磁北の差はおよそ-7.2度なので72を引き算してゼロ以下になれば3600を足す事で偏角を補正します。
 HMC6352は古いデバイスですので水平になった状態で使うのが前提です。
 傾いた状態で得られた数値は正確な北を示していません。最近のこの手のデバイスだと傾斜センサーや加速度センサーも内蔵していて、それぞれ3軸の傾き、加速度、方位情報を同時に得られるので傾いていても正確な磁北を算出できるものが一般的でしょう。

 今回ライブラリマネージャでインストールできるHMC6352ライブラリを使ったのですが、見事にハマりました。
 サンプルスケッチではデバイスの測定モードなどが設定されていないため、継続測定モードを初めに設定しないと一度呼び出したあとは初回の値が更新されずにずっと同じ値が読み出される状況でした。
 面倒くさがらずに自分でコマンド操作を一式行うと読み出せたのでライブラリを確認したところ、デバイスの設定は明示的に行わない限り何もしないようになっていました。
 改めてライブラリを使い更新間隔5Hz、継続測定モードに設定を行って読み出しメソッドを呼び出すとちゃんと値が更新されるようになりました。Arduino IDEでのライブラリはソースが見られるので確認できましたがバイナリなライブラリだとお手上げでしたね。

 参考のためにスケッチを公開します。スケッチにはライブラリを使う場合と使わない場合のどちうらでも動作するように両方の記述が含まれています。
【HMC6352スケッチHMC6352.ino】(リンクを右クリックで保存して下さい)