수평계 앱은 어떻게 작동할까: 휴대폰 가속도계의 원리
휴대폰이 어느 쪽이 아래인지 아는 이유는 MEMS 가속도계라는 아주 작은 센서가 들어 있기 때문입니다. 이 센서는 중력이 세 방향으로 휴대폰을 얼마나 당기는지 동시에 측정합니다. 수평계 앱은 이 세 개의 값을 읽어 간단한 삼각법 계산을 거친 뒤 각도를 보여줍니다. 이 과정은 1초에 수백 번, 맨눈으로는 알아보기 힘든 칩 안에서 일어납니다. 이 글에서는 그 안에서 실제로 무슨 일이 벌어지는지 살펴봅니다.
- 가속도계는 중력이 세 축에 어떻게 나뉘는지 측정합니다. 휴대폰이 가만히 있을 때 움직임을 재는 것이 아닙니다.
- 피치와 롤은 이 세 개의 중력 값에 아크탄젠트 공식을 적용해 구합니다.
- Spirit Level Pro는 원본 값을 지수 이동 평균(alpha=0.15)으로 처리해 거품이 떨리는 것을 막습니다.
- MEMS 센서는 온도에 따라 값이 달라지므로, 작업할 곳에서 영점을 맞추세요.
- 표면에 대고 가만히 잡은 휴대폰이라면 가속도계 하나로 충분합니다. 자이로스코프는 필요 없습니다.
MEMS 가속도계란 무엇인가
MEMS는 Micro-Electro-Mechanical Systems, 즉 미세 전자기계 시스템의 약자입니다. 휴대폰 가속도계 안에서 실제로 감지하는 부분은 아주 작습니다. 폭이 수백 마이크로미터, 소금 한 알보다 작습니다. 이 부분은 일반 칩 회로와 같은 실리콘 위에 얹혀 같은 방식으로 만들어집니다. 그래서 이런 센서가 값싸고, 거의 모든 휴대폰에 들어가 있는 것입니다.
구조는 그림으로 떠올려 보면 간단합니다. 칩에 새겨진 실리콘 스프링에 아주 작은 질량이 매달려 있습니다. 칩을 기울이면 중력이 이 질량을 중심에서 살짝 밀어냅니다. 그 움직임이 빗살처럼 생긴 금속 손가락 사이의 간격을 바꾸고, 간격이 바뀌면 그 사이의 정전 용량이 달라집니다. 칩은 이 변화를 읽어 g 단위의 가속도 값으로 바꿉니다.
수평계가 성립하는 핵심이 여기에 있습니다. 휴대폰이 가만히 있을 때 가속도계는 움직임을 재는 것이 아닙니다. 세 축 각각으로 중력이 얼마나 당기는지를 읽습니다. 중력은 크기가 정해진, 이미 알고 있는 힘입니다. 그것이 세 축에 어떻게 나뉘는지 알면 휴대폰이 정확히 어떻게 기울었는지 계산할 수 있습니다.
3축 가속도계는 기울기를 어떻게 재는가
3축 가속도계는 휴대폰에 자기만의 방향 기준을 부여합니다. X는 좌우, Y는 위아래, Z는 앞뒤입니다. 휴대폰을 탁자에 평평하게 놓으면 중력이 거의 전부 Z를 따라 당깁니다. 그래서 Z는 약 9.81m/s²을 읽고 X와 Y는 0에 가깝게 나옵니다. 휴대폰을 기울이면 중력이 옮겨 갑니다. Z에는 덜, X와 Y에는 더, 기운 각도에 비례해서 나뉩니다.
이 세 값을 각도로 바꾸는 것은 기본적인 삼각법입니다. 피치는 앞뒤 기울기, 롤은 좌우 기울기이며, 둘 다 아크탄젠트(역정접)로 구합니다.
이 두 줄이 수평계 앱 계산의 전부입니다. 세 개의 원본 값을 넣고 계산하면 라디안 단위의 피치와 롤이 나옵니다. 여기에 180/π를 곱하면 도 단위가 됩니다. 그것이 화면에 뜨는 숫자입니다.
왜 분모에 한 축이 아니라 나머지 두 축의 제곱근을 쓰는지 궁금할 수 있습니다. 그래야 한 바퀴 도는 동안 값이 안정적으로 유지됩니다. 한 축으로만 나누면 수직에 가까울 때 계산이 무너집니다. 그 축이 0에 가까워지면서 거의 0으로 나누는 꼴이 되기 때문입니다. 나머지 두 축을 합친 크기로 나누면 이 문제를 피할 수 있습니다.
Spirit Level Pro는 EMA 평활화, 다섯 가지 허용 오차 프리셋, 한 번의 탭으로 하는 영점 조정과 함께 실시간 피치와 롤 각도를 보여줍니다. 설치할 필요 없습니다.
Spirit Level Pro 무료로 써보기원본 센서 값은 왜 이렇게 지저분할까
가속도계에서 나오는 원본 값은 생각보다 훨씬 심하게 튑니다. 완전히 가만히 있는 휴대폰조차 값이 미세하게 흔들립니다. 일부는 센서 자체의 전기 잡음이고, 일부는 바닥을 타고 올라오는 진동이며, 일부는 아날로그 신호를 숫자로 바꾸는 과정의 반올림 오차입니다. 이 원본 값을 그대로 화면에 띄우면 거품이 쉼 없이 떨려서 정밀한 작업에는 쓸 수가 없습니다.
잡음은 몇 군데서 나옵니다. 열 잡음은 열 때문에 생기는 무작위 전기 요동입니다. 없앨 수 없고, 센서가 도달할 수 있는 조용함의 한계를 정합니다. 진동 잡음은 주변 환경에서 옵니다. 냉장고 압축기, 발소리, 바깥 차 소리 같은 것들입니다. 그리고 센서의 영점 자체가 시간이 지나면서 천천히 밀려납니다. 이들은 각각 다른 방법으로 다뤄야 합니다.
보통 쓰는 소프트웨어 해법은 저역 통과 필터입니다. 실제 기울기 같은 느린 변화는 통과시키고, 진동 같은 빠른 변화는 막습니다. 흔한 방식은 지수 이동 평균(EMA)입니다. 새로 들어온 값에는 알파만큼의 비중을 주고, 나머지는 직전에 걸러진 값에서 이어받습니다.
Spirit Level Pro는 alpha=0.15인 EMA를 씁니다. 여러 값을 직접 손으로 시험해 본 끝에 정한 값입니다. alpha=0.05에서는 값이 아주 매끈했지만 반응이 느려서, 휴대폰을 움직이면 거품이 뒤처졌습니다. alpha=0.3에서는 잘 따라왔지만, 정밀한 값을 잡기 어려울 만큼 떨렸습니다. alpha=0.15는 그 사이입니다. 거품이 예민하지 않으면서도 살아 있는 느낌을 줍니다.
자이로스코프는 어떤 역할을 하는가
자이로스코프는 휴대폰이 얼마나 빨리 도는지를 초당 도 단위로 측정합니다. 휴대폰이 어느 쪽을 향하는지는 재지 않습니다. 이 차이가 중요합니다. 자이로스코프 하나로는 휴대폰이 수평인지 알 수 없습니다. 지금 돌고 있는지, 그리고 얼마나 빨리 도는지만 압니다. 휴대폰을 가만히 잡고 수평을 읽는 데는 가속도계에 이미 필요한 정보가 다 있습니다.
자이로스코프가 제 몫을 하는 때는 휴대폰이 움직일 때, 센서 융합에서입니다. 가속도계는 정지 상태의 기울기는 잘 읽지만 빠른 움직임에서는 느리고 지저분해집니다. 자이로스코프는 빠른 회전은 잘 따라가지만, 작은 오차가 쌓이면서 값이 조금씩 밀립니다. 상보 필터나 칼만 필터가 이 둘을 섞습니다. 빠른 움직임은 자이로스코프가 맡고, 가속도계가 긴 흐름의 값을 참값 쪽으로 다시 끌어당깁니다.
Spirit Level Pro를 비롯한 대부분의 수평계 앱은 센서 융합을 쓰지 않습니다. 하는 일이 정지 상태 측정이기 때문입니다. 휴대폰을 내려놓고, 값이 잦아들면, 각도를 읽습니다. 이 정도는 가속도계 혼자서 잘 처리합니다. 센서 융합은 선반을 확인할 때보다, 드론이 자기 움직임을 좇는 것처럼 무언가가 날아다닐 때 더 필요합니다.
영점 조정이 왜 그렇게 중요한가
모든 MEMS 센서는 공장에서 나올 때부터 작은 오프셋을 가지고 있습니다. 제조 과정에서 정해지는 편향이고, 모든 값에 똑같이 실립니다. 정해진 크기만큼, 정해진 방향으로요. 그래서 휴대폰이 진짜로 평평해도 칩이 1~2도쯤 어긋나게 읽을 수 있습니다. 수평계 앱이 처음부터 이상하게 보이는 가장 큰 이유가 바로 이것입니다.
영점 조정은 평평하다고 믿을 만한 표면에서 이 오프셋을 재어 저장하는 방식으로 이를 바로잡습니다. Spirit Level Pro는 그 값을 localStorage의 calibrationPitch와 calibrationRoll에 저장합니다. 그다음부터는 값이 화면에 뜨기 전에 저장해 둔 이 숫자를 매번 빼 줍니다. 오프셋이 사라지는 것입니다.
차이는 큽니다. 영점 조정을 건너뛰면 1.5도 편향을 가진 휴대폰은 모든 값이 1.5도 어긋납니다. 실제로 1.5도 기운 면에 놓여 있어도 0.0도로 보일 수 있습니다. 같은 휴대폰을 영점 조정하면 오차가 몇 십분의 1도 수준으로 떨어집니다. 몇 초면 되는데, 정확도를 한 번에 가장 크게 끌어올리는 방법입니다.
온도는 정확도에 어떤 영향을 주는가
MEMS 센서는 온도에 반응합니다. 감지 질량을 붙들고 있는 실리콘 스프링이 칩이 데워지거나 식으면서 늘거나 줄고, 그에 따라 영점이 밀립니다. 그래서 따뜻한 차 안에서 추운 창고로 휴대폰을 가져가면, 센서가 새 온도에 자리 잡기 전까지 값이 조금 밀립니다. 큰 변화는 아니지만 분명히 있습니다.
실용적인 교훈은 간단합니다. 작업할 온도에서 영점을 맞추세요. 따뜻한 사무실에서 맞춘 영점은 추운 창고에서는 완전히 맞지 않습니다. 작업마다 이걸 신경 쓸 필요는 없습니다. 액자를 걸거나 선반을 확인하는 정도라면 밀리는 양이 눈에 안 보일 만큼 작습니다. 몇 십분의 1도까지 다투는 정밀한 작업이라면, 온도가 크게 바뀐 뒤 휴대폰을 1~2분 두어 자리 잡게 한 다음 영점을 맞추세요.
아이폰 대 안드로이드: 센서 하드웨어가 다를까
다릅니다. 그리고 그 차이가 앱의 느낌으로 드러납니다. 애플은 자체 모션 처리 체계를 만듭니다. 6s 이후의 아이폰에는 애플 모션 코프로세서가 들어 있어, 센서 데이터를 메인 CPU와 따로 처리합니다. 삼성 갤럭시 플래그십은 3축 가속도계와 3축 자이로스코프를 한 다이에 담은 STMicroelectronics 부품을 씁니다. 구글 픽셀은 해에 따라 보쉬와 TDK InvenSense 센서를 써 왔습니다.
영점 조정을 마치면 플래그십 아이폰과 플래그십 안드로이드는 비슷하게 나옵니다. 실제로 벌어지는 차이는 플래그십과 보급형 안드로이드 사이에 있습니다. 보급형 휴대폰은 해상도가 낮은 값싼 MEMS를 써서 원본 값이 더 지저분합니다. 그래도 영점 조정으로 상당히 가까워지고, 대부분의 DIY 작업에는 그 결과로 충분합니다.
수평계 앱에서 아이폰을 돋보이게 하는 것은 가속도계라기보다 그 모션 코프로세서입니다. 앱이 앞에 떠 있지 않을 때도 센서 데이터를 높은 속도로 계속 모으기 때문에, 평활화 필터가 다룰 표본이 더 많아집니다. 종이 위 성능이 엇비슷한 안드로이드와 견주어도 아이폰이 유독 매끄럽게 느껴지는 큰 이유가 이것입니다.
자주 묻는 질문
휴대폰에서 수평계 앱은 어떻게 작동하나요?
휴대폰의 MEMS 가속도계를 읽습니다. 이 센서는 중력이 세 축(X, Y, Z)으로 얼마나 당기는지 측정합니다. 휴대폰을 기울이면 중력이 축 사이에서 옮겨 갑니다. 앱은 아크탄젠트 공식으로 피치와 롤을 구하고, 센서 잡음을 가라앉히려고 값을 평활화한 뒤, 이를 거품 유리관이나 숫자로 보여 줍니다. 이 전체 과정이 1초에 수백 번 돌아갑니다.
수평계 용도로 휴대폰 가속도계는 얼마나 정확한가요?
영점 조정을 한 플래그십 휴대폰은 몇 십분의 1도 안쪽까지 읽습니다. 보급형 안드로이드는 영점 조정을 안 하면 더 나쁘게 나옵니다. 센서가 더 값싸고 기기마다 편차도 크기 때문입니다. 가장 큰 요인은 영점 조정입니다. 공장 오프셋을 없애 거의 모든 휴대폰을 가깝게 끌어당깁니다. 대부분의 DIY와 현장 작업에서는 영점 조정을 한 중급 휴대폰이면 충분히 정확합니다.
수평계 앱이 자이로스코프를 쓰나요?
가만히 있는 휴대폰이라면 안 씁니다. 가속도계 하나로 기울기 각도가 나옵니다. 자이로스코프는 위치가 아니라 회전 속도를 재기 때문에, 휴대폰이 수평인지는 알려 주지 못하고 얼마나 빨리 도는지만 압니다. 움직이는 동안 더 매끄러운 값을 얻으려고 두 센서를 섞는 앱도 있지만, 휴대폰을 벽에 대고 각도를 읽는 데는 가속도계가 전부를 해냅니다.
평평한 면인데도 수평계 앱이 조금 어긋나게 읽는 이유는?
대개는 공장 오프셋입니다. 모든 MEMS 칩에는 휴대폰이 평평해도 0이 아닌 값을 읽게 하는 작은 편향이 박혀 있습니다. 믿을 만한 면에서 영점을 맞추면 사라집니다. 다른 원인으로는 온도에 따른 밀림, 한쪽 모서리를 들어 올리는 휴대폰 케이스, 휴대폰 밑에 낀 먼지가 있습니다. 온도가 크게 바뀐 뒤 깨끗한 유리 탁자에서 영점을 맞추면 대부분 해결됩니다.
전체 그림
수평계 앱이 작동하는 것은 그 바탕의 물리가 믿을 만하기 때문입니다. 중력은 일정하고, 가속도계는 그것을 늘 측정하며, 삼각법이 세 개의 숫자를 각도로 바꿉니다. 감지 소자에서 거품까지 가는 길은 처음부터 끝까지 정해진 계산입니다. 여기에 어림짐작은 없습니다.
어떤 수평계 앱이 다른 것보다 나은지는 하드웨어에서 갈리지 않습니다. 플래그십 휴대폰은 이미 충분히 좋은 센서를 달고 나옵니다. 차이는 소프트웨어에 있습니다. 원본 값을 얼마나 잘 걸러 내는지, 영점을 어떻게 저장하고 적용하는지, 허용 오차 프리셋이 실제 작업에 얼마나 잘 맞는지입니다. 이걸 제대로 하면 값싼 MEMS 칩도 훨씬 비싼 전용 공구에 맞설 수 있습니다.
센서가 어떻게 작동하는지 알면 그것을 더 잘 쓸 수 있습니다. 작업할 온도에서 영점을 맞추세요. 정밀하게 읽을 때는 케이스를 벗기세요. 값을 믿기 전에 1초쯤 자리 잡게 두세요. 이런 습관은 모두 하드웨어가 무엇을 하고 있는지 이해하는 데서 곧바로 나옵니다.