FANDOM


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

스마트폰에서 가속도센서가지구 속도 구하는 방법좀 써주려마.

측정 원리 편집

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

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

  • $ 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 값으로 쉽게 구해낼 수 있다.

문제는 역시 벡터.

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

중력 센서와 가속도 센서 편집

중력 센서와 가속도 센서는 서로 떨어진 개념이 아니다. 둘이 구분하여 찾으려고 해도 쉽지 않다. 원리가 동일하기 때문이다.

실제로 어떠한 물체가 떨어지기 시작하면 이 물체는 등가속도 운동을 하게 된다.

당연히 가속도 센서는 이를 검지할 것이고, 하드디스크의 G-센서를 이용한 데이터 손상 방지 기능도 이 방식을 활용한다.

이외에 정지해있는 상태에서는 3축이 각기 다른 값을 기록하며 치우쳐져 있을 것이고, 이것을 활용하여 역시 위의 3축 센서 부분처럼 활용할 수 있는 것이다.

이 둘을 구분하려는 것만큼은 어리석은 짓이다.


중력 가속도는 값을 받아올때 정지한 상태에서 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)의 변동을 활용한다.
Community content is available under CC-BY-SA unless otherwise noted.