Table des matières:

Bras robotique Arduino : 5 étapes
Bras robotique Arduino : 5 étapes

Vidéo: Bras robotique Arduino : 5 étapes

Vidéo: Bras robotique Arduino : 5 étapes
Vidéo: Arduino Robot Arm 2024, Juillet
Anonim
Image
Image
Bras robotique Arduino
Bras robotique Arduino
Bras robotique Arduino
Bras robotique Arduino

Puisqu'il s'agit de mon premier projet après les 15 tutoriels de mon kit de démarrage Arduino, le véritable but de celui-ci est d'obtenir des critiques, des conseils, des suggestions, des idées de quiconque en sait plus que moi.

Ce projet concerne un bras robotisé, avec 4 ddl et une poignée. Avec un budget assez bas: la structure a été coupée par un ami, les 4 servos étaient à 30€, les 2 joysticks 4€, les boulons à vis etc. à moins de 10€ et tout le reste (Arduino, câbles, servo de grip etc.) était déjà inclus dans mon kit de démarrage. Pour un total de 40-45€ soit environ 45-50 dollars US (le même prix qu'un kit me-arm, mais bon, c'était amusant de devoir le construire moi-même (et de gâcher quelque chose de temps en temps) et ne pas suivre les instructions comme une machine).

Comme il s'agissait de mon premier projet et d'Instructable, j'ai participé au ''First Time Author'' et à quelques autres concours, donc si vous l'aimez, votez-le:)

Étape 1: CONCEPTION ET ASSEMBLAGE:

J'avais d'abord besoin d'une structure: c'était certainement la partie la plus longue. Comme je ne voulais pas copier et coller le projet de quelqu'un d'autre, j'ai pris un projet comme référence et moi (ainsi que quelques camarades de classe plus qualifiés qui m'ont vraiment sauvé) commencé à le modifier selon nos besoins (différents servos avec différents couples, poids et dimensions, etc.). J'ai dû le construire plusieurs fois, chacun d'eux j'ai trouvé quelque chose qui ne va pas, et nous avons dû recouper quelques pièces et réessayer. J'ai joint le fichier.dxf au cas où vous voudriez l'utiliser. Ensuite, j'ai dû acheter l'électronique:La plupart des pièces étaient standards, le plus dur était de choisir les servos. J'ai calculé le couple requis avec la règle empirique, plus tard j'ai essayé un calcul plus précis et j'ai découvert que je l'avais peut-être un peu exagéré. Apparemment 6 kg/cm auraient suffi pour le 2ème servo (à partir de la base), et le mien fournit 9-11 kg/cm. Eh bien, cela me donne une certaine sécurité et la possibilité de charger jusqu'à 2 kg de charge (ce qui est impossible, mais j'aime que je puisse techniquement le faire). J'aurais également pu acheter différents servos, avec un couple décroissant en m'éloignant de la base, mais acheter des servos identiques auprès du même fournisseur était de loin l'option la moins chère. 350mA et le microservo 9g consomme 100mA, pour un total de 350*4 +100 = 1500mA. J'ai donc récupéré un chargeur (6V 1,5A) et y ai soudé deux fils de liaison. (si certains d'entre vous ont besoin de vraies instructions, demandez simplement dans les commentaires, et je ferai de mon mieux pour créer un pas à pas guide)Liste des matériaux:- Structure- Vis M5x7cm x5, boulons m5 x15 (base)- Vis M3x16mm x18*- Vis M3x20mm x13*- Boulons M3 x40*- Vis M3x8cm x3 - Collier de serrage (sinon ça tombera)- 3 chevilles- Arduino (ou autre chose pour le contrôler, il doit avoir au moins 5 PWM)- Quelque chose pour fournir 5-6V et au moins 1,5A - 3x joysticks de type ps2- 4x servos TowerPro mg995- 1x microservo TowerPro 9g (pour la poignée)- Beaucoup de fils de liaison - Planche à pain* (j'ai utilisé des boulons et des vis pour pouvoir monter et démonter rapidement, sinon vous pourriez les remplacer presque tous par des vis à bois)

Étape 2: CODEZ:

L'idée est de contrôler chaque servo avec l'un des deux axes d'un joystick de type ps2. était un problème, car la différence était presque petite (on avait le zéro sur y à 623) et je voulais utiliser la fonction map pour convertir de 0-1023 en degrés. Mais la fonction map pense que la valeur restante est 1023/2. Ce qui a amené chaque servo en mouvement dès que j'ai allumé l'Arduino, pas bon. J'ai réussi à contourner cela en trouvant manuellement la différence entre la valeur de lecture et chaque valeur de repos différente (que j'ai calculée séparément pour chaque joystick), puis à rendre le code plus court et plus intelligent, je lui ai fait lire les valeurs restantes dans la fonction de configuration et les enregistrer dans certaines variables. Le nouvel algorithme repose sur la conversion de l'incrément en degrés, mais je voulais une très faible quantité de degrés pour mon incrément, donc J'ai dû le diviser pour une constante: j'ai essayé de nombreuses valeurs, jusqu'à ce que je trouve les 200 derniers (je peux ajouter un potentiomètre pour changer manuellement cette valeur à celle souhaitée). Le reste du code est assez standard je suppose, même s'il peut être plus élégant de placer le calcul de l'incrément dans une fonction distincte.

Étape 3: ÉLECTRONIQUE:

ÉLECTRONIQUE
ÉLECTRONIQUE

Le câblage est le même que celui indiqué sur l'image ou le fichier fritzing: signal des servos aux broches: 5-6-9-10-11 et axe du joystick aux broches analogiques: A0-A1-A2-A3-A4Le problème majeur que j'ai rencontré était que les joysticks DOIVENT ÊTRE fournis par l'Arduino, PAS par le chargeur que j'utilise pour les servos. Sinon, le servo deviendrait fou en se déplaçant au hasard d'avant en arrière. Je pense que c'est peut-être parce que, si je les fournis avec le chargeur, l'Arduino ne sera pas en mesure de dire avec précision la différence de potentiel lorsque je les déplace, mais encore une fois: Je suis très nouveau dans l'électronique, donc c'est juste une supposition. La connexion de la masse Arduino et de la masse du chargeur via la planche à pain a permis d'éviter les mouvements aléatoires et inattendus, pour une raison similaire à l'alimentation des joysticks, je suppose.

Étape 4: ACTUELLEMENT EN AMELIORATION:

ACTUELLEMENT EN AMÉLIORATION
ACTUELLEMENT EN AMÉLIORATION

Comme chaque joystick peut contrôler 2 servos (1 par axe), j'ai besoin de 3 servos pour contrôler tout le bras, mais malheureusement je n'ai que 2 pouces. J'ai donc pensé qu'au lieu de contrôler chaque servo, je ne pouvais contrôler que la position xyz du poignée et ouvrez-fermez la poignée, pour un total de 4 axes, 2 joysticks et 2 pouces ! J'ai découvert que ce problème est bien connu sous le nom de cinématique inverse, j'ai aussi découvert que c'est tout sauf facile. L'idée est d'écrire (non linéaires) pour trouver l'état de chaque effecteur (angles pour les servos) compte tenu de la position finale. J'ai téléchargé un document écrit à la main avec les équations, et je travaille actuellement sur un nouveau code pour les utiliser. Cela ne devrait pas être trop dur, je dois essentiellement lire les manettes, utiliser leurs lectures pour modifier les coordonnées xyz de la poignée, puis les donner à mes équations, calculer les angles des servos et les écrire.

Étape 5: AMÉLIORATIONS FUTURES:

Donc, je suis assez satisfait du résultat et considérant que je suis totalement nouveau dans l'électronique, ne pas exploser quelque chose ou moi-même était déjà une énorme victoire. Comme je l'ai dit au début, toute idée d'améliorations futures, à la fois logicielles et matériel, est plus que bienvenu!Jusqu'à présent, j'ai pensé à:1. Le potentiomètre pour modifier la « sensibilité » des joysticks.2. Nouveau code pour lui faire « enregistrer » certains mouvements et les refaire (peut-être plus vite et plus court que l'entrée humaine)3. Une sorte de saisie visuelle/à distance/vocale et la possibilité d'obtenir des objets sans que personne n'utilise les manettes4. Pouvoir dessiner des figures géométriques Une autre idée ? S'il vous plaît n'hésitez pas à commenter avec toutes les suggestions. Merci

Conseillé: