Réalisation
Réalisation mécanique
Nous allons vous expliquer les différentes étapes de la réalisation de notre maquette. Dans un premier temps nous vous expliquerons comment nous pensions mener notre projets, quelles ont été les premières étapes de la réalisation. Ensuite nous expliquerons les idées que nous avons décidé d'abandonner et pourquoi. Nous vous expliquerons aussi notre point de vue sur ces abandon: avantage et inconvénients. Pour finir nous présenterons la réalisation du prototype final avec le choix que nous avons fait pour remplacer les différents idées abandonnées.
Début de la réalisation
Nous avons commencé la réalisation dans l'optique de créer un système de pinces qui puissent serrer un objet puis que ce système soit monté, pivoté, pour que les pinces relâchent l'objet dans un bac sur le robot.
Montages mécaniques
Nous avons commencé la réalisation de nos pinces, nous avons utilisé pour cela deux plaques de constructions 8 trous x 8 trous avec un servomoteur fixé sur les pinces grâce à un boitier pour servomoteurs.
Ces deux pinces pour translater horizontalement sur une crémaillère grâce au pignon de sortie des servomoteurs.
Voici les deux pinces avec leurs servomoteurs :

Le système de pince se trouve à gauche
Nos projets futurs
Nous devions réfléchir au système complet de la pince en se questionnant comment on pourrait monté l'enssemble et le faire pivoter.
Nous avons pensé à combiner deux crémaillères, la crémaillère des pinces, puis une autre. Celle-ci serait vertical et le système de pince translaterait verticalement dessus. Il faudrait alors mettre un servomoteur avec un pignon de sortie sur l'ensemble pince/crémailère.
Pour faire pivoter les pinces nous avions pensé à faire tourner l'ensemble du système. C'est à dire mettre un servomoteur fixé au robot POB avec son axe de sortie fixé sur la cremailère vertical qui ferait tourner le tout.
Pour finir, les pinces n'auraient pas pu serrer un objet si elles étaient guidées uniquement par une cremaillère : les pinces se seraient tordues lors du serrage d'un objet.Nous avons donc décidé de placer un axe de guidage en plus de la cremaillère pour que les pinces soit bien stables et équilibrées lorsqu'elles devront serrer un objet.
Les changements d'idées
Nous avons décidé d'abandonner beaucoup de nos idées, nous vous en expliquons les raisons dans cette partie.
Le pivot
Nous avons décidé d'abandonner le système de pivot pour faire tourner l'ensemble.
Mettre en pivot nous obligerait à rajouter un servomoteur. Cala entrainerait un produit cher puisque pour faire tourner l'ensemble,nous aurions dû choisir un servomoteurs onereux dû à sa puissance. Un servomoteurs assez puissant coûte environ 25€ aux particuliers.
Du coup les pinces n'auraient plus de possibilité de tourner pour relacher l'objet, elle devront déposer l'objet dans un bac extérieur.
Avantages de la suppression | Inconvénients |
---|---|
Cout de produits diminue | La pince peut prendre qu'un objet |
Moins de consommation d'énergie, la batterie peut tenir plus longtemps |
La crémaillère verticale
Nous trouvons que la cremaillère verticale pour monter l'ensemble n'est pas assez adaptée à notre projet. Il faudrait que l'on rajoute des pièce mécaniques pour stabiliser le tout, cela rendrait le montage trop complexe et lourd.
De plus il nous faudrait un crémaillère très grande pour pouvoir monter les pince, du coup le robot aspirateur ne pourrait plus passer sous les chaises, meubles, etc. Il ne faut pas que le pince devienne trop encombrante.
Avantages de la suppression | Inconvénients |
---|---|
Pince moins haute | Trouver un autre système |
Poids allégé |
Les pinces
En essayant de programmer les servomoteurs, nous nous sommes rendu compte que nous pouvions en faire fonctionner que deux simultanément. Cela nous pose problème : nous avons les deux servomoteurs des pinces et le servomoteurs du système de "montée" décrit plus bas.
Nous avons donc tout simplement fixé une pince en bout de cremaillèaire.
Avantages de la suppression | Inconvénients |
---|---|
Coûts de la pince réduits | Poids de l'objet reparti au bout de la crémaillère : instabilité |
Moins d'énergie utilisé |
L'axe de guidage
Nous avions commencé a créer un axe de guidage visible sur cette photo (pièce en alluminium)

Axe de guidage avant découpe à droite sur la photo
L'axe de guidage était extrêmement lourd pour la pince, nous étions dans l'obligation de remplacer le servomoteurs pour un plus puissants. Aussi, l'axe était difficile à placer correctement. Les pièce ne sont pas faites pour cohabiter.
Nous avons quand même essayé de mettre cet axe, lorsqu'il était fixer nous nous sommes rendu compte que les pinces ne coulissaient pas assez fluidement et les pinces se positionnaient encore de travers, on a donc aussi abandonné l'axe de guidage en alluminium!
Avantages de la suppression | Inconvénients |
---|---|
Système plus léger | Trouver un autre axe |
Pas de pièce specialement faites pour adapter cet axe sur les autres pièces du robot |
Le prototype final
Maintenant que nous avons supprimer tous les systèmes qui n'etaient pas adapté nous devons trouver d'autres systèmes pour les remplacer. Nous allons vous expliquer les solutions trouvées pour le protoype final. Il n'y a que pour le pivot ou nous avons pas trouver de solutions équivalentes.
Système lève-palettes
Nous avons trouver sur le site du pob un montage adapter à notre pince pour lever les pinces en l'air. Il s'agit d'un système lève palettes. Voici comment fonctionne ce système :

Lorsque le servomoteur tourne il fait tourner les deux pièce blanches qui font monter tous les système de pince.
Grâce à ce système le robot est moins haut mais il est plus long.
Les pièce sont blanches car nous les avons imprimé sur une imprimante 3D grâce à un fichier solidworks. Nous avons refait ces pièce deux fois (plus épaisses la deuxième fois car nous avions remarqués qu'elles étaient pas assez rigides) car des élève de notre lycée on cassé les deux pièces en cherchant quelques choses dans le placard où nous stockions notre robot.
Voici quelques images de l'impression 3D de nos deux pièces :

Les deux pièces

Lors de la mise de la matière
Pince mobile et fixe
Maintenant que nous avons fixer une pince il n'y a plus qu'une mâchoire qui bouge pour serrer l'objet. On a donc déplacer le capteur pour le fixer contre la pince fixe. La pince qui est mobile de deplace sur une cremaillère grâce à un servomoteur et est guidé par le trou d'une autre crémaillère visible sur l'image ci-après.
Le prototype réalisé

Prototype sans la pince fixe et le capteur

Prototype détaché du robot, complet
Sur la dernière image la plaque de construction à gauche doit être fixé sur le robot!
Programme Final
Notre pince doit être capable de ramasser des objets quand elle en voit. Notre programme se divise donc en plusieurs parties :
- Déclarer les variables que nous aurons besoin au cours du programme
- Initialisation des servomoteurs
- Récupération de la distance
- Ramassage de l'objet (en fonction de la récupération de la distance)
- Relâchement de l'objet attrapé
Le programme est écrit en Basic.
Déclaration des variables
Pour avoir un code clair et lisible nous déclarons toutes nos variables au début du code :
servoLeve.b = 6
servoPince.b = 3
distance.l
test.b = 0
bouton.b = 0
Lors de la déclaration de nos variables nous devons leurs ajouter un suffixe pour indiqué de quel type elles sont (chaine de caractère, nombre entier, etc.). Le .b signifie que les nombre sont codé sur un octet, nous avons pas besoin de plus pour ces variables. La variables distance est de type long pour pouvoir stocké des nombre plus grand !
Les deux variables commençant par servo vont nous servir pour indiquer sur quels ports sont connectés les servomoteurs.
La variable distance varira en fonction de la distance récupérée par le capteur.
La variable test et bouton ne pourrons prendre que 2 valeurs : 0 ou 1, pour rentrer ou sortir d'une boucle/condiction (voir plus loin).
Initialisation de la pince
Lors de l'allumage du robot les servomoteurs de la pince peuvent être positionnés n'importe comment, il est alors important d'initialiser leurs positions avant un quelconque ramassage d'objet.
SetServo ( servoLeve, 110 )
Wait (1000)
SetServo ( servoPince, 0 )
Wait (1000)
Pour positionner un servomoteur nous utilisons la fonction SetServo(). Cette fonction nous permet de choisir quel servomoteur on doit faire tourner, et a quelle position on doit le faire tourner. Entre les parenthèses de la fonction nous devont inscrire deux paramètres :
- Paramètre 1 : Port du servomoteur
- Paramètre 2 : Position en degré de l'axe de sortie du servomoteur
Pour le numéro du port nous utilisons les variables que l'on a crées, pour la positon nous la marquons directement dans la fonction. Pour laisser le temps aux servomoteurs de tourner nous devons mettre la fonction Wait() qui va mettre en pause le programme.
Récupération de la distance
Nous utilisons un capteur de distance pour detecter si un objet de trouve devant la pince. Tant qu'il n'y a pas d'objet on recupère la distance.
While test = 0
distance = GetDistance (2)
PrintVariable (distance, 0)
If distance < 80
test = 1
EndIf
Wend
Nous utilisons une boucle while pour répéter les instructions tant que test = 0. En réalité test vaut 0 tant que la distance est supérieur à 80 centimètres.
Pour récupérer la distance, nous utilisons la fonction GetDistance(), on met en paramètre le numéro du port sur lequel est branché le capteur. Lorsque la distance est inférieur à 80 on affecte la valeur 1 à la variable test pour sortir de la boucle pour pouvoir ramasser l'objet.
Agir en fonction de la distance
Le code suivant s'exécute seulement si un objet est detecter par le capteur de distance. Les instructions suivantes servent à rammasser l'objet par terre.
SetServo ( servoLeve, 180 )
Wait (1000)
SetServo ( servoPince, 140 )
Wait (2000)
SetServo ( servoLeve, 110)
Wait (1000)
Ici grâce au fonction SetServo expliquées auparavant nous descendons les pinces, nous serrons l'objet, puis nous relevons les pinces.
Relâchement de l'objet
Un fois l'objet attrapé nous devont pouvoir le relâché autre part (dans un poubelle par exemple); nous avons décidé de relâcher l'objet lorsque nous appuyons sur le bouton situé à l'arriere du robot.
While bouton = 0
bouton = GetButton ()
Wend
SetServo (servoPince, 0)
Wait (1000)
Tant que la variable bouton vaut 0 on récupère la valeur du bouton (appuyé ou pas). On affecte celle-ci à notre variable bouton. GetButton() renvoie la valeur 0 si le bouton est relâché et la valeur 1 si le bouton est appuyé.
Lorsque le bouton est pressé nous sortons de la boucle pour éxécuter les instructions qui suivent, c'est à dire le relâchement de l'objet.
Code complet :
Procedure MainProcedure()
While 1
servoLeve.l = 6
servoPince.l = 3
distance.l
test.l = 0
bouton.l = 0
SetServo (servoLeve, 110)
Wait (1000)
SetServo (servoPince, 0)
Wait (1000)
While test = 0
distance = GetDistance (2)
PrintVariable (distance, 0)
If distance < 80
test = 1
EndIf
Wend
If distance < 80
SetServo ( servoLeve, 180 )
Wait (1000)
SetServo ( servoPince, 140 )
Wait (2000)
SetServo ( servoLeve, 110)
Wait (1000)
While bouton = 0
bouton = GetButton ()
Wend
SetServo (servoPince, 0)
Wait (1000)
EndIf
Wend
EndProcedure