19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

9軸加速度センサー MPU9250をArduinoで制御する その1(I2C)

Last updated at Posted at 2016-02-11

MPU9250

rp-mpu-9250.png

Datasheet

MPU9250 Datasheet
MPU9250 Registermap

計測可能な値

MPU-9250では、MPU-9250とAK8963のCombo Memsである。MPU-9250とAK8963は別々のSlave Addressが割り振られているため、それぞれにアクセスする。

種類 概要
Gyroscope
Accelerometer
Magnetometer

Slave address

センサー Slave address 用途
MPU9250 0x68 3軸加速度、ジャイロ
AK8963 0x0C コンパス

(MPU9250)Register map(Selftest)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x00 | SELF_TEST_X_GYRO | R/W | xg_st_data [7:0] |
| 0x01 | SELF_TEST_Y_GYRO | R/W | yg_st_data [7:0] |
| 0x02 | SELF_TEST_Z_GYRO | R/W | zg_st_data [7:0] |
| 0x0D | SELF_TEST_X_ACCEL | R/W | XA_ST_DATA [7:0] |
| 0x0E | SELF_TEST_Y_ACCEL | R/W | YA_ST_DATA [7:0] |
| 0x0F | SELF_TEST_Z_ACCEL | R/W | ZA_ST_DATA [7:0] |
| 0x13 | XG_OFFSET_H | R/W | X_OFFS_USR [15:8] |
| 0x14 | XG_OFFSET_L | R/W | X_OFFS_USR [7:0] |
| 0x21 | YG_OFFSET_H | R/W | Y_OFFS_USR [15:8] |
| 0x22 | YG_OFFSET_L | R/W | Y_OFFS_USR [7:0] |
| 0x17 | ZG_OFFSET_H | R/W | Z_OFFS_USR [15:8] |
| 0x18 | ZG_OFFSET_L | R/W | Z_OFFS_USR [7:0] |
| 0x19 | SMPLRT_DIV | R/W | SMPLRT_DIV[7:0] |

(MPU9250)Register map(Configuration)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x1A | CONFIG | R/W | Config|
| 0x1B | GYRO_CONFIG | R/W | GyroscopeのConfig|
| 0x1C | ACCEL_CONFIG | R/W | AccelerometerのConfig |
| 0x1D | ACCEL_CONFIG2 | R/W | AccelerometerのConfig |
| 0x1E | LP_ACCEL_ODR | R/W | Lposc_clksel |
| 0x1F | WOM_THR | R/W | WOM_Threshold [7:0] |

(MPU9250)Register map(Accelerometer)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x3B | ACCEL_XOUT_H | R | ACCEL_XOUT_H[15:8] |
| 0x3C | ACCEL_XOUT_L | R | ACCEL_XOUT_L[7:0] |
| 0x3D | ACCEL_YOUT_H | R | ACCEL_YOUT_H[15:8] |
| 0x3E | ACCEL_YOUT_L | R | ACCEL_YOUT_L[7:0] |
| 0x3F | ACCEL_ZOUT_H | R | ACCEL_ZOUT_H[15:8] |
| 0x40 | ACCEL_ZOUT_L | R | ACCEL_ZOUT_L[7:0] |

(MPU9250)Register map(Temperature)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x41 | TEMP_OUT_H | R | TEMP_OUT_H[15:8] |
| 0x42 | TEMP_OUT_L | R | TEMP_OUT_L[7:0] |

(MPU9250)Register map(Gyroscope)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x43 | GYRO_XOUT_H | R | GYRO_XOUT_H[15:8] |
| 0x44 | GYRO_XOUT_L | R | GYRO_XOUT_L[7:0] |
| 0x45 | GYRO_YOUT_H | R | GYRO_YOUT_H[15:8] |
| 0x46 | GYRO_YOUT_L | R | GYRO_YOUT_L[7:0] |
| 0x47 | GYRO_ZOUT_H | R | GYRO_ZOUT_H[15:8] |
| 0x48 | GYRO_ZOUT_L | R | GYRO_ZOUT_L[7:0] |

(MPU9250)Register map(Etc)

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x75 | WHO_AM_I | R | WHOAMI[7:0] |
| 0x6B | PWR_MGMT_1 | R | Power Management|

(AK8963)Register map

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x00 | WIA | R | Device ID |
| 0x01 | INFO | R | Information|
| 0x02 | ST1 | R | Status 1|
| 0x03 | HXL | R | Measurement X-axis data |
| 0x04 | HXH | R | Measurement X-axis data |
| 0x05 | HYL | R | Measurement Y-axis data |
| 0x06 | HYH | R | Measurement Y-axis data |
| 0x07 | HZL | R | Measurement Z-axis data |
| 0x08 | HZH | R | Measurement Z-axis data |
| 0x90 | ST2 | R | Status 2
| 0x0A | CNTL | RW | Control |
| 0x0C | ASTC | RW | Self-test |
| 0x10 | ASAX | R | X-axis sensitivity adjustment value |
| 0x11 | ASAY | R | Y-axis sensitivity adjustment value |
| 0x12 | ASAZ | R | Z-axis sensitivity adjustment value |

(MPU9250)Who_am_i

WHO_AM_I 0x75

(AK8963)Who_am_i

Device ID 0x00

(MPU9250)PowerOn

PowerManegment1 0x6B
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
H_RESET SLEEP CYCLE GYRO_STANDBY PD_PTAT CLKSEL2 CLKSEL1 CLKSEL0

(MPU9250)H_RESET

Bit 意味
0
1 RESET

(MPU9250)SLEEP

Bit 意味
0
1 Sleep modeへ

(MPU9250)CYCLE

Bit 意味
0
1 LP_ACCEL_ODR registerで定義された周期でSleepとデータ取得を繰り返す

(MPU9250)GYRO_STANDBY

Bit 意味
0
1 CyroとPLL回路が有効

(MPU9250)PD_PTAT

Bit 意味
0
1 Power down

(MPU9250)CLKSEL

Bit 意味
000 Internal 20MHz oscillator
001 Auto selects the best available clock source
010 Auto selects the best available clock source
011 Auto selects the best available clock source
100 Auto selects the best available clock source
101 Auto selects the best available clock source
110 Internal 20MHz oscillator
111 Stops the clock and keeps timing generator in reset
PowerManegment2 0x6C
arduino
#define MPU9250_POWER_MNG1_REG 0x6B
#define MPU9250_POWER_MNG1_REG 0x6C

void powerOn()
{
  // 実行しなくてもDefaultでOnになっている
  writeI2c(MPU9250_POWER_MNG1_REG, 0x00);
  writeI2c(MPU9250_POWER_MNG2_REG, 0x00);
}

(MPU9250)Configuration

CONFIGURATION 0x1A
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
RESV FIFO_MODE EXT_SYNC_SET2 EXT_SYNC_SET1 EXT_SYNC_SET0 DLPF_CFG2 DLPF_CFG1 DLPF_CFG0

(MPU9250)EXT_SYNC_SET

Bit 意味
000 function disabled
001 TEMP_OUT_L[0]
010 GYRO_XOUT_L[0]
011 GYRO_YOUT_L[0]
100 GYRO_ZOUT_L[0]
101 ACCEL_XOUT_L[0]
110 ACCEL_YOUT_L[0]
111 ACCEL_ZOUT_L[0]

(MPU9250)DLPF_CFG

FCHOICE1 FCHOICE2 DLPF_CFG Gyroscope
Bandwidth(Hz)
Gyroscope
Delay(ms)
Gyroscope
Fs(kHz)
Temperature
Bandwidth(Hz)
Temperature
Delay(ms)
x 0 x 8800 0.064 32 4000 0.04
0 1 x 3600 0.11 32 4000 0.04
1 1 0 250 0.97 8 4000 0.04
1 1 1 184 2.9 1 188 1.9
1 1 2 92 3.9 1 98 2.8
1 1 3 41 5.9 1 42 4.8
1 1 4 20 9.9 1 20 8.3
1 1 5 10 17.85 1 10 13.4
1 1 6 5 33.48 1 5 18.6
1 1 7 3600 0.17 8 4000 0.04

(MPU9250)Gyroscope Configuration

GYRO_CONFIG 0x1B
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
XGYRO_Cten YGYRO_Cten ZGYRO_Cten GYRO_FS_SEL1 GYRO_FS_SEL0 - Fchoice_b1 Fchoice_b2

(MPU9250)GYRO_FS_SEL

Bit 意味
00 +250dps
01 +500 dps
10 +1000 dps
11 +2000 dps

(MPU9250)Accelerometer Configuration

ACCL_CONFIG 0x1C
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
ax_st_en ay_st_en az_st_en ACCEL_FS_SEL1 ACCEL_FS_SEL0 RESV RESV RESV

(MPU9250)ACCEL_FS_SEL

Bit 意味
00 ±2g
01 ±4g
10 ±8g
11 ±16g
ACCL_CONFIG2 0x1D
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
RESV RESV RESV RESV accel_fchoice_b A_DLPFCFG2 A_DLPFCFG1 A_DLPFCFG0
ACCEL_FCHOICE A_DLPF_CFG Output
Bandwidth
(Hz)
Output
Delay
(ms)
Output
Noise

Density
(ug/rtHz)
Rate
(kHz)
0 X 1.13K 0.75 250 4
1 0 460 1.94 250 1
1 1 184 5.80 250 1
1 2 92 7.80 250 1
1 3 41 11.80 250 1
1 4 20 19.80 250 1
1 5 10 35.70 250 1
1 6 5 66.96 250 1
1 7 460 1.94 250 1

(AK8963)Control

CTRL1 0x0A
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 0 0 BIT MODE3 MODE2 MODE1 MODE0

(AK8963)MODE

Bit 意味
0000 Power-down mode
0001 Single measurement mode
0010 Continuous measurement mode 1
0110 Continuous measurement mode 2
0100 External trigger measurement mode
1000 Self-test mode
1111 Fuse ROM access mode

(AK8963)BIT

Bit 意味
0 14-bit output
1 16-bit output

(MPU9250)Read Accelerometer

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x3B | ACCEL_XOUT_H | R | ACCEL_XOUT_H[15:8] |
| 0x3C | ACCEL_XOUT_L | R | ACCEL_XOUT_L[7:0] |
| 0x3D | ACCEL_YOUT_H | R | ACCEL_YOUT_H[15:8] |
| 0x3E | ACCEL_YOUT_L | R | ACCEL_YOUT_L[7:0] |
| 0x3F | ACCEL_ZOUT_H | R | ACCEL_ZOUT_H[15:8] |
| 0x40 | ACCEL_ZOUT_L | R | ACCEL_ZOUT_L[7:0] |

(MPU9250)Read Temperature

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x41 | TEMP_OUT_H | R | TEMP_OUT_H[15:8] |
| 0x42 | TEMP_OUT_L | R | TEMP_OUT_L[7:0] |

(MPU9250)Read Gyroscope

| Address | Name | Type | 値 |
|:--|:--|:--|:--|:--|
| 0x43 | GYRO_XOUT_H | R | GYRO_XOUT_H[15:8] |
| 0x44 | GYRO_XOUT_L | R | GYRO_XOUT_L[7:0] |
| 0x45 | GYRO_YOUT_H | R | GYRO_YOUT_H[15:8] |
| 0x46 | GYRO_YOUT_L | R | GYRO_YOUT_L[7:0] |
| 0x47 | GYRO_ZOUT_H | R | GYRO_ZOUT_H[15:8] |
| 0x48 | GYRO_ZOUT_L | R | GYRO_ZOUT_L[7:0] |

(AK8963)

19
21
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?