Magnetometer trong điện thoại thông minh — nó là gì, các loại và nguyên lý hoạt động

Tác giả: IT Sectr Đã đăng: 2026-03-22 Thời gian đọc: 10 phút

Magnetometer là một cảm biến đo cường độ từ trường Trái đất để xác định các hướng chính. Trong thiết bị di động, nó hoạt động như một la bàn kỹ thuật số, cung cấp độ chính xác lên đến 1–2 độ khi hiệu chuẩn đúng cách. Theo Bosch Sensortec Application Note, 2024, các MEMS-magnetometer hiện đại chỉ tiêu thụ 0.5–2 mA và nằm gọn trong gói 1.5×1.5×0.7 mm.

Những điểm chính

  • Magnetometer — cảm biến Hall đo từ trường dọc theo ba trục với dải ±1300 µT.
  • La bàn kỹ thuật số dựa trên magnetometer cần hiệu chuẩn — nếu không, sai số lên đến 30–40 độ.
  • Android API sử dụng Sensor.TYPE_MAGNETIC_FIELD để truy cập dữ liệu bằng microtesla (µT).
  • Sensor Fusion kết hợp magnetometer với con quay hồi chuyển và gia tốc kế để định hướng chính xác.
  • Hard Iron và Soft Iron — các loại biến dạng từ tính do vỏ kim loại và loa của điện thoại gây ra.

Magnetometer trong điện thoại thông minh là gì

Magnetometer trong thiết bị di động là cảm biến từ trường ba trục dựa trên hiệu ứng Hall. Nó đo các hình chiếu của vector cảm ứng từ lên các trục X, Y và Z. Kết hợp với gia tốc kế, magnetometer xác định góc phương vị — góc giữa hướng bắc và trục của điện thoại.

Các loại magnetometer trong thiết bị di động

Điện thoại thông minh hiện đại sử dụng MEMS-magnetometer dựa trên hiệu ứng từ điện trở dị hướng (AMR) và hiệu ứng Hall. Cảm biến AMR (dòng AKM từ Asahi Kasei Microdevices) cung cấp độ nhạy 0.15 µT/LSB và dải ±1200 µT — đủ để đo từ trường Trái đất (25–65 µT).

Tham sốGiá trị
Công nghệAMR / Hiệu ứng Hall
Dải đo±1200 — ±1300 µT
Tiêu thụ0.5–2 mA
Kích thước1.5×1.5×0.7 mm
Độ nhạy0.15 µT/LSB

Tại sao magnetometer quan trọng cho điện thoại thông minh

Không có la bàn kỹ thuật số, ứng dụng điều hướng không thể xác định hướng di chuyển. Google Maps sử dụng magnetometer để hiển thị hướng bản đồ so với hướng nhìn của người dùng. Khi cảm biến hỏng, ứng dụng chỉ hiển thị vị trí trên bản đồ mà không có mũi tên hướng màu xanh.

Cảm biến Hall hoạt động như thế nào

Hiệu ứng Hall là hiện tượng vật lý xuất hiện hiệu điện thế trên các cạnh của tấm dẫn điện khi tiếp xúc với từ trường. MEMS-magnetometer sử dụng cấu trúc màng mỏng làm từ permalloy (NiFe), có điện trở thay đổi dưới tác động của từ trường ngoài (hiệu ứng AMR).

Cấu trúc cảm biến AMR

Mỗi kênh trong ba kênh (X, Y, Z) bao gồm bốn điện trở từ được kết nối trong cầu Wheatstone. Từ trường làm thay đổi điện trở của các điện trở từ 2–3%, được chuyển đổi thành điện áp bởi bộ khuếch đại vi sai. Một ADC 16-bit tích hợp số hóa tín hiệu ở tần số lên đến 100 Hz.

Đo trục Z

Để đo thành phần thẳng đứng của từ trường, một bộ tập trung từ tích hợp (IMC) được sử dụng. Đây là cấu trúc màng mỏng NiFe làm lệch từ trường ngang vào mặt phẳng thẳng đứng, cho phép một cầu AMR duy nhất đo cả ba trục.

Magnetometer khác con quay hồi chuyển như thế nào

Magnetometer xác định hướng so với từ trường Trái đất (tham chiếu tuyệt đối), trong khi con quay hồi chuyển chỉ đo sự thay đổi góc (dữ liệu tương đối). Con quay hồi chuyển cung cấp dữ liệu chính xác trong khoảng thời gian ngắn nhưng tích lũy lỗi trôi. Magnetometer không trôi nhưng dễ bị nhiễu từ.

Sensor Fusion với magnetometer

Android kết hợp dữ liệu từ ba cảm biến qua SensorManager.getRotationMatrix. Magnetometer được sử dụng để hiệu chỉnh độ trôi của con quay hồi chuyển trong khoảng thời gian dài. Không có magnetometer, con quay hồi chuyển tích lũy lỗi 10–20 độ trong 5 phút. Theo Google ARCore (2024), thuật toán fusion đạt độ chính xác 1–3 độ với magnetometer.

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] — góc phương vị tính bằng radian

Biến dạng từ tính: Hard Iron và Soft Iron

Hard Iron — từ trường vĩnh cửu được tạo ra bởi vật liệu sắt từ bên trong điện thoại: nam châm loa, motor rung, khung kim loại. Biến dạng Hard Iron biểu hiện dưới dạng độ lệch không đổi (bias) trên mỗi trục. Soft Iron — sự thay đổi hướng từ trường do vật liệu có độ từ thẩm cao làm biến dạng các đường sức từ.

Thuật toán hiệu chuẩn

Quy trình hiệu chuẩn magnetometer tiêu chuẩn là xoay điện thoại theo hình số 8. Trong quá trình này, cảm biến ghi lại các điểm trong không gian ba chiều. Không có biến dạng, các điểm nằm trên mặt cầu bán kính 25–65 µT. Hard Iron dịch chuyển tâm mặt cầu, Soft Iron biến nó thành hình elipsoid. Thuật toán hiệu chuẩn tính toán các tham số độ lệch và tỷ lệ.

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

Hiệu chỉnh biến dạng bằng phần mềm

Nhà phát triển có thể triển khai hiệu chuẩn magnetometer riêng bằng cách thu thập dữ liệu khi thiết bị di chuyển. Thuật toán khớp elipsoid (ellipsoid fitting) tìm các tham số Hard Iron và Soft Iron bằng cách tối thiểu hóa tổng bình phương độ lệch khỏi mặt cầu. Thư viện Apache Commons Math cung cấp triển khai bình phương tối thiểu phi tuyến (Levenberg-Marquardt) cho tác vụ này — độ chính xác sau hiệu chuẩn phần mềm đạt 0.5 độ.

Khuyến nghị giảm nhiễu

Để giảm thiểu Hard Iron, nhà sản xuất đặt magnetometer ở phần trên của điện thoại, xa loa và motor rung. Kỹ sư Apple trên iPhone 16 Pro Max (2024) đã sử dụng lá chắn permalloy cho magnetometer, giảm ảnh hưởng của loa 4 lần. Samsung Galaxy S24 Ultra sử dụng mạch bù bổ sung đo dòng loa theo thời gian thực để trừ từ trường cảm ứng. Ốp lưng có giá đỡ từ tính (ví dụ trong giá đỡ ô tô) tạo ra biến dạng mạnh — sau khi sử dụng, magnetometer có thể hiển thị hướng sai cho đến khi hiệu chuẩn lại.

Truy cập lập trình vào magnetometer trong Android

Android cung cấp hai cảm biến: TYPE_MAGNETIC_FIELD (dữ liệu đã hiệu chuẩn bằng µT) và TYPE_MAGNETIC_FIELD_UNCALIBRATED (dữ liệu thô với ước tính biến dạng). Đối với ứng dụng điều hướng, nên sử dụng cảm biến đã hiệu chuẩn — hệ thống tự động áp dụng hiệu chuẩn tích hợp dựa trên chuyển động hình số 8 gần nhất.

Đăng ký và xử lý

SENSOR_DELAY_NORMAL (200 ms) đủ cho la bàn, SENSOR_DELAY_FASTEST (0 ms) — chỉ dành cho ứng dụng nghiên cứu đặc biệt. Sau khi nhận giá trị, bạn có thể chuyển đổi chúng thành góc phương vị qua getRotationMatrix + getOrientation. Quan trọng là kiểm tra độ chính xác của cảm biến qua event.accuracy — SENSOR_STATUS_UNRELIABLE có nghĩa là cần hiệu chuẩn.

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

Ứng dụng của magnetometer trong ứng dụng di động

Magnetometer không chỉ được sử dụng cho la bàn. Ứng dụng AR, bao gồm Pokemon GO, sử dụng magnetometer để xác định hướng của camera so với thế giới thực. Không có magnetometer, ARCore chuyển sang chế độ Screen Axis — hướng chỉ được xác định bằng con quay hồi chuyển, làm giảm độ chính xác.

  • Điều hướng — xác định góc phương vị di chuyển trong Google Maps, Yandex.Maps, MAPS.ME. Độ chính xác của la bàn ảnh hưởng trực tiếp đến chất lượng tuyến đường.
  • Máy dò kim loại — ứng dụng tìm vật kim loại sử dụng magnetometer để phát hiện bất thường từ trường.
  • Địa vật lý và giáo dục — đo từ trường cho các dự án giáo dục. Cảm biến cho phép nghiên cứu từ trường Trái đất trong trường học.
  • VR và video 360 — hướng đầu trong tai nghe VR được hiệu chỉnh bằng magnetometer để bù trôi con quay hồi chuyển.

Magnetometer trong điều hướng ô tô

Trong hệ thống điều hướng ô tô dựa trên Android Auto, magnetometer được sử dụng để xác định hướng di chuyển khi mất tín hiệu GPS trong đường hầm và khu vực đô thị dày đặc. Kết hợp với dữ liệu đo quãng đường từ bánh xe ô tô (thu được qua OBD-II), magnetometer cho phép tiếp tục điều hướng tới 5 phút không có GPS với độ chính xác định vị 10–20 mét. Theo Google Maps Engineering Blog (2024), thuật toán lai giảm mất tuyến đường trong hẻm núi đô thị 40%.

Magnetometer trong ứng dụng điều hướng

Ứng dụng điều hướng sử dụng magnetometer để xác định góc phương vị di chuyển — góc giữa hướng bắc và hướng đi hiện tại của người dùng. Trong Google Maps, dữ liệu magnetometer được kết hợp với theo dõi GPS và lịch sử di chuyển để hiển thị mũi tên hướng màu xanh. Khi mất tín hiệu GPS (trong đường hầm, lối đi ngầm), magnetometer vẫn là nguồn thông tin hướng duy nhất.

Tương lai của magnetometer

Thế hệ mới của magnetometer 3 trục với ASIC tích hợp (BMM350 từ Bosch, 2024) chỉ tiêu thụ 0.35 mA và hỗ trợ tần số lên đến 200 Hz. Phát triển magnetometer lượng tử và trung tâm NV trong kim cương cho thiết bị di động vẫn chưa ra khỏi giai đoạn thí nghiệm. Dự kiến đến năm 2028, độ chính xác của magnetometer di động sẽ đạt 0.01 µT.

Câu hỏi thường gặp

Làm thế nào để hiệu chuẩn magnetometer trên điện thoại?

Vẽ hình số 8 bằng điện thoại trong không khí — đây là cử chỉ tiêu chuẩn để hiệu chuẩn la bàn kỹ thuật số. Nếu la bàn vẫn hiển thị sai, hãy kiểm tra ốp lưng: giá đỡ từ tính và phần tử kim loại tạo ra biến dạng Hard Iron mạnh.

Tại sao la bàn trên điện thoại hiển thị sai hướng?

Nguyên nhân chính: nhiễu từ từ loa và motor rung của điện thoại, thiếu hiệu chuẩn sau khi thay ốp lưng, ảnh hưởng của vật kim loại gần đó. Trong không gian kín có kết cấu bê tông cốt thép, từ trường bị biến dạng đặc biệt mạnh.

Tôi có thể sử dụng điện thoại làm máy dò kim loại không?

Có, ứng dụng dò kim loại sử dụng magnetometer tích hợp để phát hiện bất thường từ trường. Tuy nhiên, độ sâu phát hiện không vượt quá 10–20 cm và thiết bị không phân biệt loại kim loại — nó là công cụ giáo dục hơn.

Sự khác biệt giữa TYPE_MAGNETIC_FIELD và TYPE_MAGNETIC_FIELD_UNCALIBRATED là gì?

TYPE_MAGNETIC_FIELD trả về dữ liệu sau hiệu chuẩn do hệ thống áp dụng. TYPE_MAGNETIC_FIELD_UNCALIBRATED cung cấp giá trị thô cộng với ước tính độ lệch (bias), cho phép nhà phát triển áp dụng hiệu chuẩn riêng của họ.

Làm thế nào để lấy góc phương vị từ dữ liệu magnetometer?

Sử dụng SensorManager.getRotationMatrix với dữ liệu gia tốc kế và magnetometer, sau đó getOrientation — phần tử đầu tiên của mảng (góc phương vị) sẽ tính bằng radian. Để hiển thị la bàn, chuyển đổi sang độ: Math.toDegrees(azimuth).

Tóm tắt

  • Magnetometer — cảm biến từ trường ba trục hoạt động như la bàn kỹ thuật số trong thiết bị di động.
  • Công nghệ AMR dựa trên hiệu ứng Hall cho phép đo từ trường Trái đất với độ chính xác 0.15 µT/LSB.
  • Hard Iron và Soft Iron — biến dạng từ tính do linh kiện điện thoại gây ra, cần hiệu chuẩn hình số 8.
  • Android API cung cấp TYPE_MAGNETIC_FIELD và TYPE_MAGNETIC_FIELD_UNCALIBRATED với dữ liệu bằng µT.
  • Sensor Fusion kết hợp magnetometer với con quay hồi chuyển và gia tốc kế để định hướng chính xác (1–3 độ).
  • Ứng dụng bao gồm điều hướng, ứng dụng AR, máy dò kim loại và hiệu chỉnh trôi con quay hồi chuyển trong VR.
  • Cảm biến hiện đại tiêu thụ từ 0.35 mA ở 200 Hz với kích thước 1.5×1.5 mm.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm