John Lim

La micromouse est un robot qui utilise un algorithme de résolution de labyrinthe pour résoudre de manière autonome un problème de labyrinthe. Dans cet article, je vais partager comment mon équipe et moi avons réussi à le faire avec les conseils indispensables de certaines personnes très utiles.

Pendant mon semestre d’automne à l’Université de Berkeley, j’ai suivi un cours dirigé par des étudiants pour créer un robot qui résout de manière autonome un problème de labyrinthe. Je pense que si vous êtes à UC Berkeley, intéressé par des projets d’électronique et à la recherche d’un programme hautement guidé avec des instructeurs géniaux, c’est un endroit idéal! Pour moi, ce cours est spécial car c’est là que j’ai commencé mon voyage dans la robotique, le bricolage et la fabrication et c’est un cours que j’ai profondément apprécié. Ce cours m’a donné de bonnes bases, et j’en ai appris plus en cours de route alors que je commençais à prendre de nouveaux projets.

Moi et mon équipe et notre souris
Notre souris dans le labyrinthe
Moi et mon coéquipier et mes instructeurs de cours

Voici un ensemble approximatif d’instructions sur la façon de commencer votre projet Micromouse en tant que débutant:

  1. Liste des pièces
  2. Assemblage des pièces matérielles
    1. Configuration du Micro-contrôleur Teensy & Arduino Arduino
    2. Introduction au brochage Teensy
    3. Utilisation de capteurs
    4. Régulation de tension
    5. Contrôleur de moteur à pont en H pour contrôler le moteur
    6. À l’aide du Codeur Rotoraire à effet Hall
    7. En assemblant le tout
  3. Codage
    1. Comment contrôler votre matériel avec du code
    2. Détection
    3. Contrôle PID
    4. Algorithme de résolution de labyrinthe
    5. Réglage fin
  4. Comment dépanner

Liste des pièces

  • Pièces mécaniques
    • Châssis
    • Roues
    • Beaucoup de ruban adhésif, sauf si vous avez l’intention d’imprimer en 3D des pièces sur mesure ou de dépenser de l’argent pour acheter des supports personnalisés
  • Pièces électriques
    • Platine de prototypage, fils
    • Deux mini Moteurs CC de 5 volts
    • Une petite batterie de 7 à 9 volts
    • 7805 Régulateur De tension
    • Capteur à effet Hall codeur rotoraire
    • Pont en H
    • Teensy (Ou tout petit micro contrôleur. Arduino fonctionne aussi!)
    • Deux capteurs de distance (j’ai utilisé un capteur infrarouge)

Assemblage du matériel

2.1 Configuration du Micro-contrôleur Teensy & Arduino Arduino

Teensy est un Micro-contrôleur qui fonctionne comme un Arduino. Un énorme avantage est sa taille. Comme son nom l’indique, le Teenst est petit et compact, ce qui est génial!

Nous commençons par placer le Teensy sur certaines broches d’en-tête, puis nous soudons les broches d’en-tête sur le Teensy, puis nous le montons fermement sur notre planche à pain.

Placez les broches d’en-tête sur l’extrémité de la planche à pain
Placez le Teensy sur les épingles
Souder les broches d’en-tête sur le Teensy
Connectez-vous à votre ordinateur via un câble microUSB

Si ce n’est pas déjà fait, installez Arduino ID sur votre ordinateur. https://www.arduino.cc/en/Main/Software

TRÈS IMPORTANT: Si vous utilisez Teensy 3.1, assurez-vous d’installer la version d’Arduino compatible avec Teensy. Voici le lien pour installer Teensyduino, afin que votre Teensy puisse fonctionner avec l’ Arduino Arduino: https://www.pjrc.com/teensy/td_download.html

2.2 Le circuit

2.21) Alimentation par batterie: l’alimentation doit être de 7,2 V et plus. Par convention de circuit, nous pouvons appeler cela Vcc2.

2.22) Alimentation régulée 5V: Les composants de la puce électronique ont souvent besoin d’une tension d’alimentation stable pour fonctionner correctement. Le problème est qu’avec des dispositifs tels que des moteurs qui peuvent tirer de grandes quantités variables de courant, cela provoque une baisse de la tension d’alimentation. C’est pourquoi nous avons besoin d’un régulateur de tension pour fournir ce 5V stable à vos autres composants électroniques.

 VoltageReg

2.23) Micro-contrôleur: C’est le cerveau de tout robot qui semble avoir une apparence de pensée intelligente. Un microcontrôleur peut sembler compliqué au début, mais pour commencer, ce n’est vraiment pas si difficile. Voici les bases: Simples, mais très importantes.

 Micro Contrôleurs

2.23 a) Broches d’entrée numériques: Capable de lire et d’écrire des signaux binaires. Différents microcontrôleurs ont des niveaux logiques différents, mais la plupart des microcontrôleurs ont un niveau logique de 3,3 V ou 5V. Par exemple, l’Arduino est un microcontrôleur avec un niveau logique de 5V. Lors de la lecture, une tension proche de 5V s’enregistre aussi HAUT, tandis qu’une tension proche de 0V s’enregistre aussi BAS.

2.23b) Broches à modulation de largeur d’impulsion (PWM) : Il s’agit de broches d’entrée numériques dotées d’une capacité spéciale pour émettre un signal modulé en largeur d’impulsion. C’est un signal numérique qui est élevé pendant un certain pourcentage de temps et faible pendant un autre pourcentage de temps. C’est ce qu’on appelle le rapport cyclique. Un signal PWM avec un rapport cyclique de 60% est de niveau logique ÉLEVÉ 60% du temps, tandis que de niveau logique BAS 40% du temps. En savoir plus sur PWM ici.

2,23c) Broches analogiques: Ces broches sont capables de lire une tension analogique allant de 0 à ladite quantité de volts. Dans le cas de l’Arduino, son 0–5V. Ils peuvent le lire avec différents degrés de résolution, en fonction du nombre de bits du convertisseur analogique-numérique utilisé. Un convertisseur analogique-numérique 8 bits peut lire une résolution de 2^8 = 256. Pour un niveau logique 5V, il peut lire avec une précision de 5V/ 256 = 19,5mV.

2.23d) Interruptions numériques: Certaines broches numériques sur les microcontrôleurs peuvent être configurées comme signaux d’interruption. Une interruption est très cool. Lorsqu’une broche est configurée en tant que broche d’interruption, elle détecte soit (1) Un front de signal montant (2) Un front de signal descendant, soit (3) un changement de niveau logique. L’un ou l’autre déclenchera ce que nous appelons une routine de service d’interruption (ISR). L’ISR est une fonction courte dans le code qui est déclenchée chaque fois qu’une interruption est détectée.

2.26) Moteurs : Les moteurs sont des dispositifs qui tournent lorsqu’on leur donne une tension. Dans ce cas, nous utilisons le moteur à courant continu brossé. Il est nommé comme tel car il y a une brosse CC de commutateur à l’intérieur de celui-ci qui l’aide à tourner correctement lorsqu’on lui donne une tension. Les moteurs consomment généralement un courant important et tous les moteurs ont une certaine puissance nominale de tension. Lorsque les moteurs tournent, ils produisent une CEM arrière. Cela peut sembler contre-intuitif, mais un moteur qui tourne à sa vitesse maximale consomme en fait le moins de courant en raison de la CEM arrière. Au contraire, un moteur qui est au point mort (c’est-à-dire qu’il veut bouger mais ne peut pas à cause de forces extérieures) consomme le plus de courant.

 Moteur

2.25) Pilote de moteur: Ceci est nécessaire pour contrôler la vitesse / direction de votre moteur à l’aide d’un microcontrôleur. En effet, votre microcontrôleur ne peut pas fournir suffisamment de tension ou de courant pour entraîner un moteur. De plus, lorsque les moteurs tournent, la CEM arrière générée pourrait facilement endommager votre microcontrôleur. Une interface est nécessaire entre les deux afin de contrôler la vitesse et la direction de votre moteur. Le contrôleur de moteur utilisé était un pilote quadruple Demi-H SN754410. Ce qu’un contrôleur de moteur fait, c’est qu’il prend le signal provenant de votre micro-contrôleur (généralement un signal Modulé en largeur d’impulsion), puis active un « commutateur numérique » de votre batterie à votre moteur. Ce qu’il fait, c’est qu’il allume un interrupteur numérique de votre batterie à votre moteur extrêmement rapidement. Si ce commutateur numérique est allumé 100% du temps (ou 100% du cycle de service), le moteur tourne à pleine puissance. Si l’interrupteur numérique n’est allumé que 50% du temps, le moteur tourne à 50% de puissance.

motordriver

2.26) Codeurs : Les codeurs sont des dispositifs intelligents qui détectent les mouvements. Comme par exemple, certains codeurs détectent combien de fois une roue a tourné, d’autres sont encore plus précis pour vous dire exactement quel angle un bras de robot a tourné, etc. Pour la Micromouse, nous utilisons des codeurs qui détectent combien de fois une roue a tourné. Il existe des codeurs à effet hall, ou codeurs optiques. Deux types d’encodeurs, mais font fondamentalement la même chose. Ils déclenchent une impulsion numérique chaque fois qu’une roue a tourné! Le fonctionnement d’un encodeur à effet hall est qu’il y a un petit aimant permanent à l’intérieur de quelque chose qui est attaché à l’arbre du moteur. Lorsque le moteur tourne, l’aimant tourne également. Il y a des capteurs qui détectent quand l’aimant est passé. Quand c’est le cas, il envoie une impulsion qui peut être lue par un microcontrôleur. Nous envoyons généralement ce signal à une broche configurée comme une broche d’interruption numérique.

 Encodeur

2.27) Capteurs de distance infrarouge: Détecte la distance à l’aide de l’infrarouge. Ce qu’il fait, c’est qu’il émet un signal infrarouge et attend que ce signal rebondisse pour déterminer à quelle distance l’objet s’en éloigne. Vous pouvez expérimenter, mais si vous déviez le signal d’une surface inclinée, vous risquez de ne pas obtenir de lecture de votre capteur IR. Cela ne le rend pas si idéal. Ce capteur INFRAROUGE a également une portée limitée dont il peut détecter les distances. Le fil rouge est pour l’alimentation 5V, le fil noir pour la terre, le fil jaune pour le signal. Pour ce capteur IR particulier, en fonction de la distance à laquelle le capteur IR détecte votre objet, il émet une tension analogique différente. Ce que vous pouvez faire est de lire cette tension analogique à l’aide d’un micro-contrôleur. Lisez la fiche technique ici pour en savoir plus sur le capteur IR.

 Capteur IR

2.3 Schémas de circuit & Câblage

Voici un schéma de circuit approximatif. Notez que je n’ai pas spécifié exactement à quelles broches connecter les fils. En effet, les numéros de broches varient en fonction du micro-contrôleur que vous utilisez, mais ici, je donne les principes généraux:

wiringdiagram

Les signaux de l’encodeur doivent être câblés sur une broche d’interruption numérique. De cette façon, chaque fois qu’un signal est envoyé, le microcontrôleur peut savoir que la roue a tourné de 1 tour.

Les signaux du capteur infrarouge doivent être câblés sur une broche d’entrée analogique.

Les signaux introduits dans le contrôleur de moteur doivent provenir d’une broche PWM.

* Insérer le schéma de circuit

3.0 Code & Contrôles:

Je ne publierai pas de code, mais voici quelques concepts généraux:

3.1 Comment faire pour que la souris se déplace directement ou tourne:

Cette souris est contrôlée de manière différentielle. Il y a deux roues, avec deux moteurs sur chaque roue. Si les deux roues tournent à la même vitesse, la souris va droit. Si la roue gauche accélère tandis que la roue droite ralentit, la souris tourne à droite. C’est ce qu’on appelle le contrôle différentiel.

3.2 Contrôles & correction d’erreur

Mais il faut réfléchir à la façon de contrôler la souris. Comment pouvons-nous l’amener à se déplacer à l’intérieur du labyrinthe sans s’écraser contre un mur? Nous pourrions penser que nous envoyons deux signaux égaux aux moteurs gauche et droit pour dire à la souris d’aller tout droit. Donc, la souris devrait aller tout droit? Faux ! Diverses raisons peuvent faire en sorte que les moteurs ne réagissent pas comme nous le lui disons. Fondamentalement, chaque moteur est construit presque de la même manière, mais pas exactement de la même manière. Le matériel n’est jamais parfaitement construit et il y a toujours une erreur finie.

Comment pouvons-nous nous assurer que la souris se déplace réellement dans la direction que nous lui indiquons? Nous avons besoin de ce qu’on appelle le contrôle en boucle fermée. Ce qui signifie que nous branchons des capteurs pour mesurer la sortie, puis réinjectons le résultat dans l’entrée pour effectuer une correction d’erreur. Plus à ce sujet plus tard. Nous avons besoin de ce que nous appelons un contrôleur PID (Dérivée Intégrale proportionnelle).

Dans ce cas, nous pourrions vouloir faire en sorte que la souris maintienne une distance stricte du mur. Disons, à 5 cm du mur sur sa droite. Nous appelons cela le point de consigne. Tout écart par rapport au point de consigne est ce que nous appelons erreur. Lorsqu’une erreur est détectée, nous voulons que la souris se corrige. Lorsque l’erreur est importante, nous voulons une action de correction importante. Lorsque l’erreur est faible, nous voulons une petite action de correction.

Des capteurs situés sur le côté de la souris déterminent la distance entre la souris et un mur. Disons que la souris est trop éloignée du mur sur sa droite. Nous voulons que la roue gauche tourne plus vite, tandis que la roue droite tourne plus lentement afin que la souris puisse se déplacer vers la droite afin de corriger l’erreur. Si la souris est très éloignée du point de consigne de 5 cm, comme 10 cm du mur, nous voulons que la roue gauche tourne très vite, tandis que la roue droite ralentit beaucoup. Si la souris n’est qu’à 6 cm du mur, nous voulons que la roue gauche augmente en vitesse et que la roue droite diminue sa vitesse, mais très légèrement.

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.