三轴同时测量
不同于普通单轴霍尔开关,MLX90393 可以同时读取 X、Y、Z 三轴磁场值(单位 µT),适合 3D 位置和方向检测。
MLX90393 3-Axis Magnetic Field Sensor
适用于 Arduino / 3D 位置检测 / 角度测量 / 位移传感项目的三轴霍尔传感器资料页。重点说明 I2C 接线、地址配置、Arduino 示例代码和常见排查方法。
参数来自 Melexis MLX90393 公开数据手册和 Adafruit 官方 Arduino 库。不同模块引脚顺序可能不同,实际以板子丝印为准。
淘宝 SKU:R2303
Overview
MLX90393 是 Melexis 公司推出的一款三轴霍尔效应磁场传感器芯片,可以同时测量 X、Y、Z 三个方向的磁场强度。它通过 I2C 或 SPI 与单片机通信,每轴输出 16 位分辨率数据,常用于 3D 位置检测、旋转角度测量、线性位移检测、游戏摇杆、无接触旋钮等应用。
不同于普通单轴霍尔开关,MLX90393 可以同时读取 X、Y、Z 三轴磁场值(单位 µT),适合 3D 位置和方向检测。
常见模块使用 I2C 接口。Arduino UNO/Nano 连接 SDA=A4、SCL=A5,默认 I2C 地址为 0x0C。
芯片本身是低压器件,不能直接接 5V。有些模块自带 LDO 稳压,可接 5V,具体以手中模块丝印为准。
Wiring
自绘无水印示意图。基础测试先接 VCC、GND、SDA、SCL 四根线,能扫到 I2C 地址后再跑例程。
| MLX90393 模块 | Arduino UNO / Nano | 说明 |
|---|---|---|
| VCC / VIN | 3.3V | 芯片工作电压 2.2V~3.6V。若模块自带 LDO,可能支持 5V,以丝印为准。 |
| GND | GND | 必须共地。 |
| SDA | A4 / SDA | I2C 数据线。 |
| SCL | A5 / SCL | I2C 时钟线。 |
| INT / DRDY | 不接 | 可选的数据就绪中断脚,基础测试先不接。 |
| A0 / A1 | 按模块默认 | I2C 地址选择脚。默认 A0=GND、A1=GND,地址为 0x0C。 |
I2C Address
MLX90393 的 I2C 地址由 A0、A1 引脚电平决定。下表中 0 表示接 GND,1 表示接 VDD。
| A1 电平 | A0 电平 | I2C 地址(7-bit) | 备注 |
|---|---|---|---|
| 0 (GND) | 0 (GND) | 0x0C | 默认出厂地址,最常见 |
| 0 (GND) | 1 (VDD) | 0x0D | |
| 1 (VDD) | 0 (GND) | 0x0E | |
| 1 (VDD) | 1 (VDD) | 0x0F |
如果扫不到 I2C 地址,先用 Arduino I2C Scanner 排查接线。Adafruit 库默认使用 0x0C,如果模块地址不同需要在代码里修改。
Arduino Examples
使用 Adafruit MLX90393 官方库,读取三轴磁场数据并通过串口输出。库管理器搜索 Adafruit MLX90393 安装。
库安装:Arduino IDE → 库管理器,搜索 Adafruit MLX90393 并安装。依赖 Adafruit BusIO 和 Adafruit Unified Sensor,IDE 会自动提示安装。
串口:打开串口监视器,波特率设为 115200。
默认地址:MLX90393_I2CADDR_DEFAULT 0x0C。如果模块跳线不同,修改 sensor.begin_I2C(0x0C) 中的地址即可。
/// MLX90393 三轴磁场传感器 Arduino I2C 示例
/// 使用 Adafruit MLX90393 库,读取 X/Y/Z 磁场并通过串口输出
/// 接线:VCC→3.3V, GND→GND, SDA→A4, SCL→A5
#include <Wire.h>
#include <Adafruit_MLX90393.h>
Adafruit_MLX90393 sensor;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Wire.begin();
// 默认 I2C 地址 0x0C,如果模块地址不同请修改
if (!sensor.begin_I2C(MLX90393_I2CADDR_DEFAULT)) {
Serial.println("MLX90393 not found! Check wiring.");
while (1) { delay(10); }
}
Serial.println("MLX90393 ready.");
// 可选:设置增益和分辨率
sensor.setGain(MLX90393_GAIN_1X); // ±50mT 量程
sensor.setResolution(MLX90393_RES_19_0); // XY=19bit, Z=16bit
sensor.setOversampling(MLX90393_OSR_3); // 过采样 3
// 可选:设置滤波器
sensor.setFilter(MLX90393_FILTER_6);
}
void loop() {
float x = 0, y = 0, z = 0;
if (sensor.readData(x, y, z)) {
Serial.print("X: "); Serial.print(x, 4); Serial.print(" uT ");
Serial.print("Y: "); Serial.print(y, 4); Serial.print(" uT ");
Serial.print("Z: "); Serial.print(z, 4); Serial.println(" uT");
} else {
Serial.println("Read failed. Check sensor connection.");
}
delay(200);
}
FAQ
优先检查供电:芯片工作电压 2.2V~3.6V,确认接的是 3.3V 而非 5V。然后检查 SDA=A4、SCL=A5 接线是否牢固。最后用 I2C Scanner 扫一下地址,确认不是 0x0D/0x0E/0x0F。
先拿一块小磁铁靠近传感器,看数值有没有变化。如果完全无变化,检查 I2C 通信是否正常。如果数值抖动大,检查周围是否有电机、继电器、开关电源等强干扰源,并尝试调低增益或增加滤波。
可以。MLX90393 输出三轴磁场值(单位 µT),通过数学换算可以得到磁铁的相对位置或角度。但具体算法(如 atan2、三角定位)需要客户自行实现,不同磁铁和安装方式结果不同,这方面属于应用开发而非模块故障。
不能直接把芯片 VCC 接 5V。Arduino UNO/Nano 板上都有 3.3V 输出脚,接那个即可。如果模块自带 LDO 且丝印标注支持 5V 输入,则可以接 5V,但务必以手里模块实际丝印为准。
MLX90393 同时支持 I2C 和 SPI,具体由模块硬件决定。常见模块默认为 I2C 模式,但部分板子可能通过跳线或焊接选择。如果 I2C 扫不到地址,检查模块是否被焊为 SPI 模式。
Customer Service
客服快速回复参考,确认常见场景再引导客户看对应资料。
References
只放公开可访问链接和官方库入口,不放客户截图、订单信息或聊天隐私。
Datasheet
包含芯片功能、I2C/SPI 接口、寄存器、供电范围、封装和电气特性。
打开 Melexis 官网GitHub
Adafruit 官方 Arduino 库,包含 I2C 和 SPI 基础读取例程,可通过 Arduino IDE 库管理器安装。
查看 GitHubGuide
包含模块介绍、接线说明、Arduino 和 CircuitPython 代码示例、量程和分辨率配置说明。
打开指南