Table des matières:

Robot auto-équilibrant à deux roues : 7 étapes
Robot auto-équilibrant à deux roues : 7 étapes

Vidéo: Robot auto-équilibrant à deux roues : 7 étapes

Vidéo: Robot auto-équilibrant à deux roues : 7 étapes
Vidéo: Arduino #37 construction d'un petit véhicule, voiture, l298 tuto en français. 2024, Novembre
Anonim
Robot auto-équilibré à deux roues
Robot auto-équilibré à deux roues

Cette instructable passera par le processus de conception et de construction d'un robot auto-équilibré. En guise de note, je veux juste dire que les robots à équilibrage automatique ne sont pas un nouveau concept et qu'ils ont été construits et documentés par d'autres. Je veux profiter de cette occasion pour partager avec vous mon interprétation de ce robot.

Qu'est-ce qu'un robot auto-équilibré ?

Un robot auto-équilibré est un système qui utilise des données de mesure inertielle, recueillies à partir d'un capteur embarqué, pour ajuster en continu sa position pour rester debout.

Comment ça marche?

Une analogie simple à considérer est un pendule inversé. Où le centre de masse est au-dessus du point de pivot. Cependant, dans notre cas, nous restreignons le pendule à 1 degré de liberté en ayant un axe de rotation, dans notre cas l'axe de rotation des deux roues. Étant donné que toute sorte de perturbation entraînera la chute du robot, nous avons besoin d'une méthode pour maintenir activement le robot en équilibre. C'est là que notre algorithme en boucle fermée (contrôleur PID) entre en jeu, sachant dans quelle direction tombe notre robot, nous pouvons ajuster le sens de rotation de nos moteurs pour maintenir l'équilibre du système.

Comment fonctionne l'algorithme en boucle fermée ?

Le principe de base pour garder le robot équilibré est que si le robot tombe en avant, il compensera en déplaçant le bas du robot vers l'avant pour se rattraper et donc rester vertical. De même, si le robot tombe en arrière, il compensera en déplaçant le bas du robot vers l'arrière pour se rattraper.

Donc, nous devons faire deux choses ici, d'abord, nous devons calculer l'angle d'inclinaison (Roll) que connaît le robot et, par conséquent, nous devons contrôler le sens de rotation des moteurs.

Comment allons-nous mesurer l'angle d'inclinaison?

Pour mesurer l'angle d'inclinaison, nous utiliserons une unité de mesure inertielle. Ces modules intègrent un accéléromètre et un gyroscope.

  • L'accéléromètre est un appareil électromagnétique qui mesure la bonne accélération, c'est l'accélération d'un corps dans un cadre de repos instantané.
  • Un gyroscope est un appareil électromécanique qui mesure la vitesse angulaire et est utilisé pour déterminer l'orientation de l'appareil.

Cependant, le problème avec l'utilisation de tels capteurs est que:

  • L'accéléromètre est très bruyant mais reste cohérent dans le temps, l'angle varie avec les mouvements horizontaux brusques
  • La valeur du gyroscope, en revanche, dérivera avec le temps, mais au départ, elle est assez précise

Pour cette instructable, je ne vais pas implémenter un filtre au lieu d'utiliser le Digital Motion Processing (DMP) intégré. D'autres ont utilisé un filtre complémentaire pour obtenir un signal fluide, vous pouvez choisir la méthode que vous préférez. que le robot s'équilibre avec l'une ou l'autre implémentation.

Fournitures

Les pièces:

  1. Arduino Pro Mini 3.3V 8 avec un ATMEGA328 8 Mhz
  2. Module adaptateur série FT232RL 3.3V 5.5V FTDI USB vers TTL
  3. Module GY-521 avec MPU-6050
  4. Une paire de micro motoréducteur N20 6V - 300rpm
  5. Pilote de moteur L298N
  6. Convertisseur abaisseur CC à CC LM2596S
  7. Batterie (batterie Li-ion rechargeable de 9,7 V)
  8. Sangle de batterie
  9. Deux cartes de circuits imprimés de prototypage
  10. Fils de cavalier des broches d'en-tête mâles et femelles

Outils:

  1. Fer à souder et soudure
  2. Entretoise hexagonale en nylon
  3. Jeu de tournevis de précision
  4. Imprimante 3D

Étape 1: Construction

Comme j'avais accès à une imprimante 3D, j'ai décidé d'imprimer le châssis en 3D et d'utiliser des entretoises pour tout connecter ensemble.

Le robot se compose de 4 couches

  1. La couche inférieure connecte les moteurs et comporte des points de montage pour le module de commande de moteur L298N
  2. La couche suivante abrite la carte prototype avec l'Arduino pro mini et les en-têtes soudés dessus
  3. La troisième couche monte l'IMU
  4. La couche supérieure, que j'appelle la "couche pare-chocs", contient la batterie, le convertisseur buck et un commutateur monétaire

Mon principe de conception principal était de garder tout modulaire. La raison en était que si quelque chose ne fonctionnait pas avec l'un des composants, je pouvais facilement le remplacer ou si j'avais besoin d'un composant pour un autre projet, je pouvais facilement le prendre sans craindre de ne plus pouvoir utiliser le système.

Étape 2: Câblage

Câblage
Câblage

J'ai soudé des pintes d'en-tête femelles à une carte perforée pour les faire correspondre aux mini-pins d'en-tête Arduino pro. Suite à cela, j'ai soudé les broches mâles de la carte pour permettre l'accès aux E/S. Le reste des composants a été monté sur le cadre imprimé en 3D et connecté à l'aide de fils de liaison.

Étape 3: Théorie du contrôle

Passons maintenant au cœur du projet. Afin de maintenir l'équilibre du robot, nous devons générer un signal de commande approprié pour entraîner les moteurs dans la bonne direction et à la bonne vitesse pour maintenir le robot équilibré et stable. Pour ce faire, nous utiliserons un algorithme de boucle de contrôle populaire connu sous le nom de contrôleur PID. Comme l'acronyme le suggère, il existe trois termes pour ce contrôleur, ce sont les termes proportionnel, intégral et dérivé. Chacun d'eux est accompagné de coefficients qui déterminent leur influence sur le système. Souvent, la partie la plus longue de la mise en œuvre du contrôleur est le réglage des gains pour chaque système unique afin d'obtenir la réponse la plus optimale.

  • Le terme proportionnel multiplie directement l'erreur pour donner une sortie, donc plus l'erreur est grande, plus la réponse est grande
  • Le terme intégral génère une réponse basée sur une accumulation de l'erreur pour réduire l'erreur en régime permanent. Plus le système est déséquilibré longtemps, plus les moteurs réagiront rapidement
  • Le terme dérivé est la dérivée de l'erreur utilisée pour prédire la réponse future et, ce faisant, réduit l'oscillation due au dépassement de l'état d'équilibre.

Le principe de base de cet algorithme est de calculer en continu l'angle d'inclinaison qui est la différence entre la position souhaitée et la position actuelle, c'est ce qu'on appelle l'erreur. Il utilise ensuite ces valeurs d'erreur et calcule la somme des réponses proportionnelle, intégrale et dérivée pour obtenir une sortie, qui correspond aux signaux de commande envoyés aux moteurs. En conséquence, si l'erreur est importante, le signal de commande envoyé aux moteurs fera tourner les moteurs à grande vitesse pour atteindre un état équilibré. De même, si l'erreur est faible, le signal de commande fera tourner les moteurs à faible vitesse pour maintenir l'équilibre du robot.

Étape 4: Utilisation du MPU 6050

Bibliothèque MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Étalonnage des décalages Tous les capteurs ne sont pas des répliques exactes les uns des autres. Par conséquent, si vous testez deux MPU 6050, vous pouvez obtenir des valeurs différentes pour l'accéléromètre et le gyroscope lorsqu'ils sont toujours placés sur la même surface. Pour surmonter ce décalage angulaire constant, nous devons célébrer chaque capteur que nous utilisons. Exécuter ce script:

www.i2cdevlib.com/forums/topic/96-arduino-…

écrit par Luis Rodenas, nous obtiendrons des compensations. Les erreurs de décalage peuvent être éliminées en définissant les valeurs de décalage dans la routine setup().

Utilisation du processeur de mouvement numérique

Le MPU6050 contient un DMP (Digital Motion Processor).

Qu'est-ce qu'un DMP ? Vous pouvez considérer le DMP comme un microcontrôleur embarqué qui traite le mouvement complexe du gyroscope à 3 axes et de l'accéléromètre à 3 axes à bord du mpu6050, en utilisant ses propres algorithmes de fusion de mouvement. Déchargement du traitement qui serait autrement effectué par l'Arduino

Comment l'utiliser? Pour comprendre comment utiliser le DMP, consultez l'exemple d'esquisse MPU6050_DMP6 fourni avec la bibliothèque MPU6050 (dans l'IDE Arduino: Fichier->Exemple-> MPU6050-> MPU6050_DMP6). C'est également une bonne occasion de vérifier que votre capteur fonctionne réellement et que le câblage est correct

Étape 5: Codage

J'ai utilisé l'IDE Arduino et une interface FTDI pour programmer l'Arduino pro mini.

En utilisant l'exemple d'esquisse (MPU6050_DMP6) fourni avec la bibliothèque MPU6050 comme code de base, j'ai ajouté des fonctions PID() et MotorDriver().

Ajouter la bibliothèque

  • MPU6050: Pour utiliser le capteur MPU6050, nous devrons télécharger la bibliothèque de développement I2C de Jeff Rowberg et l'ajouter au dossier « bibliothèques » Arduino qui se trouve dans les fichiers du programme sur votre ordinateur.
  • Wire: nous avons également besoin de la bibliothèque Wire pour nous permettre de communiquer avec les appareils I2C.

Pseudo-code

Inclure les bibliothèques:

  • Fil.h
  • MPU6050
  • I2Cdev.h

Initialiser les variables, les constantes et les objets

Installer ()

  • Définir le mode broche pour contrôler les moteurs
  • Définir le mode de broche pour la LED d'état
  • Initialiser le MPU6050 et définir les valeurs de décalage

PID ()

Calculer la valeur PID

MotorDriver (réponse PID)

Utilisez la valeur PID pour contrôler la vitesse et la direction des moteurs

Boucle ()

  • Obtenir des données de DMP
  • Appeler PID() une fonction MotorDriver()

Étape 6: Procédure de réglage du PID

C'est la partie la plus fastidieuse du projet et nécessite un peu de patience à moins que vous n'ayez beaucoup de chance. Voici les étapes:

  1. Définir les termes I et D sur 0
  2. En tenant le robot, ajustez P pour que le robot commence juste à osciller autour de la position d'équilibre
  3. Avec P défini, augmentez I pour que le robot accélère plus rapidement lorsqu'il est déséquilibré. Avec P et I correctement réglés, le robot devrait être capable de s'auto-équilibrer pendant au moins quelques secondes, avec quelques oscillations
  4. Enfin, augmenter D réduire l'oscillation

Si la première tentative ne donne pas de résultats satisfaisants, répétez les étapes avec une valeur différente de P. Sachez également que vous pouvez affiner les valeurs PID par la suite, pour augmenter encore les performances. Les valeurs ici dépendent du matériel, ne soyez pas surpris si vous obtenez des valeurs PID très grandes ou très petites.

Étape 7: Conclusion

Les micro-moteurs à engrenages utilisés devaient ralentir pour réagir aux perturbations importantes et étant donné que le système était trop léger, il n'y avait pas assez d'inertie pour obtenir l'effet de pendule souhaité. Enfin, les roues imprimées en 3D sont un mauvais choix car elles continuent de glisser.

Suggestions d'amélioration:

  • Moteurs plus rapides avec un couple plus élevé, c'est-à-dire que pour les moteurs à courant continu, la tension nominale est plus élevée, le couple le plus élevé
  • obtenir une batterie plus lourde ou simplement déplacer la masse un peu plus haut
  • Remplacez les roues imprimées en 3D par des roues en caoutchouc pour obtenir plus de traction

Conseillé: