« ソラマメまいた | トップページ | 冬の作業 »

2018年12月 7日 (金)

GY-273....

秋月電子で購入した地磁気センサが販売終了になっていたので、同じチップが載った地磁気センサGY-273.を中国から輸入した。

Gy273fake

GY-273という型番はまるでジャイロのようだが、モジュールに載っているのはHoneywell HMC5883Lで、いたって普通の地磁気センサである。
ArduinoNanoにI2Cが配線されたブレボを探して、その片隅にテスト回路を組でみた。
が、動かない。
違うモジュールに交換したり、3.3Vを5Vに戻したり、プルアップ抵抗を付けたり、直結したりするがダメ。どうしても動かない。

Arduinoには、I2C_scannerという定番ツールがある。
これを書き込んで、シリアルモニタを起動すると、I2Cにぶら下がっているデバイスの一覧が表示される。

I2C Scanner
Scanning...
I2C device found at address 0x0D  !
I2C device found at address 0x50  !
I2C device found at address 0x51  !
done

この0x50と0x51は一緒に接続しているLPC810だが、この0x0Dというのはなんだ? 誰だお前は。
GY-273を外すと、0x0Dが消える。この0x0Dは確実にGY-273である。
購入したショップの説明でも、I2Cアドレスは0x1eとなっている。
よくわからないが、ソースコード中に記述されているアドレスを0x1eに変更したら、あっさりと動いた。
…ように見えたが、Y-AXISだけが拾えない。なぜだ。

さらに調べたところ、このモジュールはニセモノらしい。
基板にはHMC5883Lとシルク印刷されているが、まったくのウソ。搭載されているのはQMC5883という別のチップである。
地磁気センサとしては使えるが、レジスタマップがまったく異なっている。

//	----------------------------------------
//	HMC5883L
//	----------------------------------------
#define HMC5883L_REG_OUT_X_M          (0x03)
#define HMC5883L_REG_OUT_X_L          (0x04)
#define HMC5883L_REG_OUT_Z_M          (0x05)
#define HMC5883L_REG_OUT_Z_L          (0x06)
#define HMC5883L_REG_OUT_Y_M          (0x07)
#define HMC5883L_REG_OUT_Y_L          (0x08)

//	----------------------------------------
//	QMC5883
//	----------------------------------------
#define	QMC5883_REG_OUT_X_L		(0x00)
#define	QMC5883_REG_OUT_X_M		(0x01)
#define QMC5883_REG_OUT_Y_L (0x02) #define QMC5883_REG_OUT_Y_M (0x03) #define QMC5883_REG_OUT_Z_L (0x04) #define QMC5883_REG_OUT_Z_M (0x05)
手元のGY-273だが、よく観察するとシルク印刷の型番が「GY-273.」となっている。型番になぜかピリオド「.」が付いているんだよねえ。
ソースコードに需要があるとはも思えないが、一応、置いとく。→compassChina.zip
地磁気センサには個体差があるため、0-360度をきちんと出力させるには、
チップごとに補正値を求めるか、キャリブレーションするためのコードが必要なになる。

もしかしたら、秋月電子での取扱いがなくなったのも、これが原因なのか。

« ソラマメまいた | トップページ | 冬の作業 »

電子工作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: GY-273....:

« ソラマメまいた | トップページ | 冬の作業 »