제조사별
운영 체제별
찾기
도구모음
LANGUAGES

가속도 센서

스마트위키, 임베디드에 관한 모든 것.

Gravity.jpg

가속도 센서는 단위시간당 속도의 변화를 검출하는 소자로, 가속도·진동·충격 등의 동적인 힘을 감지하며 관성력, 전기변형, 자이로의 원리를 이용한 것이다. 자동차, 기차, 선박 등 여러 가지 분야에서 제각각의 활용도가 있긴 하지만 여기서는 스마트폰에 활용된 가속도 센서에 대해 서술하도록 한다.

목차

[편집] 측정 원리

가속도계는 물체 고유의 가속도를 측정하는데, 고유의 가속도란 물체가 자유 낙하할 때 사람이나 물체가 받는 속도의 변화를 말한다. 다른 관점에서 보면, 공중에 있는 모든 시점에서 물체는 등가원리에 따르면 관성을 갖게 되며, 가속도계는 직전 순간의 관성 좌표계를 측정하게 되는데 그것을 중력 가속도라고 흔히 말한다.

가속도계는 정지 상태에서 지구 표면에 대해 윗 방향으로 약 1 g를 나타내는데, 이는 지구 표면 위 모든 곳은 관성 좌표계에서 윗쪽으로 가속시키고 있기 때문이다. (표면 가까이로 자유 낙하하는 좌표) 지구에 대해 이 움직임의 가속도를 구하면, 이 “중력가속도”는 관성 좌표계에서 지구 자전에 의한 효과를 감산하고 보정해야 한다.

큰 분류로 기계식의 센서와 반도체식을 이용한 제품 두 가지가 있다. 현재는 반도체식이 주로 쓰이고 있는데, 이는 소형이면서도 정밀한 검출이 가능하여 휴대 전화에 적합한 형태이기 때문이다.

기계식의 경우는 용수철(혹은 그에 준하는 것)에 매달린 추와 댐퍼로 구성되어 있다. 특정 수학식을 이용하면 추가 이동한 거리를 통해 가속도를 구해낼 수 있다. 그러나 기계식 센서는 제한된 범위의 가속도만 측정할 수 있는데다 소형화가 어려워 휴대 기기에는 쓰이지 않고 있다.

  • F=kx=ma
  • a=\frac{k}{m}x
  • w_{\theta}=\sqrt{\frac{k}{m}}

반도체식의 세부 분류로는 다음과 같은 것이 있다.

  • 압전형
압전 소자에 힘이 가해졌을 때 발생하는 전하를 검출하여 가속도를 구한다.
  • 동전형
도체가 자계 속을 이동하면 그 속도에 비례하여 기전력이 발생하게 된다. 기전력의 세기를 검출하여 가속도를 구한다.
  • 서모형
진자의 변화를 정전용량을 통해 전류로 검출하여 가속도를 구한다.
  • 변형 게이지형
저항선 변형 게이지
다이어프램(스프링) 등에 저항선 변형 게이지를 붙여서 가해진 힘과 저항의 변화에서 가속도를 구한다.
반도체 변형 게이지
Si, Ge 단결정의 피에조 저항 효과[1]를 이용하여 가해진 힘과 저항의 변화에서 가속도를 구한다.

일반적으로 이렇게 하면 단방향의 가속도를 구할 수 있다. 하지만 이래서는 그리 쓸 일이 없다(...) 노트북 하드 보호용으로는 쓸만하려나


[편집] 3축 센서

그렇기 때문에 휴대 전화에는 3방향 x, y, z 축 각 방향으로 센서가 존재하며 휴대 전화는 이 벡터값으로 계산해낸다.

중력 가속도를 기준으로 물체의 기울어진 각도는 중력의 세기로 측정 가능하다.

수평으로 누워있는 휴대 전화에서 수직 방향의 수직 센서값은 0G이다. 다시 이것을 수직으로 세우면 수직 센서값은 1G가 된다. (수치의 범위는 내부 프로그래밍 단계에서는 달라진다. 예를 들어 옴니아의 모션 센서 각 축의 최대값은 255까지이다)

이 때 휴대 전화가 30도로 비스듬히 있으면 수직 센서값은 0.5G를 기록하게 되는데, 이는 삼각함수 sin 값으로 쉽게 구해낼 수 있다.

문제는 역시 벡터.

이와 같은 값을 세 축 모두 종합하면 휴대 전화가 어느 쪽으로 기울어져 있는지 확인할 수 있다.

[편집] 쓰임

21세기의 수많은 장치들은 가속도 센서를 통해 장치가 어느 방향으로 들려 있는지를 확인하고 화면을 조정한다. 이를테면 세로 상태의 장치를 가로로 기울이면 가로로 회전한다. 이런 장치는 타블렛 PC와 최근 출시된 스마트폰과 디지털 카메라에 널리 쓰이고 있다.

애플아이폰아이팟 터치에 LIS302DL 가속도계를 사용하여 화면 방향을 바꾸고, 그 외에도 많은 게임이 이 기능을 활용해 장치를 기울이는 방식으로 조작하기도 한다. BlackBerry윈도 폰 역시 방향 변화를 감지하는데 쓴다. 근데 윈도 모바일 시절엔 없는 것이 당연했기에, 운영 체제에서는 지원하지 않았기에 앱에 따라 화면 전환이 되는 것도 있고 안 되는 것도 있었다! 무슨 짓을 해도 바꿀 수 없는 인사이트폰의 가속도 센서 회전 설정

의외로 2006년 무렵 나온 애니콜 휴대폰 중에 동작 감지 폰들이 있었다. 폰을 특정한 방향으로 흔들어서 기능을 동작하는 방식. 그리고 잊혀졌지

정확도가 괜찮다면 주머니에 넣고 걸을 때의 움직임을 앱이 인식하고 만보기로도 쓰일 수 있는 듯. (SCH-S260)

[편집] 안드로이드

중력 가속도는 값을 받아올때 정지한 상태에서 value.x, value,y, value.z 을 받아오게되면

z값이 유난히 큰 상태에서 벡터의 합을 구하게 되어 z 축 마이너스 방향으로 9.8~ 9.9~ 왔다갔다 한다.

가속도센서는 이벤트 값에서 중력값을 뺀 값을 가속도 값으로 한다.

Sensor.TYPE_ACCELEROMETER:

All values are in SI units (m/s^2) values[0]: Acceleration minus Gx on the x-axis values[1]: Acceleration minus Gy on the y-axis values[2]: Acceleration minus Gz on the z-axis A sensor of this type measures the acceleration applied to the device (Ad). Conceptually, it does so by measuring forces applied to the sensor itself (Fs) using the relation:

Ad = - ∑Fs / mass

In particular, the force of gravity is always influencing the measured acceleration:

Ad = -g - ∑F / mass

For this reason, when the device is sitting on a table (and obviously not accelerating), the accelerometer reads a magnitude of g = 9.81 m/s^2 Similarly, when the device is in free-fall and therefore dangerously accelerating towards to ground at 9.81 m/s^2, its accelerometer reads a magnitude of 0 m/s^2. It should be apparent that in order to measure the real acceleration of the device, the contribution of the force of gravity must be eliminated. This can be achieved by applying a high-pass filter. Conversely, a low-pass filter can be used to isolate the force of gravity.

public void onSensorChanged(SensorEvent event)
     {
          // alpha is calculated as t / (t + dT)
          // with t, the low-pass filter's time-constant
          // and dT, the event delivery rate
 
          final float alpha = 0.8;
 
          gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
          gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
          gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
 
          linear_acceleration[0] = event.values[0] - gravity[0];
          linear_acceleration[1] = event.values[1] - gravity[1];
          linear_acceleration[2] = event.values[2] - gravity[2];
}

[편집] 활용 범위

  • 내비게이션 - GPS가 끊긴 고가도로 아래, 터널 안에서 차량의 가속도를 판단하여 지도를 진행시키는 기능을 한다.
  • 게임 - 스마트폰에서 게임을 즐길 때 활용된다.
  • 에티켓 모드 - 전화 걸려오고 있을 때나 음악을 들을 때, 다른 사람을 상대해야 한다면 휴대폰을 뒤집어 음소거/일시 정지할 수 있다.
  • 만보기 - 웰빙 열풍이 불 때 몇몇 폰은 이 기능을 탑재한 적이 있다.

[편집] 같이 보기

[편집] 바깥 고리

[편집] 주석

  1. 소자 중앙에 설치된 피에조 저항(Piezoresistive Effect)의 변동을 활용한다.