三轴磁场
同时读取 X/Y/Z 三轴数据,适合判断磁场方向和强度变化。
Overview
BMM150 可读取 X、Y、Z 三个方向的磁场数据,常用于电子罗盘、磁场检测、导航辅助和 9 轴姿态系统中的磁力计部分。芯片本体是低压器件;模块是否支持 5V、是否带稳压或电平转换,需要以实物和模块说明为准。
同时读取 X/Y/Z 三轴数据,适合判断磁场方向和强度变化。
客户测试建议先用 I2C,接线少,能先用扫描程序确认地址。
做电子罗盘时必须做磁力计校准,并远离磁铁、电机和铁件。
Wiring
| BMM150 | Arduino UNO / Nano | 说明 |
|---|---|---|
| VCC | 3.3V,或按模块说明接 5V | 5V 支持待确认 |
| GND | GND | 共地 |
| SDA | A4 | I2C 数据 |
| SCL | A5 | I2C 时钟 |
ESP32
| BMM150 | ESP32 | 说明 |
|---|---|---|
| VCC | 3.3V 推荐 | 5V 支持待确认 |
| GND | GND | 共地 |
| SDA | GPIO21 | 常用默认 SDA |
| SCL | GPIO22 | 常用默认 SCL |
Raspberry Pi
| BMM150 | Raspberry Pi 40Pin | 说明 |
|---|---|---|
| VCC | Pin 1 / 3V3 | 推荐 3.3V |
| GND | Pin 6 / GND | 共地 |
| SDA | Pin 3 / GPIO2 | I2C SDA |
| SCL | Pin 5 / GPIO3 | I2C SCL |
I2C Scanner
BMM150 常见地址可能是 0x10、0x11、0x12、0x13。首次使用先扫地址,再按库示例修改初始化地址。
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(115200);
while (!Serial) {}
Serial.println("I2C Scanner");
}
void loop() {
byte count = 0;
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("Found I2C device at 0x");
if (address < 16) Serial.print("0");
Serial.println(address, HEX);
count++;
}
}
if (count == 0) Serial.println("No I2C devices found");
delay(3000);
}
FAQ
检查 VCC/GND、SDA/SCL,确认主控引脚是否正确。模块也可能处于 SPI 模式,或地址/模式脚状态不符合 I2C 要求。
磁力计对环境磁场很敏感。请远离磁铁、电机、喇叭、继电器、铁质支架和大电流导线,必要时做平均滤波。
电子罗盘需要做磁力计校准;倾斜使用还需要加速度计做倾斜补偿。
BMM150 芯片本体不是 5V 器件。模块是否支持 5V 取决于板上是否有稳压/电平转换,当前 U1205 批次待确认,建议先用 3.3V。
不能。I2C 与 SPI 会复用部分引脚,测试前需要确认模块接口模式和所用库的接口配置。
Customer Reply
References