« Micro contrôleurs AVR/Travail pratique/Utilisation du MPU9250 » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 106 :
 
{{solution|titre=Solution : Détermination du roulis et du tangage|contenu=
<sourcesyntaxhighlight lang="c">
#include "MPU9250.h"
 
Ligne 148 :
delay(100);
}
</syntaxhighlight>
</source>
}}
 
Ligne 163 :
Nous n'avions pas, au moment de l'écriture de cette solution, le matériel correspondant. Nous avons donc réalisé un essai partiel et la solution ci-dessous mérite donc tout simplement d'être corrigée et améliorée.}}
{{Solution|titre=Solution à améliorer|contenu=
<sourcesyntaxhighlight lang="arduino">
#include "MPU9250.h"
 
Ligne 199 :
delay(100);
}
</syntaxhighlight>
</source>
}}
 
Ligne 228 :
 
{{solution|titre=Solution du calcul des angles par intégration des données du gyroscope|contenu=
<sourcesyntaxhighlight lang="Arduino">
#include "MPU9250.h"
 
Ligne 279 :
delay(100);
}
</syntaxhighlight>
</source>
Nous avons ajouté l'affichage de la différence entre les angles accéléromètres et les angles gyroscope. Cela nous a permi d'ailleurs de changer les signes de l'intégration par rapport à la correction trouvé dans le document de la LESSON 8.
}}
Ligne 298 :
 
{{solution|titre=Solution du filtrage passe-bas des données de l'accéléromètre|contenu=
<sourcesyntaxhighlight lang="Arduino">
#include "MPU9250.h"
 
Ligne 359 :
thetaFold=thetaFnew;
delay(100);
</syntaxhighlight>
</source>
}}
 
Ligne 366 :
 
{{solution|titre=Solution du filtre complémentaire pour l'accéléromètre et le gyroscope|contenu=
<sourcesyntaxhighlight lang="Arduino">
#include "MPU9250.h"
 
Ligne 427 :
delay(100);
}
</syntaxhighlight>
</source>
Les coefficients 0.95 et 0.05 peuvent être ajustés. La seule contrainte est de garder une somme égale à 1.
}}
Ligne 435 :
Nous allons utiliser à partir de maintenant une visualisation des données en utilisant un programme Processing.org donné ci-dessous.
{{Boîte déroulante|titre=Code Processing pour visualisation des données du MPU 9250|contenu=
<sourcesyntaxhighlight lang="java">
/**
* Show GY521 Data.
Ligne 660 :
}
}
</syntaxhighlight>
</source>
}}
La seule modification par rapport à l'application 6, consiste à changer la sortie par liaison série pour qu'elle soit conforme à ce qu'est capable d'interpréter le programme donné.
Ligne 668 :
 
Voici donc le code tant attendu :
<sourcesyntaxhighlight lang="Arduino">
#include "MPU9250.h"
 
Ligne 752 :
delay(100);
}
</syntaxhighlight>
</source>
Les coefficients de filtrage peuvent être ajustés.
}}
Ligne 777 :
{{Boîte déroulante|titre=Correction partielle Processing et Arduino de la première étape|contenu=
Pour que le lacet soit pris en compte dans le code Processing il vous faut changer la partie du code responsable du positionnement du filtrage de l'application 7. Il suffit de retirer le commentaire devant rotateZ :
<sourcesyntaxhighlight lang="java">
//Show combined data
pushMatrix();
Ligne 790 :
draw_rect(93, 175, 83);
popMatrix();
</syntaxhighlight>
</source>
*Pour la partie Arduino il vous faut ajouter la partie suivante dans le code Arduino :
<sourcesyntaxhighlight lang="arduino">
Xm = IMU.getMagX_uT();
Ym = IMU.getMagY_uT();
psi = atan2(Ym,Xm);
</syntaxhighlight>
</source>
avec une modification de la partie envoi de données par la liaison série :
<sourcesyntaxhighlight lang="arduino">
Serial.print(F("#FIL:")); //Filtered angle
//Serial.print(phi, 2);
Ligne 808 :
Serial.print(psi/3.141592654*180, 2);
Serial.println(F(""));
</syntaxhighlight>
</source>
où l'on a pris soin d'envoyer des angles nuls pour le roulis et le tangage.
 
Ligne 824 :
 
{{Boîte déroulante|titre=Code pour calibrage du magnétomètre|contenu=
<sourcesyntaxhighlight lang="Arduino">
#include "MPU9250.h"
 
Ligne 868 :
delay(1000);
}
</syntaxhighlight>
</source>
Nous allumons la led 13 dès que le calibrage est prêt à être réalisé (attendre quelques secondes pour voir cette led s'allumer).
Vous avez ensuite une trentaine de secondes pour faire vos figures en forme de huit dans toutes les directions. Une fois que la led 13 s'éteint la liaison série affiche les valeurs de correction trouvées.
Ligne 883 :
Ce n'est pas le tout de calibrer le magnétomètre, il faut positionner les valeurs que l'on a trouvé pour les offsets et les facteurs d'échelle de la section précédente et les utiliser pour le calcul du lacet. Voici le code Arduino correspondant.
{{Boîte déroulante|titre=Correction de la première étape avec les résultats de calibration|contenu=
<sourcesyntaxhighlight lang="arduino">
#include "MPU9250.h"
 
Ligne 982 :
delay(100);
}
</syntaxhighlight>
</source>
}}
 
Ligne 994 :
 
{{Boîte déroulante|titre=Correction de la deuxière étape avec les résultats de calibration|contenu=
<sourcesyntaxhighlight lang="arduino">
#include "MPU9250.h"
 
Ligne 1 099 :
delay(100);
}
</syntaxhighlight>
</source>
}}