Innholdsfortegnelse:

Wire Controlled Robot Arm: 31 trinn
Wire Controlled Robot Arm: 31 trinn

Video: Wire Controlled Robot Arm: 31 trinn

Video: Wire Controlled Robot Arm: 31 trinn
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Wire Controlled Robot Arm
Wire Controlled Robot Arm

Dette er en opplæring i hvordan du lager en robotarm kontrollert av ledninger. Fordelen med å bruke ledninger er at armen din er lettere og at du kan ha alle motorene i bunnen av armen, noe som gjør bygging og vedlikehold enklere. Her er en video av armen i aksjon. Jeg planlegger å legge til en klo i fremtiden slik at den kan plukke opp ting og ikke bare skyve dem rundt.

3D Printables:

Her og her

Rekvisita

6 servomotorer (MG995)

Arduino Uno

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

Boks 23x33x10 (kan være smalere, bør definitivt ikke være kortere)

Plank av tre 33x10

Muttere og bolter

Rør 14 cm (dette er nødvendig for å styre strengene)

4 L-braketter

5 volt adapter

2 7-veis rekkeklemmer

Brødbrett ledninger

3D -trykte komponenter (Ikke designet av meg, lenker til elementer i beskrivelsen):

3 "bolter"

2 “Element 1”

1 "Element 2"

2 “Element 3”

1 Base -kontakt

Trinn 1: Skriv ut alle 3D -komponentene

Du kan trenge støtte for bolthullene og buene, men pass på at du ikke legger til støtte til komponentene. Dette vil lukke de små trådhullene, og du må lage nye hull

Trinn 2: (Valgfritt) Fest en treplank til bunnen av esken for å styrke den

Boksen min var ganske svak, din er kanskje ikke

Trinn 3: Mål og kutt en treplank for å passe boksen

Trinn 4: Merk posisjonene til motorene

pass på at ingen av armene berører hverandre

Trinn 5: Merk posisjonene til brakettene og røret

Merk posisjonene til brakettene og røret
Merk posisjonene til brakettene og røret

Røret skal plasseres rundt en centimeter foran hullet

Trinn 6: Bor et hull for kablene som kommer ut av esken (USB og strøm)

Bor et hull for kablene som kommer ut av esken (USB og strøm)
Bor et hull for kablene som kommer ut av esken (USB og strøm)

Trinn 7: Bor og så alle merkede hull

Bor og så alle de merkede hullene
Bor og så alle de merkede hullene

Trinn 8: Fest motorene og røret til planken

Trinn 9: Fest planken til esken med L-brakettene

Trinn 10: Ta terminalblokkene dine og lodd ledningene sammen

Ta terminalblokkene dine og lodd ledningene sammen
Ta terminalblokkene dine og lodd ledningene sammen

Trinn 11: Klipp enden av adapterens strømledning og strip ledningene

Trinn 12: Identifiser og merk pluss- og minusledninger

Trinn 13: Fest ledningene til terminalblokkene slik at alle + servotrådene og + ledningen fra strømledningen er koblet til, det samme gjelder for - ledningene

Fest ledningene til terminalblokkene slik at alle + servotrådene og + ledningen fra strømledningen er tilkoblet, det samme gjelder for - ledningene
Fest ledningene til terminalblokkene slik at alle + servotrådene og + ledningen fra strømledningen er tilkoblet, det samme gjelder for - ledningene

Trinn 14: Skjær hodet av en brødbrett

Klipp hodet av en brødbrett
Klipp hodet av en brødbrett

Fest den avisolerte enden av brødbrettledningen til minus -rekkeklemmen og stiftenden til bakkenålen i din arduino. Hvis du ikke gjør dette, vil motorene bevege seg uberegnelig uten innspill.

Trinn 15: Bor tre hull i bunnen av esken for ledningene som kommer ut av armen

Hullene skal passe til hullene i basekontakten.

Trinn 16: Fest basekontakten til esken

Fest basekontakten til esken
Fest basekontakten til esken

Trinn 17: Bruk en kniv eller spikerfil for å gjøre trådsporene dypere

Bruk en kniv eller spikerfil til å gjøre trådsporene dypere
Bruk en kniv eller spikerfil til å gjøre trådsporene dypere

Trådsporene for elementene 2 og 3 er for grunne.

Trinn 18: Konstruer armen

Konstruer armen
Konstruer armen

Konstruer armen i henhold til instruksjonene her, du kan trenge å arkivere delene slik at de passer

Trinn 19: Installer prosessering og Arduino

Bearbeiding og Arduino

Trinn 20: Lim inn kodeprogrammene

Koden er nederst på denne siden

Trinn 21: Koble servokontrollnålene til Arduino

Koble servokontrollnålene til Arduino
Koble servokontrollnålene til Arduino

Jeg koblet den første motoren til den tredje digitale pinnen, den andre motoren til den fjerde digitale pinnen og så videre. Sørg for at jordingspinnen fortsatt er koblet til - rekkeklemmen.

Trinn 22: Trykk på Tilbakestill -knappen under behandling, dette setter alle armer til 90 grader

Trinn 23: Fest servoarmene horisontalt til motoren

Trinn 24: Tre ledningene gjennom armene slik at det ikke blir slakk

Sørg for at du trekker tråden gjennom så mange hull du kan, dette holder den midlertidig og er lett å fjerne.

Trinn 25: Test armen og stram eller løs ledningene etter behov

Trinn 26: Lim lim ledningene til servoarmene for å gjøre det permanent

Trinn 27: Merknader

Merknader
Merknader

Jeg brukte 0,5 mm smykketråd, men 0,4 mm burde være fint. Den originale designen brukte PVC -wire, men den gikk for lett i stykker og var vanskelig å jobbe med.

Hvis du skal bevege armen i en bil eller sykkel, pakk armleddene inn i tape for å sikre at de ikke kommer ut. Dette er spesielt viktig for element 1.

Da jeg startet dette prosjektet lurte jeg på hvorfor jeg bare kunne finne en opplæring om hvordan jeg lager en arm kontrollert av ledninger. Nå forstår jeg hvorfor dette ikke er den vanligste måten å lage en hobbyrobotarm på. Ledningene faller noen ganger ut av sporene, og det hele er litt spinkelt. Jeg vet ikke om problemene er fordi jeg ikke har mye erfaring eller om hele ideen er problematisk, selv om jeg er sikker på at det ville være mer solid hvis jeg visste hva jeg gjorde.

Trinn 28: Feilsøking

Trådhullene er lukket i 3D -trykte elementer:

Du la til støtte for hele elementet i stedet for bare bolthullene. Enten skriver du ut elementet på nytt eller åpner hullene med en veldig varm nål.

COM -porten er stengt, du kan ikke kommunisere med arduinoen:

Arduinoen din godtar kanskje ikke USB 3 -porter (min gjorde det ikke). Du kan enten kjøpe en USB 2 -forlengelseskabel eller bruke en datamaskin som har USB 2 -porter

Koden fungerer ikke:

Følg denne opplæringen og endre den for å lage din egen kode

En del av armen beveger seg ikke:

Ledningene kan ha viklet seg sammen, for å kontrollere dette, ta servoarmen av servoen og prøv å trekke ledningene for hånd. Løsne ledningene, og hvis det fortsatt er vanskelig å trekke i ledningene, prøv å bruke litt WD-40 eller et smøremiddel for å gjøre bevegelsen lettere

Trinn 29: Lenker

Ikke-robotarm:

Arm 3D Printables:

My Arm 3D Printable:

Arduino og prosessering:

Trinn 30: Kode

Endret fra denne koden

Arduino -kode:

#include // Deklarer motorene Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Alle motorer er satt til 90 grader som standard int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // Minimum og maksimal grad motorene 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 som skal legges til eller trekkes fra nåværende posisjon int graderFoward = 5; // Forsinkelse slik at to funksjoner ikke skjer i feil rekkefølge int delayBetweenSteps = 100; void setup () {// Sett kontrollpinner for hver motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Still alle motorer til standardinnstillingen myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // start seriell kommunikasjon @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// hvis data er tilgjengelig for å lese char val = Serial.read (); // legg den inn i dette tegnet // Motorstyring hvis (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); current1 = current1 - degreesFoward; forsinkelse (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); current2 = current2 - degreesFoward; forsinkelse (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); current3 = current3 - degreesFoward; forsinkelse (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); current4 = current4 - degreesFoward; forsinkelse (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); current5 = current5 - degreesFoward; forsinkelse (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); current6 = current6 - degreesFoward; forsinkelse (delayBetweenSteps); } // Hastighetskontroller hvis (val == 'w') {// Hvis hastighet 1 -tasten trykkes ned graderFoward = 1; forsinkelse (delayBetweenSteps); } if (val == 'x') {// Hvis hastighet 5 -knappen trykkes ned graderFoward = 5; forsinkelse (delayBetweenSteps); } if (val == 'y') {// Hvis hastighet 10 -knappen trykkes ned graderFoward = 10; forsinkelse (delayBetweenSteps); } if (val == 'z') {// Hvis hastighet 20 -knappen trykkes ned graderFoward = 20; forsinkelse (delayBetweenSteps); } if (val == 'r') {// Hvis hastighet 20 -knappen trykket på myservo1.write (90); nåværende1 = 90; myservo2.write (90); strøm2 = 90; myservo3.write (90); nåværende3 = 90; myservo4.write (90); nåværende4 = 90; myservo5.write (90); nåværende5 = 90; myservo6.write (90); strøm6 = 90; forsinkelse (delayBetweenSteps); }}}

Behandlingskode:

import behandling. serie.*; importkontrollP5.*; // import ControlP5 bibliotek Seriell port; ControlP5 cp5; // lage ControlP5 -objekt PFont -skrift; ugyldig oppsett () {// samme som arduino -programstørrelse (300, 700); // vindusstørrelse, (bredde, høyde) printArray (Serial.list ()); // skriver ut alle tilgjengelige serielle porter // Hvis du har et problem, kommer det sannsynligvis herfra String portName = Serial.list () [0]; port = ny Serial (dette, portnavn, 9600); // jeg har koblet arduino til com3, det ville være annerledes i linux og mac os // lar legge buton til tomt vindu cp5 = ny ControlP5 (dette); font = createFont ("Arial", 13); // egendefinerte fonter for knapper og tittel // Hastighetskontrollknapper cp5.addButton ("One") // "One" er navnet på knappen.setPosition (50, 50) // x og y koordinater i øvre venstre hjørne av knappen.setSize (55, 25) // (bredde, høyde).setFont (font); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (font); 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øyde).setFont (font); 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øyde).setFont (font); 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 -bakgrunn (192, 215, 249); // bakgrunnsfarge på vindu (r, g, b) eller (0 til 255) // Legg til tekst som sier at hastighetskontroll er fylling av hastighetskontroll (0, 10, 25); // tekstfarge (r, g, b) textFont (font); tekst ("Hastighetskontroll", 50, 40); // ("tekst", x koordinat, y koordinat)} // lar oss legge til noen funksjoner på knappene våre // så når du trykker på en hvilken som helst knapp, sender den en bestemt røye over seriell port // Jeg er sikker på at det er mulig å sende strenger i stedet for tegn, og det ville være mer fornuftig, men jeg vet ikke hvordan jeg skal gjøre det // Speed Control Commands void One () {port.write ('w'); } ugyldig Five () {port.write ('x'); } ugyldig Ten () {port.write ('y'); } ugyldig tjue () {port.write ('z'); } // Motor Control Commands void 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 Reset () {port.write ('r'); }

Trinn 31: Flere bilder

Anbefalt: