Ce module Gyroscope 1 axe compatible Grove permet une meilleure vitesse par rapport aux gyroscopes 3 axes.
Le module détecte une rotation de l’axe avec un signal analogique. Le filtre passe-haut et le circuit de filtre passe-bas sont appliquées pour réduire la dérive de la température et de supprimer le bruit de sortie. Avant la mesure de la vitesse angulaire, une valeur de référence (la sortie du capteur angulaire à Volocity = 0) est nécessaire. Cette valeur est 1.35V par défaut. Mais afin d’obtenir des valeurs de référence plus précise, avant la mesure, un étalonnage est nécessaire. Dans cet étalonnage, la tension de sortie lorsque Volocity angulaire = 0 a été échantillonné 200 fois, ensuite la moyenne de ces données seront traitées comme la valeur de référence.
Caractéristiques:
Interface: compatible Grove.
Tension de sortie (capteur à l’arrêt): 1,35 Vcc
Variation: 0,67 mV/deg/sec
Dimensions: 24 x 24 x 15 mm
Connectique non compatible avec Tinker Kit
Référence fabricant: SEN05091P
Source technique : Seeed wiki
Un gyroscope est un appareil qui exploite le principe de la conservation du moment angulaire en physique . Cette loi fondamentale de la mécanique veut qu’en l’absence de couple appliqué à un solide en rotation, celui-ci conserve son axe de rotation invariable. Lorsqu’un couple est appliqué à l’appareil, il provoque une précession* ou une nutation* du solide en rotation. Dans les capteurs : un gyroscope est un capteur de position angulaire et un gyromètre un capteur de vitesse angulaire. Le gyroscope donne la position angulaire (selon un, deux ou les trois axes) de son référentiel par rapport à un référentiel inertiel (ou galiléen).
*Nutation : est un balancement périodique de l’axe de rotation de la Terre autour de sa position moyenne, qui s’ajoute à la précession.
*Précession est le nom donné au changement graduel d’orientation de l’axe de rotation d’un objet ou, de façon plus générale, d’un vecteur sous l’action de l’environnement, par exemple, quand un couple lui est appliqué. Ce phénomène est aisément observable avec une toupie mais tous les objets en rotation peuvent subir la précession. Lors de la précession, l’angle que fait l’axe de rotation ou le vecteur avec une direction donnée reste fixé. Le vecteur ou l’axe de rotation décrit ainsi au cours du temps un cône dont l’axe est la direction fixée. Ce cône est parcouru à une vitesse angulaire constante qui est déterminée par les données du problème. Le sens dans lequel se produit la précession dépend du problème considéré.
Exemple de programme Arduino commmenté par Redohm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//Sélectionnez la broche d'entrée pour le capteur //Comme pour tout programme en C .il est possible de définir des //variables. Pour cela il faut définir le nom et éventuellement //la valeur int sensorPin = A0; float reference_Value=0; int sensorValue = 0; // Variable pour stockerl a valeurprovenant du capteur // Un programme Arduino doit impérativement contenir cette fonction .Elle ne sera //exécuter une seule fois au démarrage du microcontroleur.Elle sert à configurer // globalementles entrées sorties etc… ( void setup ) void setup() { int i; float sum=0; pinMode(sensorPin, INPUT); Serial.begin(9600);// Envoie et reçoit à 9600 bauds //Pour vérifier la connexion de l’interface, nous envoyons un //message «Connexion ok» a l’interface série via la commande //Serial.println() Celle-ci est identique à la commande //Serial.print() mais envoie un retour à la ligne automatiquement Serial.println("Connection ok!"); Serial.println("Ne pas tourner avant l’étalonnage!"); Serial.println("Obtenir la valeur de référence:"); for(i=0;i<1000;i++) { // lire la valeur du capteur: sensorValue = analogRead(sensorPin); sum += sensorValue; delay(5); } reference_Value = sum/1000.0; Serial.println(reference_Value); Serial.println("Now you can begain your test!"); } // Le programme principal s’exécute par une boucle infinie appelée Loop () // Il est possible de définir d’autres fonctions void loop() { double angularVelocity; sensorValue = analogRead(sensorPin); angularVelocity =((double)(sensorValue-reference_Value)*4930.0)/1023.0/0.67; //get the angular velocity Serial.print(angularVelocity); Serial.println("deg/s"); Serial.println(" "); delay(10); } |