Module PMOD IMU 9 axes + Baromètre

Module PMOD IMU 9 axes + Baromètre

Les "Pmod™" sont des petits modules électroniques spécialement conçus pour l'évaluation et le prototypage. Ces derniers sont tout indiqués pour pouvoir ajouter des possibilités d'extensions aux platines Diglent (ou à tout autre microcontrôleur). 
 
 

Ce modèle intègre capteur IMU 9 axes de type LSM9DS1 (accéléromètre 3 axes, gyroscope 3 axes, magnétomètre 3 axes associé) à un baromètre numérique LPS25HB pilotables via un bus SPI.  


Fonction du module  Interface du module  Connectique du module

 
 
Doté d'un connecteur mâle 1 x 6 broches, ce module pourra être déporté via des cordons optionnels (voir modèles proposés dans la colonne de droite).

 

Exemple d'application avec un arduino™
  
/************************************************************************
*                                                                                                                                        
*    Test du module Pmod IMU 9 axes + Baromètre  (basé sur le programme de Jim Lindblom)                                        
*                                                                    
*************************************************************************
* Description:  Pmod_NAV                                              
* Toutes les données (accéléromètre, gyroscope, magnétomètre)  sont affichées 
* dans le moniteur série
*  
* Matériel
*        1. Arduino Uno                                       
*        2. Module Pmod NAV (télécharger la bibliothèque 
*        https://github.com/sparkfun/SparkFun_LSM9DS1_Arduino_Library)
*        Licence Beerware
*
* Câblage           
*        Module<----------> Arduino
*        J1 broche 6        3.3V
*        J1 broche 5        GND
*        J1 broche 4        A5
*        J1 broche 2        A4

*                   
*        Schéma publié sous licence CC Attribution-ShareALike (réalisé avec Fritzing)
*        Code source téléchargeable ici
************************************************************************/
// Appel des bibliothèques
#include <Wire.h>
#include <SparkFunLSM9DS1.h>
 
// Déclaration des adresses du module
#define LSM9DS1_M  0x1E 
#define LSM9DS1_AG  0x6B 
 
LSM9DS1 imu;                                                   // création de l'objet imu
 
// Configuration du module
#define PRINT_CALCULATED
#define PRINT_SPEED 250 
static unsigned long lastPrint = 0; 
 
// Le champ magnétique terrestre varie en fonction de sa localisation.
// Il faut ajouter ou soustraire une constante pour obtenir la bonne valeur
// du champ magnétique à l'aide du site suivant
// http://www.ngdc.noaa.gov/geomag-web/#declination
#define DECLINATION -0.33                         // déclinaison (en degrés) pour Paris.
 
void setup(void) 
{
   Serial.begin(115200);                                // initialisation de la liaison série 
   imu.settings.device.commInterface = IMU_MODE_I2C;    // initialisation du module
   imu.settings.device.mAddress = LSM9DS1_M;
   imu.settings.device.agAddress = LSM9DS1_AG;
   if (!imu.begin())
  {
    Serial.println("Probleme de communication avec le LSM9DS1.");
    while (1);
  }
}
 
void loop() 
{
  
  if ( imu.gyroAvailable() )
  {
    imu.readGyro();             // acquisition des données du gyroscope
  }
  if ( imu.accelAvailable() )
  {
    imu.readAccel();           // acquisition des données de l'accéléromètre
  }
  if ( imu.magAvailable() )
  {
    imu.readMag();             // acquisition du magnétomètre
  }
  
  if ((lastPrint + PRINT_SPEED) < millis())
  {
    printGyro();  // Print "G: gx, gy, gz"
    printAccel(); // Print "A: ax, ay, az"
    printMag();   // Print "M: mx, my, mz"
    printAttitude(imu.ax, imu.ay, imu.az,-imu.my, -imu.mx, imu.mz);
    Serial.println();
    
    lastPrint = millis(); 
  }
}
 
void printGyro()
{
  Serial.print("G: ");
#ifdef PRINT_CALCULATED
  Serial.print(imu.calcGyro(imu.gx), 2);
  Serial.print(", ");
  Serial.print(imu.calcGyro(imu.gy), 2);
  Serial.print(", ");
  Serial.print(imu.calcGyro(imu.gz), 2);
  Serial.println(" deg/s");
#elif defined PRINT_RAW
  Serial.print(imu.gx);
  Serial.print(", ");
  Serial.print(imu.gy);
  Serial.print(", ");
  Serial.println(imu.gz);
#endif
}
 
void printAccel()
{  
  Serial.print("A: ");
#ifdef PRINT_CALCULATED
  Serial.print(imu.calcAccel(imu.ax), 2);
  Serial.print(", ");
  Serial.print(imu.calcAccel(imu.ay), 2);
  Serial.print(", ");
  Serial.print(imu.calcAccel(imu.az), 2);
  Serial.println(" g");
#elif defined PRINT_RAW 
  Serial.print(imu.ax);
  Serial.print(", ");
  Serial.print(imu.ay);
  Serial.print(", ");
  Serial.println(imu.az);
#endif
 
}
 
void printMag()
{  
  Serial.print("M: ");
#ifdef PRINT_CALCULATED
  Serial.print(imu.calcMag(imu.mx), 2);
  Serial.print(", ");
  Serial.print(imu.calcMag(imu.my), 2);
  Serial.print(", ");
  Serial.print(imu.calcMag(imu.mz), 2);
  Serial.println(" gauss");
#elif defined PRINT_RAW
  Serial.print(imu.mx);
  Serial.print(", ");
  Serial.print(imu.my);
  Serial.print(", ");
  Serial.println(imu.mz);
#endif
}
 
void printAttitude(float ax, float ay, float az, float mx, float my, float mz)
{
  float roll = atan2(ay, az);
  float pitch = atan2(-ax, sqrt(ay * ay + az * az));
  float heading;
  if (my == 0)
    heading = (mx < 0) ? PI : 0;
  else
    heading = atan2(mx, my);
   heading -= DECLINATION * PI / 180;
   if (heading > PI) heading -= (2 * PI);
   else if (heading < -PI) heading += (2 * PI);
   else if (heading < 0) heading += 2 * PI;
   heading *= 180.0 / PI;
   pitch *= 180.0 / PI;
   roll  *= 180.0 / PI;
  Serial.print("Pitch, Roll: ");
  Serial.print(pitch, 2);
  Serial.print(", ");
  Serial.println(roll, 2);
  Serial.print("Heading: "); Serial.println(heading, 2);
}



Présentation des modules Pmod™

 
  
Présentation des Pmod



Bien que pouvant être utilisés avec n'importe quel type de microcontrôleur, les modules Pmod™ sont également spécialement conçus pour pouvoir être utilisés sur la plupart des plate-formes Digilent.



Câbles optionnels pour Pmods


Tous les modules Pmod™ sont livrés dans un sachet anti-statique. 

 

Présentation vidéo
 
A noter également que les modules Pmod™ disposent d'une rubrique mensuelle de présentation vidéo 
que nous vous invitons à consulter.
 
   

Avec quel type de platine puis-je utiliser les modules "Pmod™" ?
  
Compatibilité Pmod™

Les modules Pmod™ ont été créés pour pour être utilisés avec les bases DIGILENT telles que:
(certains modules peuvent ne pas être compatibles avec toutes les bases - consultez leur doc pour plus d'infos)
  
BASYS2, NEXYS2, NEXYS3, NEXYS4
CoolRunner™-II Board
Module Cmod S6
Base ANVYL™
Platine Zybo
- Platine GENESYS, Platine 
NetFPGA-1G-CML
- Platines et modules: ChipKIT Cmod, MX3CK, MX4CK, MX7CK
- Platine 
I/O EXPLORER
- Platine CEREBOT MC7
- Les bases robotiques: ROBSRK1, ROBSRK2, ROBMRK1, ROBMRK2

Mais aussi de part leur connectique standardisée au pas de 2.54 mm avec n'importe quelle autre platine electronique ! 
Réf.
PMODNAV
Tarif (prix unitaire)
31.01 € HT37.21 € TTC
» dont 0.01 € TTC d'éco-part. DEEE
QT :
Disponibilité  Disponibilité : + d'informations
Autres produits similaires
Module "9DOF click"
Module accéléromètre/gyroscope 6 axes
Module AHRS subminiature 9 axes
Tous les articles de la rubrique "Centrales IMU / AHRS"