Honeywell HMC6343 breakout heading accuracy

Hi, I think this may be a question for a Honeywell engineer (how do you get in contact with one?) but I’ll start here.

We build oceanographic research instruments (called chipods) that are mounted on moorings in the ocean. We use an HMC6343 compass in each instrument to record the direction of prevailing currents. Since the 0 degree heading output of each unique compass gives a slightly different value when oriented true north, we perform a 360 degree calibration on a stand outdoors (on land) away from any ferrous metal interference.

The attached four plots show the heading output from four different HMC6343 compasses mounted in the same instrument, in an identical setup. The instrument is oriented true north, tilt & roll always near 0, then rotated in 10 degree increments and left for 30 sec to record data. We expect the sampled data points to have a fairly linear step shape given the datasheet heading accuracy of 2 deg, but as you can see the heading output for an actual 10 degree change in orientation results in different values depending on both the unique sensor and the direction it is oriented. In the plot of compass #1, from 0 to 100 degrees a 10 degree change in actual compass orientation corresponds to a 17 degree step size, while around 200 degrees a 10 degree change in actual orientation corresponds to a 7 degree step size.

It appears that the sensors we have are not meeting the heading accuracy specifications in the datasheet. Do you have any feedback about what we may be doing wrong? I am happy to explain more about our setup too. Thanks

we perform a 360 degree calibration on a stand outdoors (on land) away from any ferrous metal interference.

Please describe this method.

State of the art, 3D calibration can reduce or eliminate errors in 9 parameters, and is described in this comprehensive overview: https://thecavepearlproject.org/2015/05 … r-arduino/

Keep in mind that magnetometer calibration can be invalidated by a single steel screw, so for best performance, calibration must be done with the magnetometer in the final mounting.

I should have pointed out the the internal calibration of the HMC6343 allows one to correct only the magnetometer offsets, just 3 of the nine parameters of the full 3D correction, which greatly limits the obtainable accuracy.

The results will be much better if you abandon the built in routines, calibrate both the accelerometer and magnetometer and implement a tilt compensated compass with code. Here is a detailed example of a successful calibration for a difficult case, albeit with a different magnetometer: https://forum.pololu.com/t/correcting-t … eter/14315

Thanks for the suggestions. The results I described were made under the following conditions:

  1. Instrument was configured in final mounting on a graduated compass stand marked with headings indicated 0 to 360 (magnetic N is 0, 360)

  2. orientation was vertical - vertical axis aligned with gravity

  3. 4 separate HMC6343 compass units were successively replaced in the instrument - they just plug into a socket so they can be swapped while keeping all else constant

We would have expected to see the same incremental changes in compass heading for the same 10 degree change in heading as the instrument was rotated on the compass stand. Instead the compass increment varies differently at different angles and for different HMC6343 compass units.

The magnetometer calibration built in to the HMC6343 is quite primitive and incapable of producing the best possible results. Honeywell is at least a decade behind the hobby world. The sensor cost is completely unreasonable as well, an order of magnitude higher than comparable sensors from STMicroelectronics, for example.

That instrument is capable of generating headings accurate to +/- 2 degrees or better, if you use just the raw sensor data, calibrate the sensors yourself and use the much more advanced, open source software to implement a tilt compensated compass.

Yes, our calibration is quite primitive - but should be sufficient for our purposes where there is no tilt or roll occurring. There are no ferrous sources near the magnetometer in the instrument, and again the setup is identical for each of the four magnetometers. The only source of variability should be from the magnetometers themselves, which is what appears to be quite large and out of spec. I don’t understand how a more advanced compass calibration would be necessary or even a solution to the large variation in heading increments we are seeing.

I don’t understand how a more advanced compass calibration would be necessary or even a solution to the large variation in heading increments we are seeing.

You could start the journey by carefully reading the tutorial I referenced in my first response. I have no doubt that proper calibration would completely solve the problem, having implemented it on several different magnetometers. Good luck with your project!