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

PC-gesteuerter Roboterarm

Komponenten und Verbrauchsmaterialien

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

Apps und Onlinedienste

Microsoft Visual Studio 2015
Arduino-IDE

Über dieses Projekt

Ich habe immer die modernen Fertigungstechnologien und die wichtige Rolle bewundert, die diese Maschinen in verschiedenen Fertigungsbereichen spielen, wie zum Beispiel:Heben von Materialien, Montieren und Sammeln von Teilen, Schweißen und Schneiden und nicht zuletzt ihre Verwendbarkeit in Lagerhallen.

Meine Erfahrung beim Bau dieses Roboterarms war eine Herausforderung. Also wähle ich als Anfang einen einfachen Roboterarm, der 2016 von fortzeroas entworfen wurde, dann habe ich mich entschieden, ihn nicht wie üblich von Hand zu steuern.

Aufgrund meiner Programmierkenntnisse habe ich diese Automatisierungsanwendung erstellt, um den Roboterarm vollständig zu steuern, seine Bewegung zu überwachen und ihm verschiedene Aufgaben zu geben.

Schritt 1:Material

Das Hauptmaterial ist MDF-Holz und ich habe 2 mm für die Struktur und 4 mm für die Basis verwendet.

Blaupausen stehen im letzten Schritt zum Download bereit, Sie müssen das Muster ausdrucken und dann direkt auf MDF kleben.

Schneiden Sie entlang der Konturen und bohren Sie Löcher. Ich habe ein Drehwerkzeug verwendet, um das Holz zu bohren und zu schneiden, und für die Basis habe ich keine Blaupausen, aber ich denke, Sie können improvisieren.

Schritt 2:Malen und Styling

Um dem Projekt ein attraktives Aussehen zu verleihen, habe ich die gleichen Blaupausen verwendet, dann mit Photoshop ein Cover entworfen, um einige Abziehbilder und geometrische Formen zu erstellen, die realistisch aussehen, und dann mit Weißleim auf Holz geklebt.

Schritt 3:Rahmenmontage

Dieser Roboterarm war einfach zu montieren, weil alles im Voraus geplant wurde, also befestigen Sie einfach die Servomotoren mit Schrauben, und während der Arbeit habe ich kleinere Optimierungen vorgenommen.

Um dann die rechte und linke Seite zu befestigen, habe ich dicke Holzstäbe verwendet und sie mit Sekundenkleber anstelle von langen Schrauben geklebt, um das Gewicht zu reduzieren.

Schritt 4:Greifer (Klemmmechanismus)

Ich biege einen zwei Metallstab mit einer Zange, dann bohre ich eine Halle in ein Stück Holz 3 mm dick mit einem Drehwerkzeugbohrer und klebe es mit Sekundenkleber.

Schritt 5:Basis herstellen

Basis ist aus 4 mm dickem MDF-Holz, ich schneide quadratisch ca. 17cm * 10cm mit Tischsäge und bohre dann eine Halle, um den Basis-Servomotor 9g zu sitzen. Um die Reibung zwischen Basis und Zylinder zu reduzieren, schneide ich ein Teil der starken Kartondose 2,5cm Höhe &10cm Durchmesser, dann bohre ich es auch um die Servomotorwelle zu befestigen.

Schritt 6:Elektronik

Wenn Sie mehr als zwei Servos mit Arduino verwenden, müssen Sie eine externe Stromquelle dafür verwenden, und in diesem Projekt habe ich drei . verwendet Mikroservos 9g und eins großer Servomotor.

Natürlich war der erste Demonstrationstest virtuell auf tinkercad.com, um die Servos zu simulieren und den Stromkreis zu testen.

In diesem Fall habe ich also 4 Batterien AA 1,5 V verwendet, die 6 V entsprechen, dann habe ich ein Steckbrett-Test-Setup erstellt und danach ein sehr einfaches Erweiterungsdock für Arduino nano gemacht.

Schritt 7:Arduino-Code

1. Laden Sie die neueste Version der Arduino IDE herunter und installieren Sie sie. Sie finden die neueste Version für Windows, Linux oder MAC OSX auf der Arduino-Website:https://www.arduino.cc/en/main/software

2. Schließen Sie Ihr Arduino-Board an den USB-Port an.

3. Gehe zu Tools> Board> und wähle dann dein Board aus.

4. Kopieren Sie den Code und fügen Sie ihn in den IDE-Editor ein.

5. Bestätigen Sie Ihren Code, indem Sie auf die Symbolschaltfläche (✔) klicken.

6. Laden Sie den Code in Ihr Board hoch, indem Sie auf die Symbolschaltfläche (➤) klicken.

Schritt 8:Automatisierungsanwendung

Eigentlich ist dies mein Lieblingsteil, ein Arduino-Projekt mit dem PC zu automatisieren. Meiner Meinung nach war es ein guter Anfang, um zu lernen, wie man die Fähigkeiten zur Steuerung des Boards und jedes anderen Projekts in der Zukunft verbessern kann.

Das Erreichen einer festen Winkelposition war nicht einfach, also habe ich dieses Problem anfangs gelöst, indem ich eine Drittanbieteranwendung namens "Processing 3" verwendet habe.

In der Anfangsphase habe ich eine unterstützte Schnittstelle erstellt, die die Roboterarmservos (Basis, Schulter, Ellbogen und Greifer) per Tastatur simuliert und sie separat "Winkel für Winkel" bewegt, bis sie eine zuvor vorbereitete feste Position erreicht haben.

Dann, als es diese vorbereitete Position erreichte, zeichne ich diese vier Winkel in einem Code-Array (A, B, C, D) auf. Dann habe ich diese Multi-Arrays später in meiner Windows-Anwendung verwendet, es hat mir sehr geholfen, die Grenzen von zu kennen jeder Servomotor winkelt jeden an seiner Stelle an.

Diese gesammelten Limits habe ich als Richtlinie in die Seitenleisten der Benutzeroberfläche eingefügt, um den ARM unter Kontrolle zu halten und auch die Wiedergabefunktion zu unterstützen.

Durch die Verwendung dieser Anwendung können Sie den Roboterarm wie folgt steuern, aufzeichnen und überwachen:

1. Bewegungssteuerung:

Es gibt zwei Möglichkeiten, diesen Roboterarm zu steuern, die erste ist manuell durch Ziehen der Spurstangen, die ein spastisches Servo wie

. steuern
  • Greifer:Klicken Sie auf die Schaltfläche Öffnen und Schließen, um den Robotergreifer zu öffnen und zu schließen.
  • Basis:Ziehen Sie die Tracking-Leiste nach rechts und links oder verwenden Sie sogar die Tastaturpfeile (rechts/links), um die Basis nach rechts und links zu bewegen.
  • Schulter:Ziehen Sie die Tracking-Leiste nach rechts und links oder verwenden Sie sogar die Tastaturpfeile (nach oben/unten), um die Schulter nach oben und unten zu bewegen.
  • Ellbogen:Ziehen Sie die Tracking-Leiste nach rechts und links oder verwenden Sie sogar die Tastaturtasten (w/s), um den Ellbogenmotor nach oben und unten zu bewegen.

2. Bewegungsaufzeichnung:

Wenn Sie die Bewegung des Roboterarms automatisieren möchten, müssen Sie die Position in jedem Schritt aufzeichnen, indem Sie auf die Schaltfläche "Rec. Position" klicken oder (R) auf der Tastatur drücken. Dann kümmert sich die Anwendung darum.

Bei jedem Schritt zeichnen Sie auf, die Anwendung erkennt die bewegte Motorposition und speichert sie separat in einer Liste.

Durch Klicken auf die Schaltfläche "Automood starten" sendet die Anwendung diese gespeicherten Positionen in Form von Sequenzaufträgen.

3. Überwachung:

Ich habe eine grafische Benutzeroberfläche erstellt, die jeden Schritt in einem Diagramm zeichnet, damit der Benutzer jede ungewöhnliche Änderung notieren kann. Gleichzeitig gibt es auf der rechten Seite eine Datentabelle, die den spezifischen Winkel und die genaue Zeit für seine Bewegung angibt.

Mit diesen Funktionen können Sie also Ihre eigenen Bewegungen zusammenstellen und als Aufgabe an den Roboterarm senden, wie sie es in der Fertigungsautomatisierung tun.

Schritt 9:Aktualisierungen

August 2018:

Vor kurzem habe ich das gleiche Design gemacht, nachdem ich einige Modifikationen an einer Laserschneidmaschine mit 3 mm MDF vorgenommen hatte. Eigentlich war diese zusätzliche Idee cool, besonders wenn ich einen Custom Joystick hinzugefügt habe.

Code

  • Task.ino
  • RobotArm.ino
Task.inoArduino
int delayT =350;void Home () // Rufen Sie diese Funktion auf, wenn Sie den Arm in die Ausgangsposition setzen möchten { MyServo0.write (valGripper); // Greiferverzögerung (15); MyServo.write(valBase); // Basisverzögerung (30); MyServo2.write(valShoulder); // Schulterverzögerung (30); MyServo3.write(valElbow); // Ellenbogenverzögerung (delayT); }void Pick() // Dies ist ein fester Pickplatz. { MyServo.write(4); // Basisverzögerung (delayT); MyServo3.write(125); // Ellenbogen MyServo2.write (95); // Schulterverzögerung (delayT); MyServo0.write(50); // Greifer weit geöffnet delay (delayT); MyServo0.write(2); // Greifer schließen Verzögerung (delayT); MyServo2.write(60); // Kleines MyServo3.write (80) schultern; // Ellenbogen hoch wenig Verzögerung (delayT); Serial.println ("Objekt ausgewählt"); }void Drop() // Dies ist ein fester Drop-Platz. { MyServo.write(145); // Basisverzögerung (delayT); MyServo2.write(80); // Schulterverzögerung (15); MyServo3.write(115); // Ellenbogenverzögerung (delayT); MyServo0.write(40); // Greifer weit geöffnet delay (delayT); MyServo3.write(90); // Ellenbogen hoch wenig Verzögerung (delayT); Serial.println (F ("Objekt gelöscht")); }void Playback() {// https://arduino.stackexchange.com/questions/1013/how-do-i-split-an-incoming-string // Eingabe MUSS Array sein (servoId:Position &servoId:Position &servoId :Position ) // String-Phrase; // Phrase =String(Phrase + ByteReceived); // die char-Eingabe in Rühren umwandeln kann geteilt werden // Jedes Befehlspaar lesen char* command =strtok(ByteReceived, "&"); while (Befehl !=0) { // Befehl in zwei Werte aufteilen char* Trennzeichen =strchr(Befehl, ':'); if (separator !=0) { // Den String tatsächlich in 2 teilen:':' durch 0 ersetzen *separator =0; int servoId =atoi (Befehl); ++Trennzeichen; int Winkel =Atoi (Trennzeichen); // Mach etwas mit servoId und angle if (servoId =1) { MyServo.write (angle); Verzögerung (VerzögerungT); aufrechtzuerhalten. Sonst if (servoId =2) { MyServo2.write (Winkel); Verzögerung (VerzögerungT); aufrechtzuerhalten. Sonst if (servoId =3) { MyServo3.write (Winkel); Verzögerung (VerzögerungT); } } // Finde den nächsten Befehl in der Eingabe string command =strtok(0, "&"); } } 
RobotArm.inoArduino
// geschrieben von AhmedAzouz#include Servo MyServo,MyServo2,MyServo3,MyServo0;char ByteReceived;int MyPosition,MyPosition2,MyPosition3,MyPositionG;int runCounter =0;int ledPin =A5;// set the Standard-Home-Servopositionen int valGripper =30;int valBase =70;int valShoulder =25;int valElbow =150;void setup () { Serial.begin (9600); pinMode (ledPin, AUSGANG); digitalWrite(13,LOW); MyServo0.attach(12); // Greifer befestigen MyServo.attach(11); // Basisanhang MyServo2.attach(13); // Schulter anbringen MyServo3.attach (10); // Ellbogen anbringen // Startpositionen festlegen MyServo0.write (valGripper); // Greiferverzögerung (15); MyServo.write(valBase); // Basisverzögerung (30); MyServo2.write(valShoulder); // Schulterverzögerung (30); MyServo3.write(valElbow); // Ellenbogenverzögerung (300);} Void Schleife () {Serial.print ( "Base:"); Serial.print (valBase); Serial.print("\t"); Serial.print ("Shou:"); Serial.print (valShoulder); Serial.print("\t"); Serial.print ( "Ellbogen:"); Serial.print (valElbow); Serial.print("\t"); Serial.print("Griff:"); Serial.println (valGripper); //if(Serial.available()) //Byte=Serial.read(); // Lesen Sie es // { Während (Serial.available ()> 0) { ByteReceived =Serial.read (); Schalter (ByteReceived) {// ************* LED Fall 'n':digitalWrite (ledPin,HIGH); // LED einschalten Serial.println ("LED ist an"); brechen; Fall 'f':digitalWrite(ledPin,LOW); // LED ausschalten Serial.println ("LED ist aus"); brechen; // ************* Basisfall 'l':MyPosition =MyServo.read() + 2; // L für Basis nach links verschieben MyServo.write(MyPosition); Serial.print ("Basis"); Serial.print("\t"); Serial.println (MyServo.read ()); Verzögerung (15); brechen; Fall 'r':MyPosition =MyServo.read() - 2; // R für Basis nach rechts verschieben MyServo.write(MyPosition); Serial.print ("Basis"); Serial.print("\t"); Serial.println (MyServo.read()); Verzögerung (15); brechen; // ************* Ellenbogenfall 'u':MyPosition2 =MyServo2.read() + 2; // U für Ellbogen nach oben bewegen MyServo2.write (MyPosition2); Serial.print ("Ellbogen"); Serial.print("\t"); Serial.println (MyServo2.read ()); Verzögerung (15); brechen; Fall 'd':MyPosition2 =MyServo2.read() - 2; // D für Ellbogen nach unten bewegen MyServo2.write (MyPosition2); Serial.print ("Ellbogen"); Serial.print("\t"); Serial.println (MyServo2.read ()); Verzögerung (15); brechen; // ************* Schultertasche 'w':MyPosition3 =MyServo3.read() + 2; // W für Schulter nach unten bewegen MyServo3.write (MyPosition3); Serial.print ("Schulter"); Serial.print("\t"); Serial.println (MyServo3.read ()); Verzögerung (15); brechen; Fall 's':MyPosition3 =MyServo3.read() - 2; // S für Schulter nach oben bewegen MyServo3.write (MyPosition3); Serial.print ("Schulter"); Serial.print("\t"); Serial.println (MyServo3.read ()); Verzögerung (15); brechen; // ************* Greiferkoffer 'o':MyServo0.write(30); // O zum Öffnen von Gripper Serial.print ("Gripper Open"); Serial.print("\t"); Serial.println (MyServo0.read ()); Verzögerung (15); brechen; case 'c':// C um Gripper zu öffnen MyServo0.write(1); Serial.print ("Greifer schließen"); Serial.print("\t"); Serial.println (MyServo0.read ()); Verzögerung (15); brechen; // ************* Default Dropped Position (Quick Drop Position) case 'q':digitalWrite(ledPin,HIGH); Serial.println ( "Standard gelöscht aktiviert!"); Wählen(); Fallen(); Heim(); digitalWrite (ledPin, LOW); brechen; // ************* Stopp erzwingen und in die Ausgangsposition gehen case 'h':Home(); digitalWrite (ledPin, LOW); brechen; // ************* Automatische Stimmung läuft Playback-Funktion // Serial Read Muss in diesem Format sein:1:90&2:80&3:180 // Abholort ist fest, diese Funktion automatisiert den Drop Position. Vorgabe:digitalWrite(ledPin,HIGH); Serial.println ("Automatische Stimmung aktiviert!"); Wählen(); Wiedergabe(); Heim(); digitalWrite (ledPin, LOW); brechen; }}}

Kundenspezifische Teile und Gehäuse

f98t2axin238k2n_khGWAEIqdl.skp

Schaltpläne


Herstellungsprozess

  1. Makerarm:Ein megacooler Roboterarm für Maker
  2. Roboterarm:Wie wird er hergestellt?
  3. Roboterwaffen in der Fertigung und ihre Vorteile
  4. Industrielle Roboterarme:Ein Schlüssel zur Produktivität
  5. Hydraulischer Roboterarm in der Fertigungsindustrie:Ein definitiver Leitfaden
  6. Einsatz des IoT zur Fernsteuerung eines Roboterarms
  7. Arduino 3D-gedruckter Roboterarm
  8. Nunchuk-gesteuerter Roboterarm (mit Arduino)
  9. Roboterarmmarkt soll bis 2026 auf 14,78 Milliarden US-Dollar wachsen
  10. Der industrielle Roboterarm – ein Produktionsboom