Estoy usando un magnetómetro de 3 ejes MEMS integrado. Con 'incrustado' quiero decir que estoy usando un dispositivo Android con un magnetómetro. No estoy haciendo el control de bajo nivel por mí mismo, solo estoy recuperando mediciones. Por la información que ya he encontrado, sé que un magnetómetro puede sufrir una desviación de hierro duro y una distorsión de hierro suave. Por lo que entiendo, la desviación de hierro duro está causada por campos magnéticos que tienen una posición constante con respecto al magnetómetro, por ejemplo, otros componentes electrónicos en el mismo dispositivo. Esto haría que la compensación (casi) constante.
El hierro suave hará que la fuerza magnética medida se deforme en una elipse en lugar de un círculo, y es causada por materiales cercanos que no generan un campo magnético por sí mismos, sino que cambian la "dirección" del campo local .
Mi magnetómetro muestra un círculo casi perfecto con una desviación al girar 360 grados mientras se mantiene el dispositivo paralelo al piso (solo me interesa 'guiñada / azimut') y trazar los vectores que representan la 'dirección' magnética medida . Esto, por lo que sé, indicaría un desplazamiento de hierro duro.
Mi problema es que la dirección del vector de compensación parece cambiar aleatoriamente cada vez que ejecuto mi programa, el centro del círculo puede estar en los 4 cuadrantes del plano paralelo al piso y no he descubierto ninguna ¡Consistencia aún!
¿Estoy malinterpretando cómo funcionan las compensaciones de hierro duro, y es normal que pueda cambiar de dirección? Si es así, ¿cuál puede ser la causa de estos cambios?