Comment construire un Accéléromètre CAMPOLABO

 

Nous utiliserons ici une carte arduino nano ou équivalente, et un accéléromètre MPU6050.

Le plan de montage est le suivant:

Certaines bibliothèques Arduino seront nécessaires pour programmer ce capteur. Vous pouvez télécharger le programme arduino ici.

    //====== MPU-6050  ===========================================
    // Demo mesure des valeurs brutes Acceleration - Gyro
    // tiptopboards.com
    // Modifié 30 08 2013
    //
    //=============================================================
    // Source :  10/7/2011 by Jeff Rowberg <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
    //  https://github.com/jrowberg/i2cdevlib
    //=============================================================
    // modification Jeremy CAMPONOVO 05/08/2017
    
    #include "Wire.h"  //Bibliothèque à installer
    #include "I2Cdev.h"  //bibliotheque à installer
    #include "MPU6050.h" //Fourni avec le code arduino
    MPU6050 accelgyro;

    int16_t ax, ay, az;  //mesures brutes
    
    unsigned long time3;
    unsigned long time2=0;

    int incomingByte = 0;
    boolean value = false;


    void setup() {
        Wire.begin();  //I2C bus
        Serial.begin(115200);

        // initialize device
        accelgyro.initialize();
        accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2); //le 2 est pour +-2g, on peut le remplacer par 4, 8 ou 16
         }

    void loop() {
         while (value==false){
   Serial.println(4);
     delay(50);

    //Serial.println(2);
    while (Serial.available()>=1){
      incomingByte = Serial.read();
   if (incomingByte!=-1){
         

    //delay(100)
    value = true;
    time2=micros();

    
   }
  }
  }
   //frequence de mesure
  //ici f = 1000000/4000 = 250 Hz => on peut changer le 4000 par
  //1000 => 1 kHz maxi
  //2000 => 500 Hz
  //4000 => 250 Hz
  //10000 => 100 Hz
  //20000 => 50 Hz
   
        if ((micros()-time2)>4000){
          time2 = micros();
        accelgyro.getAcceleration(&ax, &ay, &az);
        //accelgyro.getRotation(&gx, &gy, &gz);
        
        Serial.print(time2); Serial.print(";");
        Serial.print(9.81*ax/16384); Serial.print(";");
        Serial.print(9.81*ay/16834); Serial.print(";");
        Serial.println(9.81*az/16384);
        }
        
   
    }