Étape 4: Utilisez-le - étalonnage
Pourquoi avons-nous besoin de calibrer ?
Le capteur n’est pas déjà étalonné en usine ?
Voici les dix lectures consécutives (accélérations suivies des vitesses angulaires; x, y, z dans les deux cas) avec la GY521 au point mort, position verticale (axe + X vers le haut) :
- 17088 208 5-1048-1-216
- 17028 308-1320 4 3 -250
- 16988 360 3 7-1212-236
- 16876 376-1032 -13-36-218
- 16972 244-1348 -13-25-226
- 17060 316--1156 2-11-224
- 16948 328 -31-1300-224 0
- 17016 332-1124 1-1 -209
- 17088 348-1088 -6-27 -238
- 17072 284-1104 -13-24 -228
Si l’appareil était vraiment verticale, les lectures pour les accélérations doivent être (voir ci-dessous la raison): (16384, 0, 0) ; et si l’appareil était vraiment encore, les lectures pour le gyroscope devrait être: (0,0,0). Donc : les lectures auraient tous dû: [16384, 0, 0, 0, 0, 0]: quel est le problème ? Ou bien, est en fait quelque chose de mal ?
Trois choses sont passent sans doute :
- l’appareil est toujours, au moins sans mouvement perceptible, mais c’est probablement pas parfaitement vertical,
- Il y a signal bruit, et c’est probablement la cause de la fluctuation de la lecture instantanée,
- les lectures sont brutes, ne pas calibré, c’est pourquoi ils sont « déviés », en moyenne.
Alors, allons-y étape par étape.
ADC de le MPU6050
Le MPU6050 a un intégré ADC (convertisseur analogique-numérique) qui renvoie chaque canal (accélérations et vitesses angulaires, chaque à x, y, z) en 16 bits. Donc 2 ^ 16 résultats différents sont possibles: 0 à 65535, ou -32768 à 32767. Cette gamme de lectures est mappée dans la configuration standard de + - 2g en accélérations et +-250 deg/s à des vitesses angulaires. Puis 1 g correspond à 16384 LSB (moins significatives Bit, ou des unités brutes numériques de lecture), et 1 deg/s correspond à 131 LSB.
Les deux gammes peuvent être changées dans les paramètres de configuration via le logiciel à travers le code de Jeff Rowberg (voir étape précédente). Les possibilités sont :
- Gammes d’accélération: + - 2g, 4g, 8g, 16g
- Gammes de gyroscopes: +-250, 500, 1000, 2000 deg/s.
Note que, en raison de la contrainte de l’ADC de 16 bits, étendre les gammes de mesures diminue les sensibilités : la gamme de + - 4 g mappée dans une distance de lecture de (-32768, 32767) donne 8192 LSB/g.
Ainsi, les lectures brutes peuvent être convertis en « physique » avec les sensibilités connues sont :
- 1,042969 0,012695 - 0,063965 0,038168 - 0,007634 - 1,648855
- 1,039307 0,018799 - 0,030534 0,080566 0,022901 - 1,908397
- 1,036865 0,021973 - 0,053435 0,073975 0,022901 - 1,801527
- 1,030029 0,022949 - 0,062988 - 0,099237 - 0,274809 - 1,664122
- 1,035889 0,014893 - 0,082275 - 0,099237 - 0,190840 - 1,725191
- 1,041260 0,019287 - 0,070557 - 0,015267 - 0,083969 - 1,709924
- 1,034424 0,020020 - 0,079346 - 0,236641 0,000000 - 1,709924
- 1,038574 0,020264 - 0,068604 0,007634 - 0,007634 - 1,595420
- 1,042969 0,021240 - 0,066406 - 0,045802 - 0,206107 - 1,816794
- 1,041992 0,017334 - 0,067383 - 0,099237 - 0,183206 - 1,740458
- Unités: g et deg/s
Bon, mais... quel est le résultat réel ? Combien de décimales peuvent servir correctement ? J’ai choisi 6 décimales, mais pourquoi pas 10 ?
Manipulation des nombres
Ce que nous pouvons dire est que, avec un niveau de confiance de 95 % (basé sur tous les enregistrements de l’étalonnage, pas seulement les 10 ci-contre) la moyenne peut être calculée d’outils statistiques et de respect des règles de chiffres significatifs. Voir ici la feuille de calcul, dont les résultats sont :
- AX = 17002 +-5 lb <> – 1.038 +-0,000 g
- AY = 328 +-4 LBS <> – 0,020 g +-0,000
- AZ =-1170 +-6 LBS <> –-0.071 +-0,000 g
- GX = -1,9 +-0, 7 LBS <> – -0,014 +-0,005 º / s
- GY = 0,6 +-1. 1 LBS <> – 0,004 +-0,008 º / s
- GZ =-227 +-1 lb <> –-1.730 +-0,007 º / s
Clairement, il suffit de regarder les résultats : les lectures d’accélération semblent être « fiable » et Gy n’est pas. Mais même ces moyennes « statistiquement corrigées » ne sont toujours pas ce que l'on pourrait s’attendre ! L’accélération doit être de 1,000 ; et, en outre, on peut se demander pourquoi la moyenne de Gz est si élevée, si l’appareil n’était pas en mouvement.
Entrez donc, la calibration - enfin !
Étalonnage (de l’accéléromètre)
Première Remarque : étalonnage n’est pas destinée à corriger les résultats d’un capteur défectueux. Si d’après les résultats précédents, nous pensons que capteur Gz est probablement cassée ou miss-connecté, alors il n’y a probablement aucun étalonnage qui peut le fixer.
Deuxième remarque : un étalonnage compare lectures, ou des lectures avec des hypothèses. Extrapolation au-delà de ces lectures nécessite des soins.
La MPU6050 affiche une relation linéaire théorique entre les accélérations mesurées ou des vitesses angulaires et la sortie. (La fiche de spécification du produit mentionne une « non linéarité » de 0,5 % et 0,2 %, respectivement ; « axe transversal sensitivity", le montant de la modification introduite dans un axe par l’application d’accélération ou vitesse angulaire sur un autre axe, est de 2 %).
Alors, il pourrait être possible d’appliquer des corrections pour les équations de conversion. Dans le cas précédent, pour les accélérations, la correction de l’erreur de gain conduit à :
- AX(g) = (Ax(LBS)) / (16384 + 618)
Déviations offset peuvent être également corrigées :
- Ay(g) = (Ay(LBS) - 328) /(16384-328)
- AZ(g) = (Az(LBS) +1170)/(16384+1170)
Cette procédure de compensation pourrait être correct IF nous sommes sûrs que l’accéléromètre était vraiment verticale (+ X vers le haut) lorsque les mesures d’étalonnage ont été prises - dans le cas contraire, il n’est pas correct. C’est peut-être que l’erreur ainsi introduite est petit, mais il n’est cependant pas correct. Et, malheureusement, il est difficile pour vous assurer de l’exactitude de la verticalité avec lequel le MPU6050 est placé au cours de l’étalonnage.
Une procédure d’étalonnage alternative (le "critère de six positions") serait de lire six fois l’accélération entraîne, avec l’appareil photo. Sur chacune de ces instances, la sonde devait être activée pour que chaque fois un autre axe est sur la "verticale" (+-x/y/z). Les lectures sur chaque poste pour tous les axes fournit suffisamment d’informations pour un étalonnage détaillé.
Une description simple de cette procédure peut être trouvée ici; info plus précise ici; plus grave ici.
Quelle que soit la position du capteur, s’il ne bouge pas, alors la norme ou le module de l’accélération vecteur devrait être 1 g (ou selon ce qui est l’accélération de la pesanteur dans votre emplacement). Cela permet également à des fins d’étalonnage dans n’importe quelle position du capteur.
Étalonnage (de l’accéléromètre) autrement qu’avec G
Deux tests simples de réglage supplémentaire semblent possibles, même si je n’ai pas développé leur :
- Chute libre : un accéléromètre en chute libre devrait lire (0,0,0), quel que soit son orientation spatiale. Il sera probablement difficile de recueillir suffisamment de données avant d’appliquer un pare-étincelles (de mon 7ème étage il faudra le testeur à peine plus de 2 secondes pour atteindre la rue).
- Pendule : Un pendule sur dont bob est le GY521 permettant de mesurer les accélérations et vitesses angulaires qui sont relativement faciles à calculer.
Étalonnage (du Gyroscope)
La procédure standard utilisée pour le calibrage de l’accéléromètre peut être utilisée pour le contrôle de décalage du gyroscope, mais il ne fournit aucune idée sur l’erreur de gain. Si l’erreur de gain doit être vérifié, je suppose qu’un pendule calibré peut être obligatoire.
Combien de temps pour l’échauffement ? Et pour l’étalonnage ?
Un graphique est attaché montrant les lectures enregistrées aussi rapidement que possible après la mise sous tension de l’Arduino. Aucune période d’échauffement n’est apparent - ou, s’il y en a, semble-t-il, c’est très court et sans effet pratique pour mes besoins.
La question de combien de temps est requise pour la lecture des données d’étalonnage peut être converti en un problème statistique : combien d’échantillons est nécessaires dans une population générale d’évaluer avec précision la moyenne ? La réponse est : autant que nécessaire pour obtenir des résultats stables. Il y a des expressions explicites pour le nombre d’échantillons, mais, en général, et lorsque c’est possible, il est préférable de faire autant d’hypothèses sur la population que possible. Un tableau ci-joint montre l’évolution de l’estimation de la hache avec la taille de l’échantillonnage. Après 10-15 secondes de lectures, les résultats sont assez stables, et ma recommandation serait de lire pour 20-25 s à une fréquence d’au moins 25 Hz.