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
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.
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ètre | Valeur |
|---|---|
| Technologie | AMR / Effet Hall |
| Plage | ±1200 — ±1300 µT |
| Consommation | 0.5–2 mA |
| Taille | 1.5×1.5×0.7 mm |
| Sensibilité | 0.15 µT/LSB |
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.
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).
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.
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.
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.
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.
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
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.
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.
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
)
}
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é.
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.
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.
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.
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)
}
}
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.
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%.
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.
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
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.
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é.
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.
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.
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é
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.
Lisez aussi