Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Skriv ut alle 3D -komponentene
- Trinn 2: (Valgfritt) Fest en treplank til bunnen av esken for å styrke den
- Trinn 3: Mål og kutt en treplank for å passe boksen
- Trinn 4: Merk posisjonene til motorene
- Trinn 5: Merk posisjonene til brakettene og røret
- Trinn 6: Bor et hull for kablene som kommer ut av esken (USB og strøm)
- Trinn 7: Bor og så alle merkede hull
- 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
- 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
- Trinn 14: Skjær hodet av en brødbrett
- Trinn 15: Bor tre hull i bunnen av esken for ledningene som kommer ut av armen
- Trinn 16: Fest basekontakten til esken
- Trinn 17: Bruk en kniv eller spikerfil for å gjøre trådsporene dypere
- Trinn 18: Konstruer armen
- Trinn 19: Installer prosessering og Arduino
- Trinn 20: Lim inn kodeprogrammene
- Trinn 21: Koble servokontrollnålene til Arduino
- 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
- 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
- Trinn 28: Feilsøking
- Trinn 29: Lenker
- Trinn 30: Kode
- Trinn 31: Flere bilder
Video: Wire Controlled Robot Arm: 31 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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
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)
Trinn 7: Bor og så alle merkede hull
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
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
Trinn 14: Skjær 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
Trinn 17: Bruk en kniv eller spikerfil for å gjøre trådsporene dypere
Trådsporene for elementene 2 og 3 er for grunne.
Trinn 18: 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
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
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:
Rotary Encoder Controlled Robot Arm: 6 trinn
Rotary Encoder Controlled Robot Arm: Jeg besøkte howtomechatronics.com og så den bluetooth kontrollerte robotarmen der. Jeg liker ikke å bruke bluetooth, pluss at jeg så at vi kan kontrollere servo med roterende encoder, så jeg redesigner den slik at jeg kan kontrollere roboten bruk en roterende encoder og ta den opp
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 trinn
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM:
Wire Wrapping Wire Stripper: 4 trinn (med bilder)
Wire Wrapping Wire Stripper: Dette er en Wire Wrapping Wire stripper som kan resultere veldig nyttig for å bygge prototyper. Den bruker kutterblad og vekten har blitt produsert med rimelige prototyp PCB. Det er veldig økonomisk og enkelt å bestille PCB for prosjekter hjemme
Hot Wire Cutter Robot Arm Tool: 8 trinn (med bilder)
Hot Wire Cutter Robot Arm Tool: Som en del av avhandlingsprosjektet mitt ved KADK i København har jeg utforsket varm trådkutting og robotproduksjon. For å teste denne fremstillingsmetoden har jeg laget et hettrådsfeste for robotarmen. Ledningen måtte strekke seg over 700 mm, men materialet
Drawing Arm That's Controlled by Sound - Arduino School Project: 4 trinn (med bilder)
Drawing Arm That's Controlled by Sound - Arduino School Project: Dette er min aller første gang jeg jobber med Arduino, og jobber med noe slikt noen gang, så beklager hvis jeg gjorde noen feil! Jeg fikk denne ideen da jeg tenkte på hobbyene mine, som er tegning og musikk. Så jeg prøvde å kombinere de to i dette! Et valg