Μαγνητόμετρο σε smartphones — τι είναι, τύποι και αρχή λειτουργίας

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-22 Χρόνος ανάγνωσης: 10 λεπ

Το μαγνητόμετρο είναι ένας αισθητήρας που μετρά την ένταση του μαγνητικού πεδίου της Γης για τον προσδιορισμό των σημείων του ορίζοντα. Στις κινητές συσκευές λειτουργεί ως ψηφιακή πυξίδα, παρέχοντας ακρίβεια έως 1–2 μοίρες με σωστή βαθμονόμηση. Σύμφωνα με το Bosch Sensortec Application Note, 2024, τα σύγχρονα MEMS-μαγνητόμετρα καταναλώνουν μόλις 0,5–2 mA και χωρούν σε περίβλημα 1,5×1,5×0,7 mm.

Κύρια σημεία

  • Μαγνητόμετρο — αισθητήρας Hall που μετρά το μαγνητικό πεδίο σε τρεις άξονες με εύρος ±1300 μT.
  • Ψηφιακή πυξίδα βασισμένη σε μαγνητόμετρο απαιτεί βαθμονόμηση — χωρίς αυτήν το σφάλμα φτάνει τις 30–40 μοίρες.
  • Android API χρησιμοποιεί Sensor.TYPE_MAGNETIC_FIELD για πρόσβαση σε δεδομένα σε μικροΤέσλα (μT).
  • Sensor Fusion συνδυάζει το μαγνητόμετρο με γυροσκόπιο και επιταχυνσιόμετρο για ακριβή προσανατολισμό.
  • Hard Iron και Soft Iron — τύποι μαγνητικών παραμορφώσεων που προκαλούνται από το μέταλλο του περιβλήματος και τα ηχεία του smartphone.

Τι είναι το μαγνητόμετρο στο smartphone

Το μαγνητόμετρο σε μια κινητή συσκευή είναι ένας τριαξονικός αισθητήρας μαγνητικού πεδίου που βασίζεται στο φαινόμενο 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

Γιατί είναι σημαντικό το μαγνητόμετρο για το smartphone

Χωρίς ψηφιακή πυξίδα, οι εφαρμογές πλοήγησης δεν μπορούν να προσδιορίσουν την κατεύθυνση κίνησης. Ο Χάρτης Google χρησιμοποιεί το μαγνητόμετρο για την εμφάνιση του προσανατολισμού του χάρτη σε σχέση με την κατεύθυνση του βλέμματος του χρήστη. Σε περίπτωση βλάβης του αισθητήρα, η εφαρμογή εμφανίζει μόνο τη θέση στον χάρτη χωρίς το μπλε βέλος κατεύθυνσης.

Πώς λειτουργεί ο αισθητήρας Hall

Το φαινόμενο Hall είναι ένα φυσικό φαινόμενο εμφάνισης διαφοράς δυναμικού στα άκρα μιας αγώγιμης πλάκας υπό την επίδραση μαγνητικού πεδίου. Στα MEMS-μαγνητόμετρα χρησιμοποιούνται δομές λεπτής μεμβράνης από permalloy (NiFe), των οποίων η αντίσταση αλλάζει υπό την επίδραση εξωτερικού μαγνητικού πεδίου (φαινόμενο AMR).

Δομή του αισθητήρα AMR

Κάθε ένα από τα τρία κανάλια (X, Y, Z) αποτελείται από τέσσερις μαγνητοαντιστάσεις συνδεδεμένες σε γέφυρα Wheatstone. Το μαγνητικό πεδίο αλλάζει την αντίσταση των αντιστάσεων κατά 2–3%, το οποίο μετατρέπεται από έναν διαφορικό ενισχυτή σε τάση. Ένας ενσωματωμένος μετατροπέας ADC 16-bit ψηφιοποιεί το σήμα με συχνότητα έως 100 Hz.

Μέτρηση στον άξονα Z

Για τη μέτρηση της κατακόρυφης συνιστώσας του πεδίου χρησιμοποιείται ένας ενσωματωμένος συγκεντρωτής μαγνητικής ροής (IMC — Integrated Magnetic Concentrator). Πρόκειται για μια δομή λεπτής μεμβράνης από NiFe που εκτρέπει το οριζόντιο πεδίο στο κατακόρυφο επίπεδο, επιτρέποντας σε μία μόνο γέφυρα AMR να μετρά και τους τρεις άξονες.

Διαφορά μαγνητομέτρου και γυροσκοπίου

Το μαγνητόμετρο προσδιορίζει τον προσανατολισμό σε σχέση με το μαγνητικό πεδίο της Γης (απόλυτη αναφορά), ενώ το γυροσκόπιο μετρά μόνο την αλλαγή γωνίας (σχετικά δεδομένα). Το γυροσκόπιο παρέχει ακριβή δεδομένα σε μικρά χρονικά διαστήματα, αλλά συσσωρεύει σφάλμα μετατόπισης. Το μαγνητόμετρο δεν μετατοπίζεται, αλλά είναι ευάλωτο σε μαγνητικές παρεμβολές.

Sensor Fusion με μαγνητόμετρο

Το Android συνδυάζει δεδομένα τριών αισθητήρων μέσω του SensorManager.getRotationMatrix. Το μαγνητόμετρο χρησιμοποιείται για τη διόρθωση της μετατόπισης του γυροσκοπίου σε μεγάλα χρονικά διαστήματα. Χωρίς μαγνητόμετρο, το γυροσκόπιο συσσωρεύει σφάλμα 10–20 μοιρών σε 5 λεπτά. Σύμφωνα με το Google ARCore (2024), ο αλγόριθμος fusion επιτυγχάνει ακρίβεια 1–3 μοιρών με την παρουσία μαγνητομέτρου.

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] — αζιμούθιο σε ακτίνια

Μαγνητικές παραμορφώσεις: Hard Iron και Soft Iron

Hard Iron — σταθερό μαγνητικό πεδίο που δημιουργείται από σιδηρομαγνητικά υλικά μέσα στο τηλέφωνο: μαγνήτες ηχείων, κινητήρας δόνησης, μεταλλικό πλαίσιο περιβλήματος. Η παραμόρφωση Hard Iron εκδηλώνεται ως σταθερή μετατόπιση (bias) σε κάθε άξονα. Soft Iron — αλλαγή της κατεύθυνσης του πεδίου λόγω μαγνητικά αγώγιμων υλικών που παραμορφώνουν το σχήμα των γραμμών του πεδίου.

Αλγόριθμος βαθμονόμησης

Η τυπική διαδικασία βαθμονόμησης μαγνητομέτρου είναι η περιστροφή του τηλεφώνου σε σχήμα οκτώ (figure-8 pattern). Κατά τη διάρκεια της διαδικασίας, ο αισθητήρας καταγράφει σημεία στον τρισδιάστατο χώρο. Χωρίς παραμορφώσεις, τα σημεία βρίσκονται σε μια σφαίρα ακτίνας 25–65 μT. Το Hard Iron μετατοπίζει το κέντρο της σφαίρας, το Soft Iron τη μετατρέπει σε ελλειψοειδές. Ο αλγόριθμος βαθμονόμησης υπολογίζει τις παραμέτρους μετατόπισης και κλιμάκωσης.

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

Λογισμική διόρθωση παραμορφώσεων

Ο προγραμματιστής μπορεί να υλοποιήσει τη δική του βαθμονόμηση μαγνητομέτρου συλλέγοντας δεδομένα κατά την κίνηση της συσκευής. Ο αλγόριθμος προσαρμογής ελλειψοειδούς (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

Το 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 υποδηλώνει ανάγκη βαθμονόμησης.

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

Εφαρμογή μαγνητομέτρου σε κινητές εφαρμογές

Το μαγνητόμετρο χρησιμοποιείται όχι μόνο για πυξίδα. Οι εφαρμογές επαυξημένης πραγματικότητας (AR), συμπεριλαμβανομένου του Pokemon GO, χρησιμοποιούν το μαγνητόμετρο για τον προσδιορισμό του προσανατολισμού της κάμερας σε σχέση με τον πραγματικό κόσμο. Απουσία μαγνητομέτρου, το ARCore μεταβαίνει σε λειτουργία Screen Axis — ο προσανατολισμός καθορίζεται μόνο από το γυροσκόπιο, μειώνοντας την ακρίβεια.

  • Πλοήγηση — προσδιορισμός αζιμουθίου κίνησης στους Χάρτες Google, Yandex.Maps, MAPS.ME. Η ακρίβεια της πυξίδας επηρεάζει άμεσα την ποιότητα της διαδρομής.
  • Ανιχνευτές μετάλλων — εφαρμογές για αναζήτηση μεταλλικών αντικειμένων χρησιμοποιούν το μαγνητόμετρο για τον εντοπισμό ανωμαλιών μαγνητικού πεδίου.
  • Γεωφυσική και εκπαίδευση — μέτρηση μαγνητικού πεδίου για εκπαιδευτικά έργα. Ο αισθητήρας επιτρέπει τη μελέτη του μαγνητικού πεδίου της Γης στα σχολεία.
  • VR και βίντεο 360° — ο προσανατολισμός της κεφαλής σε ακουστικά VR διορθώνεται από το μαγνητόμετρο για αντιστάθμιση της μετατόπισης του γυροσκοπίου.

Μαγνητόμετρο στην αυτοκινητική πλοήγηση

Σε συστήματα αυτοκινητικής πλοήγησης βασισμένα στο 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;

Το TYPE_MAGNETIC_FIELD επιστρέφει δεδομένα μετά τη βαθμονόμηση που εφάρμοσε το σύστημα. Το TYPE_MAGNETIC_FIELD_UNCALIBRATED δίνει ακατέργαστες τιμές συν εκτίμηση μετατόπισης (bias), επιτρέποντας στον προγραμματιστή να εφαρμόσει τη δική του βαθμονόμηση.

Πώς λαμβάνω αζιμούθιο από δεδομένα μαγνητομέτρου;

Χρησιμοποιήστε το SensorManager.getRotationMatrix με δεδομένα επιταχυνσιόμετρου και μαγνητομέτρου, στη συνέχεια getOrientation — το πρώτο στοιχείο του πίνακα (αζιμούθιο) θα είναι σε ακτίνια. Για εμφάνιση πυξίδας, μετατρέψτε σε μοίρες: Math.toDegrees(azimuth).

Σύνοψη

  • Μαγνητόμετρο — τριαξονικός αισθητήρας μαγνητικού πεδίου που λειτουργεί ως ψηφιακή πυξίδα σε κινητές συσκευές.
  • Τεχνολογία AMR βασισμένη στο φαινόμενο Hall επιτρέπει τη μέτρηση του πεδίου της Γης με ακρίβεια 0,15 μT/LSB.
  • Hard Iron και Soft Iron — μαγνητικές παραμορφώσεις που προκαλούνται από εξαρτήματα τηλεφώνου και απαιτούν βαθμονόμηση με κίνηση σχήματος οκτώ.
  • Android API παρέχει TYPE_MAGNETIC_FIELD και TYPE_MAGNETIC_FIELD_UNCALIBRATED με δεδομένα σε μT.
  • Sensor Fusion συνδυάζει μαγνητόμετρο με γυροσκόπιο και επιταχυνσιόμετρο για ακριβή (1–3 μοίρες) προσανατολισμό.
  • Εφαρμογές περιλαμβάνουν πλοήγηση, εφαρμογές AR, ανιχνευτές μετάλλων και διόρθωση μετατόπισης γυροσκοπίου σε VR.
  • Σύγχρονοι αισθητήρες καταναλώνουν από 0,35 mA σε συχνότητα 200 Hz και έχουν μέγεθος 1,5×1,5 mm.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης