Jürgens Roboterarm Konstruktion und Bau


Roboticarm V1

 

 

 

 

Eines Tages dachte ich mir

Ich bau mir einen Roboterarm...

... alles schön und gut, aber wie baut man einen Roboterarm?

Es werden verschiedene Dinge benötigt.

Hier das Wichtigste:

  1. Motoren oder Servos
  2. Steuerungselektronik
  3. Mikrocontroller
  4. Mechanik
  5. Stromversorgung
  6. Steuereinheit
  • OK, Servos gibts bei Ebay und den Servocontroller dazu.
  • Mikrocomputer hab ich: Arduino Mega.
  • Stromversorgung? Netzteile in jeder Stärke -> Ebay
  • Steuereinheit, kann ich selber was löten
  • Mechanik, hmmm.
    Sperrolz? Nein, weil zu unprofessionell.
    ALU? Ja, leicht und stabil -> Sägen und Feilen eher Nein, und ich hab keine CNC Fräse ->also auch Nein
    GFK? Ja, noch leichter und stabiler als ALU, aber auch viel mechanische Arbeit und ich hab ja keine CNC Fräse, also Nein.
    Kunststoff mit hoher Festigkeit wär auch nicht schlecht, aber woher passende Teile nehmen und eine Spritzgussanlage habe ich auch nicht.
    Aber ein 3D Drucker kann solche Teile drucken?!
    Ergo: Einen 3D Drucker bauen....


...ein paar Monate später: Gesagt getan, 3D Drucker ist gebaut.

 

Jetzt kanns losgehen:

Um die Kosten in einem überschaubaren Rahmen zu halten, sollen die Motoren/Servos in einer leistbaren Preisklasse liegen. Servos sind preisgünstiger als Schrittmotoren, also fiel meine Wahl auf Servos.

Die Servos
sollen maximale Zugkraft für das vorhandene Budget aufweisen.
Sie sollen also günstig aber trotzdem stark genug sein, um den Arm inklusive Last anzuheben.
Also der unterste Servo muss jedenfalls am meisten Zugkraft haben.

Folgende Servos habe ich nun besorgt:

1 Stk. Turnigy TGY1501 Hi-Torque
Voltage: 4,8 - 6 Volt
Speed: 0,16 - 0,14 sec/60°
Torque: 15,5 - 17kg/cm
Weight: 60g
Size: 40,7x20,5x39,5mm
Metalgear
Dual bearings

Die restlichen Servos

6 Stk. Tower Pro MG995 Digi Hi-speed
Voltage: 4,8 - 7,2 Volt
Speed: 0,2 - 0,17 sec/60°
Torque: 10 - 15kg/cm
Weight: 55g
Size: 40,6x19,8x42,9mm
Rational range: 180°
Pulse cycle 20ms
Pulse width: 1000-2000 us
Connector type: JR
Metalgear
Dual bearings

Als Steuerelektronik
für die Servos gibts bei Ebay einen 16 Kanal, 12 Bit Servo Driver
(PCA9685 PWM Driver www.deek-robot.com).
Der kann mit der Servo Library von Adafruit (Adafruit_PWMServoDriver.h) anprogrammiert werden und maximal 16 Servos ansprechen. Dazu ein Arduino Mega, und die Elektronik ist soweit komplett.

Der originale Test-Sourcecode ist für meine Servos rasch abgeändert, denn Achtung, meine Servos sind ja auf 180° begrenzt!

Als Netzteil
gibts bei Ebay das S-120-12 power supply.
Primär AC220V - sekundär DC12V10A das sollte reichen.
Einen Fixspannungsregler mit 6Volt werde ich selbst herstellen.
Spannungsregler und Leistungstransistoren sind vorhanden.

Als Seuereinheit
soll pro ArmServo ein Tastschalter auf/ab vorhanden sein.
Für 6 Servos also 12 Schalter, plus Resetschalter.
1 Hauptschalter, ein 2 zeiliges Display als Kontrollmonitor, Kabel, Kontrollampen, und und und ...
Lochrasterplatine und Mikrotaster und restliche Bauteile sind vorhanden.
Das Gehäuse dazu kann auch am 3D Drucker gedruckt werden.

Es fehlt noch die Mechanik.
Was brauche ich?

  1. Ein runder, standfester Sockel
    darin soll die Elektronik und der erste Servo (MG995) der den Arm dreht, Platz finden (1. Armachse)
  2. Eine runde Plattform die sich frei auf dem Sockel drehen soll
    wird mit dem ersten Servo angetrieben
    auf der Plattform soll ein Montagesockel für 2 Servos vorhanden sein
  3. Armbasis
    es stellt quasi die Schulter dar, hier wird der meiste Drehmoment benötigt
    hier sollen die beiden Servos für die 2. Armachse montiert werden
  4. erster Armteil
    Das ist der Oberarm, er ist am unteren Ende mit den beiden Schulterservos verbunden
    und am oberen Ende mit dem unteren Servo des Unterarms
  5. zweiter Armteil
    Das ist der Unterarm, hier sollen auch 2 Servos (unten TGY1501, oben MG995) Platz finden (Armachse 3 und 4).
  6. Greiferaufnahme
    soll an den Oberarm angebunden werden und am anderen Ende soll ein Servo (Armachse 5 der "Handgelenk Dreher") Platz finden
  7. Das ist das Handgelenk, hier soll der Servo vom Oberarm angebunden werden und am anderen Ende der Greifarm montiert werden
  8. Greifarm
    Die Finger, Platz für den letzten Servo (Armachse 6) der den Greifer öffnen und schließen soll

Also nun steht der grobe Umriss, ran an das Zeichenbrett!
Zu beachten ist, bei gestrecktem Arm darf die maximale Länge und somit auch das maximale Gewicht die maximale Zugkraft der einzelnen Servos nicht übersteigen.
Eine Nutzlast ist ebenso einzurechnen (eh klar :), also Zeichenbrett und Taschenrechner!

 

Next Steps:

  • Maximale Armlänge für min 50g / max. 300g Nutzlast berechnen
  • Am Zeichenbrett 2D Skizze / bemasste Zeichnung erstellen
  • Max. Stromaufnahme aller Servos und Elektronik berechnen
  • Fürs 6 Volt Fixspannungsnetzteil mit entsprechender Leistung den Schaltplan erstellen und zusammenlöten
  • Für die Steuereinheit den Schaltplan entwerfen und zusammenlöten
  • Steuerprogramm schreiben
  • Gehäuse für das Netzteil und für die Steuereinheit entwerfen (2D)
  • Im 3D CAD Programm die 2D Entwürfe zeichnen und drucken
  • alles zusammenbauen
  • Testlauf
  • Steuerprogramm optimieren

 

Armlänge / Lasthebekraft berechnen:

Der Arm soll 390mm Länge (0,39m) ab dem untersten Drehpunkt bis zur Greiferspitze haben.
Der gesamte Arm wiegt etwa 320g.

Etwas Physik:

1 kp (kilopond) ist die Kraft welche die Schwerkraft der Erde auf 1 kg Masse ausübt.
Erdbeschleunigung gn = 9,80665 kg.m.s²
1 kg x gn = 9,80665 N
Also 1 kp = 9,80665 N
Oder 1 N = 0,101972 kp

1 kg/cm sind demmnach 0,0980665 Nm

1 MG995 Servo hat bei 6V Spannung ca. 12 kg/cm Drehmoment
2 solche Servos dann 24 kg/cm

Das sind in Nm:
24 * 0,0980665 = 2,353396 Nm

Nun zur Hebeleistungsberechnung:

M = r x F (Dremoment M ist gleich Hebellänge r mal Kraft F)
Umgewandelt: F = M/r

M = 2,353396 Nm
r = 0,39 m

F = 2,353396 / 0,39 = 6,0343 N
Am Armende sind vom Drehmoment der beiden Servos noch ca. 6,03 N übrig (ohne Berücksichtigung des Armgewichts).

Umgerechnet in kp
6,03 * 0,101972 = 0,614 kp also 614g Brutto Hebekraft

Jetzt die tatsächliche Kraft am Armende
Lasthebekraft = Bruttohebekraft - Armgewicht = 614 - 320 = 294 g

Der Arm mit 450 mm Länge und ca. 320g Eigengewicht wird also knapp 300g Lasthebekraft bei maximal ausgefahrenem Arm aufweisen.
Beim 2. Gelenk sitzt der Servo mit 17kg/cm und der Arm ist dort schon um 12cm kürzer und auch schon etwas leichter. Die Kraft des Servos ist dort mehr als ausreichend.

Skizze und bemasste Zeichnung in 2D erstellen:

Verschiedene Skizzen habe ich schon gemacht.
Das bisherige Ergebnis:

  • Der Arm benötigt 6 Gelenke und 7 Servos.
  • Der Arm soll "ergonomisch" designet sein (knochenähnliche Form) und nicht einfach ein eckiger Klotz (denn wenn schon denn schon...).
  • Die Basisplattform soll sich auf Kugellager drehen. Der Greifer (Finger) soll aus Stabilitätsgründen aus Aluminium sein.
  • Keines der Teile welche am 3D Drucker gefertigt werden soll, darf länger als die maximal druckbare Länge sein, also kleiner gleich 20cm.
  • An der Steuereinheit benötige ich mindestens 14 Tastschalter.
    • 12 x für die Achsen,
    • 1x Reset,
    • 1x Displaylicht.

    Aber es sollen auch gleich Tastschalter für einen Lernmodus vorhanden sein (Lern Start, Lern Stopp, Replay, Löschen, Grundstellung kalibrieren), welchen ich später dazuprogrammieren möchte.
    2 Aus-Ein Kippschalter (Hauptschalter und Lernmodus) sollen auch noch drauf.

Hier ein paar Skizzen:

Nach vielen Skizzierungen nun der erste tatsächliche 2D Plan mit Maße.
Der Arm wird ein wenig kürzer und zwar genau 468mm Gesamtlänge.
Vom ersten Gelenkdrehpunkt bis zur Greiferspitze genau 390mm Länge.
Die Kraftberechnung habe ich schon angepasst.

Eine kleine Änderung im Verhältniss der beiden Armteile zueinander gabs noch, und eine "Roh" Zeichnung von der Bodenplatte.

 

3D CAD zeichnen:


Einen Servodummy habe ich bereits erstellt (passt für MG995 und TGY1501).

Die Basis des Armes ist nun fertig gezeichnet und die Einzelteile werden schon in 3D ausgedruckt.

Basis

Schnitt durch die Basis

Die Teile der Basisplatte sind gedruckt und zusammengebaut,
der Alugreifer ist auch fertig (der kam so aus China :)

Mit der Elektronik habe ich auch begonnen, und vorerst gibts nur ein minimales Schaltpult.

Basis innen,
die Lagerung funktioniert wie geplant, der Servo dreht die Plattform mit Leichtigkeit.
Ich habe das Basisplattenlager so geplant, dass das Armgewicht bzw. die Kippkraft auf jeweils 4 Kugellager verteilt wird und dadurch der Drehservo mit dem Gewicht nicht belastet wird.

 

Schaltplan, Pinbelegung und Teileliste

Layout for Control Keyboard:

Wiring diagram for the robotic arm V1

Pinout

PCA9685 -> Arduino MEGA
-----------------------
SCL -> A21
SDA -> A20
VCC -> +5V
GND -> GND

Control Keyboard-> Arduino MEGA
---------------------------
1 -> D10
2 -> D9
3 -> D8
4 -> D7
5 -> D6
6 -> D5
7 -> D4
8 -> D3
9 -> D2
10 -> +5V
11 -> A19
11 -> 10k Ohms Resistor -> GND

LCD2004 - Arduino MEGA
------------------------
VCC -> +5V
GND -> GND
SDA -> A21
SCL -> A20

PCA9685 -> Servos
-------------------
0 = Servo0 / baseturn axis
1 = Servos1 - (2 Servos) / shoulder axis
2 = Servo2 / ellbow axis
3 = Servo3 / wrist bow axis
4 = Servo4 / wrist spin axis
5 = Servo5 / fingers open - close

Partlist
Printed parts (Download the 3D STL Files from here)
7 Pcs TowerPro MG995 Servos
1 Arduino MEGA 2560 Microcontroller
1 PCA9685 Servocontroller
1 Robot Claw
8 Pcs Ballbearing 623 or 623ZZ
1 Power Supply 7.2 Volts 5 Amps
1 Resistor 10k Ohms
19 Pcs micro button switch
Cables in different colors
M3 Screws, Nuts and Bolts in different lenght
Programmierung für Steuerung

Die Programmierung für das minimale Schaltpult ist fertig.
Hier die aktuelle Version:

 

 

3D CAD Zeichnung fertig

Die Teile sind grade im 3D Druck.....

 

Roboterarm bereit zum Testlauf

Ich habe den Arm notdürftig angeschlossen. Er funktioniert wie erwartet :)
Die Software musste ich bereits ein wenig anpassen.

Ein 20x4 LCD Display werde ich dazuprogrammieren, damit die genauen Servopositionen ausgelesen werden können. Das ist wichtig weil die physisch- und physikalisch bedingten Endpunkte in die Software als Fixwerte implementiert werden müssen.

Next Steps:

  • Arm Mittelstellung der Hardware mit Softwaremittelstellung gleichsetzen
  • Arm ordentlich zusammenschrauben
  • ordentliche Verkabelung herstellen
  • Buttons an Servos Links/Rechts Lauf logische Bedienung angleichen
  • Steuerboard beschriften
  • LCD Display anbinden
  • physikalischen und physischen Bewegungsraum in Software implementieren
  • zusätzlicher Button für langsam/schnell
  • 6V / 3A Netzteil bauen (LM350 sollte passen)

First run

 

Der Roboterarm ist fertig

Die Verkabelung ist komplett, alle Komponenten sind festgeschraubt, das Programm läuft.

 

Hier noch ein Video vom Arm in Action ...

 

Ein Netzteil fehlt halt noch, aber der Arm zieht zeitweise mehr als 3 Ampere. Mein Labornetzteil schafft nur 3A, sodaß ich nicht genau weiß wieviel Strom der Arm tatsächlich benötigt.

Hmmm ich glaube ich weiß schon wer so ein starkes Labornetzteil hat damit ichs ausprobieren kann
(Hallo lieber Hans :)

Auf jeden Fall bin ich mit dem Arm sehr zufrieden.

Wer den Arm nachbauen will und Fragen dazu hat, schickt mir ein Mail: roboticarm@lessner.at

 

Noch ein paar Detailfotos

und noch ein Video