Το μαγνητόμετρο είναι ένας αισθητήρας που μετρά την ένταση του μαγνητικού πεδίου της Γης για τον προσδιορισμό των σημείων του ορίζοντα. Στις κινητές συσκευές λειτουργεί ως ψηφιακή πυξίδα, παρέχοντας ακρίβεια έως 1–2 μοίρες με σωστή βαθμονόμηση. Σύμφωνα με το Bosch Sensortec Application Note, 2024, τα σύγχρονα MEMS-μαγνητόμετρα καταναλώνουν μόλις 0,5–2 mA και χωρούν σε περίβλημα 1,5×1,5×0,7 mm.
Κύρια σημεία
Το μαγνητόμετρο σε μια κινητή συσκευή είναι ένας τριαξονικός αισθητήρας μαγνητικού πεδίου που βασίζεται στο φαινόμενο Hall. Μετρά τις προβολές του διανύσματος μαγνητικής επαγωγής στους άξονες X, Y και Z. Σε συνδυασμό με επιταχυνσιόμετρο, το μαγνητόμετρο επιτρέπει τον προσδιορισμό του αζιμουθίου — της γωνίας μεταξύ της κατεύθυνσης προς βορρά και του άξονα του τηλεφώνου.
Στα σύγχρονα smartphones χρησιμοποιούνται MEMS-μαγνητόμετρα βασισμένα στο ανισότροπο μαγνητοαντιστατικό φαινόμενο (AMR) και στο φαινόμενο Hall. Οι αισθητήρες AMR (σειρά AKM της Asahi Kasei Microdevices) παρέχουν ευαισθησία 0,15 μT/LSB και εύρος ±1200 μT — αρκετό για τη μέτρηση του πεδίου της Γης (25–65 μT).
| Παράμετρος | Τιμή |
|---|---|
| Τεχνολογία | AMR / Φαινόμενο Hall |
| Εύρος | ±1200 — ±1300 μT |
| Κατανάλωση | 0,5–2 mA |
| Μέγεθος | 1,5×1,5×0,7 mm |
| Ευαισθησία | 0,15 μT/LSB |
Χωρίς ψηφιακή πυξίδα, οι εφαρμογές πλοήγησης δεν μπορούν να προσδιορίσουν την κατεύθυνση κίνησης. Ο Χάρτης Google χρησιμοποιεί το μαγνητόμετρο για την εμφάνιση του προσανατολισμού του χάρτη σε σχέση με την κατεύθυνση του βλέμματος του χρήστη. Σε περίπτωση βλάβης του αισθητήρα, η εφαρμογή εμφανίζει μόνο τη θέση στον χάρτη χωρίς το μπλε βέλος κατεύθυνσης.
Το φαινόμενο Hall είναι ένα φυσικό φαινόμενο εμφάνισης διαφοράς δυναμικού στα άκρα μιας αγώγιμης πλάκας υπό την επίδραση μαγνητικού πεδίου. Στα MEMS-μαγνητόμετρα χρησιμοποιούνται δομές λεπτής μεμβράνης από permalloy (NiFe), των οποίων η αντίσταση αλλάζει υπό την επίδραση εξωτερικού μαγνητικού πεδίου (φαινόμενο AMR).
Κάθε ένα από τα τρία κανάλια (X, Y, Z) αποτελείται από τέσσερις μαγνητοαντιστάσεις συνδεδεμένες σε γέφυρα Wheatstone. Το μαγνητικό πεδίο αλλάζει την αντίσταση των αντιστάσεων κατά 2–3%, το οποίο μετατρέπεται από έναν διαφορικό ενισχυτή σε τάση. Ένας ενσωματωμένος μετατροπέας ADC 16-bit ψηφιοποιεί το σήμα με συχνότητα έως 100 Hz.
Για τη μέτρηση της κατακόρυφης συνιστώσας του πεδίου χρησιμοποιείται ένας ενσωματωμένος συγκεντρωτής μαγνητικής ροής (IMC — Integrated Magnetic Concentrator). Πρόκειται για μια δομή λεπτής μεμβράνης από NiFe που εκτρέπει το οριζόντιο πεδίο στο κατακόρυφο επίπεδο, επιτρέποντας σε μία μόνο γέφυρα AMR να μετρά και τους τρεις άξονες.
Το μαγνητόμετρο προσδιορίζει τον προσανατολισμό σε σχέση με το μαγνητικό πεδίο της Γης (απόλυτη αναφορά), ενώ το γυροσκόπιο μετρά μόνο την αλλαγή γωνίας (σχετικά δεδομένα). Το γυροσκόπιο παρέχει ακριβή δεδομένα σε μικρά χρονικά διαστήματα, αλλά συσσωρεύει σφάλμα μετατόπισης. Το μαγνητόμετρο δεν μετατοπίζεται, αλλά είναι ευάλωτο σε μαγνητικές παρεμβολές.
Το Android συνδυάζει δεδομένα τριών αισθητήρων μέσω του SensorManager.getRotationMatrix. Το μαγνητόμετρο χρησιμοποιείται για τη διόρθωση της μετατόπισης του γυροσκοπίου σε μεγάλα χρονικά διαστήματα. Χωρίς μαγνητόμετρο, το γυροσκόπιο συσσωρεύει σφάλμα 10–20 μοιρών σε 5 λεπτά. Σύμφωνα με το Google ARCore (2024), ο αλγόριθμος fusion επιτυγχάνει ακρίβεια 1–3 μοιρών με την παρουσία μαγνητομέτρου.
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] — αζιμούθιο σε ακτίνια
Hard Iron — σταθερό μαγνητικό πεδίο που δημιουργείται από σιδηρομαγνητικά υλικά μέσα στο τηλέφωνο: μαγνήτες ηχείων, κινητήρας δόνησης, μεταλλικό πλαίσιο περιβλήματος. Η παραμόρφωση Hard Iron εκδηλώνεται ως σταθερή μετατόπιση (bias) σε κάθε άξονα. Soft Iron — αλλαγή της κατεύθυνσης του πεδίου λόγω μαγνητικά αγώγιμων υλικών που παραμορφώνουν το σχήμα των γραμμών του πεδίου.
Η τυπική διαδικασία βαθμονόμησης μαγνητομέτρου είναι η περιστροφή του τηλεφώνου σε σχήμα οκτώ (figure-8 pattern). Κατά τη διάρκεια της διαδικασίας, ο αισθητήρας καταγράφει σημεία στον τρισδιάστατο χώρο. Χωρίς παραμορφώσεις, τα σημεία βρίσκονται σε μια σφαίρα ακτίνας 25–65 μT. Το Hard Iron μετατοπίζει το κέντρο της σφαίρας, το Soft Iron τη μετατρέπει σε ελλειψοειδές. Ο αλγόριθμος βαθμονόμησης υπολογίζει τις παραμέτρους μετατόπισης και κλιμάκωσης.
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
)
}
Ο προγραμματιστής μπορεί να υλοποιήσει τη δική του βαθμονόμηση μαγνητομέτρου συλλέγοντας δεδομένα κατά την κίνηση της συσκευής. Ο αλγόριθμος προσαρμογής ελλειψοειδούς (ellipsoid fitting) βρίσκει τις παραμέτρους Hard Iron και Soft Iron ελαχιστοποιώντας το άθροισμα τετραγώνων των αποκλίσεων από τη σφαίρα. Η βιβλιοθήκη Apache Commons Math παρέχει υλοποίηση της μη γραμμικής μεθόδου ελαχίστων τετραγώνων (Levenberg-Marquardt) για αυτήν την εργασία — η ακρίβεια μετά από λογισμική βαθμονόμηση φτάνει τις 0,5 μοίρες.
Για την ελαχιστοποίηση του Hard Iron, οι κατασκευαστές τοποθετούν το μαγνητόμετρο στο επάνω μέρος του τηλεφώνου, μακριά από το ηχείο και τον κινητήρα δόνησης. Οι μηχανικοί της Apple στο iPhone 16 Pro Max (2024) εφάρμοσαν θωράκιση του μαγνητομέτρου με φύλλο permalloy, μειώνοντας την επίδραση του ηχείου κατά 4 φορές. Στο Samsung Galaxy S24 Ultra χρησιμοποιείται ένα πρόσθετο κύκλωμα αντιστάθμισης που μετρά το ρεύμα στο ηχείο σε πραγματικό χρόνο για την αφαίρεση του επαγόμενου πεδίου. Θήκες με μαγνητικές βάσεις (π.χ. σε αυτοκινητικές θήκες) δημιουργούν ισχυρές παραμορφώσεις — μετά τη χρήση, το μαγνητόμετρο μπορεί να δείχνει λάθος κατεύθυνση μέχρι επαναβαθμονόμησης.
Το Android παρέχει δύο αισθητήρες: TYPE_MAGNETIC_FIELD (βαθμονομημένα δεδομένα σε μT) και TYPE_MAGNETIC_FIELD_UNCALIBRATED (ακατέργαστα δεδομένα με εκτίμηση παραμόρφωσης). Για εφαρμογές πλοήγησης συνιστάται η χρήση βαθμονομημένου αισθητήρα — το σύστημα εφαρμόζει αυτόματα την ενσωματωμένη βαθμονόμηση βάσει της τελευταίας κίνησης σε σχήμα οκτώ.
Η καθυστέρηση SENSOR_DELAY_NORMAL (200 ms) είναι επαρκής για πυξίδα, η SENSOR_DELAY_FASTEST (0 ms) — μόνο για ειδικές ερευνητικές εφαρμογές. Μετά τη λήψη των τιμών, μπορούν να μετατραπούν σε αζιμούθιο μέσω getRotationMatrix + getOrientation. Είναι σημαντικό να ελέγχετε την ακρίβεια του αισθητήρα μέσω event.accuracy — η τιμή SENSOR_STATUS_UNRELIABLE υποδηλώνει ανάγκη βαθμονόμησης.
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)
}
}
Το μαγνητόμετρο χρησιμοποιείται όχι μόνο για πυξίδα. Οι εφαρμογές επαυξημένης πραγματικότητας (AR), συμπεριλαμβανομένου του Pokemon GO, χρησιμοποιούν το μαγνητόμετρο για τον προσδιορισμό του προσανατολισμού της κάμερας σε σχέση με τον πραγματικό κόσμο. Απουσία μαγνητομέτρου, το ARCore μεταβαίνει σε λειτουργία Screen Axis — ο προσανατολισμός καθορίζεται μόνο από το γυροσκόπιο, μειώνοντας την ακρίβεια.
Σε συστήματα αυτοκινητικής πλοήγησης βασισμένα στο Android Auto, το μαγνητόμετρο χρησιμοποιείται για τον προσδιορισμό της κατεύθυνσης κίνησης όταν χάνεται το σήμα GPS σε σήραγγες και πυκνή αστική δόμηση. Σε συνδυασμό με δεδομένα οδομετρίας από τους τροχούς του οχήματος (που λαμβάνονται μέσω OBD-II), το μαγνητόμετρο επιτρέπει τη συνέχιση της πλοήγησης έως και 5 λεπτά χωρίς GPS με ακρίβεια εντοπισμού 10–20 μέτρων. Σύμφωνα με το Google Maps Engineering Blog (2024), ο υβριδικός αλγόριθμος μειώνει το ποσοστό απώλειας διαδρομής σε αστικά φαράγγια κατά 40%.
Οι εφαρμογές πλοήγησης χρησιμοποιούν το μαγνητόμετρο για τον προσδιορισμό του αζιμουθίου κίνησης — της γωνίας μεταξύ της κατεύθυνσης προς βορρά και της τρέχουσας κατεύθυνσης του χρήστη. Στους Χάρτες Google, τα δεδομένα μαγνητομέτρου συνδυάζονται με το ίχνος GPS και το ιστορικό κινήσεων για την εμφάνιση του μπλε βέλους κατεύθυνσης. Όταν χάνεται το σήμα GPS (σε σήραγγες, υπόγειες διαβάσεις), το μαγνητόμετρο παραμένει η μοναδική πηγή πληροφοριών προσανατολισμού.
Η νέα γενιά 3-αξονικών μαγνητομέτρων με ενσωματωμένο ASIC (BMM350 της Bosch, 2024) καταναλώνει μόλις 0,35 mA και υποστηρίζει συχνότητα έως 200 Hz. Η ανάπτυξη κβαντικών μαγνητομέτρων και κέντρων NV σε διαμάντι για κινητές συσκευές δεν έχει ακόμη ξεφύγει από το στάδιο των εργαστηριακών πειραμάτων. Αναμένεται ότι μέχρι το 2028, η ακρίβεια των κινητών μαγνητομέτρων θα φτάσει τα 0,01 μT.
Συχνές Ερωτήσεις
Σχεδιάστε ένα σχήμα οκτώ με το τηλέφωνο στον αέρα — αυτή είναι η τυπική κίνηση για βαθμονόμηση της ψηφιακής πυξίδας. Εάν η πυξίδα εξακολουθεί να δείχνει λανθασμένα, ελέγξτε τη θήκη: οι μαγνητικές βάσεις και τα μεταλλικά στοιχεία δημιουργούν ισχυρές παραμορφώσεις Hard Iron.
Κύριες αιτίες: μαγνητικές παρεμβολές από τα ηχεία και τον κινητήρα δόνησης του τηλεφώνου, έλλειψη βαθμονόμησης μετά από αλλαγή θήκης, επίδραση κοντινών μεταλλικών αντικειμένων. Σε χώρους με κατασκευές από οπλισμένο σκυρόδεμα, το μαγνητικό πεδίο παραμορφώνεται ιδιαίτερα έντονα.
Ναι, οι εφαρμογές ανιχνευτή μετάλλων χρησιμοποιούν το ενσωματωμένο μαγνητόμετρο για τον εντοπισμό ανωμαλιών μαγνητικού πεδίου. Ωστόσο, το βάθος ανίχνευσης δεν υπερβαίνει τα 10–20 cm και η συσκευή δεν διακρίνει τύπους μετάλλων — είναι περισσότερο εκπαιδευτικό εργαλείο.
Το TYPE_MAGNETIC_FIELD επιστρέφει δεδομένα μετά τη βαθμονόμηση που εφάρμοσε το σύστημα. Το TYPE_MAGNETIC_FIELD_UNCALIBRATED δίνει ακατέργαστες τιμές συν εκτίμηση μετατόπισης (bias), επιτρέποντας στον προγραμματιστή να εφαρμόσει τη δική του βαθμονόμηση.
Χρησιμοποιήστε το SensorManager.getRotationMatrix με δεδομένα επιταχυνσιόμετρου και μαγνητομέτρου, στη συνέχεια getOrientation — το πρώτο στοιχείο του πίνακα (αζιμούθιο) θα είναι σε ακτίνια. Για εμφάνιση πυξίδας, μετατρέψτε σε μοίρες: Math.toDegrees(azimuth).
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης