Magnetómetro en smartphones — qué es, tipos y principio de funcionamiento

Autor: IT Sectr Publicado: 2026-03-22 Tiempo de lectura: 10 min

Un magnetómetro es un sensor que mide la intensidad del campo magnético terrestre para determinar los puntos cardinales. En los dispositivos móviles, funciona como una brújula digital, proporcionando una precisión de hasta 1–2 grados con una calibración adecuada. Según Bosch Sensortec Application Note, 2024, los MEMS-magnetómetros modernos consumen solo 0.5–2 mA y caben en un encapsulado de 1.5×1.5×0.7 mm.

Puntos clave

  • Magnetómetro — sensor Hall que mide el campo magnético en tres ejes con un rango de ±1300 µT.
  • Brújula digital basada en un magnetómetro requiere calibración — sin ella, el error alcanza 30–40 grados.
  • Android API usa Sensor.TYPE_MAGNETIC_FIELD para acceder a los datos en microteslas (µT).
  • Sensor Fusion combina el magnetómetro con el giroscopio y el acelerómetro para una orientación precisa.
  • Hard Iron y Soft Iron — tipos de distorsiones magnéticas causadas por la carcasa metálica y los altavoces del teléfono.

Qué es un magnetómetro en un smartphone

El magnetómetro en un dispositivo móvil es un sensor de campo magnético de tres ejes basado en el efecto Hall. Mide las proyecciones del vector de inducción magnética en los ejes X, Y y Z. Combinado con un acelerómetro, el magnetómetro determina el azimut — el ángulo entre la dirección norte y el eje del teléfono.

Tipos de magnetómetros en dispositivos móviles

Los smartphones modernos utilizan MEMS-magnetómetros basados en el efecto magnetorresistivo anisótropo (AMR) y el efecto Hall. Los sensores AMR (serie AKM de Asahi Kasei Microdevices) proporcionan una sensibilidad de 0.15 µT/LSB y un rango de ±1200 µT — suficiente para medir el campo terrestre (25–65 µT).

ParámetroValor
TecnologíaAMR / Efecto Hall
Rango±1200 — ±1300 µT
Consumo0.5–2 mA
Tamaño1.5×1.5×0.7 mm
Sensibilidad0.15 µT/LSB

Por qué el magnetómetro es importante para un smartphone

Sin una brújula digital, las aplicaciones de navegación no pueden determinar la dirección del movimiento. Google Maps utiliza el magnetómetro para mostrar la orientación del mapa con respecto a la dirección de la mirada del usuario. Cuando el sensor falla, la aplicación solo muestra la ubicación en el mapa sin la flecha azul de dirección.

Cómo funciona el sensor Hall

El efecto Hall es un fenómeno físico de aparición de una diferencia de potencial en los bordes de una placa conductora cuando se expone a un campo magnético. Los MEMS-magnetómetros utilizan estructuras de película delgada de permalloy (NiFe), cuya resistencia cambia bajo la influencia de un campo magnético externo (efecto AMR).

Estructura del sensor AMR

Cada uno de los tres canales (X, Y, Z) consta de cuatro magnetorresistencias conectadas en un puente de Wheatstone. El campo magnético cambia la resistencia de las resistencias en un 2–3%, que se convierte en voltaje mediante un amplificador diferencial. Un ADC integrado de 16 bits digitaliza la señal a una frecuencia de hasta 100 Hz.

Medición del eje Z

Para medir la componente vertical del campo, se utiliza un concentrador magnético integrado (IMC — Integrated Magnetic Concentrator). Se trata de una estructura de película delgada de NiFe que desvía el campo horizontal hacia el plano vertical, permitiendo que un único puente AMR mida los tres ejes.

En qué se diferencia un magnetómetro de un giroscopio

El magnetómetro determina la orientación con respecto al campo magnético terrestre (referencia absoluta), mientras que un giroscopio solo mide el cambio angular (datos relativos). El giroscopio proporciona datos precisos en intervalos cortos pero acumula error de deriva. El magnetómetro no deriva, pero es susceptible a interferencias magnéticas.

Sensor Fusion con magnetómetro

Android combina datos de tres sensores a través de SensorManager.getRotationMatrix. El magnetómetro se utiliza para corregir la deriva del giroscopio en intervalos largos. Sin magnetómetro, el giroscopio acumula un error de 10–20 grados en 5 minutos. Según Google ARCore (2024), el algoritmo de fusión alcanza una precisión de 1–3 grados con magnetómetro.

kotlin
val accelerometerReading = FloatArray(3)
val magnetometerReading = FloatArray(3)
val rotationMatrix = FloatArray(9)
val orientationAngles = FloatArray(3)

SensorManager.getRotationMatrix(
    rotationMatrix, null,
    accelerometerReading,
    magnetometerReading
)
SensorManager.getOrientation(
    rotationMatrix, orientationAngles
)
// orientationAngles[0] — azimuth en radianes

Distorsiones magnéticas: Hard Iron y Soft Iron

Hard Iron — un campo magnético permanente creado por materiales ferromagnéticos dentro del teléfono: imanes de altavoces, motor de vibración, marco metálico. La distorsión Hard Iron se manifiesta como un desplazamiento constante (bias) en cada eje. Soft Iron — un cambio en la dirección del campo causado por materiales magnéticamente permeables que distorsionan las líneas de campo.

Algoritmo de calibración

El procedimiento estándar de calibración del magnetómetro consiste en rotar el teléfono en forma de ocho (figure-8 pattern). Durante el proceso, el sensor registra puntos en el espacio tridimensional. Sin distorsiones, los puntos se encuentran en una esfera de radio 25–65 µT. Hard Iron desplaza el centro de la esfera, Soft Iron la convierte en un elipsoide. El algoritmo de calibración calcula los parámetros de desplazamiento y escalado.

kotlin
data class CalibrationParams(
    val biasX: Float,
    val biasY: Float,
    val biasZ: Float,
    val scaleX: Float,
    val scaleY: Float,
    val scaleZ: Float
)

fun applySoftIronCorrection(
    raw: FloatArray, p: CalibrationParams
): FloatArray {
    return floatArrayOf(
        (raw[0] - p.biasX) * p.scaleX,
        (raw[1] - p.biasY) * p.scaleY,
        (raw[2] - p.biasZ) * p.scaleZ
    )
}

Corrección de distorsiones por software

El desarrollador puede implementar su propia calibración del magnetómetro recopilando datos mientras el dispositivo se mueve. El algoritmo de ajuste elipsoidal (ellipsoid fitting) encuentra los parámetros de Hard Iron y Soft Iron minimizando la suma de los cuadrados de las desviaciones de la esfera. La biblioteca Apache Commons Math proporciona una implementación de mínimos cuadrados no lineales (Levenberg-Marquardt) para esta tarea — la precisión tras la calibración por software alcanza 0.5 grados.

Recomendaciones para mitigar interferencias

Para minimizar Hard Iron, los fabricantes colocan el magnetómetro en la parte superior del teléfono, lejos del altavoz y el motor de vibración. Los ingenieros de Apple en el iPhone 16 Pro Max (2024) aplicaron un blindaje de lámina de permalloy para el magnetómetro, reduciendo la influencia del altavoz en 4 veces. El Samsung Galaxy S24 Ultra utiliza un circuito de compensación adicional que mide la corriente del altavoz en tiempo real para restar el campo inducido. Las fundas con soportes magnéticos (por ejemplo, en soportes para coche) crean fuertes distorsiones — después de usarlas, el magnetómetro puede mostrar la dirección incorrecta hasta una nueva calibración.

Acceso programático al magnetómetro en Android

Android proporciona dos sensores: TYPE_MAGNETIC_FIELD (datos calibrados en µT) y TYPE_MAGNETIC_FIELD_UNCALIBRATED (datos brutos con estimación de distorsión). Para aplicaciones de navegación, se recomienda usar el sensor calibrado — el sistema aplica automáticamente la calibración integrada basada en el último movimiento en forma de ocho.

Registro y procesamiento

SENSOR_DELAY_NORMAL (200 ms) es suficiente para una brújula, SENSOR_DELAY_FASTEST (0 ms) — solo para aplicaciones de investigación especializadas. Después de recibir los valores, se pueden convertir en azimut mediante getRotationMatrix + getOrientation. Es importante verificar la precisión del sensor a través de event.accuracy — SENSOR_STATUS_UNRELIABLE significa que se necesita calibración.

kotlin
override fun onSensorChanged(event: SensorEvent) {
    if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) {
        val accuracy = event.accuracy
        if (accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
            showCalibrationHint()
            return
        }
        System.arraycopy(event.values, 0,
            magnetometerReading, 0, 3)
    }
}

Aplicaciones del magnetómetro en apps móviles

El magnetómetro no solo se usa para la brújula. Las aplicaciones AR, incluido Pokemon GO, utilizan el magnetómetro para determinar la orientación de la cámara con respecto al mundo real. Sin magnetómetro, ARCore cambia al modo Screen Axis — la orientación se determina solo con el giroscopio, lo que reduce la precisión.

  • Navegación — determinación del azimut de movimiento en Google Maps, Yandex.Maps, MAPS.ME. La precisión de la brújula afecta directamente la calidad de la ruta.
  • Detectores de metales — las aplicaciones para buscar objetos metálicos utilizan el magnetómetro para detectar anomalías del campo magnético.
  • Geofísica y educación — medición del campo magnético para proyectos educativos. El sensor permite estudiar el campo magnético terrestre en las escuelas.
  • VR y video 360 — la orientación de la cabeza en cascos VR se corrige con el magnetómetro para compensar la deriva del giroscopio.

Magnetómetro en navegación automotriz

En los sistemas de navegación automotriz basados en Android Auto, el magnetómetro se utiliza para determinar la dirección del movimiento cuando se pierde la señal GPS en túneles y zonas urbanas densas. En combinación con datos de odometría de las ruedas del automóvil (obtenidos a través de OBD-II), el magnetómetro permite continuar la navegación hasta 5 minutos sin GPS con una precisión de posicionamiento de 10–20 metros. Según Google Maps Engineering Blog (2024), el algoritmo híbrido reduce la pérdida de ruta en cañones urbanos en un 40%.

Magnetómetro en aplicaciones de navegación

Las aplicaciones de navegación utilizan el magnetómetro para determinar el azimut de movimiento — el ángulo entre el norte y el rumbo actual del usuario. En Google Maps, los datos del magnetómetro se combinan con el seguimiento GPS y el historial de movimientos para mostrar la flecha azul de dirección. Cuando se pierde la señal GPS (en túneles, pasos subterráneos), el magnetómetro sigue siendo la única fuente de información de orientación.

Futuro de los magnetómetros

La nueva generación de magnetómetros de 3 ejes con ASIC integrado (BMM350 de Bosch, 2024) consume solo 0.35 mA y admite una frecuencia de hasta 200 Hz. El desarrollo de magnetómetros cuánticos y centros NV en diamante para dispositivos móviles aún no ha salido de la etapa de laboratorio. Se espera que para 2028, la precisión de los magnetómetros móviles alcance 0.01 µT.

Preguntas frecuentes

¿Cómo calibrar el magnetómetro en un teléfono?

Dibuje un ocho con el teléfono en el aire — este es el gesto estándar para calibrar la brújula digital. Si la brújula sigue mostrando incorrectamente, revise la funda: los soportes magnéticos y los elementos metálicos crean fuertes distorsiones Hard Iron.

¿Por qué la brújula del teléfono muestra una dirección incorrecta?

Principales causas: interferencias magnéticas de los altavoces y el motor de vibración del teléfono, falta de calibración después de cambiar la funda, influencia de objetos metálicos cercanos. En interiores con estructuras de hormigón armado, el campo magnético se distorsiona especialmente.

¿Se puede usar el teléfono como detector de metales?

Sí, las aplicaciones detectoras de metales utilizan el magnetómetro integrado para detectar anomalías del campo magnético. Sin embargo, la profundidad de detección no supera los 10–20 cm y el dispositivo no distingue tipos de metales — es más una herramienta educativa.

¿Cuál es la diferencia entre TYPE_MAGNETIC_FIELD y TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD devuelve datos después de la calibración aplicada por el sistema. TYPE_MAGNETIC_FIELD_UNCALIBRATED proporciona valores brutos más una estimación de desplazamiento (bias), lo que permite al desarrollador aplicar su propia calibración.

¿Cómo obtener el azimut a partir de los datos del magnetómetro?

Use SensorManager.getRotationMatrix con los datos del acelerómetro y el magnetómetro, luego getOrientation — el primer elemento del array (azimut) estará en radianes. Para mostrar la brújula, convierta a grados: Math.toDegrees(azimuth).

Resumen

  • Magnetómetro — sensor de campo magnético de tres ejes que funciona como brújula digital en dispositivos móviles.
  • Tecnología AMR basada en el efecto Hall permite medir el campo terrestre con una precisión de 0.15 µT/LSB.
  • Hard Iron y Soft Iron — distorsiones magnéticas causadas por componentes del teléfono que requieren calibración en forma de ocho.
  • Android API proporciona TYPE_MAGNETIC_FIELD y TYPE_MAGNETIC_FIELD_UNCALIBRATED con datos en µT.
  • Sensor Fusion combina magnetómetro con giroscopio y acelerómetro para una orientación precisa (1–3 grados).
  • Aplicaciones incluyen navegación, apps AR, detectores de metales y corrección de deriva del giroscopio en VR.
  • Sensores modernos consumen desde 0.35 mA a 200 Hz con un tamaño de 1.5×1.5 mm.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también