Magnétomètre dans les smartphones — ce que c'est, types et principe de fonctionnement

Auteur : IT Sectr Publié le : 2026-03-22 Temps de lecture : 10 min

Un magnétomètre est un capteur qui mesure l'intensité du champ magnétique terrestre pour déterminer les points cardinaux. Dans les appareils mobiles, il fonctionne comme une boussole numérique, offrant une précision allant jusqu'à 1–2 degrés avec un étalonnage approprié. Selon Bosch Sensortec Application Note, 2024, les MEMS-magnétomètres modernes ne consomment que 0.5–2 mA et tiennent dans un boîtier de 1.5×1.5×0.7 mm.

Points clés

  • Magnétomètre — capteur Hall mesurant le champ magnétique sur trois axes avec une plage de ±1300 µT.
  • Boussole numérique basée sur un magnétomètre nécessite un étalonnage — sans lui, l'erreur atteint 30–40 degrés.
  • Android API utilise Sensor.TYPE_MAGNETIC_FIELD pour accéder aux données en microteslas (µT).
  • Sensor Fusion combine le magnétomètre avec le gyroscope et l'accéléromètre pour une orientation précise.
  • Hard Iron et Soft Iron — types de distorsions magnétiques causées par le boîtier métallique et les haut-parleurs du téléphone.

Qu'est-ce qu'un magnétomètre dans un smartphone

Le magnétomètre dans un appareil mobile est un capteur de champ magnétique à trois axes basé sur l'effet Hall. Il mesure les projections du vecteur d'induction magnétique sur les axes X, Y et Z. Combiné à un accéléromètre, le magnétomètre détermine l'azimut — l'angle entre la direction du nord et l'axe du téléphone.

Types de magnétomètres dans les appareils mobiles

Les smartphones modernes utilisent des MEMS-magnétomètres basés sur l'effet magnétorésistif anisotrope (AMR) et l'effet Hall. Les capteurs AMR (série AKM d'Asahi Kasei Microdevices) offrent une sensibilité de 0.15 µT/LSB et une plage de ±1200 µT — suffisante pour mesurer le champ terrestre (25–65 µT).

ParamètreValeur
TechnologieAMR / Effet Hall
Plage±1200 — ±1300 µT
Consommation0.5–2 mA
Taille1.5×1.5×0.7 mm
Sensibilité0.15 µT/LSB

Pourquoi le magnétomètre est important pour un smartphone

Sans boussole numérique, les applications de navigation ne peuvent pas déterminer la direction du mouvement. Google Maps utilise le magnétomètre pour afficher l'orientation de la carte par rapport à la direction du regard de l'utilisateur. Lorsque le capteur tombe en panne, l'application n'affiche que l'emplacement sur la carte sans la flèche bleue de direction.

Comment fonctionne le capteur Hall

L'effet Hall est un phénomène physique d'apparition d'une différence de potentiel aux bords d'une plaque conductrice lorsqu'elle est exposée à un champ magnétique. Les MEMS-magnétomètres utilisent des structures en couche mince de permalloy (NiFe), dont la résistance change sous l'influence d'un champ magnétique externe (effet AMR).

Structure du capteur AMR

Chacun des trois canaux (X, Y, Z) se compose de quatre magnétorésistances connectées en pont de Wheatstone. Le champ magnétique modifie la résistance des résistances de 2–3%, ce qui est converti en tension par un amplificateur différentiel. un CAN intégré de 16 bits numérise le signal à une fréquence allant jusqu'à 100 Hz.

Mesure de l'axe Z

Pour mesurer la composante verticale du champ, un concentrateur magnétique intégré (IMC) est utilisé. Il s'agit d'une structure en couche mince de NiFe qui dévie le champ horizontal dans le plan vertical, permettant à un seul pont AMR de mesurer les trois axes.

En quoi un magnétomètre diffère-t-il d'un gyroscope

Le magnétomètre détermine l'orientation par rapport au champ magnétique terrestre (référence absolue), tandis qu'un gyroscope ne mesure que le changement angulaire (données relatives). Le gyroscope fournit des données précises sur de courts intervalles mais accumule une erreur de dérive. Le magnétomètre ne dérive pas mais est sensible aux interférences magnétiques.

Sensor Fusion avec magnétomètre

Android combine les données de trois capteurs via SensorManager.getRotationMatrix. Le magnétomètre est utilisé pour corriger la dérive du gyroscope sur de longs intervalles. Sans magnétomètre, le gyroscope accumule une erreur de 10–20 degrés en 5 minutes. Selon Google ARCore (2024), l'algorithme de fusion atteint une précision de 1–3 degrés avec un magnétomètre.

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] — azimut en radians

Distorsions magnétiques : Hard Iron et Soft Iron

Hard Iron — un champ magnétique permanent créé par les matériaux ferromagnétiques à l'intérieur du téléphone : aimants des haut-parleurs, moteur de vibration, cadre métallique. La distorsion Hard Iron se manifeste par un décalage constant (bias) sur chaque axe. Soft Iron — un changement de direction du champ causé par des matériaux magnétiquement perméables qui déforment les lignes de champ.

Algorithme d'étalonnage

La procédure standard d'étalonnage du magnétomètre consiste à faire pivoter le téléphone en forme de huit. Au cours du processus, le capteur enregistre des points dans l'espace tridimensionnel. Sans distorsions, les points se trouvent sur une sphère de rayon 25–65 µT. Hard Iron déplace le centre de la sphère, Soft Iron la transforme en ellipsoïde. L'algorithme d'étalonnage calcule les paramètres de décalage et de mise à l'échelle.

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

Correction logicielle des distorsions

Le développeur peut implémenter son propre étalonnage du magnétomètre en collectant des données pendant le mouvement de l'appareil. L'algorithme d'ajustement ellipsoïdal (ellipsoid fitting) trouve les paramètres de Hard Iron et Soft Iron en minimisant la somme des carrés des écarts par rapport à la sphère. La bibliothèque Apache Commons Math fournit une implémentation des moindres carrés non linéaires (Levenberg-Marquardt) pour cette tâche — la précision après étalonnage logiciel atteint 0.5 degré.

Recommandations pour atténuer les interférences

Pour minimiser Hard Iron, les fabricants placent le magnétomètre dans la partie supérieure du téléphone, loin du haut-parleur et du moteur de vibration. Les ingénieurs d'Apple sur l'iPhone 16 Pro Max (2024) ont utilisé un blindage en feuille de permalloy pour le magnétomètre, réduisant l'influence du haut-parleur de 4 fois. Le Samsung Galaxy S24 Ultra utilise un circuit de compensation supplémentaire qui mesure le courant du haut-parleur en temps réel pour soustraire le champ induit. Les coques avec supports magnétiques (par exemple, dans les supports de voiture) créent de fortes distorsions — après utilisation, le magnétomètre peut afficher une direction erronée jusqu'au recalibrage.

Accès programmatique au magnétomètre dans Android

Android fournit deux capteurs : TYPE_MAGNETIC_FIELD (données calibrées en µT) et TYPE_MAGNETIC_FIELD_UNCALIBRATED (données brutes avec estimation de distorsion). Pour les applications de navigation, il est recommandé d'utiliser le capteur calibré — le système applique automatiquement l'étalonnage intégré basé sur le dernier mouvement en forme de huit.

Enregistrement et traitement

SENSOR_DELAY_NORMAL (200 ms) est suffisant pour une boussole, SENSOR_DELAY_FASTEST (0 ms) — uniquement pour les applications de recherche spécialisées. Après avoir reçu les valeurs, vous pouvez les convertir en azimut via getRotationMatrix + getOrientation. Il est important de vérifier la précision du capteur via event.accuracy — SENSOR_STATUS_UNRELIABLE signifie qu'un étalonnage est nécessaire.

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

Applications du magnétomètre dans les applications mobiles

Le magnétomètre n'est pas utilisé uniquement pour la boussole. Les applications AR, y compris Pokemon GO, utilisent le magnétomètre pour déterminer l'orientation de la caméra par rapport au monde réel. Sans magnétomètre, ARCore passe en mode Screen Axis — l'orientation est déterminée uniquement par le gyroscope, ce qui réduit la précision.

  • Navigation — détermination de l'azimut de déplacement dans Google Maps, Yandex.Maps, MAPS.ME. La précision de la boussole affecte directement la qualité de l'itinéraire.
  • Détecteurs de métaux — les applications de recherche d'objets métalliques utilisent le magnétomètre pour détecter les anomalies du champ magnétique.
  • Géophysique et éducation — mesure du champ magnétique pour des projets éducatifs. Le capteur permet d'étudier le champ magnétique terrestre dans les écoles.
  • VR et vidéo 360 — l'orientation de la tête dans les casques VR est corrigée par le magnétomètre pour compenser la dérive du gyroscope.

Magnétomètre dans la navigation automobile

Dans les systèmes de navigation automobile basés sur Android Auto, le magnétomètre est utilisé pour déterminer la direction du mouvement lorsque le signal GPS est perdu dans les tunnels et les zones urbaines denses. En combinaison avec les données d'odométrie des roues de la voiture (obtenues via OBD-II), le magnétomètre permet de continuer la navigation jusqu'à 5 minutes sans GPS avec une précision de positionnement de 10–20 mètres. Selon Google Maps Engineering Blog (2024), l'algorithme hybride réduit la perte d'itinéraire dans les canyons urbains de 40%.

Magnétomètre dans les applications de navigation

Les applications de navigation utilisent le magnétomètre pour déterminer l'azimut du mouvement — l'angle entre le nord et le cap actuel de l'utilisateur. Dans Google Maps, les données du magnétomètre sont combinées avec la trace GPS et l'historique des déplacements pour afficher la flèche bleue de direction. Lorsque le signal GPS est perdu (dans les tunnels, passages souterrains), le magnétomètre reste la seule source d'information d'orientation.

Avenir des magnétomètres

La nouvelle génération de magnétomètres 3 axes avec ASIC intégré (BMM350 de Bosch, 2024) ne consomme que 0.35 mA et prend en charge jusqu'à 200 Hz. Le développement de magnétomètres quantiques et de centres NV dans le diamant pour les appareils mobiles n'a pas encore quitté le stade des expériences en laboratoire. On s'attend à ce que d'ici 2028, la précision des magnétomètres mobiles atteigne 0.01 µT.

Questions fréquentes

Comment étalonner le magnétomètre sur un téléphone ?

Dessinez un huit avec le téléphone dans les airs — c'est le geste standard pour étalonner la boussole numérique. Si la boussole affiche toujours une erreur, vérifiez la coque : les supports magnétiques et les éléments métalliques créent de fortes distorsions Hard Iron.

Pourquoi la boussole du téléphone indique-t-elle une mauvaise direction ?

Principales causes : interférences magnétiques des haut-parleurs et du moteur de vibration du téléphone, absence d'étalonnage après changement de coque, influence d'objets métalliques à proximité. Dans les espaces intérieurs avec des structures en béton armé, le champ magnétique est particulièrement déformé.

Peut-on utiliser son téléphone comme détecteur de métaux ?

Oui, les applications de détection de métaux utilisent le magnétomètre intégré pour détecter les anomalies du champ magnétique. Cependant, la profondeur de détection ne dépasse pas 10–20 cm et l'appareil ne distingue pas les types de métaux — c'est plutôt un outil éducatif.

Quelle est la différence entre TYPE_MAGNETIC_FIELD et TYPE_MAGNETIC_FIELD_UNCALIBRATED ?

TYPE_MAGNETIC_FIELD renvoie des données après étalonnage appliqué par le système. TYPE_MAGNETIC_FIELD_UNCALIBRATED fournit des valeurs brutes plus une estimation du biais, permettant au développeur d'appliquer son propre étalonnage.

Comment obtenir l'azimut à partir des données du magnétomètre ?

Utilisez SensorManager.getRotationMatrix avec les données de l'accéléromètre et du magnétomètre, puis getOrientation — le premier élément du tableau (azimut) sera en radians. Pour afficher la boussole, convertissez en degrés : Math.toDegrees(azimuth).

Résumé

  • Magnétomètre — capteur de champ magnétique à trois axes fonctionnant comme une boussole numérique dans les appareils mobiles.
  • Technologie AMR basée sur l'effet Hall permet de mesurer le champ terrestre avec une précision de 0.15 µT/LSB.
  • Hard Iron et Soft Iron — distorsions magnétiques causées par les composants du téléphone nécessitant un étalonnage en forme de huit.
  • Android API fournit TYPE_MAGNETIC_FIELD et TYPE_MAGNETIC_FIELD_UNCALIBRATED avec des données en µT.
  • Sensor Fusion combine magnétomètre avec gyroscope et accéléromètre pour une orientation précise (1–3 degrés).
  • Applications incluent la navigation, les applications AR, les détecteurs de métaux et la correction de dérive du gyroscope en VR.
  • Capteurs modernes consomment à partir de 0.35 mA à 200 Hz avec une taille de 1.5×1.5 mm.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi