Indholdsfortegnelse:

Trådstyret robotarm: 31 trin
Trådstyret robotarm: 31 trin

Video: Trådstyret robotarm: 31 trin

Video: Trådstyret robotarm: 31 trin
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Trådstyret robotarm
Trådstyret robotarm

Dette er en vejledning i, hvordan man laver en robotarm styret af ledninger. Fordelen ved at bruge ledninger er, at din arm er lettere, og du kan have alle dine motorer i bunden af din arm, hvilket gør det lettere at bygge og vedligeholde. Her er en video af armen i aktion. Jeg planlægger at tilføje en klo i fremtiden, så den kan tage tingene op og ikke bare skubbe dem rundt.

3D Printables:

Her og her

Forbrugsvarer

6 servomotorer (MG995)

Arduino Uno

Ca. 6 meter plastbelagt ståltråd (0,5 mm)

Kasse 23x33x10 (kan være smallere, bør bestemt ikke være kortere)

Plank af træ 33x10

Møtrikker og bolte

Rør 14 cm (dette er nødvendigt for at styre strengene)

4 L-beslag

5 volt adapter

2 7-vejs klemmer

Brødbræt ledninger

3D -printede komponenter (ikke designet af mig, links til elementer i beskrivelsen):

3 "bolte"

2 “Element 1”

1 "Element 2"

2 “Element 3”

1 Base -stik

Trin 1: Udskriv alle 3D -komponenter

Du har muligvis brug for støtte til bolthullerne og buerne, men sørg for ikke at tilføje understøtning til kroppen af dine komponenter; dette vil lukke de små trådhuller op, og du bliver nødt til at lave nye huller

Trin 2: (Valgfrit) Fastgør en træplank i bunden af din kasse for at styrke den

Min boks var temmelig svag, din er måske ikke

Trin 3: Mål og skær en planke af træ, så den passer til kassen

Trin 4: Marker motorernes positioner

Sørg for, at ingen af armene rører hinanden

Trin 5: Marker positionerne på beslagene og røret

Marker positionerne på beslagene og røret
Marker positionerne på beslagene og røret

Røret skal placeres omkring en centimeter foran hullet

Trin 6: Bor et hul til kablerne, der kommer ud af din boks (USB og strøm)

Bor et hul til kablerne, der kommer ud af din boks (USB og strøm)
Bor et hul til kablerne, der kommer ud af din boks (USB og strøm)

Trin 7: Bor og sav alle de markerede huller

Bor og så alle de markerede huller
Bor og så alle de markerede huller

Trin 8: Fastgør motorerne og røret til planken

Trin 9: Fastgør planken til kassen med L-beslagene

Trin 10: Tag dine terminalblokke og lod lodningerne sammen

Tag dine terminalblokke og lod lodningerne sammen
Tag dine terminalblokke og lod lodningerne sammen

Trin 11: Skær enden af adapterens netledning, og fjern ledningerne

Trin 12: Identificer og markér Plus- og Minus -ledningerne

Trin 13: Fastgør ledningerne til terminalblokkene, så alle + servotråde og + ledningen fra netledningen er tilsluttet, det samme gælder for - ledningerne

Fastgør ledningerne til terminalblokkene, så alle + servotråde og + ledningen fra netledningen er tilsluttet, det samme gælder for - ledningerne
Fastgør ledningerne til terminalblokkene, så alle + servotråde og + ledningen fra netledningen er tilsluttet, det samme gælder for - ledningerne

Trin 14: Skær hovedet af en brødbrætstråd

Skær hovedet af en brødbrætstråd
Skær hovedet af en brødbrætstråd

Fastgør den afisolerede ende af brødbrætstråden til minus -klemrækken og stiftenden til jordstiften i din arduino. Hvis du ikke gør dette, vil motorerne bevæge sig uregelmæssigt uden input.

Trin 15: Bor tre huller i bunden af kassen til ledningerne, der kommer ud af din arm

Hullerne skal matche op til hullerne i basestikket.

Trin 16: Sæt basestikket i boksen

Sæt basestikket på boksen
Sæt basestikket på boksen

Trin 17: Brug en kniv eller sømfil til at gøre trådrillerne dybere

Brug en kniv eller en sømfil til at gøre trådrillerne dybere
Brug en kniv eller en sømfil til at gøre trådrillerne dybere

Trådrillerne til elementerne 2 og 3 er for lave.

Trin 18: Konstruer armen

Konstruer armen
Konstruer armen

Konstruer armen i henhold til instruktionerne her, du skal muligvis arkivere delene, så de passer

Trin 19: Installer Processing og Arduino

Forarbejdning og Arduino

Trin 20: Indsæt kodeprogrammerne

Koden er nederst på denne side

Trin 21: Tilslut Servo Control Pins til Arduino

Tilslut Servo Control Pins til Arduino
Tilslut Servo Control Pins til Arduino

Jeg sluttede den første motor til den tredje digitale pin, den anden motor til den fjerde digitale pin og så videre. Sørg for, at jordstiften stadig er tilsluttet til - klemrækken.

Trin 22: Tryk på nulstillingsknappen under behandling, dette indstiller alle arme til 90 grader

Trin 23: Fastgør servoarmene til motoren vandret

Trin 24: Tråd trådene gennem armene, så der ikke er slæk

Sørg for at tråde tråden gennem så mange huller som du kan, dette holder den midlertidigt og er let at fjerne.

Trin 25: Test armen, og stram eller løs trådene efter behov

Trin 26: Lim lim trådene til servoarmene for at gøre det permanent

Trin 27: Noter

Noter
Noter

Jeg brugte 0,5 mm smykketråd, men 0,4 mm burde være fint. Det originale design brugte PVC -wire, men det gik for let i stykker og var svært at arbejde med.

Hvis du skal bevæge armen i en bil eller cykel, skal du pakke armledene ind i tape for at sikre, at de ikke springer ud. Dette er især vigtigt for element 1.

Da jeg startede dette projekt, spekulerede jeg på, hvorfor jeg kun kunne finde en vejledning i, hvordan man laver en arm styret af ledninger. Nu forstår jeg, hvorfor dette ikke er den mest almindelige måde at lave en hobbyrobotarm på. Trådene falder nogle gange ud af deres riller, og det hele er lidt spinkelt. Jeg ved ikke, om problemerne skyldes, at jeg ikke har megen erfaring, eller om hele ideen er problematisk, selvom jeg er sikker på, at det ville være mere solidt, hvis jeg vidste, hvad jeg lavede.

Trin 28: Fejlfinding

Trådhullerne lukkes i 3D -printede elementer:

Du tilføjede støtte til hele elementet i stedet for kun bolthullerne. Enten kan du printe elementet igen eller åbne hullerne med en virkelig varm nål.

COM -porten er lukket, du kan ikke kommunikere med arduinoen:

Din arduino accepterer muligvis ikke USB 3 -porte (min gjorde det ikke), du kan enten købe et USB 2 -forlængerkabel eller bruge en computer, der har USB 2 -porte

Koden virker ikke:

Følg denne vejledning og rediger den for at lave din egen kode

En del af armen bevæger sig ikke:

Ledningerne kan have viklet sig sammen for at kontrollere dette, tag servoarmen af servoen og prøv at trække ledningerne i hånden. Frigør ledningerne, og hvis det stadig er svært at trække i ledningerne, prøv at bruge noget WD-40 eller et smøremiddel for at gøre bevægelsen lettere

Trin 29: Links

Ikke-robotarm:

Arm 3D Printables:

My Arm 3D kan udskrives:

Arduino og behandling:

Trin 30: Kode

Ændret fra denne kode

Arduino kode:

#include // Deklarer motorerne Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Alle motorer er som standard indstillet til 90 grader int current1 = 90; int nuværende2 = 90; int nuværende3 = 90; int nuværende4 = 90; int nuværende5 = 90; int nuværende6 = 90; // Minimum og maksimal grader motorerne kan nå 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; // Grader, der skal tilføjes eller trækkes fra nuværende position int graderFoward = 5; // Forsinkelse, så to funktioner ikke sker i den forkerte rækkefølge int delayBetweenSteps = 100; tomrumsopsætning () {// Indstil kontrolnåle til hver motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Indstil alle motorer til standardindstillingen myservo1.write (current1); myservo2.write (nuværende2); myservo3.write (nuværende3); myservo4.write (nuværende4); myservo5.write (nuværende5); myservo6.write (nuværende6); // start seriel kommunikation @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// hvis data er tilgængelige for at læse char val = Serial.read (); // put det i denne char // Motor Controls if (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); nuværende1 = strøm1 - graderForud; forsinkelse (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); current2 = current2 - graderForud; forsinkelse (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); current3 = current3 - graderForud; forsinkelse (delayBetweenSteps); } hvis (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); current4 = current4 - graderForud; forsinkelse (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); nuværende5 = nuværende5 - graderForud; forsinkelse (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); nuværende6 = strøm6 - graderForud; forsinkelse (delayBetweenSteps); } // Hastighedskontrol, hvis (val == 'w') {// Hvis hastighed 1 -tasten trykkes ned graderFoward = 1; forsinkelse (delayBetweenSteps); } hvis (val == 'x') {// Hvis hastighed 5 -knappen trykkes ned graderFoward = 5; forsinkelse (delayBetweenSteps); } hvis (val == 'y') {// Hvis hastighed 10 -knappen trykkes ned graderFoward = 10; forsinkelse (delayBetweenSteps); } hvis (val == 'z') {// Hvis hastighed 20 -knappen blev trykket ned graderFoward = 20; forsinkelse (delayBetweenSteps); } hvis (val == 'r') {// Hvis hastighed 20 -knap trykkede på myservo1.write (90); strøm1 = 90; myservo2.write (90); strøm2 = 90; myservo3.write (90); strøm3 = 90; myservo4.write (90); strøm4 = 90; myservo5.write (90); nuværende5 = 90; myservo6.write (90); strøm6 = 90; forsinkelse (delayBetweenSteps); }}}

Behandlingskode:

import behandling. serie.*; importkontrolP5.*; // import ControlP5 bibliotek Seriel port; ControlP5 cp5; // opret ControlP5 -objekt PFont -skrifttype; void setup () {// samme som arduino -programstørrelse (300, 700); // vinduesstørrelse, (bredde, højde) printArray (Serial.list ()); // udskriver alle tilgængelige serielle porte // Hvis du har et problem, kommer det sandsynligvis herfra String portName = Serial.list () [0]; port = ny Seriel (dette, portnavn, 9600); // jeg har forbundet arduino til com3, det ville være anderledes i linux og mac os // lader tilføje buton til tomt vindue cp5 = ny ControlP5 (dette); font = createFont ("Arial", 13); // brugerdefinerede skrifttyper til knapper og titel // Hastighedskontrolknapper cp5.addButton ("One") // "One" er navnet på knappen.setPosition (50, 50) // x og y koordinater i øverste venstre hjørne af knappen.setSize (55, 25) // (bredde, højde).setFont (skrifttype); cp5.addButton ("Fem").setPosition (110, 50).setSize (55, 25).setFont (skrifttype); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (font); cp5.addButton ("Twenty").setPosition (230, 50).setSize (55, 25).setFont (font); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (font); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (font); // Motorstyringsknapper cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (bredde, højde).setFont (skrifttype); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (bredde, højde).setFont (skrifttype); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (font); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (font); } void draw () {// samme som loop i arduino -baggrund (192, 215, 249); // baggrundsfarve på vindue (r, g, b) eller (0 til 255) // Tilføj tekst, der siger, at hastighedskontrol er hastighedskontrolfyld (0, 10, 25); // tekstfarve (r, g, b) textFont (skrifttype); tekst ("Hastighedskontrol", 50, 40); // ("tekst", x koordinat, y koordinat)} // lader tilføje nogle funktioner til vores knapper // så når du trykker på en vilkårlig knap, sender den særlig char over seriel port // Jeg er sikker på, at det er muligt at sende strenge i stedet for tegn, og det ville give mere mening, men jeg ved ikke, hvordan man gør det // Hastighedskontrolkommandoer ugyldige One () {port.write ('w'); } ugyldig Five () {port.write ('x'); } ugyldig Ten () {port.write ('y'); } ugyldig Twenty () {port.write ('z'); } // Motorstyringskommandoer ugyldige Servo_1_Foward () {port.write ('a'); } ugyldig Servo_1_Back () {port.write ('b'); } ugyldig Servo_2_Foward () {port.write ('c'); } ugyldig Servo_2_Back () {port.write ('d'); } ugyldig Servo_3_Foward () {port.write ('e'); } ugyldig Servo_3_Back () {port.write ('f'); } ugyldig Servo_4_Foward () {port.write ('g'); } ugyldig Servo_4_Back () {port.write ('h'); } ugyldig Servo_5_Foward () {port.write ('i'); } ugyldig Servo_5_Back () {port.write ('j'); } ugyldig Servo_6_Foward () {port.write ('k'); } ugyldig Servo_6_Back () {port.write ('l'); } ugyldig nulstilling () {port.write ('r'); }

Trin 31: Flere billeder

Anbefalede: