Table des matières:

Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'un Arduino : 5 étapes
Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'un Arduino : 5 étapes

Vidéo: Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'un Arduino : 5 étapes

Vidéo: Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'un Arduino : 5 étapes
Vidéo: Anatomie d'un accéléromètre numérique 2024, Juillet
Anonim
Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'Arduino
Mesure d'angle à l'aide d'un gyroscope, d'un accéléromètre et d'Arduino

L'appareil est un prototype approximatif de ce qui deviendra éventuellement un robot auto-équilibré, c'est la deuxième partie du trou (lire l'accéléromètre et contrôler un moteur pour s'auto-équilibrer). La première partie avec uniquement le gyroscope se trouve ici. Sur cette instructable, nous mesurerons l'angle à l'aide du gyroscope et de l'accéléromètre, et en utilisant une technique pour fusionner les deux capteurs pour obtenir un signal fluide. La technique est appelée "filtre complémentaire".

Étape 1: Ce dont nous aurons besoin:

Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin
Ce dont nous aurons besoin

Certaines pièces peuvent être remplacées et certaines modifications du code doivent être apportées pour s'adapter à votre matériel. Sur ce projet, nous utiliserons: (pour l'accéléromètre) - Adaptateur Nunchuck Wii pour Arduino

Étape 2: Construire…

Imeuble…
Imeuble…
Imeuble…
Imeuble…
Imeuble…
Imeuble…

Le circuit se compose d'un gyroscope connecté directement au port 0 de votre arduino et d'un nunchuck wii connecté au port I2C. Assemblage du gyroscope:1. - branchez le gyroscope à la planche à pain2. - câbler tout:- broche Vo du gyroscope connectée au port analogique 0 à l'arduino (fil orange clair)- broche G du gyroscope connectée à la terre (fil blanc)- broche V+ du gyroscope connectée à Vdd (3,3 V) (fil orange) Assemblage l'accéléromètre:1. - branchez l'adaptateur sur le nunchuck2. - branchez le nunchuck sur l'arduino à l'aide de l'adaptateur3. - placez le capteur d'accélération comme sur la photo ci-dessus

Étape 3: Quelques informations supplémentaires avant de continuer

Quelques informations supplémentaires avant de continuer
Quelques informations supplémentaires avant de continuer
Quelques informations supplémentaires avant de continuer
Quelques informations supplémentaires avant de continuer
Quelques informations supplémentaires avant de continuer
Quelques informations supplémentaires avant de continuer

A partir des deux capteurs, nous pouvons mesurer l'angle mais en utilisant deux techniques distinctes. Pour mesurer l'angle à l'aide du gyroscope, nous devons intégrer le signal. Mais pourquoi devons-nous faire cela ? Parce que le gyroscope nous donne le taux angulaire, donc un moyen simple d'obtenir l'angle est de multiplier le taux angulaire par le temps [angle = angle + w * dt] Pour mesurer l'angle à l'aide d'un accéléromètre, nous devons détecter la gravité dans chaque l'axe de l'accéléromètre, ce que cela signifie, la projection de l'accélération de la pesanteur sur chaque direction du capteur nous donne une idée sur l'angle. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Alors pourquoi allons-nous utiliser deux capteurs au lieu d'un ? Pour profiter des deux propriétés du capteur. Si vous regardez le graphique, les données du gyroscope augmentent continuellement, c'est ce qu'on appelle la dérive et les données de l'accéléromètre changent beaucoup en un rien de temps. Et comment fusionner les deux signaux ? Nous utiliserons une technique appelée filtre complémentaire. Je ne connais pas la théorie exacte derrière cela, mais cela fonctionne très bien. Il y a des informations sur Internet, il suffit de les rechercher sur Google si vous avez besoin de plus d'informations. Ce lien contient beaucoup d'informations et peut être utile.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); où HPF + LPF = 1Les valeurs de HPF et LPF se trouvent sur ce lien, sur le fichier filter.pdf. Merci les gars de "The DIY Segway". Juste à des fins de test, nous allons définir ces valeurs comme ceci, HPF = 0,98 et LPF = 0,02.

Étape 4: Coder:

Le code est une adaptation d'un code que j'ai utilisé sur un autre projet. Il y a probablement des variables inutilisées. J'ai utilisé une bibliothèque pour lire les données nunchuck à partir de https://todbot.com/blog/. Merci Tod E. Kurt. Les commentaires sur le code sont en portugais, dès que j'ai du temps libre, je le traduis. filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$Vous pouvez donc enregistrer ces valeurs sur un terminal série et tracer un graphique ou utiliser l'angle pour d'autres choses. Si vous avez besoin d'explications sur le code, n'hésitez pas à demander. Le code est zippé. Décompressez-le, ouvrez-le et téléchargez-le sur votre arduino.

Étape 5: Test et conclusion

Test et conclusion
Test et conclusion
Test et conclusion
Test et conclusion

Pour tester le système, j'ai enregistré les données à l'aide d'un programme appelé Termite, puis j'ai importé ces données sur Excel et j'ai tracé le graphique pour voir la qualité de mon filtre. Les résultats sont étonnants. Bien sûr, vous pouvez utiliser le signal pour conduire un moteur ou d'autres choses. Tout commentaire, tout doute, toute information manquante, dites-le-moi et je le corrige. S'il vous plaît, si vous aimez cela, évaluez. Merci à tous.

Conseillé: