Cette bibliothèque communique avec les unités de mesure inertielle (IMU) InvensenseMPU-6500 et InvenSense MPU-9250 et MPU-9255. Cette bibliothèque est compatible avec les systèmes de construction Arduino et CMake.
L'Invense MPU-6500 est un gyroscope à trois axes et un accéléromètre à trois axes. L'InvenSense MPU-9250 est un système en boîtier (SiP) qui combine deux puces : le gyroscope à trois axes MPU-6500 et l'accéléromètre à trois axes ; et le magnétomètre à trois axes AK8963. Les MPU-6500 et MPU-9250 prennent en charge I2C, jusqu'à 400 kHz, et la communication SPI, jusqu'à 1 MHz pour la configuration des registres et 20 MHz pour la lecture des données. Les plages de capteurs pleine échelle sélectionnables suivantes sont disponibles :
Gamme de gyroscopes à grande échelle | Gamme complète d’accéléromètres | Gamme complète du magnétomètre (MPU-9250 uniquement) |
---|---|---|
+/- 250 degrés/s | +/- 2g | +/- 4800 uT |
+/- 500 degrés/s | +/-4g | |
+/- 1000 degrés/s | +/- 8g | |
+/- 2000 degrés/s | +/- 16g |
Les IMU échantillonnent les gyroscopes, les accéléromètres et les magnétomètres avec des convertisseurs analogique-numérique 16 bits. Il comporte également des filtres numériques programmables, une horloge de précision et un capteur de température intégré.
Utilisez Arduino Library Manager pour installer cette bibliothèque ou clonez-la dans votre dossier Arduino/libraries.
Pour le MPU-6500, cette bibliothèque est ajoutée comme :
# include " mpu6500.h "
Pour le MPU-9250, cette bibliothèque est ajoutée comme :
# include " mpu9250.h "
Des exemples d'exécutables Arduino se trouvent dans : examples/arduino/ . Les appareils Teensy 3.x, 4.x et LC sont utilisés pour les tests sous Arduino et cette bibliothèque doit être compatible avec d'autres appareils Arduino.
CMake est utilisé pour créer cette bibliothèque, qui est exportée en tant que cible de bibliothèque appelée invensense_imu .
Pour le MPU-6500, cette bibliothèque est ajoutée comme :
# include " mpu6500.h "
Pour le MPU-9250, cette bibliothèque est ajoutée comme :
# include " mpu9250.h "
La bibliothèque peut également être compilée de manière autonome en utilisant l'idiome CMake de création d'un répertoire de construction , puis, à partir de ce répertoire, en émettant :
cmake .. -DMCU=MK66FX1M0
make
Cela construira la bibliothèque et les exemples d'exécutables appelés i2c_example , spi_example , drdy_spi_example et wom_example (MPU-9250 uniquement). Les exemples de fichiers sources exécutables se trouvent dans examples/cmake . Notez que la commande cmake inclut une définition spécifiant le microcontrôleur pour lequel le code est compilé. Ceci est nécessaire pour configurer correctement le code, la fréquence du processeur et les options de compilation/éditeur de liens. Les MCU disponibles sont :
Ceux-ci sont connus pour fonctionner avec les mêmes packages que ceux utilisés dans les produits Teensy. Il est également connu que le changement de package fonctionne bien, à condition qu'il ne s'agisse que d'un changement de package.
Les exemples de cibles créent des exécutables pour communiquer avec le capteur à l'aide de la communication I2C ou SPI, en utilisant l'interruption de données prêtes et en utilisant l'interruption de réveil lors du mouvement, respectivement. Chaque cible possède également un _hex , pour créer le fichier hexadécimal à télécharger sur le microcontrôleur, et un _upload pour utiliser le Teensy CLI Uploader pour flasher le Teensy. Veuillez noter que les instructions pour configurer votre environnement de build peuvent être trouvées dans notre référentiel d'outils de build.
Cette bibliothèque se trouve dans l'espace de noms bfs .
Cette classe fournit des méthodes de lecture et d'écriture dans les registres de ces capteurs. On s'attend à ce que cela fonctionne avec au moins les MPU-6000, MPU-6050, MPU-6500, MPU-9150 et MPU-9250 ; bien que cela puisse également fonctionner pour d’autres capteurs. La plupart des utilisateurs préféreront probablement les classes spécifiques aux capteurs ci-dessous ; cependant, cette classe peut permettre aux utilisateurs de débloquer de plus grandes fonctionnalités et de les utiliser comme point de départ pour leurs propres pilotes de capteurs.
InvensenseImu() Constructeur par défaut, nécessite l'appel de la méthode Config pour configurer le bus I2C ou SPI et l'adresse I2C ou la broche de sélection de la puce SPI.
InvensenseImu(TwoWire *i2c, const uint8_t addr) Crée un objet InvensenseImu. Ce constructeur est utilisé pour l'interface de communication I2C. Un pointeur vers l'objet bus I2C est transmis avec l'adresse I2C du capteur.
InvensenseImu(SPIClass *bus, uint8_t cs) Crée un objet InvensenseImu. Ce constructeur est utilisé pour l'interface de communication SPI. Un pointeur vers l'objet bus SPI est transmis avec la broche de sélection de puce du capteur. Toute broche capable d'E/S numériques peut être utilisée comme broche de sélection de puce.
void Config(TwoWire *bus, const uint8_t addr) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus I2C et l'adresse I2C.
void Config(SPIClass *spi, const uint8_t cs) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus SPI et la broche de sélection de puce.
void Begin() Initialise la communication avec le capteur. Le bus de communication n'est pas initialisé au sein de cette bibliothèque et doit être initialisé séparément ; cela améliore la compatibilité avec d'autres capteurs pouvant être sur le même bus.
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_clock) Écrit les données du registre sur le capteur en fonction de l'adresse du registre et des données. La vitesse d'horloge SPI doit être spécifiée si la communication SPI est utilisée.
bool WriteRegister(const uint8_t reg, const uint8_t data) Surcharge de ce qui précède lorsque la communication I2C est utilisée.
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_clock, uint8_t * const data) Lit les données de registre du capteur en fonction de l'adresse du registre, du nombre de registres à lire, de l'horloge SPI et d'un pointeur pour stocker les données.
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) Surcharge de ce qui précède lorsque la communication I2C est utilisée.
Cette classe fonctionne avec les IMU MPU-9250 et MPU-9255.
Mpu9250() Constructeur par défaut, nécessite l'appel de la méthode Config pour configurer le bus I2C ou SPI et l'adresse I2C ou la broche de sélection de la puce SPI.
Mpu9250(i2c_t3 *bus, I2cAddr addr) Crée un objet Mpu9250. Ce constructeur est utilisé pour l'interface de communication I2C. Un pointeur vers l'objet bus I2C est transmis avec l'adresse I2C du capteur. L'adresse sera I2C_ADDR_PRIM (0x68) si la broche AD0 est mise à la terre et I2C_ADDR_SEC (0x69) si la broche AD0 est tirée vers le haut.
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Crée un objet Mpu9250. Ce constructeur est utilisé pour l'interface de communication SPI. Un pointeur vers l'objet bus SPI est transmis avec la broche de sélection de puce du capteur. Toute broche capable d'E/S numériques peut être utilisée comme broche de sélection de puce.
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus I2C et l'adresse I2C. L'adresse sera I2C_ADDR_PRIM (0x68) si la broche AD0 est mise à la terre et I2C_ADDR_SEC (0x69) si la broche AD0 est tirée vers le haut.
void Config(SPIClass *spi, const uint8_t cs) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus SPI et la broche de sélection de puce.
bool Begin() Initialise la communication avec le capteur et configure les plages de capteur par défaut, les taux d'échantillonnage et les paramètres du filtre passe-bas. La plage par défaut de l'accéléromètre est de +/- 16 g et la plage par défaut du gyroscope est de +/- 2 000 degrés/s. La fréquence d'échantillonnage par défaut est de 1 000 Hz et le filtre passe-bas est réglé sur une fréquence de coupure de 184 Hz. True est renvoyé si la communication peut être établie avec le capteur et que la configuration s'effectue avec succès, sinon false est renvoyé. Le bus de communication n'est pas initialisé au sein de cette bibliothèque et doit être initialisé séparément ; cela améliore la compatibilité avec d'autres capteurs pouvant être sur le même bus.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Active l'interruption des données prêtes. Une interruption de 50 us sera déclenchée sur la broche MPU-9250 INT lorsque les données IMU seront prêtes. Cette interruption est active haute. Cette méthode renvoie true si l'interruption est activée avec succès, sinon false est renvoyé.
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Désactive l'interruption des données prêtes. Cette méthode renvoie true si l'interruption est désactivée avec succès, sinon false est renvoyé.
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Définit la plage pleine échelle de l'accéléromètre. Les options sont :
Gamme | Valeur d'énumération |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/-4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
True est renvoyé lorsque la plage de l'accéléromètre est correctement définie, sinon false est renvoyé. La plage par défaut est de +/-16 g.
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Renvoie la plage actuelle de l'accéléromètre.
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range) Définit la plage pleine échelle du gyroscope. Les options sont :
Gamme | Valeur d'énumération |
---|---|
+/- 250 degrés/s | GYRO_RANGE_250DPS |
+/- 500 degrés/s | GYRO_RANGE_500DPS |
+/- 1000 degrés/s | GYRO_RANGE_1000DPS |
+/- 2000 degrés/s | GYRO_RANGE_2000DPS |
True est renvoyé lorsque la plage du gyroscope est correctement définie, sinon false est renvoyé. La plage par défaut est de +/-2 000 deg/s.
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Renvoie la plage gyroscopique actuelle.
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd) Définit le diviseur de fréquence d'échantillonnage du capteur. Le MPU-9250 échantillonne l'accéléromètre et le gyroscope à une fréquence, en Hz, définie par :
Un réglage srd de 0 signifie que le MPU-9250 échantillonne l'accéléromètre et le gyroscope à 1 000 Hz. Un réglage srd de 4 définirait l'échantillonnage à 200 Hz. L'interruption des données IMU prêtes est liée à la fréquence définie par le diviseur de fréquence d'échantillonnage. Le magnétomètre est échantillonné à 100 Hz pour des valeurs de diviseur de fréquence d'échantillonnage correspondant à 100 Hz ou plus. Sinon, le magnétomètre est échantillonné à 8 Hz.
True est renvoyé lors du réglage réussi du diviseur de fréquence d'échantillonnage, sinon false est renvoyé. La valeur par défaut du diviseur de fréquence d'échantillonnage est 0, ce qui donne une fréquence d'échantillonnage de 1 000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Renvoie la valeur actuelle du diviseur de fréquence d'échantillonnage.
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Définit la fréquence de coupure du filtre passe-bas numérique pour l'accéléromètre, le gyroscope et le capteur de température. Les bandes passantes disponibles sont :
Bande passante DLPF | Valeur d'énumération |
---|---|
184 Hz | DLPF_BANDWIDTH_184HZ |
92 Hz | DLPF_BANDWIDTH_92HZ |
41 Hz | DLPF_BANDWIDTH_41HZ |
20 Hz | DLPF_BANDWIDTH_20HZ |
10 Hz | DLPF_BANDWIDTH_10HZ |
5 Hz | DLPF_BANDWIDTH_5HZ |
True est renvoyé lors du réglage réussi des filtres passe-bas numériques, sinon false est renvoyé. La bande passante par défaut est de 184 Hz.
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Renvoie le paramètre actuel de bande passante du filtre passe-bas numérique.
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_t Threuil_mg, const WomRate wom_rate) Active l'interruption Wake-On-Motion. Il place le MPU-9250 dans un état de faible consommation, se réveillant à un intervalle déterminé par le WomRate . Si l'accéléromètre détecte un mouvement dépassant le seuil, seuil_mg , il génère une impulsion de 50 us à partir de la broche d'interruption du MPU-9250. Les taux WOM énumérés suivants sont pris en charge :
Taux d'échantillonnage WOM | Valeur d'énumération |
---|---|
0,24 Hz | WOM_RATE_0_24HZ |
0,49 Hz | WOM_RATE_0_49HZ |
0,98 Hz | WOM_RATE_0_98HZ |
1,95 Hz | WOM_RATE_1_95HZ |
3,91 Hz | WOM_RATE_3_91HZ |
7,81 Hz | WOM_RATE_7_81HZ |
15,63 Hz | WOM_RATE_15_63HZ |
31,25 Hz | WOM_RATE_31_25HZ |
62,50 Hz | WOM_RATE_62_50HZ |
125 Hz | WOM_RATE_125HZ |
250 Hz | WOM_RATE_250HZ |
500 Hz | WOM_RATE_500HZ |
Le seuil de mouvement est donné sous la forme d'une valeur comprise entre 4 et 1 020 mg, qui est mappée en interne sur un seul octet, valeur 1-255. Cette fonction renvoie vrai si l'activation de Wake On Motion est réussie, sinon renvoie faux. Veuillez consulter l'exemple wom_i2c . Ce qui suit est un exemple d'activation du réveil en cas de mouvement avec un seuil de 40 mg et un ODR de 31,25 Hz.
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() Réinitialise le MPU-9250.
bool Read() Lit les données du MPU-9250 et stocke les données dans l'objet Mpu9250. Renvoie vrai si les données sont lues avec succès, sinon renvoie faux.
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data() Renvoie vrai si de nouvelles données ont été renvoyées par l'accéléromètre et le gyroscope.
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data() Renvoie vrai si de nouvelles données ont été renvoyées par le magnétomètre. Pour les fréquences d'échantillonnage du MPU-9250 de 100 Hz et supérieures, le magnétomètre est échantillonné à 100 Hz. Pour les fréquences d'échantillonnage du MPU-9250 inférieures à 100 Hz, le magnétomètre est échantillonné à 8 Hz, il n'est donc pas rare de recevoir de nouvelles données IMU, mais pas de nouvelles données du magnétomètre.
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Renvoie les données de l'accéléromètre x de l'objet Mpu9250 en unités de m/s/s. Des méthodes similaires existent pour les données des axes y et 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() Renvoie les données du gyroscope x de l'objet Mpu9250 en unités de rad/s. Des méthodes similaires existent pour les données des axes y et 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() Renvoie les données du magnétomètre x de l'objet Mpu9250 en unités uT. Des méthodes similaires existent pour les données des axes y et 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() Renvoie la température de la matrice du capteur en unités de C.
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
Cette classe fonctionne avec le capteur MPU-6500.
Mpu6500() Constructeur par défaut, nécessite l'appel de la méthode Config pour configurer le bus I2C ou SPI et l'adresse I2C ou la broche de sélection de la puce SPI.
Mpu6500(i2c_t3 *bus, I2cAddr addr) Crée un objet Mpu6500. Ce constructeur est utilisé pour l'interface de communication I2C. Un pointeur vers l'objet bus I2C est transmis avec l'adresse I2C du capteur. L'adresse sera I2C_ADDR_PRIM (0x68) si la broche AD0 est mise à la terre et I2C_ADDR_SEC (0x69) si la broche AD0 est tirée vers le haut.
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Crée un objet Mpu6500. Ce constructeur est utilisé pour l'interface de communication SPI. Un pointeur vers l'objet bus SPI est transmis avec la broche de sélection de puce du capteur. Toute broche capable d'E/S numériques peut être utilisée comme broche de sélection de puce.
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus I2C et l'adresse I2C. L'adresse sera I2C_ADDR_PRIM (0x68) si la broche AD0 est mise à la terre et I2C_ADDR_SEC (0x69) si la broche AD0 est tirée vers le haut.
void Config(SPIClass *spi, const uint8_t cs) Ceci est requis lors de l'utilisation du constructeur par défaut et configure le bus SPI et la broche de sélection de puce.
bool Begin() Initialise la communication avec le capteur et configure les plages de capteur par défaut, les taux d'échantillonnage et les paramètres du filtre passe-bas. La plage par défaut de l'accéléromètre est de +/- 16 g et la plage par défaut du gyroscope est de +/- 2 000 degrés/s. La fréquence d'échantillonnage par défaut est de 1 000 Hz et le filtre passe-bas est réglé sur une fréquence de coupure de 184 Hz. True est renvoyé si la communication peut être établie avec le capteur et que la configuration s'effectue avec succès, sinon false est renvoyé. Le bus de communication n'est pas initialisé au sein de cette bibliothèque et doit être initialisé séparément ; cela améliore la compatibilité avec d'autres capteurs pouvant être sur le même bus.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Active l'interruption des données prêtes. Une interruption de 50 us sera déclenchée sur la broche MPU-9250 INT lorsque les données IMU seront prêtes. Cette interruption est active haute. Cette méthode renvoie true si l'interruption est activée avec succès, sinon false est renvoyé.
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Désactive l'interruption des données prêtes. Cette méthode renvoie true si l'interruption est désactivée avec succès, sinon false est renvoyé.
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Définit la plage pleine échelle de l'accéléromètre. Les options sont :
Gamme | Valeur d'énumération |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/-4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
True est renvoyé lorsque la plage de l'accéléromètre est correctement définie, sinon false est renvoyé. La plage par défaut est de +/-16 g.
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Renvoie la plage actuelle de l'accéléromètre.
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range) Définit la plage pleine échelle du gyroscope. Les options sont :
Gamme | Valeur d'énumération |
---|---|
+/- 250 degrés/s | GYRO_RANGE_250DPS |
+/- 500 degrés/s | GYRO_RANGE_500DPS |
+/- 1000 degrés/s | GYRO_RANGE_1000DPS |
+/- 2000 degrés/s | GYRO_RANGE_2000DPS |
True est renvoyé lorsque la plage du gyroscope est correctement définie, sinon false est renvoyé. La plage par défaut est de +/-2 000 deg/s.
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Renvoie la plage gyroscopique actuelle.
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd) Définit le diviseur de fréquence d'échantillonnage du capteur. Le MPU-9250 échantillonne l'accéléromètre et le gyroscope à une fréquence, en Hz, définie par :
Un réglage srd de 0 signifie que le MPU-9250 échantillonne l'accéléromètre et le gyroscope à 1 000 Hz. Un réglage srd de 4 définirait l'échantillonnage à 200 Hz. L'interruption des données IMU prêtes est liée à la fréquence définie par le diviseur de fréquence d'échantillonnage. Le magnétomètre est échantillonné à 100 Hz pour des valeurs de diviseur de fréquence d'échantillonnage correspondant à 100 Hz ou plus. Sinon, le magnétomètre est échantillonné à 8 Hz.
True est renvoyé lors du réglage réussi du diviseur de fréquence d'échantillonnage, sinon false est renvoyé. La valeur par défaut du diviseur de fréquence d'échantillonnage est 0, ce qui donne une fréquence d'échantillonnage de 1 000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Renvoie la valeur actuelle du diviseur de fréquence d'échantillonnage.
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Définit la fréquence de coupure du filtre passe-bas numérique pour l'accéléromètre, le gyroscope et le capteur de température. Les bandes passantes disponibles sont :
Bande passante DLPF | Valeur d'énumération |
---|---|
184 Hz | DLPF_BANDWIDTH_184HZ |
92 Hz | DLPF_BANDWIDTH_92HZ |
41 Hz | DLPF_BANDWIDTH_41HZ |
20 Hz | DLPF_BANDWIDTH_20HZ |
10 Hz | DLPF_BANDWIDTH_10HZ |
5 Hz | DLPF_BANDWIDTH_5HZ |
True est renvoyé lors du réglage réussi des filtres passe-bas numériques, sinon false est renvoyé. La bande passante par défaut est de 184 Hz.
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Renvoie le paramètre actuel de bande passante du filtre passe-bas numérique.
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() Lit les données du MPU-6500 et stocke les données dans l'objet Mpu6500. Renvoie vrai si les données sont lues avec succès, sinon renvoie faux.
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data() Renvoie vrai si de nouvelles données ont été renvoyées par l'accéléromètre et le gyroscope.
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Renvoie les données de l'accéléromètre x de l'objet Mpu6500 en unités de m/s/s. Des méthodes similaires existent pour les données des axes y et 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() Renvoie les données du gyroscope x de l'objet Mpu6500 en unités de rad/s. Des méthodes similaires existent pour les données des axes y et 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() Renvoie la température de la matrice du capteur en unités de C.
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
Cette bibliothèque transforme toutes les données en un système d'axes commun avant de les renvoyer. Ce système d’axes est illustré ci-dessous. Il s'agit d'un système de coordonnées droitier avec l'axe z positif vers le bas, courant dans la dynamique des avions.
Prudence! Ce système d'axes est représenté par rapport aux capteurs MPU-6500 et MPU-9250. Le capteur peut être tourné par rapport à la carte de dérivation.