|
罗姆传感器评估套件(5)地磁传感器BM1422GMV
[复制链接]
传感器介绍
地磁传感器也叫电子罗盘,套件里的地磁传感器型号为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();
- }
复制代码
外部永磁体靠近,读数增大:
|
|