Adafruit Triple-axis Magnetometer - MMC5603

by Adafruit

Sense the magnetic fields surrounding us with this handy triple-axis magnetometer (compass) module.

Magnetometers can sense where the strongest magnetic force is coming from, generally used to detect magnetic north, but can also be used for measuring magnetic fields. This sensor tends to be paired with a 6-DoF (degree of freedom) accelerometer/gyroscope to create a 9-DoF inertial measurement unit that can detect its orientation in real-space thanks to Earth's stable magnetic field. It's a great match for the LSM6DSOX from ST!

Adafruit based this breakout on the MMC5603, a great general purpose magnetometer with a very wide range and bot I2C and SPI interfaces. This compact sensor uses I2C to communicate and it's very easy to use. Simply download the library and connect the SCL pin to your I2C clock pin, and SDA pin to your I2C data pin and upload the test program to read out magnetic field data. If you'd like, you can also use SPI to receive data (we just happen to prefer I2C here)

This sensor can sense ranges from ±30 Gauss (±3000uT or ±3mT) with no range-setting required and full 20 bit output up to 1000 Hz rate reading. The range makes it good for reading Earth's magnetic field (which maxes at about 0.6 Gauss) or some basic magnets. It isn't good for very strong rare earth magnets, for that check out the TLV293.

To make life easier so you can focus on your important work, Adafruit have taken the MMC5603 and put it onto a breakout PCB along with support circuitry to let you use this little wonder with 3.3V (Feather/Raspberry Pi) or 5V (Arduino/ Metro328) logic levels. Additionally, since it speaks I2C you can easily connect it up with two wires (plus power and ground!). They've even included SparkFun qwiic compatible STEMMA QT connectors for the I2C bus so you don't even need to solder! Just wire up to your favorite micro and you can use the CircuitPython/Python or Arduino drivers to easily interface with the LIS2MDL and get magnetic measurements ASAP.

It's fully assembled and tested. Comes with a bit of 0.1" standard header in case you want to use it with a breadboard or perfboard. Four 2.5mm (0.1") mounting holes for easy attachment.

Technical Details

  • I2C Address 0x30
  • Monolithic integrated 3-axis AMR magnetic sensor
  • Superior Dynamic Range and Accuracy:
    • ±30 G FSR
    • 20bits operation mode
    • 0.0625mG per LSB resolution
    • 2 mG total RMS noise
    • Enables heading accuracy of 1º
  • Sensor true frequency response up to 1KHz
  • I²C peripheral, fast (≤ 400 KHz) mode
  • Ultra-Small Wafer Level Package 0.8x0.8x0.4 mm
  • On-chip automatic degaussing with built-in SET/RESET function
  • Eliminates thermal variation induced offset error (Null field output)
  • Clears the residual magnetization resulting from strong external fields
  • On-chip sensitivity compensation
  • On-chip temperature sensor