Magnetometer sa mga smartphone — ano ito, mga uri at prinsipyo ng paggana

May-akda: IT Sectr Nai-publish: 2026-03-22 Oras ng pagbabasa: 10 min

Ang magnetometer ay isang sensor na sumusukat sa lakas ng magnetic field ng Earth upang matukoy ang mga direksyon ng compass. Sa mga mobile device, ito ay gumagana bilang isang digital compass, na nagbibigay ng katumpakan hanggang 1–2 degrees na may tamang pagkakalibrate. Ayon sa Bosch Sensortec Application Note, 2024, ang mga modernong MEMS-magnetometer ay kumokonsumo lamang ng 0.5–2 mA at kasya sa isang casing na 1.5×1.5×0.7 mm.

Mga Pangunahing Punto

  • Magnetometer — Hall sensor na sumusukat ng magnetic field sa tatlong axis na may saklaw na ±1300 µT.
  • Digital compass batay sa magnetometer ay nangangailangan ng pagkakalibrate — kung wala nito, ang error ay umaabot sa 30–40 degrees.
  • Android API ay gumagamit ng Sensor.TYPE_MAGNETIC_FIELD para ma-access ang data sa microTesla (µT).
  • Sensor Fusion ay pinagsasama ang magnetometer sa gyroscope at accelerometer para sa tumpak na oryentasyon.
  • Hard Iron at Soft Iron — mga uri ng magnetic distortion na dulot ng metal ng casing at mga speaker ng smartphone.

Ano ang magnetometer sa smartphone

Ang magnetometer sa isang mobile device ay isang three-axis magnetic field sensor batay sa Hall effect. Sinusukat nito ang mga proyeksyon ng magnetic induction vector sa X, Y, at Z axes. Kasama ng accelerometer, pinapayagan ng magnetometer ang pagtukoy ng azimuth — ang anggulo sa pagitan ng direksyon ng hilaga at axis ng telepono.

Mga uri ng magnetometer sa mga mobile device

Sa mga modernong smartphone, ginagamit ang MEMS-magnetometer batay sa anisotropic magnetoresistive effect (AMR) at Hall effect. Ang mga AMR sensor (AKM series mula sa Asahi Kasei Microdevices) ay nagbibigay ng sensitivity na 0.15 µT/LSB at saklaw na ±1200 µT — sapat na para sa pagsukat ng field ng Earth (25–65 µT).

ParameterHalaga
TeknolohiyaAMR / Hall effect
Saklaw±1200 — ±1300 µT
Konsumo0.5–2 mA
Sukat1.5×1.5×0.7 mm
Sensitivity0.15 µT/LSB

Bakit mahalaga ang magnetometer para sa smartphone

Kung wala ang digital compass, hindi matutukoy ng mga navigation app ang direksyon ng paggalaw. Ginagamit ng Google Maps ang magnetometer upang ipakita ang oryentasyon ng mapa kaugnay sa direksyon ng tingin ng user. Kapag nabigo ang sensor, ang app ay nagpapakita lamang ng posisyon sa mapa na walang asul na arrow ng direksyon.

Paano gumagana ang Hall sensor

Ang Hall effect ay isang pisikal na penomenon ng paglitaw ng potensyal na pagkakaiba sa mga gilid ng isang conducting plate sa ilalim ng impluwensya ng magnetic field. Sa MEMS-magnetometer, ginagamit ang mga thin-film structure ng permalloy (NiFe), na ang resistensya ay nagbabago sa ilalim ng impluwensya ng panlabas na magnetic field (AMR effect).

Istraktura ng AMR sensor

Ang bawat isa sa tatlong channel (X, Y, Z) ay binubuo ng apat na magnetoresistor na konektado sa Wheatstone bridge. Binabago ng magnetic field ang resistensya ng mga resistor ng 2–3%, na ginagawang boltahe ng isang differential amplifier. Isang built-in na 16-bit ADC ang nagdi-digitize ng signal na may frequency hanggang 100 Hz.

Pagsukat sa Z axis

Para sa pagsukat ng vertical component ng field, ginagamit ang integrated magnetic flux concentrator (IMC — Integrated Magnetic Concentrator). Ito ay isang thin-film structure ng NiFe na nagpapalihis ng horizontal field patungo sa vertical plane, na nagpapahintulot sa isang AMR bridge na sukatin ang lahat ng tatlong axis.

Pagkakaiba ng magnetometer at gyroscope

Ang magnetometer ay tumutukoy ng oryentasyon kaugnay sa magnetic field ng Earth (absolute reference), habang ang gyroscope ay sumusukat lamang ng pagbabago ng anggulo (relative data). Ang gyroscope ay nagbibigay ng tumpak na data sa maikling interval, ngunit nag-iipon ng drift error. Ang magnetometer ay hindi nagda-drift, ngunit madaling kapitan ng magnetic interference.

Sensor Fusion gamit ang magnetometer

Pinagsasama ng Android ang data ng tatlong sensor sa pamamagitan ng SensorManager.getRotationMatrix. Ginagamit ang magnetometer para sa pagwawasto ng gyroscope drift sa mahabang interval. Kung walang magnetometer, ang gyroscope ay nag-iipon ng error na 10–20 degrees sa loob ng 5 minuto. Ayon sa Google ARCore (2024), ang fusion algorithm ay umaabot sa katumpakan na 1–3 degrees na may 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] — azimuth sa radians

Magnetic distortion: Hard Iron at Soft Iron

Hard Iron — patuloy na magnetic field na nilikha ng ferromagnetic na materyales sa loob ng telepono: mga magnet ng speaker, vibration motor, metal frame ng casing. Ang Hard Iron distortion ay lumilitaw bilang patuloy na paglilipat (bias) sa bawat axis. Soft Iron — pagbabago ng direksyon ng field dahil sa magnetically conductive na materyales na sumisira sa hugis ng mga field lines.

Algorithm ng pagkakalibrate

Ang karaniwang pamamaraan ng pagkakalibrate ng magnetometer ay ang pag-ikot ng telepono sa pattern ng figure-8. Sa prosesong ito, ang sensor ay nagtatala ng mga punto sa tatlong-dimensional na espasyo. Kung walang distortion, ang mga punto ay nasa isang sphere na may radius na 25–65 µT. Ang Hard Iron ay naglilipat sa gitna ng sphere, ang Soft Iron ay ginagawa itong ellipsoid. Ang algorithm ng pagkakalibrate ay kinakalkula ang mga parameter ng paglilipat at pag-scale.

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

Software correction ng distortion

Ang developer ay maaaring magpatupad ng sariling pagkakalibrate ng magnetometer sa pamamagitan ng pagkolekta ng data habang gumagalaw ang device. Ang algorithm ng ellipsoid fitting ay hinahanap ang mga parameter ng Hard Iron at Soft Iron sa pamamagitan ng pag-minimize ng kabuuan ng mga kwadrado ng mga paglihis mula sa sphere. Ang Apache Commons Math library ay nagbibigay ng implementation ng non-linear least squares method (Levenberg-Marquardt) para sa gawaing ito — ang katumpakan pagkatapos ng software calibration ay umaabot sa 0.5 degrees.

Mga rekomendasyon para sa pag-aalis ng interference

Para sa pag-minimize ng Hard Iron, inilalagay ng mga manufacturer ang magnetometer sa itaas na bahagi ng telepono, malayo sa speaker at vibration motor. Ang mga inhinyero ng Apple sa iPhone 16 Pro Max (2024) ay nag-apply ng shielding ng magnetometer gamit ang permalloy foil, na nagbawas ng impluwensya ng speaker ng 4 na beses. Sa Samsung Galaxy S24 Ultra, ginagamit ang karagdagang compensation circuit na sumusukat ng kasalukuyang sa speaker sa real-time upang ibawas ang induced field. Ang mga casing na may magnetic mounts (halimbawa, sa mga car holder) ay lumilikha ng malakas na distortion — pagkatapos gamitin, ang magnetometer ay maaaring magpakita ng maling direksyon hanggang sa muling pagkakalibrate.

Programatikong access sa magnetometer sa Android

Ang Android ay nagbibigay ng dalawang sensor: TYPE_MAGNETIC_FIELD (calibrated data sa µT) at TYPE_MAGNETIC_FIELD_UNCALIBRATED (raw data na may estimate ng distortion). Para sa mga navigation app, inirerekomenda ang paggamit ng calibrated sensor — awtomatikong inilalapat ng system ang built-in na pagkakalibrate batay sa huling figure-8 na paggalaw.

Pagpaparehistro at pagproseso

Ang pagkaantala ng SENSOR_DELAY_NORMAL (200 ms) ay sapat para sa compass, ang SENSOR_DELAY_FASTEST (0 ms) — para lamang sa mga espesyal na research app. Pagkatanggap ng mga halaga, maaari itong i-convert sa azimuth sa pamamagitan ng getRotationMatrix + getOrientation. Mahalagang suriin ang katumpakan ng sensor sa pamamagitan ng event.accuracy — ang halagang SENSOR_STATUS_UNRELIABLE ay nangangahulugang kailangan ng pagkakalibrate.

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

Paggamit ng magnetometer sa mga mobile application

Ang magnetometer ay hindi lamang ginagamit para sa compass. Ang mga AR app, kabilang ang Pokemon GO, ay gumagamit ng magnetometer para sa pagtukoy ng oryentasyon ng camera kaugnay sa totoong mundo. Kapag walang magnetometer, ang ARCore ay lumilipat sa Screen Axis mode — ang oryentasyon ay tinutukoy lamang ng gyroscope, na nagbabawas ng katumpakan.

  • Navigasyon — pagtukoy ng azimuth ng paggalaw sa Google Maps, Yandex.Maps, MAPS.ME. Ang katumpakan ng compass ay direktang nakakaapekto sa kalidad ng ruta.
  • Mga detektor ng metal — ang mga app para sa paghahanap ng mga metal na bagay ay gumagamit ng magnetometer para sa pag-detect ng mga anomalya ng magnetic field.
  • Heopisika at edukasyon — pagsukat ng magnetic field para sa mga proyektong pang-edukasyon. Pinapayagan ng sensor ang pag-aaral ng magnetic field ng Earth sa mga paaralan.
  • VR at 360-video — ang oryentasyon ng ulo sa VR headset ay naitatama ng magnetometer upang mabayaran ang gyroscope drift.

Magnetometer sa nabigasyong pang-kotse

Sa mga sistema ng nabigasyong pang-kotse batay sa Android Auto, ang magnetometer ay ginagamit para sa pagtukoy ng direksyon ng paggalaw kapag nawala ang GPS signal sa mga tunnel at siksik na urban na lugar. Kasama ng odometry data mula sa mga gulong ng sasakyan (nakukuha sa pamamagitan ng OBD-II), pinapayagan ng magnetometer ang pagpapatuloy ng nabigasyon hanggang 5 minuto nang walang GPS na may katumpakan ng positioning na 10–20 metro. Ayon sa Google Maps Engineering Blog (2024), ang hybrid algorithm ay nagbabawas ng porsyento ng pagkawala ng ruta sa urban canyons ng 40%.

Magnetometer sa mga navigation app

Ang mga navigation app ay gumagamit ng magnetometer para sa pagtukoy ng azimuth ng paggalaw — ang anggulo sa pagitan ng direksyon ng hilaga at kasalukuyang direksyon ng user. Sa Google Maps, ang data ng magnetometer ay pinagsama sa GPS track at kasaysayan ng paggalaw upang ipakita ang asul na arrow ng direksyon. Kapag nawala ang GPS signal (sa mga tunnel, underground passage), ang magnetometer ay nananatiling tanging mapagkukunan ng impormasyon tungkol sa oryentasyon.

Kinabukasan ng mga magnetometer

Ang bagong henerasyon ng 3-axis magnetometer na may integrated ASIC (BMM350 mula sa Bosch, 2024) ay kumokonsumo lamang ng 0.35 mA at sumusuporta sa frequency hanggang 200 Hz. Ang pag-unlad ng quantum magnetometer at NV centers sa brilyante para sa mga mobile device ay hindi pa lumalabas sa yugto ng laboratory experiments. Inaasahan na sa 2028, ang katumpakan ng mobile magnetometer ay aabot sa 0.01 µT.

Mga Madalas Itanong

Paano i-calibrate ang magnetometer sa telepono?

Gumuhit ng figure-8 gamit ang telepono sa hangin — ito ang karaniwang galaw para sa pagkakalibrate ng digital compass. Kung mali pa rin ang ipinapakita ng compass, suriin ang casing: ang magnetic mounts at metal na elemento ay lumilikha ng malakas na Hard Iron distortion.

Bakit mali ang ipinapakita ng compass sa telepono?

Mga pangunahing dahilan: magnetic interference mula sa mga speaker at vibration motor ng telepono, kawalan ng pagkakalibrate pagkatapos magpalit ng casing, impluwensya ng mga metal na bagay sa paligid. Sa mga silid na may reinforced concrete structures, ang magnetic field ay lalong malakas na na-distort.

Maaari bang gamitin ang telepono bilang metal detector?

Oo, ang mga metal detector app ay gumagamit ng built-in na magnetometer para sa pagtuklas ng mga anomalya ng magnetic field. Gayunpaman, ang lalim ng pagtuklas ay hindi lalampas sa 10–20 cm, at hindi nakikilala ng device ang mga uri ng metal — ito ay higit na isang pang-edukasyon na kasangkapan.

Ano ang pagkakaiba ng TYPE_MAGNETIC_FIELD at TYPE_MAGNETIC_FIELD_UNCALIBRATED?

Ang TYPE_MAGNETIC_FIELD ay nagbabalik ng data pagkatapos ng pagkakalibrate na inilapat ng system. Ang TYPE_MAGNETIC_FIELD_UNCALIBRATED ay nagbibigay ng raw values kasama ang estimate ng bias, na nagpapahintulot sa developer na maglapat ng sariling pagkakalibrate.

Paano makakuha ng azimuth mula sa data ng magnetometer?

Gamitin ang SensorManager.getRotationMatrix kasama ang data ng accelerometer at magnetometer, pagkatapos getOrientation — ang unang elemento ng array (azimuth) ay nasa radians. Para sa pagpapakita ng compass, i-convert sa degrees: Math.toDegrees(azimuth).

Buod

  • Magnetometer — three-axis magnetic field sensor na gumagana bilang digital compass sa mga mobile device.
  • AMR technology batay sa Hall effect ay nagpapahintulot sa pagsukat ng field ng Earth na may katumpakan na 0.15 µT/LSB.
  • Hard Iron at Soft Iron — magnetic distortion na dulot ng mga component ng telepono na nangangailangan ng pagkakalibrate sa pamamagitan ng figure-8 na paggalaw.
  • Android API ay nagbibigay ng TYPE_MAGNETIC_FIELD at TYPE_MAGNETIC_FIELD_UNCALIBRATED na may data sa µT.
  • Sensor Fusion ay pinagsasama ang magnetometer sa gyroscope at accelerometer para sa tumpak (1–3 degrees) na oryentasyon.
  • Mga aplikasyon ay kinabibilangan ng nabigasyon, AR apps, metal detector, at pagwawasto ng gyroscope drift sa VR.
  • Mga modernong sensor ay kumokonsumo mula 0.35 mA sa frequency na 200 Hz at may sukat na 1.5×1.5 mm.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din