MPU9250 Gyro Noise

One thing that bugs me about the data sheet for the MPU9250 (all of the MPU devices are the same) is that there is precious little data on the performance of the Digital Low Pass Filter (DLPF) that can be used to filter noise out of the sensor data. All it tells you is a bandwidth and a delay. Since Invensense wasn't telling and Google didn't turn up anything, it was time to look at the filter performance.

Since there is a lot of random noise in the data that will work just fine for characterizing the filter performance.

DLPF Disabled

There are two settings where the DLPF is disabled. One with a 32KHz sample rate and one with 8KHz. First the 32KSPS setting with a notional bandwidth of 8,800Hz.

gyro noise spectrum at 32KSPS

There is a large (~20dB) spike at about 3KHz and no evidence of a rolloff above 8,800 Hz. It may be that the sensor response decreases above that frequency but the noise certainly does not.

Then at 8KSPS.

noise spectrum at 8KSPS

The overall noise level has decreased but it still has that big peak at 3KHz.

DLPF Enabled

So how much does the DLPF help? Some but not as much as you would like. First a look at the 32KSPS data with the DLPF set for a claimed bandwidth of 3,600 Hz.

noise spectrum at 32KSPS with DLPF

There are deep nulls at 8KHz and 16KHz but the peak at 3KHz is still there and the attenuation above 8KHz isn't spectacular. A 4 point moving average filter would look like that. Not very impressive performance and not a lot of attenuation above fs/2.

Then at 8KSPS with the DLPF. Bandwidth is supposed to be 250Hz.

noise spectrum at 8KSPS with 250Hz DLPF setting

The only DLPF setting at this sample rate is 250Hz and this seems to be second order although it doesn't maintain that slope all the way to fs/2. That might be due to the increasing noise above 2KHz. There are no nulls so this is not the same type of filter that was used at 32KSPS.

The only sample rate with a wide selection of DLPF settings is 1KSPS. I will only show data for two of those settings: 10Hz and 41Hz.

gyro noise spectrum at 1KSPS and 10Hz bandwidth

gyro noise spectrum at 1KSPS and 41Hz bandwidth

These DLPF settings are perhaps usable with a 1KHz sample rate but the attenuation at fs/2 is still very modest since it has what looks like a first order slope of 20dB/decade. You would think that with that spiffy motion processor on board Invensense could have coded up a filter with better performance.

It would be nice if the details for that motion processor were available so that custom code could be written for it. As it is the only thing you can do is upload the binary blob that Invensense provides.