罗姆传感器评估套件(5)地磁传感器BM1422GMV
往期回顾:
罗姆传感器评估套件(2)Sensor Shield的使用和软件平台搭建
传感器介绍
地磁传感器也叫电子罗盘,套件里的地磁传感器型号为BM1422GMV,可以检测3个方向的磁场磁阻。
地磁传感器在智能手机上最大的用处是提供指南针,地图上的方向箭头就是由它的数据提供的。如果手机里没有地磁传感器,地图上只能显示一个点,而没有箭头。
其芯片内部框图如下,3个方向上的磁阻信息被分别采集,通过PGA放大,然后转换为数字信号。
硬件连接
传感器芯片是下图中的U3,和加速度传感器类似,它也是一个有位置的传感器,正面标识了X、Y、Z轴的正方向。如果按图片上的位置放置,向上为X轴正方向,向左为Y轴正方向,垂直纸面(屏幕)朝向读者为Z轴正方向。
这个传感器是I2C接口,工作电压为1.7-2.0V,这里用1.8V。
测试
测试程序:
#include <Wire.h>
#include <BM1422.h>
BM1422 bm1422(BM1422_DEVICE_ADDRESS_0E);
void bm1422_isr(void);
void setup() {
byte rc;
Serial.begin(9600);
while (!Serial);
Wire.begin();
rc = bm1422.init();
if (rc != 0) {
Serial.println(F("BM1422 initialization failed"));
Serial.flush();
}
bm1422.isr_func(0, bm1422_isr);
}
void loop() {
byte rc;
float mag[3];
rc = bm1422.get_val(mag);
if (rc == 0) {
Serial.print(F("BM1422 XDATA="));
Serial.print(mag[0], 3);
Serial.println("[uT]");
Serial.print(F("BM1422 YDATA="));
Serial.print(mag[1], 3);
Serial.println("[uT]");
Serial.print(F("BM1422 ZDATA="));
Serial.print(mag[2], 3);
Serial.println("[uT]");
Serial.println();
}
delay(500);
}
void bm1422_isr(void)
{
bm1422.set_drdy_flg();
}
复制代码
外部永磁体靠近,读数增大: