Mesure de la vitesse de rotation de la terre avec un gyromètre BOSCH BNO055

Auteur avatarOccitan | Dernière modification 31/12/2023 par Occitan

Mesurer la vitesse de rotation de la terre sur elle-même avec un gyromètre, comme ceux qui se trouvent dans les manettes de jeux est un vrai petit défi. Ces gyromètres en effet, sont faits pour mesurer des vitesses de rotation imprimées aux manettes de jeux par des joueurs très réactifs… vitesses qui sont bien supérieures à la vitesse de rotation de notre vieille terre de 360° en 24H, soit 0.00417 °/s  !

Introduction

D’abord, rendons à Cesar ce qui est à Cesar !  L’idée de cette mesure vient d’un site internet qui publie des ressources pédagogiques dans le domaine de la science et de la technologie (www.pabr.org). La description de l’expérience initiale vaut le détour !  Cette expérience en effet part d’une manette de jeux posée sur un plateau de tourne-disques … (http://www.pabr.org/copernitron/copernitron.fr.html).


De plus l’article rappelle les différentes tentatives de mesures qui se sont déroulées principalement au XIXème siècle et dont le point d’orgue a été la célèbre expérience de Foucault avec son célèbre pendule ( https://fr.wikipedia.org/wiki/Pendule_de_Foucault ). On en retient que mettre en évidence directement la rotation de la terre par une mesure inertielle, n'est pas chose facile.


À la suite de cette intéressante lecture j’ai eu envie d’expérimenter à mon tour en partant d’un circuit élémentaire de mesure inertielle BNO055 et d’un banc de test de ma fabrication, afin de pouvoir tester plusieurs principes de mesure.

Matériaux

Outils

Étape 1 - Le défi

La vitesse de rotation de la terre sur elle-même est de 360 / 24 / 3600 = 0.00417 °/s.


Pour faire cette mesure, on va utiliser le circuit intégré BNO055 de Bosch qui est un capteur inertiel réalisé en Technologie MEMS (Micro Electro-Mechanical System). Dans la partie gyromètre qui nous intéresse ici, une masse d’épreuve est mise en vibration et réagit aux rotations grâce à la force de Coriolis, comme le pendule de Foucault. En quelque sorte c’est un pendule de Foucault dans un circuit intégré…. Mais les dimensions ont été fantastiquement réduites, comme on peut le voir sur la figure 1....


Le défi réside dans l'utilisation de ce type de circuit à bas coût conçu pour les manettes de jeux. La plage de mesure la plus sensible est en effet de +/- 125 °/s, codée sur 16 bits (figure 2).


Dans ces conditions le pas de quantification est de 250 / 2^16 = 0.0038 °/s, très proche de la vitesse de rotation que l'on cherche à mesurer....


Heureusement il y a du bruit ! C'est ce qui va nous permettre de sortir du pas de quantification ...... sinon ce serait sans espoir de pouvoir faire une mesure de la rotation terrestre avec un minimum de précision !

La figure 3 montre un enregistrement du bruit qui oscille sur près de 70 pas de quantification (LSB) en crête à crête, soit plus de 60 fois la valeur de la rotation terrestre ! On sent bien que la stratégie va être de moyenner de nombreuses mesures.... tout en évitant les dérives long terme et les biais...



Étape 2 - Principes des mesures de rotation de la terre

Le BNO055 en Occitanie....

Les 4 premières figures indiquent l'orientation du circuit lorsque l'expérience se déroule dans un coin d'Occitanie où la latitude est très proche de 45° Nord.


Mesures par différence entre deux positions

On ne peut pas mesurer directement des valeurs de la projection de Omega _terre car la réponse du capteur comporte toujours un offset inconnu. Par contre en faisant la différence entre deux mesures à deux positions différentes, on s'affranchit de cet offset. Par exemple la différence entre la position Z // Omega et Z antiparallèle à Omega nous donne deux fois la vitesse de rotation de la terre tout en annulant l'offset. De même la différence entre deux positions perpendiculaires à l'axe de rotation terre doit être égale à zéro.


Mesures par modulation sinusoïdale et analyse spectrale

Si maintenant au lieu de se contenter de deux positions, on prélève une dizaine d'échantillons par tour, on va réaliser une modulation sinusoïdale de la valeur à mesurer. On obtiendra typiquement la sinusoïde de la figure 5.

Cette modulation ne sera pas visible car elle sera largement noyée dans le bruit. Heureusement la technique d'analyse spectrale par transformée de Fourier permettra de retrouver son amplitude (valeur de omega_terre) et même sa phase (position en latitude), comme nous le verrons plus bas.


Simulation des séquences d'acquisition

La dernière animation illustre la séquence de mesures par différence et par modulation sinusoïdale. Noter que chaque fois le changement entre deux positions stables se fait rapidement afin de ne pas perdre de temps.


Toutes les mesures se font en statique

En effet toutes les acquisitions utiles se font uniquement sur les positions stables. La rotation du BNO055 autour de son axe Y avec une vitesse angulaire bien plus importante que celle de la terre "polluerait" notre mesure de façon importante à cause de couplages entre les axes. Par exemple celui généré par le non parallélisme entre l'axe Y et l'axe de rotation. En prenant les mesures pendant les périodes stables élimine totalement ce problème. La seule rotation qui existe alors est celle de la terre.


Étape 3 - Le banc de mesure

Constitution

Le banc de mesures est constitué par une planchette support qui tourne autour d’un axe horizontal, mu par un moteur pas à pas. Sur la planchette support se trouve une carte Arduino UNO avec un shield carte SD pour stocker les mesures de vitesse de rotation. A côté on a fixé le petit circuit supportant le gyromètre BNO055. Une pile pour l’alimentation et un interrupteur complètent le montage. Le moteur pas à pas est contrôlé par une autre carte Arduino UNO et un shield moteurs.


On peut trouver facilement tous ces composants, par exemple ici :

Shield SD : https://www.gotronic.fr/art-shield-carte-sd-v4-103030005-21518.htm

Moteur pas à pas : https://www.gotronic.fr/art-moteur-14hm11-0404s-23048.htm

Shield moteurs : https://www.gotronic.fr/art-commande-i2c-de-2-moteurs-cc-grove-108020103-29016.htm

Module Boussole BNO055 : https://www.gotronic.fr/art-module-boussole-bno055-27795.htm


Utilisation

Avec ce banc il est très facile de reproduire les séquences de mesure décrites au paragraphe précédent. Comme les rotations en effet se font autour de l'axe Y du BNO055, il suffit d'orienter le plan de rotation des vecteurs Z et X dans la direction Nord-Sud. Cette orientation étant faite, on déclenche l'enregistrement continu sur la carte des vitesses de rotation sur les 3 axes. Enfin on lance le programme de commande du moteur pas à pas pour balayer soit deux positions (mesure par différence de deux positions), soit pour échantillonner un certain nombre de positions par tour pendant plusieurs tours (analyse spectrale).




Étape 4 - Configuration et acquisition des mesures avec le BNO055

Tout d'abord le circuit BNO055 peut être exploité avec une interface I2C, après avoir fermé le pontet de sélection LK1 (http://www.robot-electronics.co.uk/files/BNO055-schematic.pdf).


De façon pratique, pour configurer et acquérir les mesures à partir d'une carte Arduino UNO, on a besoin d'un exemple type et de la notice du BNO055.


Cette notice peut être téléchargée ici:

https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bno055-ds000.pdf


D'autre part, le vendeur du circuit m'a fourni un exemple de programme pour acquérir les angles d'Euler:

https://wikifab.org/images/7/76/Mesure_de_la_vitesse_de_rotation_de_la_terre_avec_un_gyrom_tre_BOSCH_BNO055_BNO055.ino


A l'aide de la notice Bosch et d'un minimum de concentration on peut configurer le circuit pour acquérir les vitesses de rotation autour des 3 axes, sur la plage de mesure la plus sensible +/- 125 °/s et avec la bande passante la plus réduite de 12 Hz:

https://wikifab.org/images/0/09/Mesure_de_la_vitesse_de_rotation_de_la_terre_avec_un_gyrom_tre_BOSCH_BNO055_Enregistrement_Gyro.ino

Ce dernier fichier INO est documenté et renvoie aux pages utiles de la notice BOSCH pour les explications. Noter que ce programme permet d'enregistrer soit les angles d'Euler (clé = 0), soit les vitesses angulaires (clé = 1).



Je ne détaille pas plus mais je peux fournir des explications si besoin.

Étape 5 - Mise au point des conditions de mesure

Choix de l'axe


Mesure statique requise


Durée d'intégration par échantillon


Étape 6 - Résultats des mesures par différences

Étape 7 - Résultats des mesures par modulation

Étape 8 - Conclusion et prolongements

Commentaires

Draft