مغناطیس‌سنج در گوشی‌های هوشمند — چیست، انواع و اصل کار

نویسنده: IT Sectr منتشر شده: 2026-03-22 زمان مطالعه: 10 دقیقه

مغناطیس‌سنج سنسوری است که شدت میدان مغناطیسی زمین را برای تعیین جهت‌های جغرافیایی اندازه‌گیری می‌کند. در دستگاه‌های موبایل به عنوان قطب‌نمای دیجیتال کار می‌کند و با کالیبراسیون صحیح دقتی تا ۱–۲ درجه ارائه می‌دهد. به گفته Bosch Sensortec Application Note, 2024، MEMS-مغناطیس‌سنج‌های مدرن تنها ۰.۵–۲ میلی‌آمپر مصرف می‌کنند و در بدنه‌ای به ابعاد ۱.۵×۱.۵×۰.۷ میلی‌متر جای می‌گیرند.

نکات کلیدی

  • مغناطیس‌سنج — سنسور هال که میدان مغناطیسی را در سه محور با دامنه ±۱۳۰۰ میکروتسلا اندازه‌گیری می‌کند.
  • قطب‌نمای دیجیتال مبتنی بر مغناطیس‌سنج نیاز به کالیبراسیون دارد — بدون آن خطا به ۳۰–۴۰ درجه می‌رسد.
  • Android API از Sensor.TYPE_MAGNETIC_FIELD برای دسترسی به داده‌ها بر حسب میکروتسلا (µT) استفاده می‌کند.
  • Sensor Fusion مغناطیس‌سنج را با ژیروسکوپ و شتاب‌سنج برای تعیین موقعیت دقیق ترکیب می‌کند.
  • Hard Iron و Soft Iron — انواع اعوجاج مغناطیسی ناشی از فلز بدنه و بلندگوهای گوشی هوشمند.

مغناطیس‌سنج در گوشی هوشمند چیست

مغناطیس‌سنج در دستگاه موبایل یک سنسور سه‌محوره میدان مغناطیسی مبتنی بر اثر هال است. این سنسور بردار القای مغناطیسی را روی محورهای X، Y و Z اندازه‌گیری می‌کند. در ترکیب با شتاب‌سنج، مغناطیس‌سنج امکان تعیین آزیموت — زاویه بین جهت شمال و محور گوشی — را فراهم می‌کند.

انواع مغناطیس‌سنج در دستگاه‌های موبایل

در گوشی‌های هوشمند مدرن از MEMS-مغناطیس‌سنج‌های مبتنی بر اثر مغناطومقاومتی ناهمسانگرد (AMR) و اثر هال استفاده می‌شود. سنسورهای AMR (سری AKM از Asahi Kasei Microdevices) حساسیت ۰.۱۵ µT/LSB و دامنه ±۱۲۰۰ µT را فراهم می‌کنند — این برای اندازه‌گیری میدان زمین (۲۵–۶۵ µT) کافی است.

پارامترمقدار
فناوریAMR / اثر هال
دامنه±۱۲۰۰ — ±۱۳۰۰ µT
مصرف انرژی۰.۵–۲ میلی‌آمپر
ابعاد۱.۵×۱.۵×۰.۷ میلی‌متر
حساسیت۰.۱۵ µT/LSB

چرا مغناطیس‌سنج برای گوشی هوشمند مهم است

بدون قطب‌نمای دیجیتال، برنامه‌های ناوبری نمی‌توانند جهت حرکت را تعیین کنند. Google Maps از مغناطیس‌سنج برای نمایش جهت نقشه نسبت به جهت نگاه کاربر استفاده می‌کند. در صورت خرابی سنسور، برنامه فقط موقعیت روی نقشه را بدون فلش آبی جهت نشان می‌دهد.

سنسور هال چگونه کار می‌کند

اثر هال پدیده فیزیکی ایجاد اختلاف پتانسیل در لبه‌های یک صفحه رسانا تحت تأثیر میدان مغناطیسی است. در MEMS-مغناطیس‌سنج‌ها از ساختارهای لایه‌نازک از پرمالوی (NiFe) استفاده می‌شود که مقاومت آنها تحت تأثیر میدان مغناطیسی خارجی تغییر می‌کند (اثر AMR).

ساختار سنسور AMR

هر یک از سه کانال (X، Y، Z) از چهار مقاومت مغناطیسی تشکیل شده است که در پل وتستون قرار گرفته‌اند. میدان مغناطیسی مقاومت مقاومت‌ها را ۲–۳٪ تغییر می‌دهد که توسط تقویت‌کننده تفاضلی به ولتاژ تبدیل می‌شود. مبدل آنالوگ به دیجیتال ۱۶ بیتی داخلی سیگنال را با فرکانس تا ۱۰۰ هرتز دیجیتالی می‌کند.

اندازه‌گیری در محور Z

برای اندازه‌گیری مؤلفه عمودی میدان از متمرکزکننده یکپارچه شار مغناطیسی (IMC — Integrated Magnetic Concentrator) استفاده می‌شود. این یک ساختار لایه‌نازک از NiFe است که میدان افقی را به صفحه عمودی منحرف می‌کند و به پل AMR واحد امکان اندازه‌گیری هر سه محور را می‌دهد.

تفاوت مغناطیس‌سنج با ژیروسکوپ

مغناطیس‌سنج جهت‌گیری را نسبت به میدان مغناطیسی زمین تعیین می‌کند (مرجع مطلق)، در حالی که ژیروسکوپ فقط تغییر زاویه را اندازه‌گیری می‌کند (داده‌های نسبی). ژیروسکوپ در فواصل کوتاه داده‌های دقیق ارائه می‌دهد اما خطای رانش را انباشته می‌کند. مغناطیس‌سنج رانش ندارد اما در معرض تداخلات مغناطیسی است.

Sensor Fusion با مغناطیس‌سنج

اندروید داده‌های سه سنسور را از طریق SensorManager.getRotationMatrix ترکیب می‌کند. از مغناطیس‌سنج برای تصحیح رانش ژیروسکوپ در بازه‌های طولانی استفاده می‌شود. بدون مغناطیس‌سنج، ژیروسکوپ در ۵ دقیقه خطایی تا ۱۰–۲۰ درجه انباشته می‌کند. به گفته Google ARCore (2024)، الگوریتم fusion با وجود مغناطیس‌سنج به دقت ۱–۳ درجه می‌رسد.

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) است. در این فرآیند سنسور نقاطی را در فضای سه‌بعدی ثبت می‌کند. بدون اعوجاج، نقاط روی کره‌ای به شعاع ۲۵–۶۵ µ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) را برای این کار ارائه می‌دهد — دقت پس از کالیبراسیون نرم‌افزاری به ۰.۵ درجه می‌رسد.

توصیه‌هایی برای رفع تداخل

برای به حداقل رساندن Hard Iron، تولیدکنندگان مغناطیس‌سنج را در قسمت بالایی گوشی و دور از بلندگو و موتور ویبره قرار می‌دهند. مهندسان اپل در iPhone 16 Pro Max (2024) از محافظ‌بندی مغناطیس‌سنج با فویل پرمالوی استفاده کردند که تأثیر بلندگو را ۴ برابر کاهش داد. در Samsung Galaxy S24 Ultra از یک مدار جبرانی اضافی استفاده شده است که جریان بلندگو را در زمان واقعی اندازه‌گیری می‌کند تا میدان القایی را حذف کند. قاب‌های دارای اتصالات مغناطیسی (مثلاً در نگه‌دارنده‌های خودرو) اعوجاجات شدیدی ایجاد می‌کنند — پس از استفاده، مغناطیس‌سنج ممکن است تا کالیبراسیون مجدد جهت نادرست نشان دهد.

دسترسی برنامه‌نویسی به مغناطیس‌سنج در اندروید

اندروید دو سنسور ارائه می‌دهد: TYPE_MAGNETIC_FIELD (داده‌های کالیبره شده بر حسب µT) و TYPE_MAGNETIC_FIELD_UNCALIBRATED (داده‌های خام با تخمین اعوجاج). برای برنامه‌های ناوبری توصیه می‌شود از سنسور کالیبره شده استفاده کنید — سیستم به طور خودکار کالیبراسیون داخلی را بر اساس آخرین حرکت عدد ۸ اعمال می‌کند.

ثبت و پردازش

تأخیر SENSOR_DELAY_NORMAL (۲۰۰ میلی‌ثانیه) برای قطب‌نما کافی است، SENSOR_DELAY_FASTEST (۰ میلی‌ثانیه) — فقط برای برنامه‌های تحقیقاتی خاص. پس از دریافت مقادیر، می‌توان آنها را از طریق 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 Maps، Yandex.Maps، MAPS.ME. دقت قطب‌نما مستقیماً بر کیفیت مسیر تأثیر می‌گذارد.
  • فلزیاب‌ها — برنامه‌های جستجوی اشیاء فلزی از مغناطیس‌سنج برای تشخیص ناهنجاری‌های میدان مغناطیسی استفاده می‌کنند.
  • ژئوفیزیک و آموزش — اندازه‌گیری میدان مغناطیسی برای پروژه‌های آموزشی. سنسور امکان مطالعه میدان مغناطیسی زمین در مدارس را فراهم می‌کند.
  • VR و ویدیوی ۳۶۰ — جهت سر در هدست‌های VR برای جبران رانش ژیروسکوپ توسط مغناطیس‌سنج تصحیح می‌شود.

مغناطیس‌سنج در ناوبری خودرو

در سیستم‌های ناوبری خودرو مبتنی بر Android Auto، از مغناطیس‌سنج برای تعیین جهت حرکت در هنگام از دست دادن سیگنال GPS در تونل‌ها و مناطق شهری متراکم استفاده می‌شود. در ترکیب با داده‌های اندازه‌گیری مسافت چرخ‌های خودرو (دریافت شده از طریق OBD-II)، مغناطیس‌سنج امکان ادامه ناوبری تا ۵ دقیقه بدون GPS با دقت موقعیت‌یابی ۱۰–۲۰ متر را فراهم می‌کند. به گفته Google Maps Engineering Blog (2024)، الگوریتم ترکیبی درصد از دست رفتن مسیر در دره‌های شهری را ۴۰٪ کاهش می‌دهد.

مغناطیس‌سنج در برنامه‌های ناوبری

برنامه‌های ناوبری از مغناطیس‌سنج برای تعیین آزیموت حرکت — زاویه بین جهت شمال و مسیر فعلی کاربر استفاده می‌کنند. در Google Maps، داده‌های مغناطیس‌سنج با رد GPS و تاریخچه حرکات ترکیب می‌شوند تا فلش آبی جهت نمایش داده شود. هنگام از دست دادن سیگنال GPS (در تونل‌ها، زیرگذرها)، مغناطیس‌سنج تنها منبع اطلاعات در مورد جهت‌گیری باقی می‌ماند.

آینده مغناطیس‌سنج‌ها

نسل جدید مغناطیس‌سنج‌های ۳ محوره با ASIC یکپارچه (BMM350 از Bosch، ۲۰۲۴) تنها ۰.۳۵ میلی‌آمپر مصرف می‌کنند و از فرکانس تا ۲۰۰ هرتز پشتیبانی می‌کنند. توسعه مغناطیس‌سنج‌های کوانتومی و مراکز NV در الماس برای دستگاه‌های موبایل هنوز از مرحله آزمایش‌های آزمایشگاهی خارج نشده است. انتظار می‌رود تا سال ۲۰۲۸ دقت مغناطیس‌سنج‌های موبایل به ۰.۰۱ µT برسد.

پرسش‌های متداول

چگونه مغناطیس‌سنج گوشی را کالیبره کنیم؟

با گوشی در هوا عدد ۸ بکشید — این حرکت استاندارد برای کالیبره کردن قطب‌نمای دیجیتال است. اگر قطب‌نما همچنان نادرست نشان می‌دهد، قاب گوشی را بررسی کنید: اتصالات مغناطیسی و عناصر فلزی اعوجاجات شدید Hard Iron ایجاد می‌کنند.

چرا قطب‌نمای گوشی نادرست نشان می‌دهد؟

دلایل اصلی: تداخلات مغناطیسی از بلندگوها و موتور ویبره گوشی، عدم کالیبراسیون پس از تعویض قاب، تأثیر اشیاء فلزی مجاور. در فضاهای دارای سازه‌های بتن مسلح، میدان مغناطیسی به شدت مخدوش می‌شود.

آیا می‌توان از گوشی به عنوان فلزیاب استفاده کرد؟

بله، برنامه‌های فلزیاب از مغناطیس‌سنج داخلی برای تشخیص ناهنجاری‌های میدان مغناطیسی استفاده می‌کنند. با این حال، عمق تشخیص از ۱۰–۲۰ سانتی‌متر تجاوز نمی‌کند و دستگاه انواع فلزات را تشخیص نمی‌دهد — این بیشتر یک ابزار آموزشی است.

تفاوت TYPE_MAGNETIC_FIELD و TYPE_MAGNETIC_FIELD_UNCALIBRATED چیست؟

TYPE_MAGNETIC_FIELD داده‌های پس از کالیبراسیون اعمال شده توسط سیستم را برمی‌گرداند. TYPE_MAGNETIC_FIELD_UNCALIBRATED مقادیر خام به همراه تخمین جابجایی (bias) را ارائه می‌دهد و به توسعه‌دهنده امکان اعمال کالیبراسیون اختصاصی را می‌دهد.

چگونه از داده‌های مغناطیس‌سنج آزیموت بگیریم؟

از SensorManager.getRotationMatrix با داده‌های شتاب‌سنج و مغناطیس‌سنج استفاده کنید، سپس getOrientation — اولین عنصر آرایه (آزیموت) بر حسب رادیان خواهد بود. برای نمایش قطب‌نما به درجه تبدیل کنید: Math.toDegrees(azimuth).

خلاصه

  • مغناطیس‌سنج — سنسور سه‌محوره میدان مغناطیسی که به عنوان قطب‌نمای دیجیتال در دستگاه‌های موبایل عمل می‌کند.
  • فناوری AMR مبتنی بر اثر هال امکان اندازه‌گیری میدان زمین با دقت ۰.۱۵ µT/LSB را فراهم می‌کند.
  • Hard Iron و Soft Iron — اعوجاجات مغناطیسی ناشی از قطعات گوشی که نیاز به کالیبراسیون با حرکت عدد ۸ دارند.
  • Android API TYPE_MAGNETIC_FIELD و TYPE_MAGNETIC_FIELD_UNCALIBRATED را با داده‌های بر حسب µT ارائه می‌دهد.
  • Sensor Fusion مغناطیس‌سنج را با ژیروسکوپ و شتاب‌سنج برای جهت‌گیری دقیق (۱–۳ درجه) ترکیب می‌کند.
  • کاربردها شامل ناوبری، برنامه‌های AR، فلزیاب‌ها و تصحیح رانش ژیروسکوپ در VR است.
  • سنسورهای مدرن از ۰.۳۵ میلی‌آمپر در فرکانس ۲۰۰ هرتز با اندازه ۱.۵×۱.۵ میلی‌متر مصرف می‌کنند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید