MPU-9250 9축 IMU 센서
일반
3축 자이로스코프, 3축 가속도계, 3축 지자계 센서와 디지털 모션 프로세서가 통합된 9축 IMU 센서입니다. 저비용 고성능의 센서로 스마트폰, 드론 등의 여러 장치의 모션제어에사용됩니다. I2C 인터페이스를 사용합니다.

사양
- Operating voltage :3 – 5V
- Three 16-bit analog-to-digital converters (ADCs) for digitizing the gyroscope outputs
- Three 16-bit ADCs for digitizing the accelerometer outputs
- Three 16-bit ADCs for digitizing the magnetometer outputs
- Gyroscope full-scale range of ±250, ±500, ±1000, and ±2000°/sec (dps)
- Accelerometer full-scale range of ±2g, ±4g, ±8g, and ±16g
- Magnetometer full-scale range of ±4800μT
- Internal Digital Motion Processing engine supports advanced MotionProcessing and low power functions such as gesture recognition using programmable interrupts
사용 가능한 GPIO
- 라즈베리파이 0~4
- 라즈베리파이 5
- 비글본 블랙/그린
- 젯슨 나노
- FT232H, FT2232H, FT4232H
- MCP2221
명령
[SETUP]
모듈을 설정합니다.
항목 | 타입 | 설명 |
---|---|---|
Accel full scale | WRITE | 가속도센서의 측정범위(Full Scale)을 선택합니다.(±2g,±4g,±8g,±16g) |
Gyro full scale | WRITE | 자이로센서의 측정범위(Full Scale)을 선택합니다. (±250dps,±500dps,±1000dps,±2000dps) |
Mag output | WRITE | 지자기센서의 출력해상도를 선택합니다. (14bits,16bits) |
FIFO Sample rate | WRITE | 초당 샘플링 속도를 선택합니다. (1000Hz,500Hz,333Hz,250Hz,200Hz,167Hz,143Hz,125Hz) |
Gyro dlpf_cfg | WRITE | 자이로센서의 Digital Low Pass Filter의 대역폭(Bandwidth)을 선택합니다. 값이 작을수록 노이즈는 감소하나 반응속도 가 느리며 , 값이 클수록 반응속도는 빠르나 노이즈가 증가합니다. (250Hz,184Hz,92Hz,41Hz,20Hz,10Hz,5Hz,3600Hz) |
Accel dlpf_cfg | WRITE | 가속도센서의 Digital Low Pass Filter의 대역폭(Bandwidth)을 선택합니다. 값이 작을수록 노이즈는 감소하나 반응속도 가 느리며 , 값이 클수록 반응속도는 빠르나 노이즈가 증가합니다. (218Hz_0,218Hz_1,99Hz,45Hz,21Hz,10Hz,5Hz,420Hz) |
Mag declination (°) * | WRITE | 현재위치의 자기편각(Magnetic declination)을 degree(°)로 입력합니다. 자기편각은 위치와 시간에 따라 변화하는 값입니다. |
Select filter | WRITE | Quaternion 필터를 선택합니다. (none,Madgwick,Mahony) |
Set filter iteration | WRITE | Quaternion 필터의 iteration (반복계산) 횟수를 설정합니다. |
* 현재 위치, 시간의 자기편각은 여기를 참고하여 입력합니다. 예를 들어 2025년 3월 26일 서울의 자기편각은 -8° 58′ = -8° – 58/60° = −8.9667° 입니다.
[GET_RAW_DATA]
가속도, 자이로, 지자기의 측정값을 읽어옵니다.
항목 | 타입 | 설명 |
---|---|---|
Accel X (g) | READ | 가속도 x축 |
Accel Y (g) | READ | 가속도 y축 |
Accel Z (g) | READ | 가속도 z축 |
Gyro X (deg/s) | READ | 자이로 x축 |
Gyro Y (deg/s) | READ | 자이로 y축 |
Gyro Z (deg/s) | READ | 자이로 z축 |
Mag X (mG) | READ | 지자기 x축 |
Mag Y (mG) | READ | 지자기 y축 |
Mag Z (mG) | READ | 지자기 z축 |
[GET_YAW_PITCH_ROLL]
Yaw, Pictch, Roll를 계산합니다.

항목 | 타입 | 설명 |
---|---|---|
Yaw (º) | READ | Yaw 각도 |
Pitch (º) | READ | Pitch 각도 |
Roll (º) | READ | Roll 각도 |
이 명령의 실행 주기는 가급적 작게 설정해야 합니다. 실행 주기가 클수록 값의 오차도 비례하여 커집니다.
예) 이 명령을 실행하는 [동작]이 속해 있는 [로직]의 실행 주기를 10ms 로 설정합니다.
예) 이 명령을 실행하는 [동작]이 속해 있는 [로직]의 실행 주기를 10ms 로 설정합니다.
[SET_BIAS]
캘리브레이션 편차를 설정합니다.
항목 | 타입 | 설명 |
---|---|---|
Accel bias X (g) | WRITE | 가속도 x축 편차 |
Accel bias Y (g) | WRITE | 가속도 y축 편차 |
Accel bias Z (g) | WRITE | 가속도 z축 편차 |
Gyro bias X (deg/s) | WRITE | 자이로 x축 편차 |
Gyro bias Y (deg/s) | WRITE | 자이로 y축 편차 |
Gyro bias Z (deg/s) | WRITE | 자이로 z축 편차 |
Mag bias X (mG) | WRITE | 지자기 x축 편차 |
Mag bias Y (mG) | WRITE | 지자기 y축 편차 |
Mag bias Z (mG) | WRITE | 지자기 z축 편차 |
Mag Scale X | WRITE | 지자기 x축 스케일 |
Mag Scale Y | WRITE | 지자기 y축 스케일 |
Mag Scale Z | WRITE | 지자기 z축 스케일 |
[CALIB_ACCEL_GYRO]
가속도, 자이로센서를 캘리브레이션 합니다. 모듈을 평평한 바닥에 위를 향하도록 놓은 뒤 명령을 실행합니다. 완료될때까지 모듈이 움직이지 않도록 합니다.
[CALIB_MAG]
지자기센서를 캘리브레이션 합니다. 명령을 실행하고 완료될때까지 모듈을 ∞ 모양으로 계속 움직여줍니다.
[GET_BIAS]
캘리브레이션 편차를 읽어옵니다.
항목 | 타입 | 설명 |
---|---|---|
Accel bias X (g) | READ | 가속도 x축 편차 |
Accel bias Y (g) | READ | 가속도 y축 편차 |
Accel bias Z (g) | READ | 가속도 z축 편차 |
Gyro bias X (deg/s) | READ | 자이로 x축 편차 |
Gyro bias Y (deg/s) | READ | 자이로 y축 편차 |
Gyro bias Z (deg/s) | READ | 자이로 z축 편차 |
Mag bias X (mG) | READ | 지자기 x축 편차 |
Mag bias Y (mG) | READ | 지자기 y축 편차 |
Mag bias Z (mG) | READ | 지자기 z축 편차 |
Mag Scale X | READ | 지자기 x축 스케일 |
Mag Scale Y | READ | 지자기 y축 스케일 |
Mag Scale Z | READ | 지자기 z축 스케일 |
예제
목표
센서의 Yaw, Pitch, Roll 값을 대시보드 위젯에 표시합니다.
부품
부품 | 갯수 |
---|---|
라즈베리파이 4 * | 1 |
MPU9250 | 1 |
* 다른 하드웨어를 사용할 수도 있습니다. 사용 가능한 GPIO를 참고하세요.
연결
MPU9250 | GPIO |
---|---|
VIN | 3.3V |
GND | GND |
SCL | 3 (I2C1 SCL) |
SDA | 2 (I2C1 SDA) |
AD0 * | 연결안함 |
* 연결하지 않으면 I2C주소는 0x68, 3.3V에 연결하면 0x69 입니다. (모듈 제조사에 따라 다를 수 있습니다.)

프로젝트
캘리브레이션
- CALIB_ACCEL_GYRO, CALIB_MAG 명령을 실행 (최초 한번만)
- GET_BIAS 명령을 실행하여 편차값을 읽어옴 (최초 한번만)
- 모듈의 초기명령에 SET_BIAS 를 추가하고 읽어온 편차값을 입력
- 다음 실행시 부터는 SET_BIAS 입력된 편차값에 의해 보정됨