가속도계 (Accelerometer)
1. 개요
가속도계(Accelerometer)란 물체의 가속도(단위 시간당 속도의 변화율)를 측정하는 센서로, 정지 상태에서는 중력 가속도를 통해 기울기를 측정하고 이동 상태에서는 선가속도를 측정하는 장치이다. 가속도계는 뉴턴의 제2법칙($F=ma$)에 기반하여 관성 질량에 가해지는 힘을 전기적 신호로 변환하며, 현대의 스마트 기기부터 정밀 산업 장비에 이르기까지 동적 상태를 감지하는 핵심 부품으로 활용된다.
2. 작동 원리 및 유형
가속도계는 실제 운동 가속도(Linear Acceleration)와 중력 가속도(Gravity)의 합을 측정한다. 따라서 측정된 값에서 중력 성분을 분리해야 순수한 운동 가속도를 얻을 수 있다.
가속도계의 기본 물리 구조는 관성 질량(Proof Mass, 이하 질량체)과 이를 지지하는 스프링-댐퍼 시스템(Spring-Damper System)으로 구성된다. 외부에서 가속도가 발생하면 관성에 의해 질량체가 이동하며, 이때 발생하는 변위나 압력을 전기적 신호로 변환하여 가속도 값을 산출한다.
2.1 측정 방식에 따른 분류
| 유형 |
작동 원리 |
장점 |
단점 |
주요 용도 |
| MEMS |
미세 기계 가공 기술을 이용한 정전용량 변화 측정 |
초소형, 저전력, 저렴한 가격 |
상대적으로 높은 노이즈 |
스마트폰, 웨어러블 |
| 압전식 (Piezoelectric) |
압전 소자에 가해지는 압력에 의한 전하 발생 측정 |
고주파 응답성, 높은 내구성 |
DC(정적) 가속도 측정 불가 |
산업 진동 분석, 충격 테스트 |
| 정전용량식 (Capacitive) |
두 전극 사이의 거리 변화로 인한 커패시턴스 변화 측정 |
높은 감도, 낮은 주파수 측정 가능 |
온도 변화에 민감함 |
정밀 수평계, 항공우주 |
| 진동빔 (Vibrating Beam) |
빔의 진동 주파수 변화를 측정 |
매우 높은 정밀도, 안정성 |
구조가 복잡하고 고가임 |
고정밀 계측 장비 |
(그림: MEMS 가속도계의 정전용량 변화 원리를 보여주는 도식)
3. 주요 사양 및 성능 지표
가속도계를 선정할 때는 측정하고자 하는 대상의 동적 특성에 맞는 다음의 지표들을 고려해야 한다.
- 측정 범위 (Full-scale Range): 센서가 포화(Saturation)되지 않고 측정할 수 있는 최대 가속도 범위이다. (예: $\pm 2g, \pm 8g, \pm 16g$)
- 감도 (Sensitivity): 단위 가속도 변화당 출력되는 전압 또는 디지털 값의 변화량이다. (예: $mV/g$ 또는 $LSB/g$)
- 노이즈 밀도 (Noise Density): 신호에 포함된 무작위 노이즈의 수준으로, 값이 낮을수록 미세한 가속도 변화를 감지할 수 있다.
- 대역폭 (Bandwidth): 센서가 정확하게 추적할 수 있는 주파수 범위이다. 고주파 진동을 측정하려면 넓은 대역폭의 센서가 필요하다.
4. 데이터 처리 및 좌표계
4.1 3축 좌표계 및 중력 보정
대부분의 현대 가속도계는 $X, Y, Z$ 세 축으로 구성된 3축 센서이다. 센서가 정지해 있더라도 지구 중력 가속도($1g \approx 9.8m/s^2$)가 항상 작용하므로, 순수한 이동 가속도를 얻기 위해서는 중력 가속도 제거(Gravity Compensation) 과정이 필수적이다. 이는 일반적으로 센서의 기울기 각도를 계산하여 중력 성분을 벡터 연산으로 빼주는 방식으로 수행된다.
4.2 기울기(Tilt) 계산 알고리즘
이 알고리즘은 정지 상태 혹은 저속 이동 상태에서 중력 벡터를 기준으로 각도를 산출하는 방식이다. 급격한 가속도가 발생하는 동적 상태에서는 가속도 데이터만으로 정확한 기울기를 구할 수 없으므로 주의가 필요하다.
import math
def calculate_tilt(ax, ay, az):
# ax, ay, az는 각 축의 가속도 값 (g 단위)
# Roll: X축 기준 회전 각도
roll = math.atan2(ay, az) * 180 / math.pi
# Pitch: Y축 기준 회전 각도
pitch = math.atan2(-ax, math.sqrt(ay**2 + az**2)) * 180 / math.pi
return roll, pitch
5. 센서 설치 방향에 따른 오차
가속도계는 설치 방향과 정렬 상태에 따라 심각한 측정 오차가 발생할 수 있다.
- 축 정렬 오차 (Misalignment Error): 센서의 축이 실제 측정하고자 하는 가속도 방향과 일치하지 않을 경우, 코사인 오차($\cos \theta$)가 발생하여 측정값이 실제보다 작게 나타난다.
- 교차축 감도 (Cross-axis Sensitivity): 특정 축으로 가속도가 가해졌음에도 불구하고 다른 축에서 신호가 검출되는 현상이다. 이는 센서 내부의 물리적 비대칭성으로 인해 발생한다.
- 설치 강성 (Mounting Stiffness): 센서가 측정 대상에 견고하게 고정되지 않고 미세하게 흔들릴 경우, 공진 현상이 발생하여 실제 가속도보다 증폭된 값이 측정될 수 있다.
6. 가속도계 vs 자이로스코프 비교
두 센서는 모두 관성을 이용하지만, 측정하는 물리량과 특성이 완전히 다르다.
| 구분 |
가속도계 (Accelerometer) |
자이로스코프 (Gyroscope) |
| 측정 대상 |
선가속도 (Linear Acceleration) |
각속도 (Angular Velocity) |
| 측정 단위 |
$g$ 또는 $m/s^2$ |
$deg/s$ 또는 $rad/s$ |
| 정적 상태 |
중력을 통해 절대 기울기 측정 가능 |
정지 상태에서는 출력값이 0 |
| 동적 상태 |
급격한 변화에 민감, 노이즈 많음 |
단기적인 회전 변화 측정에 매우 정확 |
| 주요 오차 |
진동 노이즈, 중력 간섭 |
시간에 따른 누적 오차 (Drift) |
7. 주요 활용 분야
- 소비자 전자제품: 스마트폰의 화면 자동 회전, 걸음 수 측정(만보계), 게임 컨트롤러의 모션 인식 및 VR/AR 헤드셋의 머리 추적.
- 자동차 산업: 충돌 감지 시 에어백 전개 제어, 전자식 주행 안정화 컨트롤(ESC)의 차량 전복 방지 및 경사로 밀림 방지 시스템.
- 항공 및 로보틱스: 드론의 수평 유지 및 자세 제어, 휴머노이드 로봇의 균형 잡기 및 보행 안정화.
- 산업 현장: 회전 기계(모터, 터빈)의 진동 분석을 통한 고장 예지 및 건전성 관리(PHM), 정밀 구조물의 기울기 모니터링.
8. 한계 및 보완 방법 (센서 퓨전)
가속도계는 단독 사용 시 두 가지 치명적인 한계가 있다. 첫째, 가속도를 두 번 적분하여 위치를 계산할 때 적분 과정에서 오차가 누적되는 드리프트(Drift) 현상이 발생한다. 둘째, 고주파 진동 노이즈에 취약하다.
이를 해결하기 위해 센서 퓨전(Sensor Fusion) 기술을 사용한다.
* 가속도계 + 자이로스코프: 자이로스코프의 빠른 응답성과 가속도계의 절대 기준(중력)을 결합하여 정확한 자세를 추정한다. (예: 상보 필터, 칼만 필터 활용)
* IMU (Inertial Measurement Unit): 가속도계, 자이로스코프, 지자기 센서(Magnetometer)를 하나로 통합하여 9축 데이터를 통해 절대 방위와 자세를 정밀하게 계산한다.
8.1 상보 필터(Complementary Filter) 예제
상보 필터는 고주파 노이즈가 많은 가속도계 데이터(저역 통과 필터)와 시간이 지남에 따라 오차가 누적되는 자이로스코프 데이터(고역 통과 필터)를 가중치 합으로 결합하는 간단하고 효율적인 방법이다.
# 상보 필터 기본 수식 예제
# angle = alpha * (angle + gyro_rate * dt) + (1 - alpha) * acc_angle
# alpha: 자이로스코프에 부여하는 가중치 (보통 0.95 ~ 0.98)
def complementary_filter(current_angle, gyro_rate, acc_angle, dt, alpha=0.98):
# 자이로스코프 적분값과 가속도계 기반 각도를 결합
filtered_angle = alpha * (current_angle + gyro_rate * dt) + (1 - alpha) * acc_angle
return filtered_angle
9. 데이터 시트 읽는 법
가속도계 선정 시 데이터 시트에서 주의 깊게 살펴봐야 할 주요 항목은 다음과 같다.
- Features: 선택 가능한 측정 범위($\pm 2/4/8/16g$), 소비 전력 수준, 인터페이스 방식(I2C, SPI 등)을 확인한다.
- Electrical Characteristics: 공급 전압($V_{DD}$) 범위와 동작 전류 소비량을 확인하여 전원 설계에 반영한다.
- Sensitivity Table: 각 측정 범위별 $LSB/g$ 값을 확인하여 디지털 출력값을 실제 가속도 단위로 변환하는 계수를 산출한다.
- Frequency Response: 주파수 응답 그래프를 통해 센서가 측정하고자 하는 진동 주파수 대역에서 감도가 일정하게 유지되는지 확인한다.
가속도계의 오차 요인 및 보정(Calibration)
가속도계는 제조 공정상의 오차와 환경적 요인으로 인해 실제 가속도 값과 측정값 사이에 차이가 발생한다. 이를 해결하기 위해 하드웨어적 오차 원인을 분석하고 수학적 보정 과정을 거쳐 정밀도를 높인다.
하드웨어적 오차 원인
- 제로-지 오프셋 (Zero-g Offset): 가속도가 0인 상태에서도 출력값이 0이 되지 않고 일정하게 나타나는 편차이다.
- 스케일 팩터 오차 (Scale Factor Error): 입력 가속도 변화량과 출력 신호 변화량 사이의 비율이 이론적 감도와 일치하지 않는 오차이다.
- 비선형성 (Non-linearity): 입력값과 출력값의 관계가 직선 형태를 띠지 않고 곡선 형태로 나타나는 현상이다.
6면 보정법 (6-point Calibration) 절차
센서를 각 축의 양(+)과 음(-) 방향으로 중력 가속도($1g$)가 정확히 가해지도록 배치하여 오프셋과 스케일 팩터를 산출하는 방식이다.
[6면 보정 단계별 절차도]
1. 데이터 수집: 센서를 다음 6가지 자세로 고정하고 각 상태에서 일정 시간 동안 데이터를 평균하여 수집한다.
- $\pm X$축 방향 (센서를 $X$축이 하늘/땅을 향하게 배치)
- $\pm Y$축 방향 (센서를 $Y$축이 하늘/땅을 향하게 배치)
- $\pm Z$축 방향 (센서를 $Z$축이 하늘/땅을 향하게 배치)
2. 최솟값/최댓값 추출: 각 축별로 측정된 최솟값($min$)과 최댓값($max$)을 기록한다.
3. 오프셋(Offset) 계산: $\text{Offset} = \frac{max + min}{2}$
4. 스케일 팩터(Scale Factor) 계산: $\text{Scale Factor} = \frac{max - min}{2g}$
5. 보정 적용: $\text{Corrected Value} = \frac{\text{Raw Value} - \text{Offset}}{\text{Scale Factor}}$
신호 처리 및 필터링 기법
가속도계에서 출력되는 로우 데이터(Raw Data)는 전기적 노이즈와 고주파 진동이 섞여 있어, 목적에 맞는 필터링 과정이 필수적이다.
저역 통과 필터 (Low Pass Filter, LPF)
고주파 성분의 노이즈를 제거하고 완만한 변화(기울기, 느린 움직임)만을 추출하기 위해 사용한다. 주로 지수 이동 평균(Exponential Moving Average) 방식이 실시간 시스템에 많이 적용된다.
[LPF 전후 데이터 비교]
* 필터 전 (Raw): 톱니 모양의 미세한 진동(High-frequency jitter)이 심해 데이터의 추세 파악이 어려움.
* 필터 후 (Filtered): 고주파 성분이 억제되어 매끄러운 곡선 형태로 나타나며, 실제 물체의 거시적인 움직임이 명확히 드러남.
시간 영역(Time Domain)의 가속도 데이터를 주파수 영역(Frequency Domain)으로 변환하여, 어떤 주파수 성분이 강하게 나타나는지 분석하는 기법이다.
- 활용 방안: 특정 기계 장비의 진동 주파수를 분석하여 베어링 마모나 축 불균형 등 고장 징후를 포착하는 '스펙트럼 분석'에 활용된다.
- 데이터 변화: $\text{시간-가속도 그래프} \xrightarrow{\text{FFT}} \text{주파수-진폭 그래프}$
가속도계의 정밀도는 주변 온도 변화에 따라 변하는 온도 드리프트(Temperature Drift) 현상의 영향을 받는다.
- MEMS 및 정전용량식: 온도 변화에 따라 내부 구조물의 열팽창이나 정전용량 변화가 발생하여 제로-지 오프셋이 변하는 경향이 크다. 따라서 정밀 측정 시에는 온도 센서를 내장하여 소프트웨어적으로 보상(Temperature Compensation)하는 과정이 필요하다.
- 압전식: 온도 변화에 따른 전하 누설이나 감도 변화가 발생하며, 특히 고온 환경에서 드리프트가 심화될 수 있다.
쿼터니언 기반의 동적 좌표 변환
단순한 벡터 뺄셈 방식의 중력 보정은 센서의 회전이 빠른 동적 상태에서 오차가 크다. 이를 해결하기 위해 쿼터니언(Quaternion)을 이용한 자세 표현과 좌표 변환을 사용한다.
- 개념: 4차원 벡터(Scalar 1개, Vector 3개)를 사용하여 짐벌 락(Gimbal Lock) 현상을 방지하고 회전을 효율적으로 계산한다.
- 절차: 자이로스코프 데이터를 적분하여 현재의 쿼터니언 자세($q$)를 추정하고, 이를 통해 지구 고정 좌표계(World Frame)의 중력 벡터를 센서 좌표계(Body Frame)로 변환하여 실시간으로 제거함으로써 순수 동적 가속도를 산출한다.
최근에는 가속도계 데이터를 클라우드로 보내지 않고 센서 단(Edge)에서 즉시 처리하는 엣지 AI(Edge AI) 기술이 결합되어 고도화된 인식 기능을 제공한다.
사용자 행동 인식 (Human Activity Recognition, HAR)
가속도계의 시계열 데이터를 딥러닝 모델(CNN, LSTM 등)에 입력하여 사용자의 상태를 분류한다.
* 데이터셋 예시:
* 입력 데이터: $X, Y, Z$축 가속도 값의 윈도우 슬라이싱 데이터 (예: 2.56초 간격의 128개 샘플)
* 특징 추출: 평균, 표준편차, 제로 크로싱 레이트(Zero-crossing rate), FFT 기반 주파수 피크 값.
* 분류 레이블: Walking(걷기), Running(뛰기), Sitting(앉기), Standing(서기), Falling(낙상).
기계 고장 진단 AI
산업용 모터나 펌프에 부착된 가속도계의 진동 패턴을 학습하여 정상 상태와 이상 상태를 구분한다.
* 사례: 정상 작동 시의 주파수 스펙트럼을 학습한 후, 특정 주파수 대역에서 진폭이 상승하는 패턴이 감지되면 '베어링 결함' 또는 '축 정렬 불량'으로 판정하여 유지보수 알람을 발생시킨다.
# 가속도계 (Accelerometer)
## 1. 개요
가속도계(Accelerometer)란 물체의 가속도(단위 시간당 속도의 변화율)를 측정하는 센서로, 정지 상태에서는 중력 가속도를 통해 기울기를 측정하고 이동 상태에서는 선가속도를 측정하는 장치이다. 가속도계는 뉴턴의 제2법칙($F=ma$)에 기반하여 관성 질량에 가해지는 힘을 전기적 신호로 변환하며, 현대의 스마트 기기부터 정밀 산업 장비에 이르기까지 동적 상태를 감지하는 핵심 부품으로 활용된다.
## 2. 작동 원리 및 유형
가속도계는 실제 운동 가속도(Linear Acceleration)와 중력 가속도(Gravity)의 합을 측정한다. 따라서 측정된 값에서 중력 성분을 분리해야 순수한 운동 가속도를 얻을 수 있다.
가속도계의 기본 물리 구조는 **관성 질량(Proof Mass, 이하 질량체)**과 이를 지지하는 **스프링-댐퍼 시스템(Spring-Damper System)**으로 구성된다. 외부에서 가속도가 발생하면 관성에 의해 질량체가 이동하며, 이때 발생하는 변위나 압력을 전기적 신호로 변환하여 가속도 값을 산출한다.
### 2.1 측정 방식에 따른 분류
| 유형 | 작동 원리 | 장점 | 단점 | 주요 용도 |
| :--- | :--- | :--- | :--- | :--- |
| **MEMS** | 미세 기계 가공 기술을 이용한 정전용량 변화 측정 | 초소형, 저전력, 저렴한 가격 | 상대적으로 높은 노이즈 | 스마트폰, 웨어러블 |
| **압전식 (Piezoelectric)** | 압전 소자에 가해지는 압력에 의한 전하 발생 측정 | 고주파 응답성, 높은 내구성 | DC(정적) 가속도 측정 불가 | 산업 진동 분석, 충격 테스트 |
| **정전용량식 (Capacitive)** | 두 전극 사이의 거리 변화로 인한 커패시턴스 변화 측정 | 높은 감도, 낮은 주파수 측정 가능 | 온도 변화에 민감함 | 정밀 수평계, 항공우주 |
| **진동빔 (Vibrating Beam)** | 빔의 진동 주파수 변화를 측정 | 매우 높은 정밀도, 안정성 | 구조가 복잡하고 고가임 | 고정밀 계측 장비 |

