Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Bras robotique contrôlé par PC

Composants et fournitures

Arduino Nano R3
× 1
Servos (Tower Pro MG996R)
× 4

Applications et services en ligne

Microsoft Visual Studio 2015
Arduino IDE

À propos de ce projet

J'ai toujours admiré les technologies de fabrication modernes et le rôle important joué par ces machines dans différents domaines de fabrication tels que :le levage de matériaux, l'installation et la collecte de pièces, le soudage et la découpe et enfin, la facilité d'utilisation dans les entrepôts.

Mon expérience dans la construction de ce bras de robot était un défi. Alors pour commencer, j'ai choisi un simple bras robotique conçu par fortzeroas en 2016, puis j'ai décidé de ne pas le contrôler à la main comme d'habitude.

Ainsi, en fonction de mon expérience en programmation, j'ai créé cette application d'automatisation pour contrôler entièrement le bras robotique, surveiller son mouvement, lui confier différentes tâches à accomplir.

Étape 1 : Matériel

Le matériau principal est le bois MDF et j'ai utilisé 2 mm pour la structure et 4 mm pour la base.

Les plans sont disponibles en téléchargement dans la dernière étape, vous devez imprimer le motif puis le coller directement sur MDF.

Découpez avec les contours et percez des trous. J'ai utilisé un outil rotatif pour percer et couper le bois, et pour la base je n'ai pas de plans mais je pense que vous pouvez improviser.

Étape 2 : Peinture et style

Pour donner au projet un aspect attrayant, j'ai utilisé les mêmes plans, puis j'ai conçu une couverture à l'aide de Photoshop pour créer des décalcomanies et des formes géométriques réalistes, puis je la colle sur du bois avec de la colle blanche.

Étape 3 :Assemblage du cadre

Ce bras robotique était simple à assembler car tout était prévu il y a donc il suffit de fixer les servomoteurs en place avec des vis, et tout en travaillant, j'ai fait des ajustements mineurs à faire.

Ensuite, pour fixer les côtés droit et gauche, j'ai utilisé des bâtons de bois épais et je les ai collés avec de la super colle à l'aide de longues vis pour réduire le poids.

Étape 4 :Pince (mécanisme de pincement)

Je plie une tige de deux métaux à l'aide d'une pince puis je perce un couloir à l'intérieur d'un morceau de bois de 3 mm d'épaisseur à l'aide d'un outil de perçage rotatif et le colle à la super colle.

Étape 5 : créer la base

La base est en bois MDF de 4 mm d'épaisseur, j'ai coupé un carré d'environ 17 cm * 10 cm avec une scie à table puis j'ai percé un hall pour asseoir le servomoteur de base 9g. pour réduire le frottement entre la base et le cylindre, j'ai découpé une partie de carton fort de 2,5 cm de hauteur et 10 cm de diamètre, puis je la perce également pour fixer l'arbre du servomoteur.

Étape 6 :Électronique

Lorsque vous utilisez plus de deux servos avec Arduino, vous devez utiliser une source d'alimentation externe pour eux, et dans ce projet j'ai utilisé trois micro servos 9g et un gros servomoteur.

Bien entendu le premier test de démonstration était virtuel sur tinkercad.com pour simuler les servos et tester le circuit électrique.

Donc, dans ce cas, j'ai utilisé 4 piles AA 1.5 v qui équivaut à 6 v, puis j'ai fait une configuration de test de maquette et après cela j'ai fait une station d'extension très simple pour Arduino nano.

Étape 7 : Code Arduino

1. Téléchargez et installez la dernière version d'Arduino IDE. Vous pouvez trouver la dernière version pour Windows, Linux ou MAC OSX sur le site Web d'Arduino :https://www.arduino.cc/en/main/software

2. Branchez votre carte Arduino au port USB.

3. Allez dans outils> tableau> puis choisissez votre tableau.

4. Copiez et collez le code dans l'éditeur IDE.

5. Vérifiez votre code en cliquant sur le bouton icône (✔).

6. Téléchargez le code sur votre tableau en cliquant sur le bouton icône (➤).

Étape 8 :Application d'automatisation

En fait, c'est ma partie préférée qui consiste à automatiser un projet Arduino à l'aide d'un PC. À mon avis, c'était un bon début pour apprendre à améliorer les capacités de contrôle de la carte et de tout autre projet à l'avenir.

Atteindre des positions à angles fixes n'était pas facile à faire, donc au début j'ai résolu ce problème en utilisant une application tierce nommée "Processing 3".

Au début, j'ai créé une interface prise en charge qui simule les servos du bras du robot (base, épaule, coude et pince) par clavier et les déplace séparément "angle par angle" jusqu'à ce qu'il atteigne une position fixe préparée précédemment.

Puis, lorsqu'il a atteint cette position préparée, j'enregistre ces quatre angles dans un tableau de code (A,B,C,D), puis j'ai utilisé ces tableaux multiples plus tard dans mon application Windows, cela m'a beaucoup aidé à connaître les limites de chaque servomoteur s'incline chacun à sa place.

Ces limites collectées, je les ai mises comme ligne directrice dans les barres latérales de l'interface utilisateur pour garder l'ARM sous contrôle et également pour prendre en charge la fonction de lecture.

Ainsi, en utilisant cette application, vous pouvez contrôler, enregistrer et surveiller le bras du robot comme suit :

1. Contrôle de mouvement :

Il existe deux modes de contrôle de ce bras robotisé, le premier est manuel en faisant glisser les barres de suivi qui contrôlent un servo spastique tel que

  • Pince :cliquez sur le bouton Ouvrir et fermer pour ouvrir et fermer la pince du robot.
  • Base :faites glisser la barre de suivi vers la droite et la gauche ou utilisez même les flèches du clavier (droite/gauche) pour déplacer la base vers la droite et la gauche.
  • Épaule :faites glisser la barre de suivi vers la droite et la gauche ou utilisez même les flèches du clavier (haut/bas) pour déplacer l'épaule de haut en bas.
  • Coude :faites glisser la barre de suivi vers la droite et la gauche ou utilisez même les touches du clavier (w/s) pour déplacer le moteur du coude de haut en bas.

2. Enregistrement de mouvement :

Une fois que vous souhaitez automatiser le mouvement du bras du robot, vous devez enregistrer la position à chaque étape en cliquant sur le bouton "Rec. Position" ou en appuyant sur (R) sur le clavier. Ensuite, l'application s'en occupera.

À chaque étape, vous enregistrez l'application détecte la position du moteur déplacé et l'enregistrez dans une liste séparément.

En cliquant sur le bouton "Démarrer l'ambiance automatique", l'application enverra ces positions enregistrées sous forme d'ordres de séquence.

3. Surveillance :

J'ai créé une interface graphique qui dessine chaque étape d'un graphique pour permettre à l'utilisateur de noter tout changement inhabituel pouvant se produire. en même temps, il y a un tableau de données sur le côté droit qui donne l'angle spécifique et l'heure précise de son mouvement.

Ainsi, en utilisant ces fonctionnalités, vous pouvez composer vos propres mouvements et les envoyer au bras robotique en tant que tâche, comme ils le font exactement dans l'automatisation de la fabrication.

Étape 9 :Mises à jour

Août 2018 :

Récemment, j'ai fait le même design après avoir ajouté quelques modifications sur une machine de découpe laser utilisant du MDF 3 mm. En fait, cette idée supplémentaire était cool, surtout lorsque j'y ai ajouté un joystick personnalisé.

Code

  • Task.ino
  • RobotArm.ino
Task.inoArduino
int delayT =350;void Home() //Appelez cette fonction lorsque vous souhaitez mettre le bras en position d'origine { MyServo0.write(valGripper); // Délai de préhension(15); MonServo.write(valBase); // délai de base(30); MonServo2.write(valShoulder); // épaule retard(30); MonServo3.write(valElbow); // coude retard(delayT); }void Pick() // Ceci est un lieu de sélection fixe. { MonServo.write(4); // délai de base (délaiT); MonServo3.write(125); // coude MonServo2.write(95); // épaule delay(delayT); MonServo0.write(50); // Gripper ouvert large delay(delayT); MonServo0.write(2) ; // Délai de fermeture de la pince (delayT); MonServo2.write(60); // épaule le petit MyServo3.write(80); // coude vers le haut peu delay(delayT); Serial.println("Objet choisi"); } void Drop() // Ceci est un emplacement de Drop fixe. { MonServo.write(145); // délai de base (délaiT); MonServo2.write(80); // retard d'épaule(15); MonServo3.write(115); // coude retard(delayT); MonServo0.write(40); // Gripper ouvert large delay(delayT); MonServo3.write(90); // coude vers le haut peu delay(delayT); Serial.println(F("Objet abandonné")); }void Playback() { // https://arduino.stackexchange.com/questions/1013/how-do-i-split-an-incoming-string // l'entrée DOIT être un tableau ( servoId :Position &servoId :Position &servoId :Position ) // Phrase de chaîne ; // phrase =String(phrase + ByteReceived); // convertir l'entrée char en agitation peut être fractionnée // Lire chaque paire de commandes char* command =strtok(ByteReceived, "&"); while (commande !=0) { // Divise la commande en deux valeurs char* separator =strchr(commande, ':'); if (separator !=0) { // En fait, divise la chaîne en 2 :remplacez ':' par 0 *separator =0; int servoId =atoi(commande); ++séparateur ; int angle =atoi(séparateur); // Faire quelque chose avec servoId et angle if (servoId =1) { MyServo.write(angle); retard(retardT); } else if (servoId =2) { MyServo2.write(angle); retard(retardT); } else if (servoId =3) { MyServo3.write(angle); retard(retardT); } } // Recherche la prochaine commande dans la chaîne d'entrée command =strtok(0, "&"); } } 
RobotArm.inoArduino
// écrit par AhmedAzouz#include Servo MyServo,MyServo2,MyServo3,MyServo0;char ByteReceived;int MyPosition,MyPosition2,MyPosition3,MyPositionG;int runCounter =0;int ledPin =A5;// définit le positions du servo d'origine par défaut int valGripper =30;int valBase =70;int valShoulder =25;int valElbow =150;void setup(){ Serial.begin(9600); pinMode(ledPin, SORTIE); digitalWrite(13,LOW); MonServo0.attach(12); // La pince attache MyServo.attach(11); // base attach MyServo2.attach(13); //l'épaule attache MyServo3.attach(10) ; // Attachement du coude// Définir les positions de démarrage MyServo0.write(valGripper); // Délai de préhension(15); MonServo.write(valBase); // délai de base(30); MonServo2.write(valShoulder); // épaule retard(30); MonServo3.write(valElbow); // coude delay(300);} void loop(){ Serial.print("Base :"); Serial.print(valBase); Serial.print("\t"); Serial.print("Shou :"); Serial.print(valShoulder); Serial.print("\t"); Serial.print("Coude :"); Serial.print(valElbow); Serial.print("\t"); Serial.print("Grip :"); Serial.println(valGripper); //if(Serial.available()) //Byte=Serial.read(); //le lire //{ while (Serial.available()> 0 ) { ByteReceived =Serial.read(); switch (ByteReceived) { // ************* Boîtier LED 'n':digitalWrite(ledPin,HIGH); //allumer la LED Serial.println("la LED est allumée"); Pause; cas 'f' :digitalWrite(ledPin,LOW); //éteint la LED Serial.println("La LED est éteinte"); Pause; // ************* Cas de base 'l' :MaPosition =MonServo.read() + 2; // L pour déplacer la base vers la gauche MyServo.write(MyPosition); Serial.print("Base"); Serial.print("\t"); Serial.println(MyServo.read()); retard (15); Pause; cas 'r' :MaPosition =MonServo.read() - 2 ; // R pour déplacer la base vers la droite MyServo.write(MyPosition); Serial.print("Base"); Serial.print("\t"); Serial.println( MyServo.read()); retard (15); Pause; // ************* Cas du coude 'u' :MyPosition2 =MyServo2.read() + 2; // U pour déplacer le coude vers le haut MyServo2.write(MyPosition2); Serial.print("Coude"); Serial.print("\t"); Serial.println(MyServo2.read()); retard (15); Pause; cas 'd' :MyPosition2 =MyServo2.read() - 2 ; // D pour déplacer le coude vers le bas MyServo2.write(MyPosition2); Serial.print("Coude"); Serial.print("\t"); Serial.println(MyServo2.read()); retard (15); Pause; // ************* Étui d'épaule 'w' :MyPosition3 =MyServo3.read() + 2; // W pour déplacer l'épaule vers le bas MyServo3.write(MyPosition3) ; Serial.print("Épaule"); Serial.print("\t"); Serial.println(MyServo3.read()); retard (15); Pause; cas 's' :MyPosition3 =MyServo3.read() - 2 ; // S pour déplacer Épaule vers le haut MyServo3.write(MyPosition3) ; Serial.print("Épaule"); Serial.print("\t"); Serial.println(MyServo3.read()); retard (15); Pause; // ************* Cas de la pince 'o' :MyServo0.write(30); // O pour ouvrir Gripper Serial.print("Gripper Open"); Serial.print("\t"); Serial.println(MyServo0.read()); retard (15); Pause; case 'c' :// C pour ouvrir Gripper MyServo0.write(1) ; Serial.print("Gripper Close"); Serial.print("\t"); Serial.println(MyServo0.read()); retard (15); Pause; // ************* Position de dépose par défaut (position de dépose rapide) case 'q':digitalWrite(ledPin,HIGH); Serial.println("Désactivé par défaut activé !"); Prendre(); Tomber(); Accueil(); digitalWrite (ledPin, LOW); Pause; // ************* Force Stop and go home position case 'h':Home(); digitalWrite (ledPin, LOW); Pause; // ************* L'humeur automatique s'exécute Fonction de lecture // lecture en série Doit être dans ce format :1:90&2:80&3:180 // le lieu de ramassage est fixe, cette fonction automatisera le dépôt position. par défaut : digitalWrite(ledPin,HIGH); Serial.println("Ambiance automatique activée!"); Prendre(); Relecture(); Accueil(); digitalWrite (ledPin, LOW); Pause; }}}

Pièces et boîtiers personnalisés

f98t2axin238k2n_khGWAEIqdl.skp

Schémas


Processus de fabrication

  1. Makerarm :un bras robotique super cool pour les makers
  2. Bras robotique :comment est-il fabriqué ?
  3. Les bras robotiques dans la fabrication et leurs avantages
  4. Bras industriels robotisés :une clé de la productivité
  5. Bras hydraulique robotique dans l'industrie manufacturière :un guide définitif
  6. Utiliser l'IoT pour contrôler à distance un bras robotique
  7. Bras robotique Arduino imprimé en 3D
  8. Le marché des bras robotiques devrait atteindre 14,78 milliards de dollars d'ici 2026
  9. Le bras robotique industriel - Un boom de la fabrication