Table des matières:

Bras robotique contrôlé par Arduino et PC : 10 étapes
Bras robotique contrôlé par Arduino et PC : 10 étapes

Vidéo: Bras robotique contrôlé par Arduino et PC : 10 étapes

Vidéo: Bras robotique contrôlé par Arduino et PC : 10 étapes
Vidéo: Bras robotique Arduino - Enregistre et reproduit les mouvements - Code et schéma 2024, Juillet
Anonim
Image
Image
La théorie derrière le projet
La théorie derrière le projet

Les bras robotiques sont largement utilisés dans l'industrie. Que ce soit pour des opérations de montage, la soudure ou même un est utilisé pour l'amarrage sur l'ISS (Station Spatiale Internationale), ils aident les humains dans le travail ou ils remplacent totalement les humains. Le bras que j'ai construit est une représentation plus petite du bras robotique censé être utilisé pour déplacer des objets. Il est contrôlé par arduino pro mini qui possède déjà une bibliothèque intégrée pour contrôler les servos. Les servos sont contrôlés par PWM (Pulse Width Modulation) qui n'est pas difficile à programmer mais cette bibliothèque le rend plus facile. L'utilisateur peut contrôler ces servos par des potentiomètres conçus pour agir comme des diviseurs de tension ou à partir d'un programme sur PC qui utilise 4 curseurs pour contrôler les servomoteurs.

Pour ce projet, j'ai dû concevoir mon PCB personnalisé et le fabriquer, créer des modèles 3D de bras et écrire du code qui contrôle tout. En plus de cela, j'ai codé un programme supplémentaire en python qui envoie des signaux à arduino qui parvient à décoder ce signal et à déplacer les servos vers la position définie par l'utilisateur.

Étape 1: La théorie derrière le projet

La théorie derrière le projet
La théorie derrière le projet

Arduino est génial en ce sens qu'il offre une bibliothèque gratuite avec laquelle travailler. Pour ce projet, j'ai utilisé la bibliothèque Servo.h qui facilite grandement le contrôle des servos.

Le servomoteur est contrôlé par PWM -Pulse Width Modulation- ce qui signifie que pour contrôler le servo, vous devez créer de courtes impulsions de tension. Le servo peut décoder la longueur de ce signal et tourner jusqu'à une position donnée. Et c'est là que j'ai utilisé la bibliothèque déjà mentionnée. Je n'ai pas eu à calculer la longueur du signal par moi-même, mais j'ai utilisé les fonctions de la bibliothèque auxquelles je passe simplement des paramètres en degrés et cela crée un signal.

Pour contrôler les servos, j'ai utilisé des potentiomètres qui agissent comme des diviseurs de tension. Les cartes Arduino ont plusieurs convertisseurs analogiques/numériques que j'ai utilisés pour le projet. Fondamentalement, arduino surveille la tension sur la broche centrale du potentiomètre et s'il tourne d'un côté, la tension est de 0 volts (valeur = 0) et de l'autre côté, elle est de 5 volts (valeur = 1023). Cette valeur est ensuite mise à l'échelle de la plage 0 - 1023 à 0 - 180, puis elle est transmise à la fonction déjà mentionnée.

Un autre sujet est la communication série avec arduino que je couvrirai brièvement. Fondamentalement, le programme écrit sur PC envoie la valeur choisie par l'utilisateur, arduino peut la décoder et déplacer le servo vers une position donnée

Étape 2: Conception de PCB

Conception de PCB
Conception de PCB
Conception de PCB
Conception de PCB
Conception de PCB
Conception de PCB

J'ai conçu 2 PCB - un pour le contrôle principal où se trouvent l'arduino et les broches pour les servos et le second sont des potentiomètres. La raison pour 2 PCB est que je voulais contrôler le bras robotique à distance de sécurité. Les deux circuits sont reliés par un câble de longueur donnée - dans mon cas 80 cm.

Pour la source d'alimentation, j'ai choisi un adaptateur externe car les servos que j'ai utilisés consomment beaucoup plus d'énergie que l'arduino ne peut en fournir. Comme vous pouvez le voir, il y a des condensateurs que je n'ai pas encore mentionnés. Ce sont des condensateurs utilisés pour la filtration. Comme vous le savez maintenant, le servomoteur est contrôlé par de courtes impulsions. Ces impulsions peuvent faire chuter la tension d'alimentation et les potentiomètres qui avaient auparavant une plage de 0 à 5 volts ont maintenant une plage plus petite. Cela signifie que la tension sur la broche centrale change et que l'arduino obtient cette valeur et modifie la position dans laquelle se trouve le servomoteur. Cela peut durer indéfiniment et provoquer des oscillations indésirables qui peuvent être éliminées par certains condensateurs parallèles à l'alimentation.

Étape 3: fabrication de circuits imprimés

Fabrication de PCB
Fabrication de PCB
Fabrication de PCB
Fabrication de PCB
Fabrication de PCB
Fabrication de PCB

Pour faire des PCB, je vous suggère de lire ceci.

J'ai utilisé la méthode du fer sur papier glacé et cela a très bien fonctionné.

Ensuite, j'ai soudé des pièces sur le PCB. Vous pouvez voir que j'ai utilisé une prise arduino au cas où j'en aurai besoin à l'avenir.

Étape 4: Conception du bras

Conception du bras
Conception du bras
Conception du bras
Conception du bras
Conception du bras
Conception du bras

Ce n'était en aucun cas la partie la plus difficile de la réalisation de ce projet.

L'ensemble de la configuration est composé de 8 pièces dont 4 ne sont pas des pièces mobiles - une boîte pour les potentiomètres et la base où se trouve l'arduino - et les quatre autres sont le bras lui-même. Je n'entrerai pas dans les détails, sauf que le design est assez intuitif et d'une certaine manière simple. Il est conçu pour s'adapter à mon PCB personnalisé et à mes servos que j'inclurai dans la liste des pièces.

Étape 5: Impression des pièces

Impression des pièces
Impression des pièces
Impression des pièces
Impression des pièces
Impression des pièces
Impression des pièces

Les pièces ont été imprimées sur l'imprimante Prusa. Certaines faces devaient être un peu meulées et des trous percés. De plus, les piliers de support devaient être retirés.

Étape 6: Tout assembler

Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble

Dans cette étape, comme le titre l'indique, j'ai tout mis en place.

Au début, j'ai soudé les fils sur les potentiomètres, puis ces fils sur le PCB. Les potentiomètres s'adaptent bien aux trous et j'ai collé à chaud le PCB sur les piliers qui ont été imprimés au fond de la boîte. Vous pouvez percer des trous dans la planche et dans la boîte, mais j'ai découvert que le coller était plus que suffisant. Ensuite, j'ai fermé les deux parties de la boîte et les ai fixées en position avec 4 vis qui s'insèrent dans les trous que j'ai conçus.

Dans l'étape suivante, j'ai fabriqué un câble plat pour connecter les deux cartes.

Dans la boîte principale, j'ai soudé les fils de la broche VCC du connecteur au commutateur, puis à Vcc de la carte et de GND de la carte à GND du connecteur. Ensuite, j'ai collé à chaud le connecteur en place et monté sur des piliers. Le connecteur s'insère directement dans le trou, donc aucune colle chaude n'est nécessaire.

Ensuite, à l'aide de vis, j'ai fixé le servo inférieur au fond de la boîte.

Après cela, j'ai mis la partie supérieure du boîtier sur la partie inférieure et comme pour le boîtier du potentiomètre, je l'ai fixé avec 4 vis.

La partie suivante était un peu délicate mais j'ai réussi à assembler le reste du bras avec divers écrous et coussinets et ce n'était pas aussi serré que prévu car j'ai conçu des tolérances entre les pièces, il est donc plus facile de travailler avec elles.

Et comme dernière étape, j'ai mis du ruban adhésif au fond des boîtes car sinon elles glisseraient.

Étape 7: Programmation d'Arduino

Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino

J'ai déjà mentionné comment le programme fonctionne en théorie derrière le projet, mais je vais le décomposer encore plus.

Donc, au début, nous devons définir certaines variables. La plupart du temps, il est copié 4 fois car nous avons 4 servos et à mon avis, il est inutile de faire une logique plus compliquée juste pour raccourcir un peu le programme.

Ensuite, il y a la configuration vide où les broches des servos sont définies.

Ensuite, il y a void loop - une partie du programme qui boucle à l'infini. Dans ce programme pièce, la valeur du potentiomètre la met à l'échelle et la met en sortie. Mais il y a un problème que la valeur du potentiomètre saute un peu, j'ai donc dû ajouter un filtre qui fait la moyenne des 5 dernières valeurs, puis il est mis en sortie. Cela empêche les oscillations indésirables.

La dernière partie du programme lit les données du port série et décide quoi faire en fonction des données envoyées.

Afin de bien comprendre le code, je vous suggère de visiter les sites Web officiels d'arduino.

Étape 8: Programmation en Python

Programmation en Python
Programmation en Python
Programmation en Python
Programmation en Python
Programmation en Python
Programmation en Python

Cette partie de ce projet n'est pas nécessaire mais je pense qu'elle ne fait que donner plus de valeur à ce projet.

Python propose des tonnes de bibliothèques gratuites, mais dans ce projet, j'utilise uniquement tkinter et serial. Tkinter est utilisé pour l'interface utilisateur graphique (GUI) et série, comme son nom l'indique, est utilisé pour la communication série.

Ce code crée une interface graphique avec 4 curseurs qui ont une valeur minimale de 0 et un maximum de 180. Cela peut vous indiquer qu'il est en degrés et que chaque curseur est programmé pour contrôler un servo. Ce programme est assez simple - il prend la valeur et l'envoie à arduino. Mais la façon dont il envoie est intéressante. Si vous choisissez de changer la valeur du premier servo à 123 degrés, il l'envoie à la valeur arduino 1123. Le premier nombre de chaque nombre envoyé indique quel servo est sur le point d'être contrôlé. Arduino a un code qui peut décoder cela et déplacer le bon servo.

Étape 9: Liste des pièces

Liste des pièces
Liste des pièces
  • Arduino Pro Mini 1 pièce
  • Servo FS5106B 1 pièce
  • Servo Futaba S3003 2 pièces
  • En-tête de broche 2x5 1 pièce
  • En-tête de broche 1x3 6 pièces
  • Condensateur 220uF 3 pièces
  • Micro Servo FS90 1 pièce
  • Connecteur AWP-10 2 pièces
  • Connecteur FC681492 1 pièce
  • Interrupteur P-B100G1 1 pièce
  • Prise 2x14 1 pièce
  • TTL-232R-5v - convertisseur 1 pièce
  • Potentiomètre B200K 4 pièces
  • et bien d'autres vis, plaquettes et écrous

Étape 10: Réflexions finales

Merci d'avoir lu ceci et j'espère que je vous ai au moins motivé. Il s'agit de mon premier grand projet que j'ai fait tout seul sans copier des trucs d'Internet et le premier post instructables. Je sais que le bras pourrait être amélioré mais j'en suis satisfait pour le moment. Toutes les pièces et tous les codes sources sont gratuits, vous pouvez les utiliser et les modifier comme vous le souhaitez. Si vous avez des questions, n'hésitez pas à les poser dans la section commentaires. Vous pouvez également regarder les vidéos, elles ne sont pas de grande qualité mais elles montrent la fonctionnalité du projet.

Conseillé: