Erreur de mesure MPU6050

Bonjour à vous,

J’ai un petit souci sur mon relevé de valeurs avec le MPU6050. En effet, lorsque je calibre le gyroscope à une position de 0° et lorsque j’effectue une rotation autour de l’axe x par exemple de 90° le gyro ne va pas va jusqu’a 90° mais 40° je n’arrive pas à comprendre pourquoi j’ai cette mesure.

Voici mon programme :

void loop() {
    // Si la programmation échoue ne pas tenter d'essayer quelque chose
    if (!dmpReady) {
        return;
    }

    // En attente de l'interruption du MPU ou de l'extraction des données
    while (!mpuInterrupt && fifoCount < packetSize) {
        // ne rien faire
    }

   // réinitialisé l'interruption et obtenir INT_STATUS bits
    mpuInterrupt = false;
    mpuIntStatus = mpu.getIntStatus();

    // Obtention du FIFO count actuel
    fifoCount = mpu.getFIFOCount();

    // Véréfication pour l'overflow (ça ne devrait pas arriver à moins que notre code ne soit pas assez efficace)
    if ((mpuIntStatus & 0x10) || fifoCount == 1024) {
        // reinitialisation alors on pourra continuer de faire des relevés
        mpu.resetFIFO();
        Serial.println(F("FIFO overflow!"));

        //Sinon, vérifier que l'interruption de la donnée du DMP est prête (ça arrive souvent)
    } else if (mpuIntStatus & 0x02) {
        // Attente d'une longueur de donnée correcte, il devrait y avoir une attente courte
        while (fifoCount < packetSize) {
            fifoCount = mpu.getFIFOCount();
        }

        // Lire les paquets de FIFO
        mpu.getFIFOBytes(fifoBuffer, packetSize);
        
        // Suivre le FIFO count içi il est > 1 paquet est disponible
        // (ça nous laisse immédiatement lire sans attendre d'interruption)
        fifoCount -= packetSize;

        // Convertion des anglais Eulériens en degrées
        mpu.dmpGetQuaternion(&q, fifoBuffer);
        mpu.dmpGetGravity(&gravity, &q);
        mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

        // Afficher la valeur des angles en degrées

  
      
      if (ypr[YAW] * (180 / M_PI)>1  || ypr[YAW] * (180 / M_PI)<-1){      
        Serial.print(ypr[YAW] * (180 / M_PI));
        Serial.print("\t");
        Serial.print(ypr[PITCH] * (180 / M_PI));
        Serial.print("\t");
        Serial.println(ypr[ROLL] * (180 / M_PI));
      }
     
      else{
        
        }

merci à vous !