Creative Commons images are CC BY-NC-SA 3.0

SparkFun IMU Breakout - MPU-9250
project on project

Using the MPU9250 to get Real-time Motion Data
by Shubham Paul

Description: The SparkFun MPU-9250 IMU Breakout features the latest 9-axis MEMS sensor from InvenSense. Each of these 9DoF breakouts feature an MPU-9250 with a System in Package (SiP) that combines two chips: the MPU-6500, which contains a 3-axis gyroscope as well as a 3-axis accelerometer, and the AK8963, which features a 3-axis magnetometer. This breakout has been designed to be smaller than some of our other offerings to fit in smaller projects. However, if you plan to use a breadboard, or secure the IMU board to a project with something like epoxy, the mounting holes can be easily snapped off.

To achieve its smaller size, the MPU-9250 Breakout features PTH pins that have been wrapped around the border of the PCB in three rows of three or four. The top row (J1) is all one needs to get the most functionality out of the IMU. These include the I2C and power interface. The second most likely to be used set of PTHs are found along the bottom (J3). This includes the address pin, the interrupt pin, and the IO voltage supply for easy interface with a more modern 1.8V processor. The third, a non-breadboard-compatible row (J2), is used for features like running other I2C devices as slaves to this one. For prototyping with these connections, throw your connections on top as you would with an Arduino Pro Mini or similar product.

The MPU-9250 replaces the popular EOL MPU-9150 and decreases power consumption by 44 percent. According to InvenSense, “Gyro noise performance is 3x better, and compass full-scale range is over 4x better than competitive offerings.” The MPU-9250 uses 16-bit Analog-to-Digital Converters (ADCs) for digitizing all nine axes, making it a very stable 9 Degrees of Freedom board.

Get Started with the MPU-9250 Breakout Guide


  • Digital-output X-, Y-, and Z-axis angular rate sensors (gyroscopes) with a user-programmable full-scale range of ±250, ±500, ±1,000 and ±2,000°/sec and integrated 16-bit ADCs
  • Digital-output triple-axis accelerometer with a programmable full-scale range of ±2g, ±4g, ±8g and ±16g and integrated 16-bit ADCs
  • 3-axis silicon monolithic Hall-effect magnetic sensor with magnetic concentrator
  • Digitally programmable low-pass Gyroscope filter
  • Gyroscope operating current: 3.2mA
  • Accelerometer normal operating current: 450µA
  • Magnetometer normal operating current: 280µA at 8Hz repetition rate
  • VDD supply voltage range of 2.4 – 3.6V
  • Small board design
  • Detachable mounting holes


Recommended Products

Customer Comments

  • Why are the magnetic and accel/gyro sets of axis references not in sync? Is this intentional (or typical)? I guess SW can “fix” that without a problem.

    • I’m not certain why the two sensors in the package don’t have the axes aligned the same, but here is where that difference is documented orientation of axes

  • Was reading some additional documentation on this chip (found using this search: AN-IVS-0002A-00) as well as reading though Kris Winer’s various Q&A. It says the exposed die pad should NOT be soldered to the PCB. Kris refers to this as a big no-no. Is there something I’m missing here, because it looks like your breakout does put paste there for soldering (as well as running traces beneath the device, which also is discouraged)? I am asking because I bought a couple of these and I am having a very hard time calibrating them (wondering if this could be at least part of the issue).

  • Does this board also have a dmp ?

    • The IC has DMP capabilities, but only by loading about 3kB of closed binary firmware onto it each time it’s powered on. Things are changing, but that is a little large for the more common Arduinos. InvenSense’s developer site has code for ARM processors if you need it.

  • What is the best/right logic level converter to connect the IMU to a UNO? :)

  • I hooked up the MPU-9250 SPI pins to a Teensy 3.2, but the WHO-AM-I register is incorrectly returning zero. Does the breakout board need any special treatment, like desoldering one of the jumpers or anything else?

    I prefer SPI because my robot needs a 3 foot CAT-5 cable to the IMU and SPI is less susceptible to noise and it’s way faster than I2C. I’ve done SPI for the LSM6DS3 IMU, but now I need magnetometers too.

    • Agreed, SPI jumper instruction is needed. Sparkfun, please…

      • Ok, after digging through the documentation a bit more, I figured that SJ2 jumper needs to be moved to the opposite side. Now it still didn’t work on my Teensy but then I moved over to an Arduino Due and all is good. I guess I need to understand the brand-spanking new Teensy 3.6 a bit better with its 3 SPI’s…truly amazing piece of hardware, 180MHz!!!

  • I would like to know about the sensors' uniformity. In other words, if I use 2 of these sensors to measure the same movement, how different will the 2 measurements be, compared to each other?

    • Can anyone answer my question please? If not, then could anybody think of a way to connect the IMU to a breadboard WITHOUT soldering it (so that I can check the uniformity of multiple sensors myself, before soldering them)?

      • As for the original question I’m not sure, I’d check out the datasheet for the sensor which should give you an idea of its accuracy. As for connecting them without soldering I personally would use jumper wires and hold them at an angle with a bit of pressure to make sure they don’t move. This does make debugging and things hard since you only have 1 hand free, but for a quick measurement should work fine.

  • I want to measure very small changes in a objects position. tip/tilt. direction etc. But I’m looking at fractions of a degree not large changes for example.
    is one of these appropriate for that type of measurement.? what would be a better choice if not?

    Oh and it would be placed on a large aluminum plate. would that cause interference of any kind

    • You want an Inclinometer

    • Also applies to +MickeyMouse:s question

      MEMS gyros/accelerometers (and probably inclinometers too but IDK) are noisy as hell, even with relatively good kalman filtering you’re unlikely to get repeatability to fractions of degree. rotation around the “Z” axis (assuming gravity eg up<->down is Z) is especially difficult and if you rotate 180deg one way and then back the reading is likely to be off by several degrees (tilts are easier since they can be correlated with accelerometer data).

      All of the above applies to “older generation” IMUs, this one might be significantly better (but probably isn’t, there are inherent limits in MEMS technology and it will never be comparable with proper laser-gyros, but we’re not building space shuttles.)

  • Are those tattoos for real?

  • You misspelled “Gyro” on the silkscreen…

Customer Reviews

3.5 out of 5

Based on 2 ratings:

5 star
4 star
3 star
2 star
1 star

Y-axis accel bad out of the box

Y-axis accel sensitivity only 35% of X and Z right out of the box.

Sorry to hear that, sounds like it may be a borked chip. If you contact our tech support team, they should be able to help you resolve the issue.

Worked great first try using android example

Wow, couldn’t have been easier. Hooked it up to a Teensy, and presto, everything worked! Nice sensor and great price.

Related Tutorials

MPU-9250 Hookup Guide

July 28, 2016

Get up and running with the MPU-9250 9-axis MEMS sensor.