Indholdsfortegnelse:

Robotarm styret af Arduino og PC: 10 trin
Robotarm styret af Arduino og PC: 10 trin

Video: Robotarm styret af Arduino og PC: 10 trin

Video: Robotarm styret af Arduino og PC: 10 trin
Video: Makeblock Untimate Robot Kit Part 2 : Robtic Arm Explaine, Software, Code App and Having Fun demo 2024, Juli
Anonim
Image
Image
Teori bag projektet
Teori bag projektet

Robotarme bruges meget i industrien. Uanset om det er til montering, svejsning eller endda en bruges til docking på ISS (International Space Station), hjælper de mennesker i arbejde, eller de erstatter mennesker totalt. Arm, jeg har bygget, er en mindre repræsentation af robotarm, der skal bruges til at flytte objekter. Det styres af arduino pro mini, som allerede har et indbygget bibliotek til styring af servoer. Servoer styres af PWM (Pulse Width Modulation), som ikke er svært at programmere, men dette bibliotek gør det lettere. Brugeren kan styre disse servoer ved hjælp af potentiometre, der er designet til at fungere som spændingsdelere eller fra et program på pc, der bruger 4 skydere til styring af servomotorer.

Til dette projekt måtte jeg designe mit brugerdefinerede printkort og lave det, oprette 3D -modeller af arme og skrive kode, der styrer det hele. Oven på det kodede jeg yderligere program i python, der sender signaler til arduino, som formår at afkode det signal og flytte servoer til position, som brugeren har indstillet.

Trin 1: Teori bag projektet

Teori bag projektet
Teori bag projektet

Arduino er fantastisk på den måde, at det tilbyder gratis bibliotek at arbejde med. Til dette projekt brugte jeg bibliotek Servo.h, der gør det meget lettere at kontrollere servoer.

Servomotor styres af PWM -Pulse Width Modulation- hvilket betyder, at for at styre servoen skal du lave kortspændingsimpulser. Servo kan afkode længden af dette signal og rotere til en given position. Og det er her, jeg brugte allerede nævnt bibliotek. Jeg behøvede ikke at beregne længden af signalet på egen hånd, men jeg brugte bibliotekets funktioner, som jeg bare sender parameter til i grader, og det giver signal.

Til styring af servoer brugte jeg potentiometre, der fungerer som spændingsdelere. Arduino boards har flere analoge/digitale konvertere, som jeg brugte til projektet. Grundlæggende overvåger arduino spændingen på midterste pin på potentiometer, og hvis den roterer til den ene sidespænding på den, er den 0 Volt (værdi = 0) og på den anden side er den 5 Volt (værdi = 1023). Denne værdi skaleres derefter fra område 0 - 1023 til 0 - 180, og derefter overføres den til funktion, der allerede er nævnt.

Et andet emne er seriel kommunikation med arduino, som jeg kort vil dække. Grundlæggende sender programmet skrevet på pc'en værdi, der er valgt af brugeren, arduino kan afkode det og flytte servo til en given position

Trin 2: Design af PCB

Design af PCB
Design af PCB
Design af PCB
Design af PCB
Design af PCB
Design af PCB

Jeg designede 2 printkort - en til hovedkontrol, hvor er arduino og ben til servoer, og på den anden er potentiometre. Grunden til 2 PCB er, at jeg ønskede at styre robotarmen fra sikker afstand. Begge kredsløb er forbundet med kabel af en given længde - i mit tilfælde 80 cm.

Til strømkilde valgte jeg ekstern adapter, fordi servoer, jeg brugte, forbruger meget mere strøm, end arduino kan levere. Som du kan se, er der nogle kondensatorer, som jeg ikke har nævnt endnu. De er kondensatorer, der bruges til filtrering. Som du ved nu, styres servomotoren af korte impulser. Disse impulser kan gøre, at forsyningsspændingsfald og potentiometre, der tidligere havde et område på 0-5 volt, nu har et mindre område. Det betyder, at spændingen på midterste pin ændres, og arduino får denne værdi og ændrer positionen, som servomotoren er i. Dette kan fortsætte for evigt, og det forårsager uønsket svingning, der kan elimineres af nogle kondensatorer parallelt med forsyningen.

Trin 3: Fremstilling af printkort

Fremstilling af PCB
Fremstilling af PCB
Fremstilling af PCB
Fremstilling af PCB
Fremstilling af PCB
Fremstilling af PCB

For at lave PCB foreslår jeg, at du læser dette.

Jeg brugte Iron on Glossy paper metode, og det fungerede fantastisk.

Derefter lodde jeg dele på printkortet. Du kan se, at jeg brugte arduino -stik i tilfælde af, at jeg får brug for det i fremtiden.

Trin 4: Design af armen

Design af armen
Design af armen
Design af armen
Design af armen
Design af armen
Design af armen

Dette var på ingen måde den sværeste del af at lave dette projekt.

Hele opsætningen er lavet af 8 dele, hvor 4 ikke er bevægelige dele - kasse til potentiometre og base, hvor arduino er placeret - og andre fire er selve armen. Jeg vil ikke gå nærmere ind på en detalje, bortset fra at designet er ret intuitivt og på en eller anden måde enkelt. Det er designet til at passe til mit brugerdefinerede printkort og servoer, som jeg vil inkludere i listen over dele.

Trin 5: Udskrivning af delene

Udskrivning af delene
Udskrivning af delene
Udskrivning af delene
Udskrivning af delene
Udskrivning af delene
Udskrivning af delene

Dele blev udskrevet på Prusa printer. Nogle ansigter skulle slibes lidt og huller bores gennem et trug. Også støttestolperne skulle fjernes.

Trin 6: Sæt det hele sammen

Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele

I dette trin som titlen siger, satte jeg det hele sammen.

Først lod jeg ledninger på potentiometrene og derefter disse ledninger på printkort. Potentiometre passede fint til huller, og jeg varmlimede printet på søjlerne, der var trykt på bunden af æsken. Du kan bore huller i brættet og ind i kassen, men jeg fandt ud af, at limning af det er mere end nok. Derefter lukkede jeg begge dele af kassen og sikrede dem på plads med 4 skruer, der passede ind i huller, som jeg designede.

Som et næste trin lavede jeg et fladt båndkabel til at forbinde begge brædder.

I hovedboksen lodde jeg ledninger fra VCC -stik i stikket for at skifte og derefter til Vcc -kort og fra GND -kort til GND på stikket. Derefter varmlimede jeg stikket på plads og bordede på søjler. Stik passer lige ind i hullet, så der er ikke brug for varm lim.

Derefter fastgjorde jeg ved hjælp af skruer den nederste servo til bunden af æsken.

Derefter satte jeg den øverste del af kassen på den nederste del og samme som med potentiometerboksen sikrede jeg den med 4 skruer.

Næste del var lidt vanskelig, men det lykkedes mig at sætte resten af armen sammen med forskellige møtrikker og puder, og den var ikke så stram som jeg havde forventet, fordi jeg designede nogle tolerancer mellem dele, så det er lettere at arbejde med dem.

Og som det sidste trin lagde jeg lidt tape på bunden af æskerne, fordi de ellers ville glide.

Trin 7: Programmering af Arduino

Programmering af Arduino
Programmering af Arduino
Programmering af Arduino
Programmering af Arduino
Programmering af Arduino
Programmering af Arduino

Jeg har allerede nævnt, hvordan programmet fungerer i teorien bag projektet, men jeg vil bryde det op endnu mere.

Så i begyndelsen skal vi definere nogle variabler. For det meste kopieres det 4 gange, fordi vi har 4 servoer, og efter min mening er det unødvendigt at lave mere kompliceret logik bare for at gøre programmet lidt kortere.

Dernæst er der hulrumsopsætning, hvor stifter af servoer er defineret.

Så er der void loop - en del af programmet, der loops uendeligt. I denne del tager programmet værdien fra potentiometeret, der skalerer den og sætter output på. Men der er et problem, at værdien fra potentiometer hopper en del, så jeg havde brug for at tilføje filter, der gør gennemsnittet af de sidste 5 værdier, og derefter sætter det output. Dette forhindrer uønsket vingling.

Sidste del af programmet læser data fra seriel port og beslutter, hvad de skal gøre baseret på data, der sendes.

For at forstå koden fuldt ud foreslår jeg, at du besøger officielle arduino -websteder.

Trin 8: Programmering i Python

Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python

Denne del af dette projekt er ikke nødvendig, men jeg tror, at det kun giver mere værdi til dette projekt.

Python tilbyder masser af biblioteker, der er gratis at bruge, men i dette projekt bruger jeg kun tkinter og seriel. Tkinter bruges til GUI (grafisk brugergrænseflade) og seriel som navnet siger, bruges til seriel kommunikation.

Denne kode opretter GUI med 4 skydere, der har en minimumsværdi på 0 og maksimalt 180. Det kan være en antydning for dig, at den er i grader, og hver skyder er programmeret til at styre en servo. Dette program er ret simpelt - det tager værdien og sender det til arduino. Men måden den sender på er interessant. Hvis du vælger at ændre værdien af første servo til 123 grader, sender den til arduino værdi 1123. Første nummer for hvert sendt nummer fortæller hvilken servo der skal kontrolleres. Arduino har kode, der kan afkode dette og flytte den rigtige servo.

Trin 9: Liste over dele

Liste over dele
Liste over dele
  • Arduino Pro Mini 1 stk
  • Servo FS5106B 1 stk
  • Servo Futaba S3003 2 stk
  • Pin header 2x5 1 stk
  • Pin header 1x3 6 stk
  • Kondensator 220uF 3 stk
  • Micro Servo FS90 1 stk
  • Stik AWP-10 2 stk
  • Stik FC681492 1 stk
  • Kontakt P-B100G1 1 stk
  • Stikkontakt 2x14 1 stk
  • TTL-232R-5v-konverter 1 stk
  • Potentiometer B200K 4 stk
  • og mange flere skruer, puder og møtrikker

Trin 10: Endelige tanker

Tak fordi du læste dette, og jeg håber, at jeg i det mindste har motiveret dig. Dette er mit første større projekt, som jeg lavede helt uden at kopiere ting fra internettet og første instruktive indlæg. Jeg ved, at armen kunne opgraderes, men jeg er tilfreds med det for nu. Alle dele og kildekoder er gratis, du er velkommen til at bruge det og ændre det på enhver måde, du ønsker. Hvis du har spørgsmål, er du velkommen til at stille dem i kommentarfeltet. Du kan også se på videoerne, de er ikke i god kvalitet, men de viser projektets funktionalitet.

Anbefalede: