Inhaltsverzeichnis:

Drahtgesteuerter Roboterarm - Gunook
Drahtgesteuerter Roboterarm - Gunook

Video: Drahtgesteuerter Roboterarm - Gunook

Video: Drahtgesteuerter Roboterarm - Gunook
Video: 以色列組建Nili復仇小隊!打擊哈馬斯精銳部隊!哈馬斯威脅以軍停止行動!以色列特種兵實力!世界排名!|努赫巴|以哈衝突|第13突擊隊|特種部隊|加沙地道| 2024, November
Anonim
Drahtgesteuerter Roboterarm
Drahtgesteuerter Roboterarm

Dies ist ein Tutorial, wie man einen Roboterarm herstellt, der durch Drähte gesteuert wird. Der Vorteil der Verwendung von Kabeln besteht darin, dass Ihr Arm leichter ist und Sie alle Ihre Motoren an der Unterseite Ihres Arms haben können, was den Bau und die Wartung erleichtert. Hier ist ein Video des Arms in Aktion. Ich habe vor, in Zukunft eine Klaue hinzuzufügen, damit sie Dinge aufnehmen und nicht nur herumschieben kann.

3D-Drucke:

Hier und Hier

Lieferungen

6 Servomotoren (MG995)

Arduino Uno

ca. 6 Meter kunststoffbeschichteter Stahldraht (0,5 mm)

Box 23x33x10 (kann schmaler sein, sollte definitiv nicht kürzer sein)

Holzbrett 33x10

Muttern und Schrauben

Rohr 14 cm (wird zur Führung der Saiten benötigt)

4 L-Halterungen

5-Volt-Adapter

2 7-polige Klemmenblöcke

Steckbrettdrähte

3D-gedruckte Komponenten (Nicht von mir entworfen, Links zu Elementen in der Beschreibung):

3 „Schrauben“

2 „Element 1“

1 „Element 2“

2 „Element 3“

1 Basisanschluss

Schritt 1: Drucken Sie alle 3D-Komponenten

Möglicherweise benötigen Sie Unterstützung für die Schraubenlöcher und Bögen, aber stellen Sie sicher, dass Sie den Körper Ihrer Komponenten nicht unterstützen. Dadurch werden die kleinen Drahtlöcher geschlossen und Sie müssen neue Löcher bohren

Schritt 2: (Optional) Befestigen Sie ein Holzbrett an der Unterseite Ihrer Box, um sie zu verstärken

Meine Box war ziemlich schwach, deine vielleicht nicht

Schritt 3: Messen und schneiden Sie eine Holzplanke, um die Box zu passen

Schritt 4: Markieren Sie die Positionen der Motoren

Achte darauf, dass sich keiner der Arme berührt

Schritt 5: Markieren Sie die Positionen der Halterungen und des Rohres

Markieren Sie die Positionen der Halterungen und des Rohres
Markieren Sie die Positionen der Halterungen und des Rohres

Das Rohr sollte etwa einen Zentimeter vor dem Loch platziert werden

Schritt 6: Bohren Sie ein Loch für die Kabel, die aus Ihrer Box kommen (USB und Strom)

Bohren Sie ein Loch für die Kabel, die aus Ihrer Box kommen (USB und Strom)
Bohren Sie ein Loch für die Kabel, die aus Ihrer Box kommen (USB und Strom)

Schritt 7: Bohren und sägen Sie alle markierten Löcher

Bohren und sägen Sie alle markierten Löcher
Bohren und sägen Sie alle markierten Löcher

Schritt 8: Befestigen Sie die Motoren und das Rohr an der Planke

Schritt 9: Befestigen Sie die Planke mit den L-Klammern an der Box

Schritt 10: Nehmen Sie Ihre Klemmenblöcke und löten Sie die Drähte zusammen

Nehmen Sie Ihre Klemmenblöcke und löten Sie die Drähte zusammen
Nehmen Sie Ihre Klemmenblöcke und löten Sie die Drähte zusammen

Schritt 11: Schneiden Sie das Ende des Adapter-Netzkabels ab und isolieren Sie die Drähte

Schritt 12: Identifizieren und markieren Sie die Plus- und Minusdrähte

Schritt 13: Befestigen Sie die Drähte an den Klemmenblöcken, so dass alle + Servodrähte und die + Draht vom Netzkabel verbunden sind, Gleiches gilt für die - Drähte

Befestigen Sie die Drähte an den Klemmenblöcken, so dass alle + Servodrähte und die + Draht vom Netzkabel verbunden sind, das gleiche gilt für die - Drähte
Befestigen Sie die Drähte an den Klemmenblöcken, so dass alle + Servodrähte und die + Draht vom Netzkabel verbunden sind, das gleiche gilt für die - Drähte

Schritt 14: Schneiden Sie den Kopf von einem Breadboard-Draht ab

Schneiden Sie den Kopf von einem Breadboard-Draht ab
Schneiden Sie den Kopf von einem Breadboard-Draht ab

Befestigen Sie das abisolierte Ende des Steckbrettkabels an der Minus-Klemme und das Stiftende an den Erdungsstift in Ihrem Arduino. Wenn Sie dies nicht tun, bewegen sich die Motoren ohne Eingaben unregelmäßig.

Schritt 15: Bohren Sie drei Löcher in den Boden der Box für die Drähte, die aus Ihrem Arm kommen

Die Löcher sollten mit den Löchern im Basisanschluss übereinstimmen.

Schritt 16: Befestigen Sie den Basisanschluss an der Box

Befestigen Sie den Basisanschluss an der Box
Befestigen Sie den Basisanschluss an der Box

Schritt 17: Verwenden Sie ein Messer oder eine Nagelfeile, um die Drahtrillen tiefer zu machen

Verwenden Sie ein Messer oder eine Nagelfeile, um die Drahtrillen tiefer zu machen
Verwenden Sie ein Messer oder eine Nagelfeile, um die Drahtrillen tiefer zu machen

Die Drahtrillen für Element 2 und 3 sind zu flach.

Schritt 18: Konstruieren Sie den Arm

Konstruiere den Arm
Konstruiere den Arm

Konstruieren Sie den Arm gemäß den Anweisungen hier. Möglicherweise müssen Sie die Teile feilen, damit sie passen

Schritt 19: Verarbeitung und Arduino installieren

Verarbeitung und Arduino

Schritt 20: Fügen Sie die Codeprogramme ein

Der Code ist unten auf dieser Seite

Schritt 21: Verbinden Sie die Servo Control Pins mit dem Arduino

Verbinden Sie die Servo Control Pins mit dem Arduino
Verbinden Sie die Servo Control Pins mit dem Arduino

Ich habe den ersten Motor an den dritten digitalen Pin angeschlossen, den zweiten Motor an den vierten digitalen Pin und so weiter. Stellen Sie sicher, dass der Erdungsstift noch mit dem - Klemmenblock verbunden ist.

Schritt 22: Drücken Sie die Reset-Taste in der Verarbeitung, dadurch werden alle Arme auf 90 Grad eingestellt

Schritt 23: Befestigen Sie die Servoarme horizontal am Motor

Schritt 24: Fädeln Sie die Drähte durch die Arme, damit kein Durchhängen entsteht

Stellen Sie sicher, dass Sie den Draht durch so viele Löcher wie möglich fädeln, dies hält ihn vorübergehend und lässt sich leicht entfernen.

Schritt 25: Testen Sie den Arm und ziehen oder lösen Sie die Drähte nach Bedarf

Schritt 26: Heißkleben Sie die Drähte an die Servoarme, um sie dauerhaft zu machen

Schritt 27: Notizen

Anmerkungen
Anmerkungen

Ich habe 0,5 mm Schmuckdraht verwendet, aber 0,4 mm sollten in Ordnung sein. Das ursprüngliche Design verwendete PVC-Draht, aber das brach zu leicht und war schwer zu verarbeiten.

Wenn Sie den Arm in einem Auto oder Fahrrad bewegen möchten, wickeln Sie die Armgelenke mit Klebeband ein, um sicherzustellen, dass sie nicht herausspringen. Dies ist besonders wichtig für Element 1.

Als ich dieses Projekt anfing, fragte ich mich, warum ich nur ein Tutorial finden konnte, wie man einen durch Drähte gesteuerten Arm herstellt. Jetzt verstehe ich, warum dies nicht die häufigste Art ist, einen Hobby-Roboterarm herzustellen. Die Drähte fallen manchmal aus ihren Rillen und das Ganze ist irgendwie fadenscheinig. Ich weiß nicht, ob die Probleme daran liegen, dass ich nicht viel Erfahrung habe oder ob die ganze Idee problematisch ist, obwohl ich sicher bin, dass es solider wäre, wenn ich wüsste, was ich tue.

Schritt 28: Fehlerbehebung

Die Drahtlöcher werden in den 3D-gedruckten Elementen verschlossen:

Sie haben die Unterstützung für das gesamte Element anstelle nur der Schraubenlöcher hinzugefügt. Drucken Sie das Element entweder neu oder öffnen Sie die Löcher mit einer richtig heißen Nadel.

Der COM-Port ist geschlossen, Sie können nicht mit dem Arduino kommunizieren:

Ihr Arduino akzeptiert möglicherweise keine USB 3-Anschlüsse (meiner nicht), Sie können entweder ein USB 2-Verlängerungskabel kaufen oder einen Computer mit USB 2-Anschlüssen verwenden

Der Code funktioniert nicht:

Folgen Sie diesem Tutorial und ändern Sie es, um Ihren eigenen Code zu erstellen

Ein Teil des Arms bewegt sich nicht:

Möglicherweise haben sich die Drähte verheddert, um dies zu überprüfen, nehmen Sie den Servoarm vom Servo und versuchen Sie, die Drähte mit der Hand zu ziehen. Entwirren Sie die Drähte und wenn es immer noch schwierig ist, die Drähte zu ziehen, versuchen Sie es mit etwas WD-40 oder einem Gleitmittel, um die Bewegung zu erleichtern

Schritt 29: Links

Nicht Roboterarm:

Arm 3D-Druckdateien:

Mein Arm 3D druckbar:

Arduino und Verarbeitung:

Schritt 30: Code

Geändert von diesem Code

Arduino-Code:

#include // Deklarieren Sie die Motoren Servo myservo1; Servo myservo2; Servo-myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Alle Motoren sind standardmäßig auf 90 Grad eingestellt Int current1 = 90; int aktuell2 = 90; int aktuell3 = 90; int aktuell4 = 90; int aktuell5 = 90; int aktuell6 = 90; // Minimale und maximale Grade, die die Motoren erreichen können Int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; //Grad, die von der aktuellen Position addiert oder subtrahiert werden sollen int degreeForward = 5; //Verzögern, damit zwei Funktionen nicht in der falschen Reihenfolge ausgeführt werden int delayBetweenSteps = 100; Void setup () {// Steuerpins für jeden Motor setzen myservo1.attach (3); myservo2.attach(4); myservo3.attach(5); myservo4.attach(6); myservo5.attach(7); myservo6.attach(8); // Alle Motoren auf die Standardeinstellung setzen myservo1.write (current1); myservo2.write (aktuell2); myservo3.write (aktuell3); myservo4.write (aktuell4); myservo5.write (aktuell5); myservo6.write(aktuell6); // Serielle Kommunikation bei 9600 bps starten Serial.begin (9600); aufrechtzuerhalten. Void Schleife () { if (Serial.available ()) {// wenn Daten zum Lesen verfügbar sind char val = Serial.read (); // in dieses Zeichen einfügen // Motorsteuerungen if (val == 'a' && current1 +degreesForward mini1) { myservo1.write (current1 -degreesForward); Strom1 = Strom1 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); } if (val == 'c' && current2 mini2) { myservo2.write (current2 -degreesForward); Strom2 = Strom2 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); } if (val == 'e' && current3 mini3) { myservo3.write (current3 -degreesForward); aktuell3 = aktuell3 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); } if(val == 'g' && current4 mini4){ myservo4.write(current4 -degreesForward); aktuell4 = aktuell4 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); } if (val == 'i' && current5 mini5) { myservo5.write (current5 -degreesForward); aktuell5 = aktuell5 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); } if(val == 'k' && current6 mini6) { myservo6.write(current6 -degreesForward); aktuell6 = aktuell6 - GradVorwärts; Verzögerung (VerzögerungBetweenSteps); aufrechtzuerhalten. // Geschwindigkeitsregler if (val == 'w') {// Wenn die Geschwindigkeitstaste 1 gedrückt wird DegreeForward = 1; Verzögerung (VerzögerungBetweenSteps); aufrechtzuerhalten. aufrechtzuerhalten. Wenn (val == 'x') {// Wenn die Geschwindigkeitstaste 5 gedrückt wird, degreeForward = 5; Verzögerung (VerzögerungBetweenSteps); aufrechtzuerhalten. If (val == 'y') {// Wenn die Geschwindigkeitstaste 10 gedrückt wird, degreeForward = 10; Verzögerung (VerzögerungBetweenSteps); aufrechtzuerhalten. If (val == 'z') {// Wenn die Geschwindigkeitstaste 20 gedrückt wird, DegreeForward = 20; Verzögerung (VerzögerungBetweenSteps); aufrechtzuerhalten. aufrechtzuerhalten. Wenn (val == 'r') {// Wenn die Geschwindigkeits-20-Taste gedrückt wurde myservo1.write (90); Strom1 = 90; myservo2.write(90); Strom2 = 90; myservo3.write(90); Strom3 = 90; myservo4.write(90); Strom4 = 90; myservo5.write(90); Strom5 = 90; myservo6.write(90); Strom6 = 90; Verzögerung (VerzögerungBetweenSteps); } } }

Verarbeitungscode:

Importabwicklung.seriell.*; ImportkontrolleP5.*; // ControlP5-Bibliothek importieren Serieller Anschluss; KontrolleP5 cp5; // ControlP5-Objekt erstellen PFont-Schriftart; Void setup () {// dasselbe wie Arduino-Programmgröße (300, 700); //Fenstergröße, (Breite, Höhe) printArray(Serial.list()); // druckt alle verfügbaren seriellen Ports // Wenn Sie ein Problem haben, kommt es wahrscheinlich von hier String portName = Serial.list () [0]; port = neue Seriennummer (dies, portName, 9600); // ich habe arduino mit com3 verbunden, es wäre anders unter Linux und mac os // lass uns Buton zu leerem Fenster hinzufügen cp5 = new ControlP5 (dies); font = createFont("Arial", 13); // benutzerdefinierte Schriftarten für Schaltflächen und Titel // Schaltflächen zur Geschwindigkeitssteuerung cp5.addButton("One") //"One" ist der Name der Schaltfläche.setPosition(50, 50) //x- und y-Koordinaten der oberen linken Ecke der Schaltfläche.setSize(55, 25) //(Breite, Höhe).setFont(Schriftart); cp5.addButton("Fünf").setPosition(110, 50).setSize(55, 25).setFont(Schriftart); cp5.addButton("Zehn").setPosition(170, 50).setSize(55, 25).setFont(Schriftart); cp5.addButton("Zwanzig").setPosition(230, 50).setSize(55, 25).setFont(Schriftart); cp5.addButton("Reset").setPosition(110, 2).setSize(55, 25).setFont(Schriftart); cp5.addButton("Servo_1_Forward").setPosition(50, 90).setSize(190, 40).setFont(Schriftart); // Motorsteuerungstasten cp5.addButton("Servo_1_Back").setPosition(50, 140).setSize(190, 40).setFont(font); cp5.addButton("Servo_2_Forward").setPosition(50, 190).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_2_Back").setPosition(50, 240).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_3_Forward").setPosition(50, 290).setSize(190, 40).setFont(font); cp5.addButton("Servo_3_Back").setPosition(50, 340).setSize(190, 40) //(Breite, Höhe).setFont(Schriftart); cp5.addButton("Servo_4_Forward").setPosition(50, 390).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_4_Back").setPosition(50, 440).setSize(190, 40) //(Breite, Höhe).setFont(Schriftart); cp5.addButton("Servo_5_Forward").setPosition(50, 490).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_5_Back").setPosition(50, 540).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_6_Forward").setPosition(50, 590).setSize(190, 40).setFont(Schriftart); cp5.addButton("Servo_6_Back").setPosition(50, 640).setSize(190, 40).setFont(Schriftart); aufrechtzuerhalten. Void draw () {// dasselbe wie Schleife im Arduino-Hintergrund (192, 215, 249); // Hintergrundfarbe des Fensters (r, g, b) oder (0 bis 255) // Text hinzufügen, der besagt, dass Geschwindigkeitsregelung Geschwindigkeitsregelung ist Füllung (0, 10, 25); //Textfarbe (r, g, b) textFont (font); text("Geschwindigkeitssteuerung", 50, 40); // ("Text", x-Koordinate, y-Koordinate) } // fügen Sie unseren Schaltflächen einige Funktionen hinzu // Wenn Sie also eine beliebige Schaltfläche drücken, sendet sie ein bestimmtes Zeichen über die serielle Schnittstelle // Ich bin mir sicher, dass es möglich ist, Zeichenfolgen zu senden anstelle von chars, und es wäre sinnvoller, aber ich weiß nicht, wie es geht // Befehle zur Geschwindigkeitssteuerung void One () { port.write ('w'); aufrechtzuerhalten. Void Fünf () {port.write ('x'); aufrechtzuerhalten. Void Zehn () {port.write ('y'); aufrechtzuerhalten. Void Twenty () {port.write ('z'); } // Motorsteuerbefehle void Servo_1_Forward () {port.write ('a'); aufrechtzuerhalten. Void Servo_1_Back () {port.write ('b'); aufrechtzuerhalten. Void Servo_2_Forward () {port.write ('c'); aufrechtzuerhalten. Void Servo_2_Back () {port.write ('d'); aufrechtzuerhalten. Void Servo_3_Forward () {port.write ('e'); aufrechtzuerhalten. Void Servo_3_Back () {port.write ('f'); aufrechtzuerhalten. Void Servo_4_Forward () {port.write ('g'); aufrechtzuerhalten. Void Servo_4_Back () {port.write ('h'); aufrechtzuerhalten. Void Servo_5_Forward () {port.write ('i'); aufrechtzuerhalten. Void Servo_5_Back () {port.write ('j'); aufrechtzuerhalten. Void Servo_6_Forward () {port.write ('k'); aufrechtzuerhalten. Void Servo_6_Back () {port.write ('l'); aufrechtzuerhalten. Void Reset () {port.write ('r'); }

Schritt 31: Mehr Bilder

Empfohlen: