Magnetômetro em smartphones — o que é, tipos e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-03-22 Tempo de leitura: 10 min

Um magnetômetro é um sensor que mede a intensidade do campo magnético da Terra para determinar os pontos cardeais. Em dispositivos móveis, funciona como uma bússola digital, fornecendo precisão de até 1–2 graus com calibração adequada. De acordo com Bosch Sensortec Application Note, 2024, os MEMS-magnetômetros modernos consomem apenas 0.5–2 mA e cabem em um pacote de 1.5×1.5×0.7 mm.

Principais conclusões

  • Magnetômetro — sensor Hall que mede o campo magnético em três eixos com uma faixa de ±1300 µT.
  • Bússola digital baseada em magnetômetro requer calibração — sem ela, o erro atinge 30–40 graus.
  • Android API usa Sensor.TYPE_MAGNETIC_FIELD para acessar dados em microteslas (µT).
  • Sensor Fusion combina magnetômetro com giroscópio e acelerômetro para orientação precisa.
  • Hard Iron e Soft Iron — tipos de distorções magnéticas causadas pela carcaça metálica e alto-falantes do telefone.

O que é um magnetômetro em um smartphone

O magnetômetro em um dispositivo móvel é um sensor de campo magnético de três eixos baseado no efeito Hall. Ele mede as projeções do vetor de indução magnética nos eixos X, Y e Z. Combinado com um acelerômetro, o magnetômetro determina o azimute — o ângulo entre a direção norte e o eixo do telefone.

Tipos de magnetômetros em dispositivos móveis

Os smartphones modernos usam MEMS-magnetômetros baseados no efeito magnetorresistivo anisotrópico (AMR) e no efeito Hall. Os sensores AMR (série AKM da Asahi Kasei Microdevices) fornecem sensibilidade de 0.15 µT/LSB e uma faixa de ±1200 µT — suficiente para medir o campo da Terra (25–65 µT).

ParâmetroValor
TecnologiaAMR / Efeito Hall
Faixa±1200 — ±1300 µT
Consumo0.5–2 mA
Tamanho1.5×1.5×0.7 mm
Sensibilidade0.15 µT/LSB

Por que o magnetômetro é importante para um smartphone

Sem uma bússola digital, os aplicativos de navegação não conseguem determinar a direção do movimento. O Google Maps usa o magnetômetro para exibir a orientação do mapa em relação à direção do olhar do usuário. Quando o sensor falha, o aplicativo mostra apenas a localização no mapa sem a seta azul de direção.

Como funciona o sensor Hall

O efeito Hall é um fenômeno físico de aparecimento de uma diferença de potencial nas bordas de uma placa condutora quando exposta a um campo magnético. Os MEMS-magnetômetros usam estruturas de filme fino de permalloy (NiFe), cuja resistência muda sob a influência de um campo magnético externo (efeito AMR).

Estrutura do sensor AMR

Cada um dos três canais (X, Y, Z) consiste em quatro magnetorresistores conectados em uma ponte de Wheatstone. O campo magnético altera a resistência dos resistores em 2–3%, que é convertida em tensão por um amplificador diferencial. Um ADC integrado de 16 bits digitaliza o sinal em uma frequência de até 100 Hz.

Medição do eixo Z

Para medir o componente vertical do campo, um concentrador magnético integrado (IMC) é usado. Esta é uma estrutura de filme fino de NiFe que desvia o campo horizontal para o plano vertical, permitindo que uma única ponte AMR meça todos os três eixos.

Como um magnetômetro difere de um giroscópio

O magnetômetro determina a orientação em relação ao campo magnético da Terra (referência absoluta), enquanto um giroscópio mede apenas a mudança angular (dados relativos). O giroscópio fornece dados precisos em intervalos curtos, mas acumula erro de deriva. O magnetômetro não deriva, mas é suscetível a interferências magnéticas.

Sensor Fusion com magnetômetro

O Android combina dados de três sensores através do SensorManager.getRotationMatrix. O magnetômetro é usado para corrigir a deriva do giroscópio em intervalos longos. Sem um magnetômetro, o giroscópio acumula um erro de 10–20 graus em 5 minutos. De acordo com o Google ARCore (2024), o algoritmo de fusão atinge precisão de 1–3 graus com um 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] — azimute em radianos

Distorções magnéticas: Hard Iron e Soft Iron

Hard Iron — um campo magnético permanente criado por materiais ferromagnéticos dentro do telefone: ímãs de alto-falantes, motor de vibração, estrutura metálica. A distorção Hard Iron aparece como um deslocamento constante (bias) em cada eixo. Soft Iron — uma mudança na direção do campo causada por materiais magneticamente permeáveis que distorcem as linhas de campo.

Algoritmo de calibração

O procedimento padrão de calibração do magnetômetro é girar o telefone em forma de oito. Durante o processo, o sensor registra pontos no espaço tridimensional. Sem distorções, os pontos estão em uma esfera de raio 25–65 µT. O Hard Iron desloca o centro da esfera, o Soft Iron a transforma em um elipsoide. O algoritmo de calibração calcula os parâmetros de deslocamento e escala.

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
    )
}

Correção de distorção por software

O desenvolvedor pode implementar sua própria calibração do magnetômetro coletando dados enquanto o dispositivo se move. O algoritmo de ajuste elipsoidal (ellipsoid fitting) encontra os parâmetros de Hard Iron e Soft Iron minimizando a soma dos quadrados dos desvios da esfera. A biblioteca Apache Commons Math fornece uma implementação de mínimos quadrados não lineares (Levenberg-Marquardt) para esta tarefa — a precisão após a calibração por software atinge 0.5 graus.

Recomendações para mitigação de interferência

Para minimizar o Hard Iron, os fabricantes colocam o magnetômetro na parte superior do telefone, longe do alto-falante e do motor de vibração. Engenheiros da Apple no iPhone 16 Pro Max (2024) usaram blindagem de folha de permalloy para o magnetômetro, reduzindo a influência do alto-falante em 4 vezes. O Samsung Galaxy S24 Ultra usa um circuito de compensação adicional que mede a corrente do alto-falante em tempo real para subtrair o campo induzido. Capas com suportes magnéticos (por exemplo, em suportes de carro) criam fortes distorções — após o uso, o magnetômetro pode mostrar a direção errada até a recalibração.

Acesso programático ao magnetômetro no Android

O Android fornece dois sensores: TYPE_MAGNETIC_FIELD (dados calibrados em µT) e TYPE_MAGNETIC_FIELD_UNCALIBRATED (dados brutos com estimativa de distorção). Para aplicativos de navegação, é recomendável usar o sensor calibrado — o sistema aplica automaticamente a calibração integrada com base no último movimento em forma de oito.

Registro e processamento

SENSOR_DELAY_NORMAL (200 ms) é suficiente para uma bússola, SENSOR_DELAY_FASTEST (0 ms) — apenas para aplicações de pesquisa especializadas. Depois de receber os valores, você pode convertê-los em azimute via getRotationMatrix + getOrientation. É importante verificar a precisão do sensor através de event.accuracy — SENSOR_STATUS_UNRELIABLE significa que a calibração é necessária.

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)
    }
}

Aplicações do magnetômetro em aplicativos móveis

O magnetômetro não é usado apenas para a bússola. Aplicativos AR, incluindo Pokemon GO, usam o magnetômetro para determinar a orientação da câmera em relação ao mundo real. Sem um magnetômetro, o ARCore muda para o modo Screen Axis — a orientação é determinada apenas pelo giroscópio, o que reduz a precisão.

  • Navegação — determinação do azimute de movimento no Google Maps, Yandex.Maps, MAPS.ME. A precisão da bússola afeta diretamente a qualidade da rota.
  • Detectores de metais — aplicativos para encontrar objetos metálicos usam o magnetômetro para detectar anomalias do campo magnético.
  • Geofísica e educação — medição do campo magnético para projetos educacionais. O sensor permite estudar o campo magnético da Terra nas escolas.
  • VR e vídeo 360 — a orientação da cabeça em headsets VR é corrigida pelo magnetômetro para compensar a deriva do giroscópio.

Magnetômetro na navegação automotiva

Em sistemas de navegação automotiva baseados no Android Auto, o magnetômetro é usado para determinar a direção do movimento quando o sinal GPS é perdido em túneis e áreas urbanas densas. Em combinação com dados de odometria das rodas do carro (obtidos via OBD-II), o magnetômetro permite continuar a navegação por até 5 minutos sem GPS com precisão de posicionamento de 10–20 metros. De acordo com o Google Maps Engineering Blog (2024), o algoritmo híbrido reduz a perda de rota em cânions urbanos em 40%.

Magnetômetro em aplicativos de navegação

Os aplicativos de navegação usam o magnetômetro para determinar o azimute do movimento — o ângulo entre o norte e o rumo atual do usuário. No Google Maps, os dados do magnetômetro são combinados com a trilha GPS e o histórico de movimentos para exibir a seta azul de direção. Quando o sinal GPS é perdido (em túneis, passagens subterrâneas), o magnetômetro permanece a única fonte de informação de orientação.

Futuro dos magnetômetros

A nova geração de magnetômetros de 3 eixos com ASIC integrado (BMM350 da Bosch, 2024) consome apenas 0.35 mA e suporta até 200 Hz. O desenvolvimento de magnetômetros quânticos e centros NV em diamante para dispositivos móveis ainda não saiu da fase de laboratório. Espera-se que até 2028, a precisão dos magnetômetros móveis atinja 0.01 µT.

Perguntas frequentes

Como calibrar o magnetômetro no telefone?

Desenhe um oito com o telefone no ar — este é o gesto padrão para calibrar a bússola digital. Se a bússola ainda mostrar incorretamente, verifique a capa: suportes magnéticos e elementos metálicos criam fortes distorções Hard Iron.

Por que a bússola do telefone mostra a direção errada?

Principais causas: interferência magnética dos alto-falantes e motor de vibração do telefone, falta de calibração após trocar a capa, influência de objetos metálicos próximos. Em ambientes internos com estruturas de concreto armado, o campo magnético é distorcido especialmente.

Posso usar meu telefone como detector de metais?

Sim, aplicativos de detector de metais usam o magnetômetro embutido para detectar anomalias do campo magnético. No entanto, a profundidade de detecção não excede 10–20 cm e o dispositivo não distingue tipos de metais — é mais uma ferramenta educacional.

Qual é a diferença entre TYPE_MAGNETIC_FIELD e TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD retorna dados após a calibração aplicada pelo sistema. TYPE_MAGNETIC_FIELD_UNCALIBRATED fornece valores brutos mais uma estimativa de bias, permitindo que o desenvolvedor aplique sua própria calibração.

Como obter o azimute dos dados do magnetômetro?

Use SensorManager.getRotationMatrix com dados do acelerômetro e magnetômetro, depois getOrientation — o primeiro elemento do array (azimute) estará em radianos. Para exibir a bússola, converta para graus: Math.toDegrees(azimuth).

Resumo

  • Magnetômetro — sensor de campo magnético de três eixos que funciona como uma bússola digital em dispositivos móveis.
  • Tecnologia AMR baseada no efeito Hall permite medir o campo da Terra com precisão de 0.15 µT/LSB.
  • Hard Iron e Soft Iron — distorções magnéticas causadas por componentes do telefone que requerem calibração em forma de oito.
  • Android API fornece TYPE_MAGNETIC_FIELD e TYPE_MAGNETIC_FIELD_UNCALIBRATED com dados em µT.
  • Sensor Fusion combina magnetômetro com giroscópio e acelerômetro para orientação precisa (1–3 graus).
  • Aplicações incluem navegação, aplicativos AR, detectores de metais e correção de deriva do giroscópio em VR.
  • Sensores modernos consomem a partir de 0.35 mA a 200 Hz com tamanho de 1.5×1.5 mm.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também