レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

3軸地磁気センサー

2020年10月04日 | 電子工作

前回前々回で使用したもの以外に秋月電子のお楽しみ袋にはもう一つセンサーが入っていました。



3軸地磁気センサーHMC5883Lです。XYZ3軸の磁力をつかって方位を計算できるデジタルコンパスです。モジュールになっていて、I2C接続でセンサーの値を読み出せます。
コンパスとして使うにはキャリブレーションしないと誤差が大きすぎて実用にはならないようなので、今回はセンサーからの生データを読み出すところまでにしてみます。

データシートによるとセンサーにはレジスタがあり、値をセットすることで動作モードや測定時の周波数などの設定を行えるようです。今回は常に磁気を測定し続けるモードにして、それ以外はデフォルトの値に設定します。(わざわざ設定しなくてもいいみたいですが勉強の為に)

センサーに接続するマイコンはI2Cが簡単に扱えるArduino ProMiniにします。ProMiniにはI2Cのプルアップ抵抗が内蔵されているので外部抵抗が必要なくなります。センサーモジュールは背面にハンダを盛ると2.2kΩでプルアップできるようになっていますが、今回は使用しません。ただしHMC5883Lは3.3V動作なので、5V動作のProMiniにつなぐには電圧のレベル変換を行う必要があります。
センサー値の表示は、前回同様PICベースのLCDを使います。

配線はProMiniとHMC5883LのI2C端子をレベル変換モジュールを通してつなぐだけです。レベル変換モジュールにはこちらでも使用したサンハヤトのロジックレベル変換モジュールMM-TXS01を使いました。



スケッチはこちらです。

HMC5883L.ino

一応、方位角を計算する処理も付け加えてみましたが、センサー値はキャリブレーション+磁気偏角(地域によって異なる)で修正しないと正確ではないのでコメントアウトしてあります。スケッチの表示処理部分はお好みのデバイス向けに書き換えて下さい。

このスケッチを書き込んでセンサーの向きを変えると、確かに出力値が変化していきます。自分の向いている方向がわかるという点ではなかなか面白いセンサーですね。ロボットとか何かメカニカルな動作をするものに組み込んだら、向いている方向の特定に使えそうです。でも、個人的には何かに利用することは無いかもしれません。今のところコンパスも必要ないですし。

以前はヌンチャクコントローラーの加速度センサーくらいしか扱ったことはありませんでしたが、これまで3種類ほどのセンサーを扱ってみて、今後の電子工作の幅が広がりそうな気がします。世の中にはまだ色々なセンサーがあるようなので、何かデバイスを作るときに使えそうなものがあれば活用してみたいですね。



最新の画像もっと見る

コメントを投稿