SparkFun Micro Magnetometer - MMC5983MA (Qwiic)

The SparkFun Qwiic Micro MMC5983MA Magnetometer is a micro-sized, 0.75in. by 0.30in. sensor that utilizes the highly sensitive triple-axis magnetometer by MEMSIC. We've attached the magnetometer IC onto an incredibly small Qwiic board form factor that we like to call Qwiic Micro! The MMC5983MA is capable of sensing down to 0.4mG, enabling a heading accuracy of ±0.5°. The Qwiic MMC5983MA IMU communicates over I2C by default utilizing our handy Qwiic Connect System, so no soldering is required to connect it to the rest of your boards.

Saturation is a problem for all mag sensors. The MMC5983MA has built-in degaussing circuitry to clear any residual magnetization. Output rates of 1000Hz, ±8G FSR, and 18-bit resolution make the MMC5983MA a phenomenal magnetic sensor for electronic compass applications.

We've also written a feature complete Arduino library supporting I2C and SPI. Just search "SparkFun MMA5983MA" in the library manager and start measuring within minutes.


The SparkFun Qwiic Connect System is an ecosystem of I2C sensors, actuators, shields and cables that make prototyping faster and less prone to error. All Qwiic-enabled boards use a common 1mm pitch, 4-pin JST connector. This reduces the amount of required PCB space, and polarized connections mean you can’t hook it up wrong.

Qwiic Micro is our smallest I2C-supported board form-factor yet! At only 0.75in. by 0.30in. (or 19.05mm by 7.62mm for metric friends), Qwiic Micro is perfect for projects and applications that have space or weight concerns. With just a single Qwiic connector, Micro boards work great alongside the Qwiic Multiport or at the end of a Qwiic daisy chain.


  • Qwiic Micro Sized Board (0.75in x 0.30in / 19.05mm x 7.62mm)
  • 2.8V to 3.6V supply voltage
  • 1µA power down current
  • Fully integrated 3-axis magnetic sensor
  • Dynamic range and accuracy:
    • ±8G FSR
    • 18bits operation
    • 0.4mG total RMS noise
    • Enables heading accuracy of ±0.5º
  • Max output data rate of 1000Hz
  • On-chip sensitivity compensation
  • On-chip temperature sensor
  • I2C Address: 0x30
  • 1x Horizontal Qwiic Connection Port

SparkFun Micro Magnetometer - MMC5983MA (Qwiic) Product Help and Resources

Qwiic Micro Magnetometer - MMC5983MA Hookup Guide

July 21, 2022

Let's figure out where we're going with the SparkFun Qwiic Micro Magnetometer - MMC5983MA!

Qwiic 9DoF - ISM330DHCX, MMC5983MA Hookup Guide

July 28, 2022

Find all your degrees of freedom with this little Qwiic breakout board combining the ISM330DHCX 6Dof and the MMC5983MA Magnetometer!

IMU Data to Motion: Tutorial for Translating Sensor Data into Real-World Movement

November 3, 2024

Sometimes we want to do more with our data than just watch the values roll by on a screen. In this tutorial, we'll take a look at one way we can translate that data to movement.

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

3 Programming

Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Comments

Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

Customer Reviews

3 out of 5

Based on 4 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

A reliable magnetometer

If you don't have a lot of experience with magnetometers then this is a good one to start with. The provided Arduino codes are pretty useful. You do need to calibrate the magnetometer for the most accurate readings but that's not a big deal if you're motivated. Google 'hard iron' and 'soft iron' magnetometer calibration to get you started on that. There are programs out there that will do the calibration for you. I use these for volcano monitoring of all things, and they've held up well to extreme conditions.

Has yet to provide reliable (understandable) readings

I've purchased many sparkfun devices, and getting this one to work has evaded me for years.

I continually reset my code base to the "factory" docs and attempted to get basic consistent readings that make sense next to my analog compass (within a gross allowance for tolerance beyond specs).

None of the code provided yields values in a meaningful range per the documents. North is not north. 180 degrees rotation does not yield meaningful heading changes. Raw values one day or not the same the next (sensitive to temperature? ok, but then where is the code to set the baseline based on temperature?)

Not knowing much about these types of devices, I'm fully in learn-mode, but none of the docs or comments or anything explains why it has been a total failure.

Is it really that hard to provide a compass that performs in a constrained environment in a consistent way?

This device absolutely does not do that.

For the record, it is connected directly via i2c with nothing else on the board using an ard uno from spark fun. Running "vanilla" recommended library code to generate digital compass readings.

I am open to the possibility I'm missing something, but nothing seems to indicate what that might be. I think it honestly does not work, and given that this is the first review, I have to feel that everyone knows something I do not.

It needs to be calibrated to generate useful numbers https://thecavepearlproject.org/2015/05/22/calibrating-any-compass-or-accelerometer-for-arduino/

Also note that EMF plays a huge role...changing the sensor position/conditions will change the readings

Very easy to use

The sensor is less noisy than some magnetometers I've used. It's very easy to use from a software perspective too.

Bad offsets probably due to manufacturing error

The MMC5983MA sensor requires special low-temperature solder profile. When it is soldered too hot it does not work well. The Sparkfun units exhibit this problem; evaluation units from Memsic work fine. I tried to contact Sparkfun about this but got no response... Best Regards, Dave