Perpustakaan ini berkomunikasi dengan InvensenseMPU-6500 dan InvenSense MPU-9250 dan MPU-9255 Inertial Measurement Unit (IMUs). Perpustakaan ini kompatibel dengan sistem build Arduino dan CMake.
Invense MPU-6500 adalah giroskop tiga sumbu dan akselerometer tiga sumbu. InvenSense MPU-9250 adalah System in Package (SiP) yang menggabungkan dua chip: giroskop tiga sumbu MPU-6500 dan akselerometer tiga sumbu; dan magnetometer tiga sumbu AK8963. MPU-6500 dan MPU-9250 mendukung I2C, hingga 400 kHz, dan komunikasi SPI, hingga 1 MHz untuk pengaturan register dan 20 MHz untuk pembacaan data. Tersedia rentang sensor skala penuh yang dapat dipilih berikut ini:
Rentang Skala Penuh Giroskop | Rentang Skala Penuh Akselerometer | Rentang Skala Penuh Magnetometer (Khusus MPU-9250) |
---|---|---|
+/- 250 derajat/dtk | +/- 2g | +/- 4800ut |
+/- 500 derajat/dtk | +/- 4g | |
+/- 1000 derajat/dtk | +/- 8 gram | |
+/- 2000 derajat/dtk | +/- 16 gram |
IMU mengambil sampel gyro, accelerometer, dan magnetometer dengan konverter analog ke digital 16 bit. Ia juga dilengkapi filter digital yang dapat diprogram, jam presisi, dan sensor suhu tertanam.
Gunakan Arduino Library Manager untuk menginstal perpustakaan ini atau mengkloning ke folder Arduino/perpustakaan Anda.
Untuk MPU-6500, perpustakaan ini ditambahkan sebagai:
# include " mpu6500.h "
Untuk MPU-9250, perpustakaan ini ditambahkan sebagai:
# include " mpu9250.h "
Contoh executable Arduino terletak di: example/arduino/ . Perangkat Teensy 3.x, 4.x, dan LC digunakan untuk pengujian di bawah Arduino dan perpustakaan ini harus kompatibel dengan perangkat Arduino lainnya.
CMake digunakan untuk membangun perpustakaan ini, yang diekspor sebagai target perpustakaan yang disebut invensense_imu .
Untuk MPU-6500, perpustakaan ini ditambahkan sebagai:
# include " mpu6500.h "
Untuk MPU-9250, perpustakaan ini ditambahkan sebagai:
# include " mpu9250.h "
Pustaka juga dapat dikompilasi secara mandiri menggunakan idiom CMake dalam membuat direktori build dan kemudian, dari dalam direktori tersebut, dikeluarkan:
cmake .. -DMCU=MK66FX1M0
make
Ini akan membangun perpustakaan dan contoh executable yang disebut i2c_example , spi_example , drdy_spi_example , dan wom_example (khusus MPU-9250). Contoh file sumber yang dapat dieksekusi terletak di example/cmake . Perhatikan bahwa perintah cmake menyertakan definisi yang menentukan mikrokontroler tempat kode tersebut dikompilasi. Ini diperlukan untuk mengonfigurasi kode, frekuensi CPU, dan opsi kompilasi/linker dengan benar. MCU yang tersedia adalah:
Ini diketahui bekerja dengan paket yang sama yang digunakan pada produk Teensy. Juga perpindahan paket diketahui berfungsi dengan baik, selama itu hanya perubahan paket.
Contoh target membuat executable untuk berkomunikasi dengan sensor menggunakan komunikasi I2C atau SPI, masing-masing menggunakan interupsi siap data, dan menggunakan interupsi bangun saat gerak. Setiap target juga memiliki _hex , untuk membuat file hex untuk diunggah ke mikrokontroler, dan _upload untuk menggunakan Teensy CLI Uploader untuk mem-flash Teensy. Harap perhatikan bahwa petunjuk untuk menyiapkan lingkungan build Anda dapat ditemukan di repo alat build kami.
Perpustakaan ini berada dalam namespace bfs .
Kelas ini menyediakan metode untuk membaca dan menulis ke register pada sensor ini. Diharapkan ini dapat berfungsi setidaknya pada MPU-6000, MPU-6050, MPU-6500, MPU-9150, dan MPU-9250; meskipun demikian, ini mungkin juga berfungsi untuk sensor lain. Sebagian besar pengguna kemungkinan besar akan lebih memilih kelas sensor tertentu, di bawah ini; namun, kelas ini memungkinkan orang untuk membuka fungsionalitas yang lebih besar dan menggunakannya sebagai titik awal untuk driver sensor mereka sendiri.
InvensenseImu() Konstruktor default, memerlukan pemanggilan metode Config untuk mengatur bus I2C atau SPI dan alamat I2C atau pin pemilihan chip SPI.
InvensenseImu(TwoWire *i2c, const uint8_t addr) Membuat objek InvensenseImu. Konstruktor ini digunakan untuk antarmuka komunikasi I2C. Sebuah penunjuk ke objek bus I2C diteruskan bersama dengan alamat I2C sensor.
InvensenseImu(SPIClass *bus, uint8_t cs) Membuat objek InvensenseImu. Konstruktor ini digunakan untuk antarmuka komunikasi SPI. Sebuah penunjuk ke objek bus SPI dilewatkan bersama dengan pin pemilihan chip pada sensor. Pin apa pun yang mampu melakukan I/O digital dapat digunakan sebagai pin pemilihan chip.
void Config(TwoWire *bus, const uint8_t addr) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus I2C dan alamat I2C.
void Config(SPIClass *spi, const uint8_t cs) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus SPI dan pin pemilihan chip.
void Begin() Menginisialisasi komunikasi dengan sensor. Bus komunikasi tidak diinisialisasi dalam perpustakaan ini dan harus diinisialisasi secara terpisah; ini meningkatkan kompatibilitas dengan sensor lain yang mungkin berada di bus yang sama.
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_clock) Menulis data register ke sensor berdasarkan alamat register dan datanya. Kecepatan jam SPI harus ditentukan jika komunikasi SPI digunakan.
bool WriteRegister(const uint8_t reg, const uint8_t data) Kelebihan di atas saat komunikasi I2C digunakan.
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_clock, uint8_t * const data) Membaca data register dari sensor berdasarkan alamat register, jumlah register yang akan dibaca, jam SPI, dan penunjuk untuk menyimpan data.
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) Kelebihan di atas dimana komunikasi I2C digunakan.
Kelas ini bekerja dengan IMU MPU-9250 dan MPU-9255.
Mpu9250() Konstruktor default, memerlukan pemanggilan metode Config untuk mengatur bus I2C atau SPI dan alamat I2C atau pin pemilihan chip SPI.
Mpu9250(i2c_t3 *bus, I2cAddr addr) Membuat objek Mpu9250. Konstruktor ini digunakan untuk antarmuka komunikasi I2C. Sebuah penunjuk ke objek bus I2C diteruskan bersama dengan alamat I2C sensor. Alamatnya adalah I2C_ADDR_PRIM (0x68) jika pin AD0 di-ground dan I2C_ADDR_SEC (0x69) jika pin AD0 ditarik tinggi.
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Membuat objek Mpu9250. Konstruktor ini digunakan untuk antarmuka komunikasi SPI. Sebuah penunjuk ke objek bus SPI dilewatkan bersama dengan pin pemilihan chip pada sensor. Pin apa pun yang mampu melakukan I/O digital dapat digunakan sebagai pin pemilihan chip.
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus I2C dan alamat I2C. Alamatnya adalah I2C_ADDR_PRIM (0x68) jika pin AD0 di-ground dan I2C_ADDR_SEC (0x69) jika pin AD0 ditarik tinggi.
void Config(SPIClass *spi, const uint8_t cs) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus SPI dan pin pemilihan chip.
bool Begin() Menginisialisasi komunikasi dengan sensor dan mengonfigurasi rentang sensor default, laju pengambilan sampel, dan pengaturan filter lolos rendah. Rentang akselerometer default adalah +/- 16g dan rentang gyro default adalah +/- 2.000 derajat/dtk. Kecepatan pengambilan sampel default adalah 1000 Hz dan filter low-pass diatur ke frekuensi cutoff 184 Hz. Benar dikembalikan jika komunikasi dapat dibangun dengan sensor dan konfigurasi berhasil diselesaikan, jika tidak, salah dikembalikan. Bus komunikasi tidak diinisialisasi dalam perpustakaan ini dan harus diinisialisasi secara terpisah; ini meningkatkan kompatibilitas dengan sensor lain yang mungkin berada di bus yang sama.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Mengaktifkan interupsi data siap pakai. Interupsi 50 us akan dipicu pada pin MPU-9250 INT ketika data IMU siap. Interupsi ini aktif tinggi. Metode ini mengembalikan nilai true jika interupsi berhasil diaktifkan, jika tidak, false akan dikembalikan.
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Menonaktifkan interupsi data siap pakai. Metode ini mengembalikan nilai true jika interupsi berhasil dinonaktifkan, jika tidak, false akan dikembalikan.
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Menyetel rentang skala penuh akselerometer. Pilihannya adalah:
Jangkauan | Nilai Enum |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8 gram | ACCEL_RANGE_8G |
+/- 16 gram | ACCEL_RANGE_16G |
Benar dikembalikan jika rentang akselerometer berhasil diatur, jika tidak, salah dikembalikan. Kisaran defaultnya adalah +/-16g.
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Mengembalikan rentang accelerometer saat ini.
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range) Menyetel rentang skala penuh gyro. Pilihannya adalah:
Jangkauan | Nilai Enum |
---|---|
+/- 250 derajat/dtk | GYRO_RANGE_250DPS |
+/- 500 derajat/dtk | GYRO_RANGE_500DPS |
+/- 1000 derajat/dtk | GYRO_RANGE_1000DPS |
+/- 2000 derajat/dtk | GYRO_RANGE_2000DPS |
True dikembalikan jika rentang gyro berhasil diatur, jika tidak, false dikembalikan. Kisaran defaultnya adalah +/-2000 derajat/dtk.
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Mengembalikan rentang gyro saat ini.
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd) Mengatur pembagi laju sampel sensor. MPU-9250 mengambil sampel akselerometer dan gyro dengan kecepatan, dalam Hz, yang ditentukan oleh:
Pengaturan srd 0 berarti MPU-9250 mengambil sampel akselerometer dan gyro pada 1000 Hz. Pengaturan srd 4 akan mengatur pengambilan sampel pada 200 Hz. Interupsi siap data IMU terikat dengan laju yang ditentukan oleh pembagi laju sampel. Magnetometer diambil sampelnya pada 100 Hz untuk nilai pembagi laju sampel yang sesuai dengan 100 Hz atau lebih besar. Jika tidak, magnetometer diambil sampelnya pada 8 Hz.
Benar dikembalikan jika berhasil mengatur pembagi laju sampel, jika tidak, salah dikembalikan. Nilai pembagi laju sampel default adalah 0, sehingga menghasilkan laju sampel 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Mengembalikan nilai pembagi laju sampel saat ini.
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Mengatur frekuensi cutoff filter lolos rendah digital untuk akselerometer, gyro, dan sensor suhu. Bandwidth yang tersedia adalah:
Bandwidth DLPF | Nilai Enum |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
Benar dikembalikan jika berhasil menyetel filter lolos rendah digital, jika tidak, salah dikembalikan. Bandwidth defaultnya adalah 184 Hz.
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Mengembalikan pengaturan bandwidth filter lolos rendah digital saat ini.
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_tthreshold_mg, const WomRate wom_rate) Mengaktifkan interupsi Wake-On-Motion. Ini menempatkan MPU-9250 ke kondisi daya rendah, aktif pada interval yang ditentukan oleh WomRate . Jika akselerometer mendeteksi gerakan yang melebihi ambang batas, threshold_mg , akselerometer akan menghasilkan pulsa 50us dari pin interupsi MPU-9250. Tarif WOM yang disebutkan berikut ini didukung:
Tingkat Sampel WOM | Nilai Enum |
---|---|
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 |
Ambang batas gerakan diberikan sebagai nilai antara 4 dan 1020 mg, yang dipetakan secara internal ke satu byte, nilai 1-255. Fungsi ini mengembalikan nilai benar jika berhasil mengaktifkan Wake On Motion, jika tidak, mengembalikan nilai salah. Silakan lihat contoh wom_i2c . Berikut contoh pengaktifan wake on motion dengan ambang batas 40 mg dan ODR 31,25 Hz.
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() Mereset MPU-9250.
bool Read() Membaca data dari MPU-9250 dan menyimpan data di objek Mpu9250. Mengembalikan nilai benar jika data berhasil dibaca, jika tidak, mengembalikan nilai salah.
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data() Mengembalikan nilai benar jika data baru dikembalikan dari akselerometer dan gyro.
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data() Mengembalikan nilai benar jika data baru dikembalikan dari magnetometer. Untuk kecepatan sampel MPU-9250 100 Hz dan lebih tinggi, magnetometer diambil sampelnya pada 100 Hz. Untuk laju sampel MPU-9250 kurang dari 100 Hz, magnetometer diambil sampelnya pada 8 Hz, sehingga tidak jarang menerima data IMU baru, namun bukan data magnetometer baru.
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Mengembalikan data x accelerometer dari objek Mpu9250 dalam satuan m/s/s. Metode serupa juga ada untuk data sumbu y dan 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() Mengembalikan data x gyro dari objek Mpu9250 dalam satuan rad/s. Metode serupa juga ada untuk data sumbu y dan 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() Mengembalikan data magnetometer x dari objek Mpu9250 dalam satuan uT. Metode serupa juga ada untuk data sumbu y dan 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() Mengembalikan suhu die sensor dalam satuan C.
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
Kelas ini bekerja dengan sensor MPU-6500.
Mpu6500() Konstruktor default, memerlukan pemanggilan metode Config untuk mengatur bus I2C atau SPI dan alamat I2C atau pin pemilihan chip SPI.
Mpu6500(i2c_t3 *bus, I2cAddr addr) Membuat objek Mpu6500. Konstruktor ini digunakan untuk antarmuka komunikasi I2C. Sebuah penunjuk ke objek bus I2C diteruskan bersama dengan alamat I2C sensor. Alamatnya adalah I2C_ADDR_PRIM (0x68) jika pin AD0 di-ground dan I2C_ADDR_SEC (0x69) jika pin AD0 ditarik tinggi.
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Membuat objek Mpu6500. Konstruktor ini digunakan untuk antarmuka komunikasi SPI. Sebuah penunjuk ke objek bus SPI dilewatkan bersama dengan pin pemilihan chip pada sensor. Pin apa pun yang mampu melakukan I/O digital dapat digunakan sebagai pin pemilihan chip.
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus I2C dan alamat I2C. Alamatnya adalah I2C_ADDR_PRIM (0x68) jika pin AD0 di-ground dan I2C_ADDR_SEC (0x69) jika pin AD0 ditarik tinggi.
void Config(SPIClass *spi, const uint8_t cs) Ini diperlukan saat menggunakan konstruktor default dan mengatur bus SPI dan pin pemilihan chip.
bool Begin() Menginisialisasi komunikasi dengan sensor dan mengonfigurasi rentang sensor default, laju pengambilan sampel, dan pengaturan filter lolos rendah. Rentang akselerometer default adalah +/- 16g dan rentang gyro default adalah +/- 2.000 derajat/dtk. Kecepatan pengambilan sampel default adalah 1000 Hz dan filter low-pass diatur ke frekuensi cutoff 184 Hz. Benar dikembalikan jika komunikasi dapat dibangun dengan sensor dan konfigurasi berhasil diselesaikan, jika tidak, salah dikembalikan. Bus komunikasi tidak diinisialisasi dalam perpustakaan ini dan harus diinisialisasi secara terpisah; ini meningkatkan kompatibilitas dengan sensor lain yang mungkin berada di bus yang sama.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Mengaktifkan interupsi data siap pakai. Interupsi 50 us akan dipicu pada pin MPU-9250 INT ketika data IMU siap. Interupsi ini aktif tinggi. Metode ini mengembalikan nilai true jika interupsi berhasil diaktifkan, jika tidak, false akan dikembalikan.
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Menonaktifkan interupsi data siap pakai. Metode ini mengembalikan nilai true jika interupsi berhasil dinonaktifkan, jika tidak, false akan dikembalikan.
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Menyetel rentang skala penuh akselerometer. Pilihannya adalah:
Jangkauan | Nilai Enum |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8 gram | ACCEL_RANGE_8G |
+/- 16 gram | ACCEL_RANGE_16G |
Benar dikembalikan jika rentang akselerometer berhasil diatur, jika tidak, salah dikembalikan. Kisaran defaultnya adalah +/-16g.
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Mengembalikan rentang accelerometer saat ini.
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range) Menyetel rentang skala penuh gyro. Pilihannya adalah:
Jangkauan | Nilai Enum |
---|---|
+/- 250 derajat/dtk | GYRO_RANGE_250DPS |
+/- 500 derajat/dtk | GYRO_RANGE_500DPS |
+/- 1000 derajat/dtk | GYRO_RANGE_1000DPS |
+/- 2000 derajat/dtk | GYRO_RANGE_2000DPS |
True dikembalikan jika rentang gyro berhasil diatur, jika tidak, false dikembalikan. Kisaran defaultnya adalah +/-2000 derajat/dtk.
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Mengembalikan rentang gyro saat ini.
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd) Mengatur pembagi laju sampel sensor. MPU-9250 mengambil sampel akselerometer dan gyro dengan kecepatan, dalam Hz, yang ditentukan oleh:
Pengaturan srd 0 berarti MPU-9250 mengambil sampel akselerometer dan gyro pada 1000 Hz. Pengaturan srd 4 akan mengatur pengambilan sampel pada 200 Hz. Interupsi siap data IMU terikat dengan laju yang ditentukan oleh pembagi laju sampel. Magnetometer diambil sampelnya pada 100 Hz untuk nilai pembagi laju sampel yang sesuai dengan 100 Hz atau lebih besar. Jika tidak, magnetometer diambil sampelnya pada 8 Hz.
Benar dikembalikan jika berhasil mengatur pembagi laju sampel, jika tidak, salah dikembalikan. Nilai pembagi laju sampel default adalah 0, sehingga menghasilkan laju sampel 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Mengembalikan nilai pembagi laju sampel saat ini.
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Mengatur frekuensi cutoff filter lolos rendah digital untuk akselerometer, gyro, dan sensor suhu. Bandwidth yang tersedia adalah:
Bandwidth DLPF | Nilai Enum |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
Benar dikembalikan jika berhasil menyetel filter lolos rendah digital, jika tidak, salah dikembalikan. Bandwidth defaultnya adalah 184 Hz.
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Mengembalikan pengaturan bandwidth filter lolos rendah digital saat ini.
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() Membaca data dari MPU-6500 dan menyimpan data di objek Mpu6500. Mengembalikan nilai benar jika data berhasil dibaca, jika tidak, mengembalikan nilai salah.
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data() Mengembalikan nilai benar jika data baru dikembalikan dari akselerometer dan gyro.
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Mengembalikan data x accelerometer dari objek Mpu6500 dalam satuan m/s/s. Metode serupa juga ada untuk data sumbu y dan 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() Mengembalikan data x gyro dari objek Mpu6500 dalam satuan rad/s. Metode serupa juga ada untuk data sumbu y dan 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() Mengembalikan suhu die sensor dalam satuan C.
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
Pustaka ini mengubah semua data menjadi sistem sumbu umum sebelum dikembalikan. Sistem sumbu ini ditunjukkan di bawah ini. Ini adalah sistem koordinat tangan kanan dengan sumbu z positif ke bawah, umum dalam dinamika pesawat terbang.
Peringatan! Sistem sumbu ini ditampilkan relatif terhadap sensor MPU-6500 dan MPU-9250. Sensor mungkin diputar relatif terhadap papan breakout.