I am using the MAG3110 magnetometer in a data logging compass application. The MAG3110 is reflowed to our custom board and calibrated for hard-iron and soft iron errors. That all works fine and the readings are generally stable for weeks to months. But sometimes, hours to months after the initial calibration, we have found sensors with significant shifts in the hard iron errors. It is possible that some of the MAG3110 sensors have been subjected to strong magnetic fields, but in many cases we are sure that they have not. In an effort to understand what might be going wrong, I am hoping that someone can help with explain how the Automatic Magnetic Sensor Reset works in the MAG3110 (AUTO_MRST_EN, bit 7 in CTRL_REG2 (0x11)).
The data sheet says that auto reset is "Similar to Mag_RST, however, the resets occur automatically before EACH data acquisition."
For the Mag_RST, the datasheet states: "When asserted, initiates a magnetic sensor reset cycle that will restore correct operation after exposure to an excessive magnetic field which exceeds the Full Scale Range (see Table 3) but is less than the Maximum Applied Magnetic Field (see Table 4)." FYI: The value in Table 3 is 1000 uT and the value in Table 4 is 100,000 uT.
The MAG3110 FAQ states that "When exposed to strong magnetic fields, the sensing element may get magnetically contaminated. MAG3110 has a reset mechanism to get rid of the effects of this exposure. It is recommended that CTRL_REG2 bit 7 (AUTO_MRST_EN) be set in the initialization routines of your application before starting to acquire any measurements."
I have several questions and sub-questions:
1). When AUTO_MRST_EN is enabled, does the sensor really reset with EACH measurement? or is it only done when "magnetic contamination" is detected? If the latter, how does it determine that it has been "magnetically contaminated"? What is the threshold? 1000 uT or 2000 uT (1000 uT of field strength plus 1000uT Offset)? Are there any other criteria that trigger an auto-reset?
2) My testing indicates that, when the MAG3110 has deliberately contaminated with a strong magnet, and a manual reset is applied, the raw values do not return to the same values that they had before the strong magnet was applied. I see changes of up to 50%. Is there any guidance for how much the pre and post "reset" values will change? Are all three channels reset? or only the sensors that were determined to be contaminated?
3) Assuming that the AUTO_RESET is only triggered due to a significant event, such as a strong magnet contaminating the sensor, is there any indication that the sensor has been reset? This would be helpful so that the micro will know that the original calibration (pre-reset) is no longer valid.
I know that this part has gone EOL (that is another issue). But I would really appreciate some guidance on this one.