IMA5 2019/2020 P11

De Wiki de Projets IMA
Révision datée du 12 décembre 2019 à 10:55 par Xyan (discussion | contributions) (Semaine 11 & 12 :18 Novembre - 01 Décembre)

Présentation générale

Etudiants : Xuelu YAN
Encadrant : Blaise Conrard

Objectifs

Destinée comme démonstrateur des compétences IMA le projet vise à construire une réalisation de labyrinthe à bille autonome où un système de commande contrôle le parcours d'une bille sur un plateau mobile avec des obstacles.

Description

Pour cette réalisation, les suggestions suivantes sont proposées : - création de l'équipement à la découpe laser - utilisation d'un arduino comme système de traitements - utilisation d'une caméra comme capteur de position - utilisation de servo-moteurs pour le contrôle de l'inclinaison du plan.

Préparation du projet

Cahier des charges

Contexte

C'est le projet de IMA5. Ce projet vise à réaliser un démonstration où une bille parcourt un labyrinthe. Il doit se déplacer en douceur vers la position désignée en fonction de l’itinéraire spécifié. Une fois le projet terminé, il sera exposé lors de la journée portes ouvertes.

Objectif

L'objectif du projet est de créer un labyrinthe dans lequel une bille doit suivre une trajectoire de la surface. L'un des systèmes de contrôle assure le mouvement de la bille grâce au contrôle de la pente de la surface.

Fonctionnement

1. La bille se déplace en douceur

La bille doit éviter les obstacles et se déplacer en douceur dans le labyrinthe.

2. Déterminer les coordonnées de la bille

Pendant le mouvement de la bille, le système doit surveiller ses informations de position en temps réel et obtenir les coordonnées de la bille.

3. La bille se déplace selon la trajectoire spécifiée

Nous utilisons le programme pour définir la trajectoire de la bille. La bille peut répéter le mouvement en fonction de la trajectoire spécifié.

Ressources

Sous la direction de mon tuteur Blaise Conrard, ce système est réalisé par moi personnellement. Le matériel informatique, les composants et le support technique requis dans ce système sont fournis par l’école.

Delai

Il est prévu de mettre en place le fonctionnement et l’utilisation du système au début du mois de février 2020. La date de livraison est fin février 2020.

Choix techniques : matériel et logiciel

Liste des tâches à effectuer

Tâche Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures S11 Heures S12 Heures S13 Heures S14 Total
Déterminer le cahier de charges 2 2 1 5
Choisir et étudier sur les matériaux 1 2 4 2 9
Chercher les informations sur le projet 1 1 2 2 2 8
Dessiner le schéma de conception 2 2 4
Equipement - Labyrinthe (3D) 1 1 2 1 5
Tester les machines 3 3
Circuit électrique 2 1 3
Code Arduino
Rencontre avec M.Blaise CONRARD 1 1 1 1 1 5
Remplissage du wiki 1 1 2 2 1 7
Rédaction du rapport
Total 5 6 13 12 11 4

Calendrier prévisionnel

Gggglulu.jpeg

Etat de l'art

Réalisation du Projet

Semaine 1&2 :09 - 22 Septembre

* Rendez-vous avec M.Blaise CONRARD - 19/09/2019

Cahier des charges (voir https://cahiersdescharges.com/comment-faire-cahier-des-charges/)

⇒ 1er version pour jeudi 26/9 (par mail)

Réfléchir sur la gestion de projet : méthode employée (WBS, GANTT, quels jalons, forme des livrables à chaque jalon...)

⇒ quelques notes pour le Je 26/9

Prochain RDV : Je 26/9 13h20

Semaine 3 :23 - 29 Septembre

Pour cette semaine, après de déterminer le cahiers de charges et les tâches du projet, j'ai réfléchi que comment dessiner la figure de mécanique. Ce n’est qu’en déterminant au préalable la figure de mécanique, que nous pourrons analyser plus avant la technologie nécessaire au système.

Le principe de la mécanique de la machine:

Premièrement, deux moteurs sont placés en bas pour contrôler les axes x et y dans deux directions. J'ai utilisé une structure de support à bascule orthogonale. La rotation du moteur provoque le mouvement de va-et-vient de la bielle pour contrôler la déflexion de la plaque. Ensuite, au milieu de la planche, je souhaite utiliser un joint universel et une tige de joint universel pour construire la structure de support. Au niveau de la connexion inférieure, trois fils de fer peuvent être ajoutés pour renforcer la structure. Enfin, nous devons fixer la caméra sur le poteau directement au-dessus du tableau. Et la caméra et les pièces de connexion Arduino sont également fixées sur le poteau. Cela garantit la stabilité de la caméra. La figure de mécanique est comme ci-dessous:

Mec.jpeg

* Rendez-vous avec M.Blaise CONRARD - 26/09/2019

Une décomposition du projet est proposée

Une 1ère version du cahier des charges ⇒ A améliorer, il doit décrire les fonctions de l'objet à développer

⇒ A envoyer par mail

Proposition : définir des livrables (forme = doc., photo, dessin...., volume...) pour chaque tâche du projet

https://www.manager-go.com/gestion-de-projet/glossaire/les-livrables

A Faire :

Améliorer cahier des charges

Développer la décomposition du projet en ajoutant livrables et jalons

Commencer l'analyse technique de certaines fonctions (opt.)

Semaine 4 :30 Septembre - 06 Octobre

Pour cette semaine, j'ai cherché des informations sur ce projet. Et j'ai enfin dessiné le schéma de processus. Le schéma de processus définit les étapes du projet. Et pour chaque étape, je dois étudier les technologies connexes.

Qwerty.jpeg

Après déterminer le processus du projet, j'ai abord choisi les matériaux appropriés.

1. Labyrinthe

Xiazai.jpeg

Pour la conception du labyrinthe, il faut ajouter quelques déflecteurs et plusieurs obstacles au labyrinthe. C’est aussi l’objectif du projet, le balle doit éviter les obstacles pour atteindre l’emplacement désigné. Il faut d’abord dessiner un labyrinthe sur le logiciel Onshape. Ensuite, je vais utiliser la technique de coupe 3D pour faire le labyrinthe.

2. Servomoteur

 Sifu.jpeg

Principe:

Le système servo est un système de contrôle automatique qui permet à une quantité de sortie contrôlée d'un objet (comme la position, l'orientation, le statut...) de suivre un changement arbitraire d'une cible d'entrée. Le servomoteur est principalement positionné par impulsions. Lorsque le servomoteur reçoit une impulsion, il fait pivoter l'angle correspondant à une impulsion pour obtenir un déplacement. Le servo-moteur lui-même a pour fonction d'émettre une impulsion. Ainsi, chaque fois que le servo-moteur tourne d'un angle, un nombre correspondant d'impulsions est émis. De cette manière, l'impulsion reçue par le servomoteur forme un écho ou une boucle fermée. En conséquence, le système sait combien d'impulsions ont été envoyées au servomoteur et combien d'impulsions ont été reçues. De cette manière, la rotation du moteur peut être contrôlée avec une très grande précision, ce qui permet d'obtenir un positionnement précis pouvant atteindre 0,001 mm.

Avantage:

1. Précision: réalise un contrôle en boucle fermée de la position, de la vitesse et du couple, résout le problème du moteur pas à pas en déséquilibre;

2, Vitesse: la performance à haute vitesse est bonne, la vitesse nominale générale peut atteindre 2000 ~ 3000 tr / min;

3. Adaptabilité: il possède une forte capacité anti-surcharge et peut résister à trois fois le couple nominal.Il est particulièrement adapté aux occasions avec des fluctuations de charge transitoires et un démarrage rapide.

4. Stabilité: Il fonctionne sans heurts à basse vitesse et ne produit pas d'opération pas à pas similaire à celle d'un moteur pas à pas lorsqu'il tourne à basse vitesse. Convient pour les occasions avec des exigences de réponse à grande vitesse;

5. Rapidité d'exécution: La dynamique d'accélération et de décélération motrices est courte, généralement en quelques dizaines de millisecondes.

6, Confort: la chaleur et le bruit sont considérablement réduits.

3. Arduino UNO

Arduino Uno est une carte à microcontrôleur basée sur l’ATmega328P. Il possède 14 broches d'entrée / sortie numériques (dont 6 peuvent être utilisées en tant que sorties PWM), 6 entrées analogiques, un quartz 16 MHz, une connexion USB, une prise d'alimentation, un en-tête ICSP et un bouton de réinitialisation. Il contient tout le nécessaire pour prendre en charge le microcontrôleur. Connectez-le simplement à un ordinateur avec un câble USB ou alimentez-le avec un adaptateur AC / DC ou une batterie pour commencer.

4. Caméra (pixycam)

Ardu.jpegPixy.jpeg

Pixy est un capteur de reconnaissance d'image open source qui prend en charge la reconnaissance de couleur multi-objet et multicolore et prend en charge jusqu'à 7 couleurs. Vous pouvez lui dire la couleur que vous voulez et lui apprendre à trouver quelque chose. Pixy prend en charge plusieurs méthodes de communication, telles que SPI, I2C, etc., qui peuvent être directement connectées à la carte de commande Arduino. Installez-le sur votre robot et ajoutez une paire d'yeux à votre petit robot. Il est équipé d'un capteur d'image doté d'un matériel puissant pouvant être utilisé avec un PC pour suivre et analyser des données multicolores. Pixy peut communiquer directement avec l'Arduino. Il envoie des informations de bloc à l'Arduino à 1 Mbit / s, ce qui signifie que le Pixy peut envoyer plus de 6 000 objets identifiés par seconde ou 135 objets identifiés par frame (Pixy peut traiter 50 images par seconde).

* Rendez-vous avec M.Blaise CONRARD - 03/10/2019

Avis documents fournis :

Gantt : trés bien

Cahier des charges ⇒ à améliorer

1. Context en premier, mais il décrit les besoins de Polytech, c-à-d., une machine de démonstration

2. Théoriquement pas de solution technique (sauf, éventuellement, dans un paragraphe anexe)

Prochaines étapes :

liste matériel (générique)

bibliographie sur des projets similaires

Questions/Avis :

comment dessiner une pièce 3D ⇒ OnShape

choix moteur ⇒ Un servomoteur est peut-être mieux adapté

choix caméra ⇒ proposé camera pixycam

A chaque fois :

remettre à jour le planning ou le Gantt

transmettre les nouveaux documents ou ceux corrigés

Semaine 5 :07 - 13 Octobre

Pour cette semaine, j'ai obtenu la caméra 'Pixycam' et une chute de bois pour les tester.

1. Tester la caméra

Avant de tester la caméra, il faut installer le logiciel ‘PixyMon’. Et puis, je l’ai connecté sur le ordinateur pour le tester. Lorsque je l'ai connecté, l'image capturée par la caméra est très floue. J'ai essayé d'ajuster la caméra pour la faire la mise au point. Ensuite, j'ai commencé à apprendre à Pixy à reconnaître un objet. Dans pixymon, j'ai choisi ‘Signature 1’ pour enregistrer la cible du suivi de la caméra. J'ai utilisé le trousseau à titre d'exemple pour tester l'appareil photo. Après l'objet est sélectionné, la caméra suit la position de l'objet bleu sur le trousseau.

Iyi.jpeg Rer.jpeg Nsan.jpeg

2. Découper le plateau

J’ai réservé la machine ‘Découpeuse Laser’ et le professeur m’a appris comment utiliser la machine. J’ai installé le logiciel ‘Inscape’ pour créer une image d’objet que je veux imprimer. J’ai fait un objet facile pour l’essayer. La circonférence de cet objet est coupée. Le cercle au milieu est gravé.

Cle.jpeg

* Rendez-vous avec M.Blaise CONRARD - 10/10/2019

Tuteur :

Corriger/Valider nouvelle version du cahier des charges

Proposer des servomoteurs

Vous :

Tester la caméra => Objectif : exemple de mesure de la position d'un objet

Apprendre à utiliser la découpeuse Laser ⇒ Fabriquer un petit objet

1. rencontrer les FabManager

2. peut être réservation sur http://fabricarium-old.polytech-lille.fr/#!/machines

3. une chute de bois a été donnée

Dessiner un 1er plan de la mécanique de la machine (logiciel libre)

Semaine 6 :14 - 20 Octobre

1. Après j'ai fait la formation de Découpeuse Laser, je comprends comment utiliser la machine pour créer le labyrinthe. Et donc pour cette semaine, j'ai commencé à dessiner la première version du labyrinthe. Comme indiqué ci-dessous, c'est le labyrinthe précis. Il y a quelques murs et obstacles. Je mets la largeur du mur sur 1cm et le diamètre de l'obstacle circulaire sur 1.5cm. La trajectoire de la bille est montrée et il répétera la trajectoire.

La rapport d'image est 1:5

Hhh.jpeg

Et ensuite, je l'ai dessiné avec le logiciel 'Inscape'. J'ai ajouté le symbole 'Polytech-Lille'. La taille du labyrinthe est de 30cm x 30cm. Et il faut encore faire un autre planche comme le planche du bas pour mettre les moteurs et les autres matériaux. La taille est de 40cm x 40cm. Cette planche est une simple planche de bois qui ne nécessaire pas de gravure. J'ai aussi ajouté le symbole 'Polytech-Lille'.

Trbal.jpeg Bddd.jpeg

2. Le plan précis du schéma de principe

1). La première partie est la planche du haut. Cette planche est le labyrinthe. Je utilise un joint universel et une tige de joint universel comme support dans la partie centrale inférieure de la planche. De cette façon, la planche peut être plus stable. Et avec le joint universel, la planche peut tourner plus facilement pour incliner. Les deux moteurs contrôlent respectivement l'axe de X et l'axe de Y. Je mets le moteur au milieu du bord du labyrinthe et du point central. Parce que si il est proche du centre, elle a besoin de suffisamment de force pour supporter l'inclinaison de la planche. Si il est loin du centre, il est difficile à contrôler car la planche change rapidement. Donc, les moteurs doivent être placé au milieu.

2). La deuxième partie est la planche du bas. Elle est utilisée pour mettre les machines et Arduino. Le centre de la planche est une tige de joint universel. Je veux utiliser de la colle de verre pour coller trois fils de fer à la planche du bas afin de rendre la structure plus stable. Les moteurs, l'Arduino et d'autres équipements sont placés sur la planche du bas.

3). La troisième partie est la structure détaillée du moteur. J'ajoute un culbuteur à la partie où le moteur tourne. En ajoutant du fil de fer au culbuteur, lorsque le moteur tourne, le culbuteur déplace le fil de fer de haut en bas, de sorte que la plaque supérieure soit inclinée lorsque le fil de fer se déplace.

4). La quatrième partie est la caméra. Je place la caméra sur le pilier pour le séparer du labyrinthe. Parce que la caméra doit être placée dans une position stable. De cette manière, l'image acquise peut être rendue plus précise et les coordonnées de position précises de la bille peuvent être obtenues.

* Rendez-vous avec M.Blaise CONRARD - 18/10/2019

Cahier des charges

10/10/2019 : p1 du CR3 ⇒ le texte est à améiolorer (18/10/2019)

Acquisition position

test de la camera : Fini (18/10/2019) : note dans le CR4, p3

Réalisation du labyrinthe/machine

1. Labyrinthe

Formation découpeuse Laser : Fait et fini (18/10/2019), CR3 p.4

A FAIRE (S43) : dessiner un labyrinthe précis (taille, motif, parcours...)

2. Machine

architecture matériel générale : Fait (18/10/2019) : un schéma de principe, CR4, p1-2

A FAIRE : Plan précis

A FAIRE (S43) : un permier plan

3. moteur

Sélectionner moteurs

A FAIRE (S43) : tester l'utilisation (possible ou pas) servomoteur bioloid

A FAIRE (plus tard) : Fixation des moteurs

Semaine 7&8 :21 Octobre - 03 Novembre

Après la réunion avec mon tuteur, j'ai amélioré quelques parties.

1. Envisager une autre version du labyrinthe.

Le symbole de Polytech de la première version du labyrinthe est trop petit, donc je l'ai modifié. Et je mets la sortie de la bille à l'intérieur du symbole. Je mets quelques murs, le largeur de la mur est 1.5cm et la longueur de la mur est 6cm. Le trajectoire de la bille est affiché dans le dessin en papier. La rapport est 1:6, l’image réel est de 30cm x 30cm. Après j'ai déterminé le dessin en papier, je l'ai crée dans le logiciel 'Inkscape'.

Version2.jpeg Vs2.jpeg

2. Tester l'utilisation de servomoteur Bioloid

Cette semaine, j'ai obtenue les servomoteurs. Pour tester les servomoteurs, je m’ai abord référé aux instructions d’utilisation et puis j’ai connecté les deux moteurs avec la source. Et ensuite pour les programmer, il faut installer le logiciel ‘Behavior Control Programmer’ avec le disque. J’ai essayé de réaliser l’action facile, le programme est comme ci-dessous.

Mtr.jpeg

Cx.jpeg

Je règle séparément la vitesse et l'angle des deux moteurs, puis observe leur comportement. Il y a deux problèmes :

- Le premier moteur tourne à la vitesse spécifiée, mais le deuxième moteur ne tourne pas. J'ai essayé de changer l'ordre des connexions ou de changer le programme, mais il y a rien qui change.

- Le premier moteur tourne éternellement, l'angle cible j'ai défini est invalide.

B1.jpeg B2.jpeg

* Rendez-vous avec M.Blaise CONRARD - 24/10/2019

Matériel en prêt

Caméra Pixy (10/10/2019)

Kit bioloid (18/10/2019)

Un arduino (24/10/2019)

Cahier des charges

10/10/2019 : p1 du CR3 ⇒ le texte est à améiolorer (18/10/2019)

A FAIRE (S45) : ajouter description IHM (bouton, LED... fonction de chacun)

A FAIRE (S45) : préciser rangement ou pas de la caméra

A FAIRE (S45) : préciser l'alimentation

Acquisition position

test de la camera :Fini (18/10/2019) : note dans le CR4, p3

Réalisation du labyrinthe/machine

1. Labyrinthe

Formation découpeuse Laser :Fait et fini (18/10/2019), CR3 p.4

2. Concevoir le labyrinthe

(S43) dessiner un labyrinthe précis (taille, motif, parcours...) :Fait CR5 p1-2

A FAIRE (S45) proposition : envisager/tester une autre version avec Polytech en motif

3. Machine

architecture matériel générale :Fait (18/10/2019) : un schéma de principe, CR4, p1-2

Plan précis

(S43) : un permier schéma

A FAIRE (S45) : préciser les hauteurs, largeur, fixation des moteurs, de la caméra... plus de détails

PLUS TARD : plan de chaque pièce + mode de fixation

4. moteur

Sélectionner moteurs

A FAIRE (S45) : tester l'utilisation (possible ou pas) servomoteur bioloid

PLUS TARD : Fixation des moteurs

PLUS TARD : connexion moteur/arduino + commande des moteurs par arduino

Semaine 9 & 10 :04 Novembre - 17 Novembre

Avant, j'ai rencontré deux problèmes lors du test du moteur.

J'ai consulté le livre de référence et demandé à mon mentor. J'ai trouvé que la raison pour laquelle le moteur n°2 ne tournait pas était que son numéro de série était devenu le n°6. Ensuite, le programme a changé son numéro en n°2. Testez à nouveau et le moteur n°2 fonctionne correctement. Deuxièmement, nous avons précédemment défini la vitesse de rotation et l'angle de rotation du moteur en sélectionnant différentes fonctions.

Speed

Position

Cependant, j'ai découvert plus tard que le moteur ne tournait pas à la vitesse et à l'angle spécifiés. J'ai ensuite essayé de contrôler la rotation des deux moteurs via les boutons. Les deux boutons de haut et bas sont pour contrôler le moteur n°1, les deux de gauche et droite sont pour contrôler le moteur n°2. Et le programme est comme ci-dessous :

Cxt.jpeg

Ensuite, j'ai réservé la machine ‘Découpeuse Laser’ pour faire ma planche de labyrinthe. Avant de couper, je dois ajuster divers paramètres. J'ai importé le fichier conçus à l'ordinateur. Avant de couper, je dois ajuster divers paramètres. Le rouge représente la coupe et le noir représente le gravure. Donc, j'ai défini la bordure en rouge , le chemin du milieu et la zone du logo en noir. Le labyrinthe résultant est le suivant :

Lbrt2.jpg

Semaine 11 & 12 :18 Novembre - 01 Décembre

Pour ces deux semaines, J‘ai travaillé sur la partie électronique et j'ai testé les servomoteurs avec l'Arduino.

1. Dessiner le schéma

Tout d'abord, j'ai déterminé les fonctions que le schéma doit réaliser.

1). LEDs

- LED rouge: indique si le programme est mis en pause.

- LED orange: indique si le système est alimenté (couplée à l'interrupteur).

- LED vert: indique si le programme tourne.

2). Bouton

Le bouton à contact temporaire contrôle la mise en route du système. Une fois le bouton appuyé le programme de gestion du labyrinthe se met en marche. Si le bouton est appuyé à nouveau le programme se met en pause.

3). Interrupteur

L'interrupteur contrôle l'alimentation du système. Activer l'interrupteur signifie que le système est déjà en place et que le courant circule.

4). Servomoteurs

Je me réfère au projet IMA4 de 2015 concernant la commande de servos bioloid pilotés par Arduino. Je réutilise leur montage électronique utilisant un buffer permettant de commander les servos.

Donc, le schéma est comme suivant:


2. Tester les servos avec l'Arduino

Pour ce projet, je dois remplacer le CM5 par une carte Arduino, ceci afin d'avoir des possibilités de programmation étendue. Avant toute chose , étudie les caractéristiques électroniques du CM5. Après avoir étudié ces caractéristiques, j'ai remarqué que l'on pourrait directement passer par les ports RX et TX de l'Arduino pour le contrôle des servomoteurs, il suffirait juste d'ajouter un composant 74LS241N pour les contrôles alternatifs de TX et RX. En effet ce buffer trois états permettrait de faire passer alternativement Rx ou Tx en état d'haute impédance, ceci dans le but de n'avoir qu'une unique information sur le bus data vers le servo.

74LS241N.jpeg

Meca.jpeg

En raison du composant manquant 74LS241N, j'ai choisi de remplacer ce composant par un buffer non inverseur 74LS244N. J'ai réalisé les branchements entre l'Arduino et les servos via ce composant en nous aidant de les datasheets des ces composants. De cette façon, il sera possible de se substituer du CM5 et de commander directement les servos via l'Arduino. J'ai effectué quelques tests en connectant les ports TX et RX de l'Arduino sur les différentes entrées du buffer 3 états. Le test a échoué et la connexion entre les servos et Arduino n'a pas été établie avec succès.

En recherchant les informations, j'ai trouvé que la différence entre 74LS241N et 74LS244N est que le port 2G de ce dernier doit être inversé. En d'autres termes, 74LS241N est un buffer non inverseur et ne peut pas être remplacée directement. Cela signifie que je dois ajouter un inverseur pour obtenir le même effet. J'ai donc ajouté l'inverseur 74HC04N, le schéma des broches est le suivant:

74LS244N & 74HC04N

74LS244N.jpeg 74HC04N.jpeg

Ce qui donne pour notre circuit, la figure ci-dessous :

Après avoir ajouté l'inverseur, j'ai réessayé de tester le circuit avec un exemple de code.

3. Dessiner le PCB

Documents Rendus