이 라이브러리는 InvensenseMPU-6500, InvenSense MPU-9250 및 MPU-9255 관성 측정 장치(IMU)와 통신합니다. 이 라이브러리는 Arduino 및 CMake 빌드 시스템과 호환됩니다.
Invense MPU-6500은 3축 자이로스코프 및 3축 가속도계입니다. InvenSense MPU-9250은 MPU-6500 3축 자이로스코프와 3축 가속도계라는 두 개의 칩을 결합한 SiP(시스템 인 패키지)입니다. AK8963 3축 자력계. MPU-6500 및 MPU-9250은 최대 400kHz의 I2C와 SPI 통신(레지스터 설정의 경우 최대 1MHz, 데이터 읽기의 경우 최대 20MHz)을 지원합니다. 다음과 같이 선택 가능한 전체 범위 센서 범위를 사용할 수 있습니다.
자이로스코프 전체 범위 | 가속도계 전체 범위 | 자력계 전체 범위 범위(MPU-9250만 해당) |
---|---|---|
+/- 250도/초 | +/- 2g | +/- 4800uT |
+/- 500도/초 | +/- 4g | |
+/- 1000도/초 | +/- 8g | |
+/- 2000도/초 | +/- 16g |
IMU는 16비트 아날로그-디지털 변환기를 사용하여 자이로, 가속도계 및 자력계를 샘플링합니다. 또한 프로그래밍 가능한 디지털 필터, 정밀 시계 및 내장된 온도 센서도 갖추고 있습니다.
Arduino 라이브러리 관리자를 사용하여 이 라이브러리를 설치하거나 Arduino/libraries 폴더에 복제하세요.
MPU-6500의 경우 이 라이브러리는 다음과 같이 추가됩니다.
# include " mpu6500.h "
MPU-9250의 경우 이 라이브러리는 다음과 같이 추가됩니다.
# include " mpu9250.h "
예제 Arduino 실행 파일은 example/arduino/ 에 있습니다. Teensy 3.x, 4.x 및 LC 장치는 Arduino에서 테스트하는 데 사용되며 이 라이브러리는 다른 Arduino 장치와 호환되어야 합니다.
CMake는 invensense_imu 라는 라이브러리 대상으로 내보내지는 이 라이브러리를 빌드하는 데 사용됩니다.
MPU-6500의 경우 이 라이브러리는 다음과 같이 추가됩니다.
# include " mpu6500.h "
MPU-9250의 경우 이 라이브러리는 다음과 같이 추가됩니다.
# include " mpu9250.h "
빌드 디렉터리를 생성하는 CMake 관용구를 사용하여 라이브러리를 독립형으로 컴파일한 다음 해당 디렉터리 내에서 다음을 실행하여 라이브러리를 독립적으로 컴파일할 수도 있습니다.
cmake .. -DMCU=MK66FX1M0
make
그러면 i2c_example , spi_example , drdy_spi_example 및 wom_example (MPU-9250에만 해당)이라는 라이브러리와 예제 실행 파일이 빌드됩니다. 예제 실행 가능 소스 파일은 example/cmake 에 있습니다. cmake 명령에는 코드가 컴파일되는 마이크로컨트롤러를 지정하는 정의가 포함되어 있습니다. 이는 코드, CPU 주파수 및 컴파일/링커 옵션을 올바르게 구성하는 데 필요합니다. 사용 가능한 MCU는 다음과 같습니다.
이는 Teensy 제품에 사용되는 것과 동일한 패키지에서 작동하는 것으로 알려져 있습니다. 또한 패키지 변경만 가능하다면 패키지 전환도 잘 작동하는 것으로 알려져 있습니다.
예제 대상은 각각 I2C 또는 SPI 통신, 데이터 준비 인터럽트 및 Wake on Motion 인터럽트를 사용하여 센서와 통신하기 위한 실행 파일을 생성합니다. 각 대상에는 마이크로 컨트롤러에 업로드할 hex 파일을 생성하기 위한 _hex 와 Teensy CLI 업로더를 사용하여 Teensy를 플래시하기 위한 _upload 도 있습니다. 빌드 환경 설정에 대한 지침은 빌드 도구 저장소에서 찾을 수 있습니다.
이 라이브러리는 bfs 네임스페이스 내에 있습니다.
이 클래스는 이러한 센서의 레지스터를 읽고 쓰는 방법을 제공합니다. 이는 최소한 MPU-6000, MPU-6050, MPU-6500, MPU-9150 및 MPU-9250에서 작동할 것으로 예상됩니다. 하지만 다른 센서에서도 작동할 수 있습니다. 대부분의 사용자는 아래의 센서별 클래스를 선호할 것입니다. 그러나 이 클래스를 사용하면 사람들이 더 많은 기능을 잠금 해제하고 자체 센서 드라이버의 시작점으로 사용할 수 있습니다.
InvensenseImu() 기본 생성자는 I2C 또는 SPI 버스와 I2C 주소 또는 SPI 칩 선택 핀을 설정하기 위해 Config 메서드를 호출해야 합니다.
InvensenseImu(TwoWire *i2c, const uint8_t addr) InvensenseImu 객체를 생성합니다. 이 생성자는 I2C 통신 인터페이스에 사용됩니다. I2C 버스 개체에 대한 포인터가 센서의 I2C 주소와 함께 전달됩니다.
InvensenseImu(SPIClass *bus, uint8_t cs) InvensenseImu 객체를 생성합니다. 이 생성자는 SPI 통신 인터페이스에 사용됩니다. SPI 버스 개체에 대한 포인터가 센서의 칩 선택 핀과 함께 전달됩니다. 디지털 I/O가 가능한 모든 핀을 칩 선택 핀으로 사용할 수 있습니다.
void Config(TwoWire *bus, const uint8_t addr) 이는 기본 생성자를 사용하고 I2C 버스 및 I2C 주소를 설정할 때 필요합니다.
void Config(SPIClass *spi, const uint8_t cs) 이는 기본 생성자를 사용하고 SPI 버스 및 칩 선택 핀을 설정할 때 필요합니다.
void Begin() 센서와의 통신을 초기화합니다. 통신 버스는 이 라이브러리 내에서 초기화되지 않으며 별도로 초기화해야 합니다. 이는 동일한 버스에 있을 수 있는 다른 센서와의 호환성을 향상시킵니다.
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_clock) 레지스터 주소와 데이터가 주어지면 센서에 레지스터 데이터를 씁니다. SPI 통신을 사용하는 경우 SPI 클럭 속도를 지정해야 합니다.
bool WriteRegister(const uint8_t reg, const uint8_t data) I2C 통신이 사용되는 위의 오버로드입니다.
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_clock, uint8_t * const data) 레지스터 주소, 읽을 레지스터 수, SPI 클럭 및 데이터를 저장할 포인터가 지정된 센서에서 레지스터 데이터를 읽습니다.
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) I2C 통신이 사용되는 위의 오버로드입니다.
이 클래스는 MPU-9250 및 MPU-9255 IMU에서 작동합니다.
Mpu9250() 기본 생성자는 I2C 또는 SPI 버스와 I2C 주소 또는 SPI 칩 선택 핀을 설정하기 위해 Config 메서드를 호출해야 합니다.
Mpu9250(i2c_t3 *bus, I2cAddr addr) Mpu9250 객체를 생성합니다. 이 생성자는 I2C 통신 인터페이스에 사용됩니다. I2C 버스 개체에 대한 포인터가 센서의 I2C 주소와 함께 전달됩니다. AD0 핀이 접지된 경우 주소는 I2C_ADDR_PRIM(0x68)이 되고, AD0 핀이 하이로 풀링된 경우 I2C_ADDR_SEC(0x69)가 됩니다.
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Mpu9250 객체를 생성합니다. 이 생성자는 SPI 통신 인터페이스에 사용됩니다. SPI 버스 개체에 대한 포인터가 센서의 칩 선택 핀과 함께 전달됩니다. 디지털 I/O가 가능한 모든 핀을 칩 선택 핀으로 사용할 수 있습니다.
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) 기본 생성자를 사용하고 I2C 버스 및 I2C 주소를 설정할 때 필요합니다. AD0 핀이 접지된 경우 주소는 I2C_ADDR_PRIM(0x68)이 되고, AD0 핀이 하이로 풀링된 경우 I2C_ADDR_SEC(0x69)가 됩니다.
void Config(SPIClass *spi, const uint8_t cs) 이는 기본 생성자를 사용하고 SPI 버스 및 칩 선택 핀을 설정할 때 필요합니다.
bool Begin() 센서와의 통신을 초기화하고 기본 센서 범위, 샘플링 속도 및 저역 통과 필터 설정을 구성합니다. 기본 가속도계 범위는 +/- 16g이고 기본 자이로 범위는 +/- 2,000deg/s입니다. 기본 샘플링 속도는 1000Hz이고 저역 통과 필터는 차단 주파수 184Hz로 설정됩니다. 센서와 통신이 설정되고 구성이 성공적으로 완료되면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 통신 버스는 이 라이브러리 내에서 초기화되지 않으며 별도로 초기화해야 합니다. 이는 동일한 버스에 있을 수 있는 다른 센서와의 호환성을 향상시킵니다.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() 데이터 준비 인터럽트를 활성화합니다. IMU 데이터가 준비되면 MPU-9250 INT 핀에서 50us 인터럽트가 트리거됩니다. 이 인터럽트는 활성 상태입니다. 이 메서드는 인터럽트가 성공적으로 활성화되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() 데이터 준비 인터럽트를 비활성화합니다. 이 메서드는 인터럽트가 성공적으로 비활성화되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) 가속도계 전체 범위를 설정합니다. 옵션은 다음과 같습니다:
범위 | 열거형 값 |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
가속도계 범위를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 범위는 +/-16g입니다.
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() 현재 가속도계 범위를 반환합니다.
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range) 자이로 전체 범위를 설정합니다. 옵션은 다음과 같습니다:
범위 | 열거형 값 |
---|---|
+/- 250도/초 | GYRO_RANGE_250DPS |
+/- 500도/초 | GYRO_RANGE_500DPS |
+/- 1000도/초 | GYRO_RANGE_1000DPS |
+/- 2000도/초 | GYRO_RANGE_2000DPS |
자이로 범위를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 범위는 +/-2000deg/s입니다.
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() 현재 자이로 범위를 반환합니다.
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd) 센서 샘플링 속도 구분선을 설정합니다. MPU-9250은 다음과 같이 정의된 속도(Hz)로 가속도계와 자이로를 샘플링합니다.
srd 설정이 0이면 MPU-9250이 가속도계와 자이로를 1000Hz로 샘플링한다는 의미입니다. srd 설정을 4로 설정하면 샘플링이 200Hz로 설정됩니다. IMU 데이터 준비 인터럽트는 샘플 속도 분배기에 의해 정의된 속도에 연결됩니다. 자력계는 100Hz 이상에 해당하는 샘플링 속도 분배기 값에 대해 100Hz로 샘플링됩니다. 그렇지 않으면 자력계는 8Hz로 샘플링됩니다.
샘플 속도 구분선을 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 샘플 속도 분할기 값은 0이며 결과적으로 1000Hz 샘플 속도가 됩니다.
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() 현재 샘플 속도 구분선 값을 반환합니다.
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) 가속도계, 자이로 및 온도 센서에 대한 디지털 로우 패스 필터의 차단 주파수를 설정합니다. 사용 가능한 대역폭은 다음과 같습니다.
DLPF 대역폭 | 열거형 값 |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
디지털 저역 통과 필터를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 대역폭은 184Hz입니다.
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() 현재 디지털 로우 패스 필터 대역폭 설정을 반환합니다.
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_t Threshold_mg, const WomRate wom_rate) Wake-On-Motion 인터럽트를 활성화합니다. MPU-9250을 저전력 상태로 전환하고 WomRate 에 의해 결정된 간격으로 깨어납니다. 가속도계가 임계값( threshold_mg) 을 초과하는 동작을 감지하면 MPU-9250 인터럽트 핀에서 50us 펄스를 생성합니다. 다음과 같은 열거된 WOM 요금이 지원됩니다.
WOM 샘플링 속도 | 열거형 값 |
---|---|
0.24Hz | WOM_RATE_0_24HZ |
0.49Hz | WOM_RATE_0_49HZ |
0.98Hz | WOM_RATE_0_98HZ |
1.95Hz | WOM_RATE_1_95HZ |
3.91Hz | WOM_RATE_3_91HZ |
7.81Hz | WOM_RATE_7_81HZ |
15.63Hz | WOM_RATE_15_63HZ |
31.25Hz | WOM_RATE_31_25HZ |
62.50Hz | WOM_RATE_62_50HZ |
125Hz | WOM_RATE_125HZ |
250Hz | WOM_RATE_250HZ |
500Hz | WOM_RATE_500HZ |
모션 임계값은 4~1020mg 사이의 값으로 제공되며 내부적으로 단일 바이트, 1~255 값으로 매핑됩니다. 이 함수는 Wake On Motion을 성공적으로 활성화하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. wom_i2c 예제를 참조하세요. 다음은 40mg 임계값과 31.25Hz의 ODR로 Wake On Motion을 활성화하는 예입니다.
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() MPU-9250을 재설정합니다.
bool Read() MPU-9250에서 데이터를 읽고 Mpu9250 개체에 데이터를 저장합니다. 데이터를 성공적으로 읽었으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data() 가속도계와 자이로에서 새 데이터가 반환된 경우 true를 반환합니다.
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data() 자력계에서 새 데이터가 반환된 경우 true를 반환합니다. 100Hz 이상의 MPU-9250 샘플링 속도의 경우 자력계는 100Hz로 샘플링됩니다. MPU-9250 샘플링 속도가 100Hz 미만인 경우 자력계는 8Hz로 샘플링되므로 새 IMU 데이터는 수신하지만 새 자력계 데이터는 수신하지 않는 경우가 많습니다.
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Mpu9250 개체의 x 가속도계 데이터를 m/s/s 단위로 반환합니다. y축과 z축 데이터에도 비슷한 방법이 있습니다.
/* Read the IMU data */
if (mpu9250.Read()) {
float ax = mpu9250. accel_x_mps2 ();
float ay = mpu9250. accel_y_mps2 ();
float az = mpu9250. accel_z_mps2 ();
}
float gyro_x_radps() Mpu9250 객체의 x 자이로 데이터를 rad/s 단위로 반환합니다. y축과 z축 데이터에도 비슷한 방법이 있습니다.
/* Read the IMU data */
if (mpu9250.Read()) {
float gx = mpu9250. gyro_x_radps ();
float gy = mpu9250. gyro_y_radps ();
float gz = mpu9250. gyro_z_radps ();
}
float mag_x_ut() Mpu9250 객체의 x 자력계 데이터를 uT 단위로 반환합니다. y축과 z축 데이터에도 비슷한 방법이 있습니다.
/* Read the IMU data */
if (mpu9250.Read()) {
float hx = mpu9250. mag_x_ut ();
float hy = mpu9250. mag_y_ut ();
float hz = mpu9250. mag_z_ut ();
}
float die_temp_c() 센서의 다이 온도를 C 단위로 반환합니다.
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
이 클래스는 MPU-6500 센서와 함께 작동합니다.
Mpu6500() 기본 생성자는 I2C 또는 SPI 버스와 I2C 주소 또는 SPI 칩 선택 핀을 설정하기 위해 Config 메서드를 호출해야 합니다.
Mpu6500(i2c_t3 *bus, I2cAddr addr) Mpu6500 객체를 생성합니다. 이 생성자는 I2C 통신 인터페이스에 사용됩니다. I2C 버스 개체에 대한 포인터가 센서의 I2C 주소와 함께 전달됩니다. AD0 핀이 접지된 경우 주소는 I2C_ADDR_PRIM(0x68)이 되고, AD0 핀이 하이로 풀링된 경우 I2C_ADDR_SEC(0x69)가 됩니다.
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Mpu6500 객체를 생성합니다. 이 생성자는 SPI 통신 인터페이스에 사용됩니다. SPI 버스 개체에 대한 포인터가 센서의 칩 선택 핀과 함께 전달됩니다. 디지털 I/O가 가능한 모든 핀을 칩 선택 핀으로 사용할 수 있습니다.
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) 기본 생성자를 사용하고 I2C 버스 및 I2C 주소를 설정할 때 필요합니다. AD0 핀이 접지된 경우 주소는 I2C_ADDR_PRIM(0x68)이 되고, AD0 핀이 하이로 풀링된 경우 I2C_ADDR_SEC(0x69)가 됩니다.
void Config(SPIClass *spi, const uint8_t cs) 이는 기본 생성자를 사용하고 SPI 버스 및 칩 선택 핀을 설정할 때 필요합니다.
bool Begin() 센서와의 통신을 초기화하고 기본 센서 범위, 샘플링 속도 및 저역 통과 필터 설정을 구성합니다. 기본 가속도계 범위는 +/- 16g이고 기본 자이로 범위는 +/- 2,000deg/s입니다. 기본 샘플링 속도는 1000Hz이고 저역 통과 필터는 차단 주파수 184Hz로 설정됩니다. 센서와 통신이 설정되고 구성이 성공적으로 완료되면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 통신 버스는 이 라이브러리 내에서 초기화되지 않으며 별도로 초기화해야 합니다. 이는 동일한 버스에 있을 수 있는 다른 센서와의 호환성을 향상시킵니다.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() 데이터 준비 인터럽트를 활성화합니다. IMU 데이터가 준비되면 MPU-9250 INT 핀에서 50us 인터럽트가 트리거됩니다. 이 인터럽트는 활성 상태입니다. 이 메서드는 인터럽트가 성공적으로 활성화되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() 데이터 준비 인터럽트를 비활성화합니다. 이 메서드는 인터럽트가 성공적으로 비활성화되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) 가속도계 전체 범위를 설정합니다. 옵션은 다음과 같습니다:
범위 | 열거형 값 |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
가속도계 범위를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 범위는 +/-16g입니다.
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() 현재 가속도계 범위를 반환합니다.
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range) 자이로 전체 범위를 설정합니다. 옵션은 다음과 같습니다:
범위 | 열거형 값 |
---|---|
+/- 250도/초 | GYRO_RANGE_250DPS |
+/- 500도/초 | GYRO_RANGE_500DPS |
+/- 1000도/초 | GYRO_RANGE_1000DPS |
+/- 2000도/초 | GYRO_RANGE_2000DPS |
자이로 범위를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 범위는 +/-2000deg/s입니다.
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() 현재 자이로 범위를 반환합니다.
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd) 센서 샘플링 속도 구분선을 설정합니다. MPU-9250은 다음과 같이 정의된 속도(Hz)로 가속도계와 자이로를 샘플링합니다.
srd 설정이 0이면 MPU-9250이 가속도계와 자이로를 1000Hz로 샘플링한다는 의미입니다. srd 설정을 4로 설정하면 샘플링이 200Hz로 설정됩니다. IMU 데이터 준비 인터럽트는 샘플 속도 분배기에 의해 정의된 속도에 연결됩니다. 자력계는 100Hz 이상에 해당하는 샘플링 속도 분배기 값에 대해 100Hz로 샘플링됩니다. 그렇지 않으면 자력계는 8Hz로 샘플링됩니다.
샘플 속도 구분선을 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 샘플 속도 분할기 값은 0이며 결과적으로 1000Hz 샘플 속도가 됩니다.
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() 현재 샘플 속도 구분선 값을 반환합니다.
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) 가속도계, 자이로 및 온도 센서에 대한 디지털 로우 패스 필터의 차단 주파수를 설정합니다. 사용 가능한 대역폭은 다음과 같습니다.
DLPF 대역폭 | 열거형 값 |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
디지털 저역 통과 필터를 성공적으로 설정하면 True가 반환되고, 그렇지 않으면 False가 반환됩니다. 기본 대역폭은 184Hz입니다.
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() 현재 디지털 로우 패스 필터 대역폭 설정을 반환합니다.
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() MPU-6500에서 데이터를 읽고 Mpu6500 개체에 데이터를 저장합니다. 데이터를 성공적으로 읽었으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data() 가속도계와 자이로에서 새 데이터가 반환된 경우 true를 반환합니다.
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Mpu6500 개체의 x 가속도계 데이터를 m/s/s 단위로 반환합니다. y축과 z축 데이터에도 비슷한 방법이 있습니다.
/* Read the IMU data */
if (mpu6500.Read()) {
float ax = mpu6500. accel_x_mps2 ();
float ay = mpu6500. accel_y_mps2 ();
float az = mpu6500. accel_z_mps2 ();
}
float gyro_x_radps() Mpu6500 객체의 x 자이로 데이터를 rad/s 단위로 반환합니다. y축과 z축 데이터에도 비슷한 방법이 있습니다.
/* Read the IMU data */
if (mpu6500.Read()) {
float gx = mpu6500. gyro_x_radps ();
float gy = mpu6500. gyro_y_radps ();
float gz = mpu6500. gyro_z_radps ();
}
float die_temp_c() 센서의 다이 온도를 C 단위로 반환합니다.
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
이 라이브러리는 모든 데이터를 반환하기 전에 공통 축 시스템으로 변환합니다. 이 축 시스템은 아래와 같습니다. 이는 항공기 동역학에서 흔히 볼 수 있는 z축 양수를 아래로 한 오른손 좌표계입니다.
주의! 이 축 시스템은 MPU-6500 및 MPU-9250 센서를 기준으로 표시됩니다. 센서는 브레이크아웃 보드를 기준으로 회전할 수 있습니다.