*(그림: MEMS 가속도계의 정전용량 변화 원리를 보여주는 도식)*
## 3. 주요 사양 및 성능 지표
가속도계를 선정할 때는 측정하고자 하는 대상의 동적 특성에 맞는 다음의 지표들을 고려해야 한다.
* **측정 범위 (Full-scale Range):** 센서가 포화(Saturation)되지 않고 측정할 수 있는 최대 가속도 범위이다. (예: $\pm 2g, \pm 8g, \pm 16g$)
* **감도 (Sensitivity):** 단위 가속도 변화당 출력되는 전압 또는 디지털 값의 변화량이다. (예: $mV/g$ 또는 $LSB/g$)
* **노이즈 밀도 (Noise Density):** 신호에 포함된 무작위 노이즈의 수준으로, 값이 낮을수록 미세한 가속도 변화를 감지할 수 있다.
* **대역폭 (Bandwidth):** 센서가 정확하게 추적할 수 있는 주파수 범위이다. 고주파 진동을 측정하려면 넓은 대역폭의 센서가 필요하다.
## 4. 데이터 처리 및 좌표계
### 4.1 3축 좌표계 및 중력 보정
대부분의 현대 가속도계는 $X, Y, Z$ 세 축으로 구성된 3축 센서이다. 센서가 정지해 있더라도 지구 중력 가속도($1g \approx 9.8m/s^2$)가 항상 작용하므로, 순수한 이동 가속도를 얻기 위해서는 **중력 가속도 제거(Gravity Compensation)** 과정이 필수적이다. 이는 일반적으로 센서의 기울기 각도를 계산하여 중력 성분을 벡터 연산으로 빼주는 방식으로 수행된다.
### 4.2 기울기(Tilt) 계산 알고리즘
이 알고리즘은 정지 상태 혹은 저속 이동 상태에서 중력 벡터를 기준으로 각도를 산출하는 방식이다. 급격한 가속도가 발생하는 동적 상태에서는 가속도 데이터만으로 정확한 기울기를 구할 수 없으므로 주의가 필요하다.
```python
import math
def calculate_tilt(ax, ay, az):
# ax, ay, az는 각 축의 가속도 값 (g 단위)
# Roll: X축 기준 회전 각도
roll = math.atan2(ay, az) * 180 / math.pi
# Pitch: Y축 기준 회전 각도
pitch = math.atan2(-ax, math.sqrt(ay**2 + az**2)) * 180 / math.pi
return roll, pitch
```
## 5. 센서 설치 방향에 따른 오차
가속도계는 설치 방향과 정렬 상태에 따라 심각한 측정 오차가 발생할 수 있다.
1. **축 정렬 오차 (Misalignment Error):** 센서의 축이 실제 측정하고자 하는 가속도 방향과 일치하지 않을 경우, 코사인 오차($\cos \theta$)가 발생하여 측정값이 실제보다 작게 나타난다.
2. **교차축 감도 (Cross-axis Sensitivity):** 특정 축으로 가속도가 가해졌음에도 불구하고 다른 축에서 신호가 검출되는 현상이다. 이는 센서 내부의 물리적 비대칭성으로 인해 발생한다.
3. **설치 강성 (Mounting Stiffness):** 센서가 측정 대상에 견고하게 고정되지 않고 미세하게 흔들릴 경우, 공진 현상이 발생하여 실제 가속도보다 증폭된 값이 측정될 수 있다.
## 6. 가속도계 vs 자이로스코프 비교
두 센서는 모두 관성을 이용하지만, 측정하는 물리량과 특성이 완전히 다르다.
| 구분 | 가속도계 (Accelerometer) | 자이로스코프 (Gyroscope) |
| :--- | :--- | :--- |
| **측정 대상** | 선가속도 (Linear Acceleration) | 각속도 (Angular Velocity) |
| **측정 단위** | $g$ 또는 $m/s^2$ | $deg/s$ 또는 $rad/s$ |
| **정적 상태** | 중력을 통해 절대 기울기 측정 가능 | 정지 상태에서는 출력값이 0 |
| **동적 상태** | 급격한 변화에 민감, 노이즈 많음 | 단기적인 회전 변화 측정에 매우 정확 |
| **주요 오차** | 진동 노이즈, 중력 간섭 | 시간에 따른 누적 오차 (Drift) |
## 7. 주요 활용 분야
* **소비자 전자제품:** 스마트폰의 화면 자동 회전, 걸음 수 측정(만보계), 게임 컨트롤러의 모션 인식 및 VR/AR 헤드셋의 머리 추적.
* **자동차 산업:** 충돌 감지 시 에어백 전개 제어, 전자식 주행 안정화 컨트롤(ESC)의 차량 전복 방지 및 경사로 밀림 방지 시스템.
* **항공 및 로보틱스:** 드론의 수평 유지 및 자세 제어, 휴머노이드 로봇의 균형 잡기 및 보행 안정화.
* **산업 현장:** 회전 기계(모터, 터빈)의 진동 분석을 통한 고장 예지 및 건전성 관리(PHM), 정밀 구조물의 기울기 모니터링.
## 8. 한계 및 보완 방법 (센서 퓨전)
가속도계는 단독 사용 시 두 가지 치명적인 한계가 있다. 첫째, 가속도를 두 번 적분하여 위치를 계산할 때 적분 과정에서 오차가 누적되는 **드리프트(Drift)** 현상이 발생한다. 둘째, 고주파 진동 노이즈에 취약하다.
이를 해결하기 위해 **센서 퓨전(Sensor Fusion)** 기술을 사용한다.
* **가속도계 + 자이로스코프:** 자이로스코프의 빠른 응답성과 가속도계의 절대 기준(중력)을 결합하여 정확한 자세를 추정한다. (예: 상보 필터, 칼만 필터 활용)
* **IMU (Inertial Measurement Unit):** 가속도계, 자이로스코프, 지자기 센서(Magnetometer)를 하나로 통합하여 9축 데이터를 통해 절대 방위와 자세를 정밀하게 계산한다.
### 8.1 상보 필터(Complementary Filter) 예제
상보 필터는 고주파 노이즈가 많은 가속도계 데이터(저역 통과 필터)와 시간이 지남에 따라 오차가 누적되는 자이로스코프 데이터(고역 통과 필터)를 가중치 합으로 결합하는 간단하고 효율적인 방법이다.
```python
# 상보 필터 기본 수식 예제
# angle = alpha * (angle + gyro_rate * dt) + (1 - alpha) * acc_angle
# alpha: 자이로스코프에 부여하는 가중치 (보통 0.95 ~ 0.98)
def complementary_filter(current_angle, gyro_rate, acc_angle, dt, alpha=0.98):
# 자이로스코프 적분값과 가속도계 기반 각도를 결합
filtered_angle = alpha * (current_angle + gyro_rate * dt) + (1 - alpha) * acc_angle
return filtered_angle
```
## 9. 데이터 시트 읽는 법
가속도계 선정 시 데이터 시트에서 주의 깊게 살펴봐야 할 주요 항목은 다음과 같다.
* **Features:** 선택 가능한 측정 범위($\pm 2/4/8/16g$), 소비 전력 수준, 인터페이스 방식(I2C, SPI 등)을 확인한다.
* **Electrical Characteristics:** 공급 전압($V_{DD}$) 범위와 동작 전류 소비량을 확인하여 전원 설계에 반영한다.
* **Sensitivity Table:** 각 측정 범위별 $LSB/g$ 값을 확인하여 디지털 출력값을 실제 가속도 단위로 변환하는 계수를 산출한다.
* **Frequency Response:** 주파수 응답 그래프를 통해 센서가 측정하고자 하는 진동 주파수 대역에서 감도가 일정하게 유지되는지 확인한다.
## 가속도계의 오차 요인 및 보정(Calibration)
가속도계는 제조 공정상의 오차와 환경적 요인으로 인해 실제 가속도 값과 측정값 사이에 차이가 발생한다. 이를 해결하기 위해 하드웨어적 오차 원인을 분석하고 수학적 보정 과정을 거쳐 정밀도를 높인다.
### 하드웨어적 오차 원인
* **제로-지 오프셋 (Zero-g Offset):** 가속도가 0인 상태에서도 출력값이 0이 되지 않고 일정하게 나타나는 편차이다.
* **스케일 팩터 오차 (Scale Factor Error):** 입력 가속도 변화량과 출력 신호 변화량 사이의 비율이 이론적 감도와 일치하지 않는 오차이다.
* **비선형성 (Non-linearity):** 입력값과 출력값의 관계가 직선 형태를 띠지 않고 곡선 형태로 나타나는 현상이다.
### 6면 보정법 (6-point Calibration) 절차
센서를 각 축의 양(+)과 음(-) 방향으로 중력 가속도($1g$)가 정확히 가해지도록 배치하여 오프셋과 스케일 팩터를 산출하는 방식이다.
**[6면 보정 단계별 절차도]**
1. **데이터 수집:** 센서를 다음 6가지 자세로 고정하고 각 상태에서 일정 시간 동안 데이터를 평균하여 수집한다.
- $\pm X$축 방향 (센서를 $X$축이 하늘/땅을 향하게 배치)
- $\pm Y$축 방향 (센서를 $Y$축이 하늘/땅을 향하게 배치)
- $\pm Z$축 방향 (센서를 $Z$축이 하늘/땅을 향하게 배치)
2. **최솟값/최댓값 추출:** 각 축별로 측정된 최솟값($min$)과 최댓값($max$)을 기록한다.
3. **오프셋(Offset) 계산:** $\text{Offset} = \frac{max + min}{2}$
4. **스케일 팩터(Scale Factor) 계산:** $\text{Scale Factor} = \frac{max - min}{2g}$
5. **보정 적용:** $\text{Corrected Value} = \frac{\text{Raw Value} - \text{Offset}}{\text{Scale Factor}}$
## 신호 처리 및 필터링 기법
가속도계에서 출력되는 로우 데이터(Raw Data)는 전기적 노이즈와 고주파 진동이 섞여 있어, 목적에 맞는 필터링 과정이 필수적이다.
### 저역 통과 필터 (Low Pass Filter, LPF)
고주파 성분의 노이즈를 제거하고 완만한 변화(기울기, 느린 움직임)만을 추출하기 위해 사용한다. 주로 지수 이동 평균(Exponential Moving Average) 방식이 실시간 시스템에 많이 적용된다.
**[LPF 전후 데이터 비교]**
* **필터 전 (Raw):** 톱니 모양의 미세한 진동(High-frequency jitter)이 심해 데이터의 추세 파악이 어려움.
* **필터 후 (Filtered):** 고주파 성분이 억제되어 매끄러운 곡선 형태로 나타나며, 실제 물체의 거시적인 움직임이 명확히 드러남.
### 고속 푸리에 변환 (Fast Fourier Transform, FFT)
시간 영역(Time Domain)의 가속도 데이터를 주파수 영역(Frequency Domain)으로 변환하여, 어떤 주파수 성분이 강하게 나타나는지 분석하는 기법이다.
* **활용 방안:** 특정 기계 장비의 진동 주파수를 분석하여 베어링 마모나 축 불균형 등 고장 징후를 포착하는 '스펙트럼 분석'에 활용된다.
* **데이터 변화:** $\text{시간-가속도 그래프} \xrightarrow{\text{FFT}} \text{주파수-진폭 그래프}$
## 센서 유형별 온도 드리프트 특성
가속도계의 정밀도는 주변 온도 변화에 따라 변하는 **온도 드리프트(Temperature Drift)** 현상의 영향을 받는다.
* **MEMS 및 정전용량식:** 온도 변화에 따라 내부 구조물의 열팽창이나 정전용량 변화가 발생하여 제로-지 오프셋이 변하는 경향이 크다. 따라서 정밀 측정 시에는 온도 센서를 내장하여 소프트웨어적으로 보상(Temperature Compensation)하는 과정이 필요하다.
* **압전식:** 온도 변화에 따른 전하 누설이나 감도 변화가 발생하며, 특히 고온 환경에서 드리프트가 심화될 수 있다.
## 쿼터니언 기반의 동적 좌표 변환
단순한 벡터 뺄셈 방식의 중력 보정은 센서의 회전이 빠른 동적 상태에서 오차가 크다. 이를 해결하기 위해 **쿼터니언(Quaternion)**을 이용한 자세 표현과 좌표 변환을 사용한다.
* **개념:** 4차원 벡터(Scalar 1개, Vector 3개)를 사용하여 짐벌 락(Gimbal Lock) 현상을 방지하고 회전을 효율적으로 계산한다.
* **절차:** 자이로스코프 데이터를 적분하여 현재의 쿼터니언 자세($q$)를 추정하고, 이를 통해 지구 고정 좌표계(World Frame)의 중력 벡터를 센서 좌표계(Body Frame)로 변환하여 실시간으로 제거함으로써 순수 동적 가속도를 산출한다.
## 엣지 AI 기반 진동 패턴 인식 및 HAR
최근에는 가속도계 데이터를 클라우드로 보내지 않고 센서 단(Edge)에서 즉시 처리하는 **엣지 AI(Edge AI)** 기술이 결합되어 고도화된 인식 기능을 제공한다.
### 사용자 행동 인식 (Human Activity Recognition, HAR)
가속도계의 시계열 데이터를 딥러닝 모델(CNN, LSTM 등)에 입력하여 사용자의 상태를 분류한다.
* **데이터셋 예시:**
* **입력 데이터:** $X, Y, Z$축 가속도 값의 윈도우 슬라이싱 데이터 (예: 2.56초 간격의 128개 샘플)
* **특징 추출:** 평균, 표준편차, 제로 크로싱 레이트(Zero-crossing rate), FFT 기반 주파수 피크 값.
* **분류 레이블:** `Walking`(걷기), `Running`(뛰기), `Sitting`(앉기), `Standing`(서기), `Falling`(낙상).
### 기계 고장 진단 AI
산업용 모터나 펌프에 부착된 가속도계의 진동 패턴을 학습하여 정상 상태와 이상 상태를 구분한다.
* **사례:** 정상 작동 시의 주파수 스펙트럼을 학습한 후, 특정 주파수 대역에서 진폭이 상승하는 패턴이 감지되면 '베어링 결함' 또는 '축 정렬 불량'으로 판정하여 유지보수 알람을 발생시킨다.