스마트폰의 자기계 — 정의, 유형 및 작동 원리

저자: 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 패키지에 들어갑니다.

주요 포인트

  • 자기계 — ±1300 µT 범위로 세 축을 따라 자기장을 측정하는 홀 효과 센서.
  • 디지털 나침반은 자기계 기반으로 보정 필요 — 없으면 오차가 30–40도에 도달함.
  • Android API는 마이크로테슬라(µT) 단위 데이터에 접근하기 위해 Sensor.TYPE_MAGNETIC_FIELD를 사용.
  • 센서 퓨전은 정확한 방향을 위해 자기계를 자이로스코프 및 가속도계와 결합.
  • 하드 아이언과 소프트 아이언 — 전화기의 금속 케이싱과 스피커로 인한 자기 왜곡 유형.

스마트폰의 자기계란 무엇인가

모바일 기기의 자기계는 홀 효과에 기반한 3축 자기장 센서입니다. X, Y, Z 축에 대한 자기 유도 벡터의 투영을 측정합니다. 가속도계와 결합하여 자기계는 방위각 — 북쪽 방향과 전화기 축 사이의 각도 — 을 결정합니다.

모바일 기기의 자기계 유형

최신 스마트폰은 이방성 자기저항 효과(AMR)와 홀 효과에 기반한 MEMS 자기계를 사용합니다. AMR 센서(Asahi Kasei Microdevices의 AKM 시리즈)는 0.15 µT/LSB의 감도와 ±1200 µT의 범위를 제공하여 — 지구 자기장(25–65 µT)을 측정하기에 충분합니다.

파라미터
기술AMR / 홀 효과
범위±1200 — ±1300 µT
소비 전력0.5–2 mA
크기1.5×1.5×0.7 mm
감도0.15 µT/LSB

스마트폰에 자기계가 중요한 이유

디지털 나침반이 없으면 내비게이션 앱이 이동 방향을 결정할 수 없습니다. Google Maps는 사용자의 시선 방향에 대한 지도 방향을 표시하기 위해 자기계를 사용합니다. 센서가 실패하면 앱은 파란색 방향 화살표 없이 지도에 위치만 표시합니다.

홀 효과 센서의 작동 방식

홀 효과는 전도성 판이 자기장에 노출될 때 가장자리에 전위차가 발생하는 물리적 현상입니다. MEMS 자기계는 퍼멀로이(NiFe)로 만들어진 박막 구조를 사용하며, 그 저항은 외부 자기장(AMR 효과)의 영향으로 변화합니다.

AMR 센서 구조

세 채널(X, Y, Z) 각각은 휘트스톤 브리지에 연결된 4개의 자기저항 소자로 구성됩니다. 자기장은 저항값을 2–3% 변화시키며, 차동 증폭기에 의해 전압으로 변환됩니다. 내장된 16비트 ADC는 최대 100 Hz의 주파수로 신호를 디지털화합니다.

Z축 측정

자기장의 수직 성분을 측정하기 위해 집적 자기 집속기(IMC)가 사용됩니다. 이것은 NiFe의 박막 구조로, 수평 자기장을 수직 평면으로 편향시켜 단일 AMR 브리지가 세 축 모두를 측정할 수 있게 합니다.

자기계와 자이로스코프의 차이

자기계는 지구 자기장에 대한 방향(절대 기준)을 결정하는 반면, 자이로스코프는 각도 변화(상대 데이터)만 측정합니다. 자이로스코프는 짧은 간격으로 정확한 데이터를 제공하지만 드리프트 오차가 누적됩니다. 자기계는 드리프트가 없지만 자기 간섭에 취약합니다.

자기계를 사용한 센서 퓨전

Android는 SensorManager.getRotationMatrix를 통해 세 센서의 데이터를 결합합니다. 자기계는 긴 간격에서 자이로스코프 드리프트를 보정하는 데 사용됩니다. 자기계가 없으면 자이로스코프는 5분 만에 10–20도의 오차를 누적합니다. Google ARCore(2024)에 따르면, 퓨전 알고리즘은 자기계를 사용하여 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] — 라디안 단위의 방위각

자기 왜곡: 하드 아이언과 소프트 아이언

하드 아이언 — 전화기 내부의 강자성 재료(스피커 자석, 진동 모터, 금속 프레임)에 의해 생성되는 영구 자기장. 하드 아이언 왜곡은 각 축을 따라 일정한 오프셋(바이어스)으로 나타납니다. 소프트 아이언 — 자기력선을 왜곡하는 투자성 재료에 의해 발생하는 자기장 방향의 변화.

보정 알고리즘

자기계 보정의 표준 절차는 전화기를 8자 모양으로 회전하는 것입니다. 과정 중에 센서는 3차원 공간의 점들을 기록합니다. 왜곡이 없으면 점들은 반경 25–65 µT의 구에 위치합니다. 하드 아이언은 구의 중심을 이동시키고, 소프트 아이언은 이를 타원체로 변환합니다. 보정 알고리즘은 오프셋과 스케일링 파라미터를 계산합니다.

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

소프트웨어 왜곡 보정

개발자는 기기가 움직이는 동안 데이터를 수집하여 자체 자기계 보정을 구현할 수 있습니다. 타원체 피팅 알고리즘은 구로부터의 제곱 편차 합을 최소화하여 하드 아이언과 소프트 아이언 파라미터를 찾습니다. Apache Commons Math 라이브러리는 이 작업을 위한 비선형 최소자승법(Levenberg-Marquardt) 구현을 제공합니다 — 소프트웨어 보정 후 정확도는 0.5도에 도달합니다.

간섭 완화 권장사항

하드 아이언을 최소화하기 위해 제조업체는 자기계를 전화기 상단, 스피커와 진동 모터에서 멀리 배치합니다. Apple 엔지니어는 iPhone 16 Pro Max(2024)에서 자기계에 퍼멀로이 호일 차폐를 사용하여 스피커 영향을 4배 줄였습니다. Samsung Galaxy S24 Ultra는 유도 자기장을 빼기 위해 스피커 전류를 실시간으로 측정하는 추가 보상 회로를 사용합니다. 자기 마운트가 있는 케이스(예: 차량용 홀더)는 강한 왜곡을 생성합니다 — 사용 후 자기계는 재보정까지 잘못된 방향을 표시할 수 있습니다.

Android에서 자기계에 프로그래밍 방식 접근

Android는 두 가지 센서를 제공합니다: TYPE_MAGNETIC_FIELD(µT 단위의 보정된 데이터)와 TYPE_MAGNETIC_FIELD_UNCALIBRATED(왜곡 추정치가 포함된 원시 데이터). 내비게이션 앱의 경우 보정된 센서를 사용하는 것이 좋습니다 — 시스템은 마지막 8자 움직임을 기반으로 자동으로 내장 보정을 적용합니다.

등록 및 처리

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 Maps, Yandex.Maps, MAPS.ME에서 이동 방위각 결정. 나침반 정확도는 경로 품질에 직접 영향을 미칩니다.
  • 금속 탐지기 — 금속 물체를 찾는 앱은 자기장 이상을 감지하기 위해 자기계를 사용합니다.
  • 지구물리학 및 교육 — 교육 프로젝트를 위한 자기장 측정. 이 센서는 학교에서 지구 자기장을 연구할 수 있게 합니다.
  • VR 및 360도 비디오 — VR 헤드셋의 머리 방향은 자이로스코프 드리프트를 보상하기 위해 자기계로 보정됩니다.

자동차 내비게이션의 자기계

Android Auto 기반 자동차 내비게이션 시스템에서는 터널과 밀집된 도시 지역에서 GPS 신호가 손실될 때 이동 방향을 결정하기 위해 자기계가 사용됩니다. 차량 바퀴의 주행 거리 데이터(OBD-II를 통해 획득)와 결합하여 자기계는 10–20미터의 위치 정확도로 GPS 없이 최대 5분 동안 내비게이션을 계속할 수 있습니다. Google Maps Engineering Blog(2024)에 따르면, 하이브리드 알고리즘은 도시 협곡에서 경로 손실을 40% 줄입니다.

내비게이션 앱의 자기계

내비게이션 앱은 자기계를 사용하여 이동 방위각을 결정합니다 — 북쪽과 사용자의 현재 방향 사이의 각도. Google Maps에서 자기계 데이터는 GPS 트랙 및 이동 기록과 결합되어 파란색 방향 화살표를 표시합니다. GPS 신호가 손실되면(터널, 지하 통로) 자기계가 유일한 방향 정보 소스로 남습니다.

자기계의 미래

통합 ASIC을 갖춘 새로운 세대의 3축 자기계(Bosch의 BMM350, 2024)는 0.35 mA만 소비하고 최대 200 Hz를 지원합니다. 모바일 기기용 양자 자기계와 다이아몬드 NV 센터의 개발은 아직 실험실 단계를 벗어나지 못했습니다. 2028년까지 모바일 자기계의 정확도는 0.01 µT에 도달할 것으로 예상됩니다.

자주 묻는 질문

전화기에서 자기계를 어떻게 보정하나요?

전화기로 공중에 8자를 그리세요 — 이것이 디지털 나침반을 보정하는 표준 동작입니다. 나침반이 여전히 잘못 표시되면 케이스를 확인하세요: 자기 마운트와 금속 요소가 강한 하드 아이언 왜곡을 생성합니다.

전화기 나침반이 잘못된 방향을 표시하는 이유는 무엇인가요?

주요 원인: 전화기 스피커와 진동 모터의 자기 간섭, 케이스 교체 후 보정 부족, 근처 금속 물체의 영향. 철근 콘크리트 구조물이 있는 실내에서는 자기장이 특히 강하게 왜곡됩니다.

전화기를 금속 탐지기로 사용할 수 있나요?

네, 금속 탐지기 앱은 내장 자기계를 사용하여 자기장 이상을 감지합니다. 그러나 감지 깊이는 10–20 cm를 초과하지 않으며, 장치는 금속 유형을 구분하지 못합니다 — 교육용 도구에 가깝습니다.

TYPE_MAGNETIC_FIELD와 TYPE_MAGNETIC_FIELD_UNCALIBRATED의 차이는 무엇인가요?

TYPE_MAGNETIC_FIELD는 시스템이 적용한 보정 후 데이터를 반환합니다. TYPE_MAGNETIC_FIELD_UNCALIBRATED는 바이어스 추정치와 함께 원시 값을 제공하여 개발자가 자체 보정을 적용할 수 있게 합니다.

자기계 데이터에서 방위각을 얻는 방법은?

가속도계와 자기계 데이터로 SensorManager.getRotationMatrix를 사용한 다음 getOrientation — 첫 번째 배열 요소(방위각)는 라디안 단위입니다. 나침반을 표시하려면 도로 변환: Math.toDegrees(azimuth).

요약

  • 자기계 — 모바일 기기에서 디지털 나침반으로 작동하는 3축 자기장 센서.
  • AMR 기술은 홀 효과에 기반하여 0.15 µT/LSB 정확도로 지구 자기장 측정 가능.
  • 하드 아이언과 소프트 아이언 — 전화기 부품으로 인한 자기 왜곡으로 8자 보정 필요.
  • Android API는 µT 단위 데이터로 TYPE_MAGNETIC_FIELD와 TYPE_MAGNETIC_FIELD_UNCALIBRATED 제공.
  • 센서 퓨전은 정확한(1–3도) 방향을 위해 자기계를 자이로스코프 및 가속도계와 결합.
  • 응용에는 내비게이션, AR 앱, 금속 탐지기, VR의 자이로스코프 드리프트 보정 포함.
  • 최신 센서는 1.5×1.5 mm 크기로 200 Hz에서 0.35 mA부터 소비.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기