Projet PEIP 2A – Robot 5R

La PlotClock

Bonjour à tous !


L’objectif de ce projet est de réaliser une Plotclock où le robot a pour tâche d’écrire l’heure en temps réel. Ce robot fonctionne avec deux bras, composés tous les deux de deux avant-bras, reliés entre eux au niveau de la tête d’écriture. Les deux bras sont dirigés de manière à dessiner l’heure sur l’écran à l’aide de servomoteurs.

Notre robot est équipé, en tête d’écriture, d’une LED UV pour écrire l’heure sur l’écran phosphorescent. Après que le robot est affiché l’heure grâce à la LED UV, elle s’efface toute seule, avec le temps.


Voici quelques étapes de la conception de notre robot en passant par la CAO, la programmation, l’électronique et bien sûr quelques problèmes rencontrés.


Notre projet a débuté par une phase de recherche

Avant de nous lancer dans la conception de notre robot, nous avons cherché à comprendre comment un robot 5R fonctionne. Pour cela, nous avons fait de nombreuses recherches sur la cinématique inverse, les angles que les servomoteurs doivent réaliser afin que la tête d’impression aille aux coordonnées cartésiennes que nous souhaitons. Pour cela nous avons fait des simulations avec les servomoteurs sur TinkerCAD pour comprendre comment manipuler les servomoteurs et comment fixer les angles afin de pouvoir maîtriser les mouvements des bras.

Simulation des servomoteurs avec potentiomètres à l’aide du logiciel TinkerCAD

Après ces essais et de nombreux schémas, nous sommes parvenus à établir trois fonctions qui seront utiles pour déplacer les bras aux coordonnées souhaitées :

//consine formula function
double cosineRule(double a, double b, double c) {
    return acos((sq(a)+sq(c)-sq(b))/(2*a*c));
}

//distance computation macro 
#define dist(x,y) sqrt(sq(x)+sq(y))

//atan2 formula macro 
#define angle(x,y) atan2(y,x)


Conception de notre robot sur SolidWorks

La deuxième étape est de concevoir notre robot sur Solidworks. Nous avons modélisé les bras, les avant-bras, le socle et son couvercle. Le socle, le robot en lui-même, contient les servomoteurs ainsi que le ruban phosphorescent qui a été placé dessus. Lors de la modélisation des bras, nous avons fait face à un problème majeur. En effet, lors de la première impression, les bras et les avant-bras étaient de la même taille, en plus d’être trop long. En faisant des essais avec les servomoteurs, nous nous sommes rendus compte qu’à cause de leur taille, les bras allaient trop facilement dans leur position limite. C’est-à-dire comme le montre l’image suivante :

Voici quelques vues de nos bras, de notre socle et enfin de l’assembage de notre robot avant l’impression, après avoir rectifier le problème rencontré :

Modélisation du bras 1
Modélisation du bras 2

Ce bras ci-dessus (bras 2) est un peu plus épais que les autres afin qu’on puisse garder la tête d’écriture parfaitement parallèle par rapport à l’écran de ruban.

Modélisation du bras 4 (avec la tête d’écriture)
Vidéo de l’impression 3D des bras du robot
Modélisation du socle
Vidéo de l’impression 3D du socle de notre robot

Après avoir modélisé chaque pièce une par une, nous les avons assemblées afin de mieux visualiser notre robot final.

Modélisation de l’assemblage complet

Assemblage & programmation de notre robot

Ensuite, une fois l’impression terminée, les bras réimprimés plus petits, nous avons assemblé chaque composant entre eux, collé le ruban adhésif phosphorescent sur le robot, fixé les bras sur les servomoteurs. Après avoir reçu tous nos composants dont le module horloge afin d’écrire l’heure correctement, nous avons soudés et connectés les câbles sur la carte Arduino.

Voici une image de notre robot avec tous les câbles assemblés. Sur l’image de droite, vous pouvez voir un schéma de l’assemblage sur TinkerCad afin de mieux visualiser les branchements de chaque composant.

À partir de ce moment-là, nous devions essayer le programme que nous avions développé en même temps que la modélisation et l’impression. Lors du lancement de notre programme, le robot affichait l’heure mais à l’envers c’est-à-dire en mode miroir (comme vous pouvez le voir sur la vidéo ci-contre). Nous avions donc un problème avec notre repère des coordonnées. En effet, en faisant de multiples tests, nous avons compris que le sens de l’axe des x était inversé.

Après avoir identifié le problème, nous devions le corriger dans notre programme, inverser le sens des chiffres, mais aussi inverser le sens de l’écriture. Nous avons donc modifié les coordonnées de chaque chiffre et nous avons repensé leur position sur l’écran d’écriture. Dû au fait d’une calibration non parfaite, des petits réglages ont été effectués pour que les chiffres soient droits. Prenons l’exemple du chiffre 2 :

Avant l’ajustement :

 case 2: 
            digitStart(0,3/4);
            digitArc(1/2,3/4, 1/2,1/4, 1/2, -1/8);
            digitArc(1,0, 1,1/2, 3/8, 1/2);
            digitMove(1,0);
            break;

Après l’ajustement

case 2: 
            digitStart(1,3/4);
            digitArc(1/2,3/4, -1/2,1/4, 1/2, -1/8);
            digitArc(0,0, -1, 1/2, 3/8, 1/2);
            digitMove(0,1/4);
            break; 

Pour finir, pour que notre robot soit autonome, nous avons ajouté une batterie. De plus, nous voulions mettre un interrupteur afin qu’on puisse éteindre l’alimentation de notre carte Arduino pour que la batterie dure plus longtemps. Nous nous sommes vites rendus compte que notre module horloge devait être alimenté en continue pour qu’il écrive l’heure en temps réel. Notre projet de mettre un interrupteur n’était donc pas possible avec ce module horloge. Il existe d’autres modules horloge qui possèdent une pile intégrée afin qu’ils restent constamment alimenter pour qu’ils ne perdent pas l’heure. Nous avons donc décidé de mettre des piles rechargeables 6V de 1600mA pour éviter qu’elles ne se déchargent trop vite.


Bilan & Critiques

Ce projet a été très enrichissant et intéressant. Nous avons pu mettre à profit de nombreuses compétences notamment en conception mais aussi en électronique, en électricité et en programmation. La partie la plus dure a été la programmation avec un langage qui était nouveau pour nous.

De plus, nous avons appris à être autonome et prendre des décisions dans un projet de A à Z. Savoir se débrouiller face à différents problèmes et ne pas abandonner sont aussi deux points importants dans un projet. De plus, le travail d’équipe est une compétence essentielle pour le bon déroulement d’un projet. Nous avons donc dû savoir s’écouter entre coéquipier, exprimer chacun ses idées. Nous n’étions pas forcément toujours d’accord sur certaines choses mais en discutant ensemble, nous trouvions toujours un compromis.

Notre robot n’est qu’un prototype, il y a donc certaines choses à améliorer comme l’alimentation de la carte Arduino ou bien le module horloge. De plus, nous pourrions développer davantage notre programme pour qu’il est différente fonctionnalité comme écrire la date ou dessiner quelque chose demandée par l’utilisateur. Pour aller plus loin, développer une application pour le diriger depuis son portable pourrait être intéressant afin d’avoir de multiples fonctionnalités.

Nous tenons à remercier notre référent, M. LAGRANGE, pour nous avoir aider et guider tout au long de ce projet.

Merci pour votre lecture !!!

Mohamad DEIRI / Méline TARLEVE