Unusual Spikes in BMI270 Breakout

Hi all,

I’m working on a project using the SparkFun BMI270 IMU and I’m seeing some unusual behavior. I’m trying to perform an Allan Variance analysis to characterize the sensor’s noise, which requires long data recordings.

I’ve configured the IMU as follows:

  • Mode: Performance

  • Accelerometer Range: ±4g

  • Gyroscope Range: ±2000 deg/s

  • Sample Rate: 400 Hz for both accelerometer and gyroscope

During my data recording sessions (each lasting over 3 hours), I’ve noticed frequent, large spikes in the data from the accelerometer. These spikes seem to appear randomly on different axes. I’ve attached two images showing this issue. The first shows significant spikes in the accelerometer’s Z-axis, while the second shows the same behavior in the Y-axis.

I’ve taken great care to minimize environmental vibrations during the recording. I’m wondering if this behavior is typical or if it points to a potential issue with my setup or the sensor itself. Any insights would be greatly appreciated.

Many thanks

Hi @BH199 ,

Are the spikes a single large reading? Or is the peak of each spike surrounded by a few lesser, but also large readings?

If these are single sample / value events, they could be due to bit errors in the I2C data. Check your I2C cable, keep it as short as possible. Check you only have one pair of pull-up resistors connected on the I2C bus.

I hope this helps,
Paul

Hi PaulZC, thanks for your reply.

The spikes are indeed single, large values.

I’m using a 200mm Qwiic cable (show as the below picture) to connect the sensor to my Raspberry Pi. The setup only uses the sensor’s internal pull-up resistors.

Based on your suggestion, I’ll try using a shorter cable to see if it resolves the issue. Besides the cable length, are there any other common factors in a setup like mine that could cause these spikes?

Thanks

Just a thought : maybe check the power supply is strong enough and is causing spikes

Also: is anything else connected to the i2c bus?

I’ll check it, thanks

Only connect one i2c sensor to the Raspberry Pi.

1 Like

Have you been able to test with a different power supply? It does look a bit like brown-out

Thanks again for the suggestions and help!

I’ve performed several tests based on the i2c bit error hypothesis, but the spikes still persist:

  • Cable: change to a much shorter Qwiic cable (50mm).
  • Pull-ups: increase the pull-up strength from 2.2k ohm to 990 ohm.
  • I2C Speed: test slower speeds: 100 kHz, 50 kHz, and 10kHz.

All of these steps failed to eliminate the single, large data spikes.

My current setup uses the Raspberry Pi’s 3.3V rail to power the sensor, with the Pi itself running on the official power supply. Is it possible the noise on the Raspberry Pi’s 3.3V line is the root cause? Would you recommend adding an external decoupling capacitor near the IMU, or should I switch to an entirely separate power supply for it?

That’s certainly worth a shot!

I’ve also seen this from SD card writes…maybe swap to a different one of those to test as well if available

If you have a battery bank to test with that can output at least 27w (most newer phone units with fast charging can do 30w) that might be worth a shot too. Or perhaps also test from a different isolated outlet (in case something else on the breaker circuit is kicking on/off and causing the surges)

Hi, thanks for guidance on power testing.

I tested the sensor by powering it with a battery bank instead of the raspberry pi’s 3.3V rail. The data spikes were significantly reduced in low sample rate (25 Hz). However, the few spikes re-appeared when increasing the sampling rate to 50 Hz and 100 Hz.

What kind of power supply solution would you recommend to directly power this IMU sensor?