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 à souder automatisé

Composants et fournitures

Moteur pas à pas 28BYJ-48 avec module pilote ULN2003
× 1
Arduino UNO
× 1
Servomoteur TowerPro MG955
× 1
MODULE I2C SÉRIE LCD 1602
× 1
Module Stepdown
× 1
Moteur pas à pas OpenBuilds NEMA 17
× 1

Outils et machines nécessaires

Coupe laser (générique)
Kit d'embouts de coupe pour outils rotatifs pour Dremel

Applications et services en ligne

Arduino IDE
Microsoft Visual Studio 2015

À propos de ce projet

Présentation

L'idée de ce projet m'est venue à l'esprit accidentellement lorsque je cherchais les différentes capacités des bras robotiques, puis j'ai découvert qu'il y en avait quelques-uns qui couvraient ce domaine d'utilisation (bras robotique de soudage et de soudage automatisé).

En fait, j'ai déjà eu une expérience dans la construction de projets similaires, mais cette fois, le projet était très utile et efficace.

Avant de décider de sa forme, j'ai vu beaucoup d'applications et d'autres projets, en particulier dans le domaine de l'industrie, les projets Open source m'ont beaucoup aidé à trouver la forme juste et appropriée.

C'est grâce à la science derrière l'alimentation visuelle de notre cerveau.

Étape 1 :Conception

Au début, j'ai vu beaucoup de projets professionnels qui n'ont pas pu être mis en œuvre à cause de leur complexité.

Puis j'ai décidé de voir faire mon propre produit en m'inspirant des autres projets, j'ai donc utilisé Google Sketch up 2017 pro. Chaque pièce a été conçue pour s'assembler les unes à côté des autres dans un ordre spécifique, comme le montre l'image suivante.

Et avant de l'assembler, j'ai dû tester les pièces et choisir le fer à souder approprié, cela s'est fait en dessinant un projet de finition virtuel comme guide pour moi.

Ces dessins montrent la forme grandeur nature de la finition et les dimensions correctes de chaque pièce pour choisir le bon fer à souder.

Étape 2 : exploitation et installation

Pendant le travail, j'ai rencontré des obstacles que nous devons annoncer à ce sujet.

1. Les bras étaient trop lourds pour être tenus par les petits moteurs pas à pas, et nous avons corrigé cela dans la prochaine version ou impression découpée au laser.

2. Parce que le modèle était en matière plastique, le frottement de la base rotative était élevé et les mouvements n'étaient pas fluides.

La première solution consistait à acheter un moteur pas à pas plus gros, capable de supporter le poids et la friction, et nous avons repensé la base pour l'adapter à un moteur pas à pas plus gros.

En fait, le problème persiste et le moteur plus gros ne l'a pas résolu, et c'est parce que le frottement entre deux surfaces en plastique à côté, nous ne pouvons pas ajuster le pot en pourcentage. La position de rotation maximale n'est pas le courant maximal que le driver peut fournir. Vous devez utiliser la technique indiquée par le fabricant, où vous mesurez la tension en tournant le pot.

Ensuite, j'ai décidé de changer totalement la conception de la base et de mettre un servomoteur avec un engrenage en métal au lieu d'un mécanisme d'engrenage.

3. tension

La carte Arduino peut être alimentée soit par la prise d'alimentation CC (7 - 12 V), le connecteur USB (5 V) ou la broche VIN de la carte (7-12 V). La tension d'alimentation via les broches 5V ou 3,3V contourne le régulateur, et nous avons décidé d'acheter un câble USB spécial prenant en charge le 5 volts du PC ou de toute alimentation électrique.

Ainsi, les moteurs pas à pas et les autres composants fonctionnent correctement avec seulement 5 volts et pour protéger les pièces de tout problème, nous réparons le module abaisseur.

Le module abaisseur est un convertisseur abaisseur (convertisseur abaisseur) est un convertisseur de puissance continu-continu qui abaisse la tension (tout en augmentant le courant) de son entrée (alimentation) à sa sortie (charge) et maintient également la stabilité ou la tension.

Étape 3 : Modifications

Après quelques modifications, nous avons modifié la conception du modèle en réduisant la taille des bras et en faisant un trou approprié pour l'engrenage du servomoteur, comme indiqué.

Et lors des tests, le servomoteur a réussi à faire pivoter le poids de 180 degrés correctement, car son couple élevé signifie qu'un mécanisme est capable de gérer des charges plus lourdes. La force de rotation qu'un servomécanisme peut produire dépend de facteurs de conception :tension d'alimentation, vitesse de l'arbre, etc.

L'utilisation d'I2c était également agréable car elle n'utilise que deux broches et vous pouvez placer plusieurs périphériques i2c sur les mêmes deux broches. Ainsi, par exemple, vous pourriez avoir jusqu'à 8 sacs à dos LCD + LCD tous sur deux broches ! La mauvaise nouvelle est que vous devez utiliser la broche i2c "matérielle".

Étape 4 :Support de fer à souder ou pince

La pince a été fixée à l'aide d'un servomoteur à engrenages métalliques pour supporter le poids du fer à souder.

servo.attach(9, 1000, 2000);servo.write (contrainte (angle, 10, 160)) ; 

Au début, nous avons eu un obstacle qui était le moteur qui tremblait et vibrait jusqu'à ce que nous trouvions un code délicat qui donne des contraintes aux anges.

Parce que tous les servos n'ont pas une rotation complète de 180 degrés. Beaucoup ne le font pas.

Nous avons donc écrit un test pour déterminer où se trouvent les limites mécaniques. Utilisez servo.write Microseconds au lieu de servo.write J'aime mieux cela car il vous permet d'utiliser 1000-2000 comme plage de base. Et de nombreux servos prendront en charge en dehors de cette plage, de 600 à 2400.

Nous avons donc essayé différentes valeurs et vu où vous obtenez le buzz qui indique que vous avez atteint la limite. Alors ne restez que dans ces limites lorsque vous écrivez. Vous pouvez définir ces limites lorsque vous utilisez servo.attach(pin, min, max)

Trouvez la véritable plage de mouvement et assurez-vous que le code n'essaie pas de le pousser au-delà des butées de fin de course, la fonction Arduino de contrainte () est utile pour cela.

Étape 5 :Codage

L'environnement Arduino utilisant des bibliothèques peut être étendu grâce à l'utilisation de bibliothèques, tout comme la plupart des plates-formes de programmation. Les bibliothèques offrent des fonctionnalités supplémentaires à utiliser dans les croquis, par ex. travailler avec du matériel ou manipuler des données. Pour utiliser une bibliothèque dans une esquisse.

#include AccelStepper.h#include MultiStepper.h#include Servo.h#include Wire.h #include LiquidCrystal_I2C.h 

Code

  • Code Steppers X Y Z
Code Steppers X Y ZArduino
#include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX(1, 2, 3); // 1 =interface Easy Driver // UNO Pin 2 connecté à la broche STEP d'Easy Driver // UNO Pin 3 connecté à la broche DIR d'Easy Driver AccelStepper stepperZ (1, 5, 6); // 1 =interface Easy Driver // UNO Pin 5 connecté à la broche STEP d'Easy Driver // UNO Pin 6 connecté à la broche DIR d'Easy DriverAccelStepper stepperY (7, 8, 9); // 1 =interface Easy Driver // UNO Pin 5 connecté à la broche STEP d'Easy Driver // UNO Pin 6 connecté à la broche DIR d'Easy Driver // Stepper Travel Variableslong TravelX; // Utilisé pour stocker la valeur X entrée dans le Serial Monitorlong TravelZ; // Utilisé pour stocker la valeur Z entrée dans le Serial Monitorlong TravelY; // Utilisé pour stocker la valeur Y entrée dans le Serial Monitorint move_finished=1; // Utilisé pour vérifier si le déplacement est terminévoid setup() { Serial.begin(9600); // Démarrez le moniteur série avec une vitesse de 9600 bauds // Imprimez les instructions sur le moniteur série au démarrage Serial.println ("Entrez la distance de déplacement séparée par une virgule :X,Z "); Serial.print ("Entrez les valeurs de déplacement maintenant : " ); // Définir la vitesse maximale et l'accélération de chaque pas à pas stepperX.setMaxSpeed ​​(500.0); // Définir la vitesse maximale de l'axe X stepperX.setAcceleration (500.0); // Accélération de l'axe X stepperZ.setMaxSpeed ​​(250.0); // Définir la vitesse maximale de l'axe Z plus lentement pour la rotation stepperZ.setAcceleration (250.0); // Accélération de l'axe Z stepperY.setMaxSpeed ​​(250.0); // Définir la vitesse maximale de l'axe Y plus lentement pour la rotation stepperY.setAcceleration (250.0); // Accélération de l'axe Y}void loop() {while (Serial.available()>0) { // Vérifiez si des valeurs sont disponibles dans le Serial Buffer move_finished=0; // Définir la variable pour vérifier le mouvement des Steppers TravelX=Serial.parseInt(); // Mettre la première valeur numérique du tampon dans la variable TravelX Serial.print(TravelX); Serial.print(" X Travel , "); TravelZ=Serial.parseInt(); // Place la deuxième valeur numérique du tampon dans la variable TravelZ Serial.print(TravelZ); Serial.print(" Voyage Z , "); TravelY=Serial.parseInt(); // Place la deuxième valeur numérique du tampon dans la variable TravelY Serial.print(TravelY); Serial.println(" Y Voyage "); stepperX.moveTo(TravelX); // Définir une nouvelle position de déplacement pour X Stepper stepperZ.moveTo(TravelZ); // Définir une nouvelle position de déplacement pour Z Stepper stepperY.moveTo(TravelY); // Définir une nouvelle position de déplacement pour le délai Z Stepper (1000); // Attendre 1 seconde avant de déplacer le Steppers Serial.print("Moving Steppers in position..."); }// Vérifiez si les Stepper ont atteint la position désirée if ((stepperX.distanceToGo() !=0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() !=0)) { stepperX .Cours(); // Déplacer Stepper X en position stepperZ.run(); // Déplacer Stepper Z en position stepperY.run(); // Déplacer le Stepper y en position }// Si le déplacement est terminé, afficher le message sur Serial Monitor if ((move_finished ==0) &&(stepperX.distanceToGo() ==0) &&(stepperZ.distanceToGo() ==0) &&(stepperY.distanceToGo() ==0)) { Serial.println("COMPLETED!"); Serial.println(""); Serial.println("Entrez les valeurs de déplacement suivant (0,0,0 pour la réinitialisation):"); // Préparez-vous pour les nouvelles valeurs du moniteur série move_finished=1; // Réinitialiser la variable de déplacement }}

Schémas


Processus de fabrication

  1. Makerarm :un bras robotique super cool pour les makers
  2. Conception de commandes de moteurs pour systèmes robotiques
  3. Le contrôleur de moteur intègre le noyau Arm Cortex-M0
  4. La conception de référence simplifie le contrôle de moteur robotique industriel
  5. Bras robotique :comment est-il fabriqué ?
  6. Les bras robotiques dans la fabrication et leurs avantages
  7. Les cellules robotisées permettent l'entretien automatisé des pièces
  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