Erratic BMM150

Hi,



I recently picked up a Grove compass, the Bosch BMM150 based one, V2



The output is very erratic.



I can do a very similar repeated calibration routines of 10s, but get very different offsets each time, despite me trying to keep the motion of the fig-8 the same each time.



And then on every run, a completely still device out in the garden returns readings that swing wildly plus or minus 10degrees.



Pretty unusable for me really.



Does anyone have better results? Could I have a faulty unit?



Any help would be appreciated.



Thanks



Rob

Hello,

Shocks within 10 are acceptable. If you need a stable result. have you tried calibration by averaging?

Bumping this thread up, I have the same experience with this module. When holding horizontal without moving (fixed 180°) reading vary between 172.53 and 188.39°. Added is the plot of the raw X and Y values. X varies between -9 and +8 (average 0.2), Y between -64 and -51 (average -58.2), with 720 data point taken.
bmm150-xy

1/2

2/2

The unit seems reasonably well calibrated with the scatter plot of several 360° turns almost centered around 0. The Y value is off by some 10 units, but I’ve seen worse, so this is acceptable for now.
bmm150-scatter

I’ve also tested a Grove HCM5887L and that unit doesn’t display this kind of wobbly reading at all (calibrated or not calibrated). Any magnetometer expert who can add his insights to this thread? Cheers --Hans

This is a great image. How did you get it? @Hansfong

You print out the raw readings on the serial monitor and save them to file (I don’t know if the Arduino IDE can do this natively, but the IDE I’m using can). Then import the data in to LibreOffice Calc and use the graph function to either make a line graph or a scatter plot. It’s not very refined, but it works and it’s quick. GNUplot will probably do a nicer job.