Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Automatisierter Lötroboterarm

Komponenten und Verbrauchsmaterialien

Schrittmotor 28BYJ-48 mit Treibermodul ULN2003
× 1
Arduino UNO
× 1
Servomotor TowerPro MG955
× 1
I2C SERIAL LCD 1602 MODULE
× 1
Stepdown-Modul
× 1
OpenBuilds NEMA 17 Schrittmotor
× 1

Notwendige Werkzeuge und Maschinen

Laserschneider (generisch)
Drehwerkzeug-Schneideinsatz-Set für Dremel

Apps und Onlinedienste

Arduino-IDE
Microsoft Visual Studio 2015

Über dieses Projekt

Einführung

Die Idee zu diesem Projekt kam mir zufällig, als ich nach den verschiedenen Fähigkeiten von Roboterarmen suchte, dann fand ich, dass es einige gibt, die diesen Anwendungsbereich abdecken (Automated Welding &Soldering Robotic Arm).

Eigentlich hatte ich schon Erfahrungen mit dem Bau ähnlicher Projekte, aber dieses Mal war das Projekt sehr nützlich und effektiv.

Bevor ich mich für die Form entschieden habe, habe ich viele Anwendungen und andere Projekte gesehen, insbesondere im Industriebereich. Open Source-Projekte haben mir sehr geholfen, die richtige und geeignete Form zu finden.

Das liegt an der Wissenschaft hinter der visuellen Ernährung unseres Gehirns.

Schritt 1:Design

Zuerst sah ich viele professionelle Projekte, die aufgrund der Komplexität nicht umgesetzt werden konnten.

Dann beschloss ich, mein eigenes Produkt zu entwickeln, das von den anderen Projekten inspiriert wurde, also habe ich Google Sketch up 2017 Pro verwendet. Jedes Teil wurde so konzipiert, dass es in einer bestimmten Reihenfolge nebeneinander montiert werden kann, wie im nächsten Bild gezeigt.

Und vor dem Zusammenbau musste ich die Teile testen und den passenden Lötkolben auswählen, dies geschah, indem ich ein virtuelles Finishing-Projekt als Leitfaden für mich zeichnete.

Diese Zeichnungen zeigen die tatsächliche lebensgroße Form der Endbearbeitung und die richtigen Abmessungen jedes Teils, um den richtigen Lötkolben auszuwählen.

Schritt 2:Betrieb und Installation

Während der Arbeit stieß ich auf einige Hindernisse, die wir darüber verkünden müssen.

1. Die Arme waren zu schwer, um von den kleinen Schrittmotoren gehalten zu werden, und wir haben dies in der nächsten Version oder dem Lasercut-Druck behoben.

2. Da das Modell aus Kunststoff bestand, war die Reibung der rotierenden Basis hoch und die Bewegungen waren nicht glatt.

Die erste Lösung bestand darin, einen größeren Schrittmotor zu kaufen, der das Gewicht und die Reibung tragen kann, und wir haben die Basis neu gestaltet, um einen größeren Schrittmotor zu passen.

Eigentlich hat das Problem immer noch stills und der größere Motor hat es nicht behoben, und das lag daran, dass die Reibung zwischen zwei Plastikflächen daneben wir den Pot nicht prozentual einstellen können. Die maximale Drehposition ist nicht der maximale Strom, den der Treiber bereitstellen kann. Sie müssen die vom Hersteller gezeigte Technik verwenden, bei der Sie die Spannung messen, während Sie den Topf drehen.

Dann habe ich das Basisdesign komplett geändert und einen Servomotor mit Metallgetriebe anstelle des Getriebemechanismus eingebaut.

3. Spannung

Das Arduino-Board kann entweder über die DC-Strombuchse (7 - 12V), den USB-Anschluss (5V) oder den VIN-Pin des Boards (7-12V) mit Strom versorgt werden. Die Spannungsversorgung über die 5-V- oder 3,3-V-Pins umgeht den Regler, und wir haben uns entschieden, ein spezielles USB-Kabel zu kaufen, das 5 Volt vom PC oder einem anderen Netzteil unterstützt.

Die Schrittmotoren und die anderen Komponenten funktionieren mit nur 5 Volt ordnungsgemäß und um die Teile vor Problemen zu schützen, reparieren wir das Step-Down-Modul.

Das Abwärtsmodul ist ein Abwärtswandler (Abwärtswandler) ist ein DC-zu-DC-Leistungswandler, der die Spannung (während er den Strom erhöht) von seinem Eingang (Versorgung) zu seinem Ausgang (Last) heruntersetzt und auch die Stabilität behält oder die Spannung.

Schritt 3:Änderungen

Nach einigen Modifikationen haben wir das Design des Modells geändert, indem wir die Armgröße reduziert und ein geeignetes Loch für das Servomotorgetriebe wie gezeigt gemacht haben.

Und beim Testen gelang es dem Servomotor, das Gewicht korrekt um 180 Grad zu drehen, da ein Mechanismus mit seinem hohen Drehmoment schwerere Lasten bewältigen kann. Wie viel Drehkraft ein Servomechanismus abgeben kann, hängt von Konstruktionsfaktoren ab – Versorgungsspannung, Wellendrehzahl usw.

Auch die Verwendung von I2c war schön, da nur zwei Pins verwendet werden und Sie mehrere i2c-Geräte auf dieselben zwei Pins setzen können. So könnten Sie zum Beispiel bis zu 8 LCD-Rucksäcke + LCDs alle auf zwei Pins haben! Die schlechte Nachricht ist, dass Sie den 'Hardware'-i2c-Pin verwenden müssen.

Schritt 4:Lötkolbenhalter oder Greifer

Der Greifer wurde mit einem Metallgetriebe-Servomotor befestigt, um das Gewicht des Lötkolbens zu tragen.

servo.attach(9, 1000, 2000);servo.write (beschränken (Winkel, 10, 160)); 

Zuerst hatten wir ein Hindernis, bei dem der Motor wackelte und vibrierte, bis wir einen kniffligen Code fanden, der Engel einschränkt.

Denn nicht alle Servos haben eine volle 180-Grad-Drehung. Viele tun es nicht.

Also haben wir einen Test geschrieben, um festzustellen, wo die mechanischen Grenzen liegen. Verwenden Sie servo.write Mikrosekunden anstelle von servo.write Das gefällt mir besser, da Sie 1000-2000 als Basisbereich verwenden können. Und viele Servos unterstützen außerhalb dieses Bereichs, von 600 bis 2400.

Also haben wir verschiedene Werte ausprobiert und sehen, woher Sie das Summen bekommen, das Ihnen sagt, dass Sie das Limit erreicht haben. Dann bleib nur beim Schreiben innerhalb dieser Grenzen. Sie können diese Grenzen einstellen, wenn Sie servo.attach (pin, min, max) verwenden

Finden Sie den wahren Bewegungsbereich und stellen Sie sicher, dass der Code nicht versucht, ihn über die Endanschläge hinauszuschieben. Die Arduino-Funktion Constrain() ist dafür nützlich.

Schritt 5:Codieren

Die Arduino-Umgebung mit Bibliotheken kann wie die meisten Programmierplattformen durch die Verwendung von Bibliotheken erweitert werden. Bibliotheken bieten zusätzliche Funktionen für die Verwendung in Skizzen, z. mit Hardware arbeiten oder Daten manipulieren. So verwenden Sie eine Bibliothek in einer Skizze.

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

Code

  • Stepper X Y Z-Code
Stepper X Y Z CodeArduino
#include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX(1, 2, 3); // 1 =Easy Driver Schnittstelle // UNO Pin 2 verbunden mit STEP Pin von Easy Driver // UNO Pin 3 verbunden mit DIR Pin von Easy Driver AccelStepper stepperZ (1, 5, 6); // 1 =Easy Driver Schnittstelle // UNO Pin 5 verbunden mit STEP Pin von Easy Driver // UNO Pin 6 verbunden mit DIR Pin von Easy DriverAccelStepper stepperY (7, 8, 9); // 1 =Easy Driver Schnittstelle // UNO Pin 5 verbunden mit STEP Pin von Easy Driver // UNO Pin 6 verbunden mit DIR Pin von Easy Driver // Stepper Travel Variableslong TravelX; // Wird verwendet, um den im Serial Monitorlong TravelZ eingegebenen X-Wert zu speichern; // Wird verwendet, um den im Serial Monitorlong TravelY eingegebenen Z-Wert zu speichern; // Wird verwendet, um den Y-Wert zu speichern, der im Serial Monitorint eingegeben wurde move_finished=1; // Wird verwendet, um zu überprüfen, ob der Umzug abgeschlossen istvoid setup () { Serial.begin (9600); // Starten Sie den seriellen Monitor mit einer Geschwindigkeit von 9600 Baud // Drucken Sie die Anweisungen auf dem seriellen Monitor bei Start Serial.println("Enter Travel Distance seperated by a comma:X,Z"); Serial.print ("Enter Move Values ​​Now:"); // Max. Geschwindigkeit und Beschleunigung jedes Steppers einstellen stepperX.setMaxSpeed ​​(500.0); // Maximale Geschwindigkeit der X-Achse einstellen stepperX.setAcceleration (500.0); // Beschleunigung der X-Achse stepperZ.setMaxSpeed(250.0); // Maximale Geschwindigkeit der Z-Achse für Rotation langsamer einstellen stepperZ.setAcceleration (250.0); // Beschleunigung der Z-Achse stepperY.setMaxSpeed(250.0); // Setze die maximale Geschwindigkeit der Y-Achse langsamer für die Rotation stepperY.setAcceleration (250.0); // Beschleunigung der Y-Achse}void loop () {while (Serial.available ()> 0) { // Prüfen, ob Werte im seriellen Puffer verfügbar sind move_finished=0; // Variable zum Prüfen der Bewegung des Steppers setzen TravelX=Serial.parseInt(); // Setzen Sie den ersten numerischen Wert aus dem Puffer in die TravelX-Variable Serial.print (TravelX); Serial.print ("X-Reise", "); TravelZ=Serial.parseInt(); // Setzen Sie den zweiten numerischen Wert aus dem Puffer in die TravelZ-Variable Serial.print (TravelZ); Serial.print ("Z-Reise", "); TravelY=Serial.parseInt(); // Setzen Sie den zweiten numerischen Wert aus dem Puffer in die TravelY-Variable Serial.print (TravelY); Serial.println ("Y-Reise"); stepperX.moveTo(TravelX); // Neue Bewegungsposition für X Stepper setzen stepperZ.moveTo(TravelZ); // Neue Bewegungsposition für Z Stepper setzen stepperY.moveTo(TravelY); // Neue Bewegungsposition für Z-Stepper-Verzögerung einstellen (1000); // Warten Sie 1 Sekunden, bevor Sie die Stepper Serial.print ("Moving Steppers in Position ..."); } // Prüfen, ob die Stepper die gewünschte Position erreicht haben if ((stepperX.distanceToGo() !=0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() !=0)) { stepperX .Lauf(); // Stepper X in Position bewegen stepperZ.run(); // Stepper Z in Position bewegen stepperY.run(); // Stepper y in Position bewegen} // Wenn die Bewegung abgeschlossen ist, wird eine Meldung auf dem Serial Monitor angezeigt if ((move_finished ==0) &&(stepperX.distanceToGo() ==0) &&(stepperZ.distanceToGo() ==0) &&(stepperY.distanceToGo () ==0)) {Serial.println ( "ABGESCHLOSSEN!"); Serial.println(""); Serial.println ( "Geben Sie die Werte für die nächste Bewegung ein (0,0,0 zum Zurücksetzen):"); // Machen Sie sich bereit für neue serielle Monitorwerte move_finished=1; // Bewegungsvariable zurücksetzen }}

Schaltpläne


Herstellungsprozess

  1. Makerarm:Ein megacooler Roboterarm für Maker
  2. Entwicklung von Motorsteuerungen für Robotersysteme
  3. Motorcontroller integriert Arm Cortex-M0-Kern
  4. Referenzdesign vereinfacht die Motorsteuerung von Industrierobotern
  5. Roboterarm:Wie wird er hergestellt?
  6. Roboterwaffen in der Fertigung und ihre Vorteile
  7. Servomotor für Roboterarm:Was wird passieren?
  8. Roboterzellen ermöglichen die automatisierte Bereitstellung von Teilen
  9. Roboterarmmarkt soll bis 2026 auf 14,78 Milliarden US-Dollar wachsen
  10. Der industrielle Roboterarm – ein Produktionsboom