Innholdsfortegnelse:

Robotarm kontrollert av Arduino og PC: 10 trinn
Robotarm kontrollert av Arduino og PC: 10 trinn

Video: Robotarm kontrollert av Arduino og PC: 10 trinn

Video: Robotarm kontrollert av Arduino og PC: 10 trinn
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Juli
Anonim
Image
Image
Teori bak prosjektet
Teori bak prosjektet

Robotvåpen er mye brukt i industrien. Enten det er for montering, sveising eller til og med en brukes til dokking på ISS (International Space Station), hjelper de mennesker i arbeid eller de erstatter mennesker totalt. Arm som jeg har bygget er en mindre representasjon av robotarm som skal brukes til å flytte objekter. Den styres av arduino pro mini som allerede har et innebygd bibliotek for styring av servoer. Servoer styres av PWM (Pulse Width Modulation) som ikke er vanskelig å programmere, men dette biblioteket gjør det lettere. Brukeren kan kontrollere servoene med potensiometre som er designet for å fungere som spenningsdelere eller fra program på PC som bruker 4 glidebrytere for å kontrollere servomotorer.

For dette prosjektet måtte jeg designe min tilpassede PCB og lage den, lage 3D -modeller av arm og skrive kode som styrer alt. På toppen av det kodet jeg tilleggsprogram i python som sender signaler til arduino som klarer å dekode det signalet og flytte servoer til posisjonen som brukeren har angitt.

Trinn 1: Teori bak prosjektet

Teori bak prosjektet
Teori bak prosjektet

Arduino er flott på den måten at den tilbyr gratis bibliotek å jobbe med. For dette prosjektet brukte jeg bibliotek Servo.h som gjør det enklere å kontrollere servoer.

Servomotoren styres av PWM -Pulse Width Modulation- som betyr at for å kontrollere servoen må du lage kortspenningspulser. Servo kan dekode lengden på dette signalet og rotere til en gitt posisjon. Og det er her jeg brukte allerede nevnte bibliotek. Jeg trengte ikke å beregne lengden på signalet på egen hånd, men jeg brukte bibliotekets funksjoner som jeg bare sender parameteren til i grader, og det gir signal.

Til styring av servoer brukte jeg potensiometre som fungerer som spenningsdelere. Arduino -kort har flere analoge/digitale omformere som jeg brukte til prosjektet. I utgangspunktet overvåker arduino spenningen på den midterste pinnen på potensiometeret, og hvis den roterer til den ene sidespenningen, er den 0 volt (verdi = 0) og på den andre siden er den 5 volt (verdi = 1023). Denne verdien skaleres deretter fra område 0 - 1023 til 0 - 180 og deretter overføres den til funksjon som allerede er nevnt.

Et annet tema er seriekommunikasjon med arduino som jeg bare vil dekke kort. I utgangspunktet sender programmet skrevet på PC verdien som er valgt av brukeren, arduino kan dekode den og flytte servoen til en gitt posisjon

Trinn 2: Design PCB

Design av PCB
Design av PCB
Design av PCB
Design av PCB
Design av PCB
Design av PCB

Jeg designet 2 PCB - en for hovedkontroll hvor er arduino og pins for servoer og på den andre er potensiometre. Grunnen til 2 PCB er at jeg ønsket å kontrollere robotarmen fra sikker avstand. Begge kretsene er koblet til med kabel av gitt lengde - i mitt tilfelle 80 cm.

For strømkilde valgte jeg ekstern adapter fordi servoer jeg brukte bruker mye mer strøm enn arduino kan levere. Som du kan se er det noen kondensatorer som jeg ikke har nevnt ennå. De er kondensatorer som brukes til filtrering. Som du vet nå, styres servomotoren av korte impulser. Disse impulsene kan gjøre at forsyningsspenningen faller og potensiometre som tidligere hadde et område på 0-5 volt nå har et mindre område. Det betyr at spenningen på midtstiftet endres og arduino får denne verdien og endrer posisjonen som er servomotoren i. Dette kan fortsette for alltid og det forårsaker uønsket svingning som kan elimineres av noen kondensatorer parallelt med forsyningen.

Trinn 3: Lag PCB

Å lage PCB
Å lage PCB
Å lage PCB
Å lage PCB
Å lage PCB
Å lage PCB

For å lage PCB foreslår jeg at du leser dette.

Jeg brukte Iron on Glossy paper -metoden, og det fungerte bra.

Deretter loddet jeg deler på PCB. Du kan se at jeg brukte arduino -kontakt i tilfelle jeg trenger det i fremtiden.

Trinn 4: Designe armen

Design av armen
Design av armen
Design av armen
Design av armen
Design av armen
Design av armen

Dette var på ingen måte den vanskeligste delen av å lage dette prosjektet.

Hele oppsettet er laget av 8 deler der 4 ikke er bevegelige deler - boks for potensiometre og base der arduino er plassert - og andre fire er selve armen. Jeg vil ikke gå nærmere inn på detaljer bortsett fra at designet er ganske intuitivt og på en eller annen måte enkelt. Den er designet for å passe min tilpassede PCB og servoer som jeg vil inkludere i listen over deler.

Trinn 5: Skrive ut delene

Skrive ut delene
Skrive ut delene
Skrive ut delene
Skrive ut delene
Skrive ut delene
Skrive ut delene

Deler ble skrevet ut på Prusa -skriver. Noen ansikter måtte males litt og hull bores gjennom trau. Også støttestøttene måtte fjernes.

Trinn 6: Sett alt sammen

Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen

I dette trinnet som tittelen sier, legger jeg alt sammen.

Først loddet jeg ledninger på potensiometrene og deretter ledningene på PCB. Potensiometre passer fint til hull, og jeg limte kretskortet på søylene som var trykt på bunnen av esken. Du kan bore hull i brettet og inn i esken, men jeg fant ut at liming er mer enn nok. Deretter lukket jeg begge deler av esken og festet dem på plass med 4 skruer som passet inn i hullene jeg designet.

Som et neste trinn laget jeg en flat båndkabel for å koble begge brettene.

I hovedboksen loddet jeg ledninger fra VCC -kontakten for å bytte og deretter til Vcc -kortet og fra GND -kortet til GND -kontakten. Deretter limte jeg kontakten på plass og brettet på søyler. Koblingen passer rett inn i hullet, så det er ikke behov for varmt lim.

Ved hjelp av skruer festet jeg den nederste servoen til bunnen av esken.

Etter det satte jeg den øvre delen av boksen på den nedre delen, og på samme måte som med potensiometerboksen, festet jeg den med 4 skruer.

Neste del var litt vanskelig, men jeg klarte å sette resten av armen sammen med forskjellige muttere og pads, og den var ikke så stram som jeg forventet fordi jeg designet noen toleranser mellom delene, så det er lettere å jobbe med dem.

Og som det siste trinnet la jeg litt tape på bunnen av eskene fordi de ellers ville gli.

Trinn 7: Programmering av Arduino

Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino

Jeg har allerede nevnt hvordan programmet fungerer i teorien bak prosjektet, men jeg kommer til å bryte det opp enda mer.

Så i begynnelsen må vi definere noen variabler. Stort sett blir det kopiert 4 ganger fordi vi har 4 servoer, og etter min mening er det unødvendig å lage mer komplisert logikk bare for å gjøre programmet litt kortere.

Deretter er det ugyldig oppsett der pins av servoer er definert.

Så er det void loop - en del av programmet som looper uendelig. I denne delen tar programmet verdien fra potensiometeret som skalerer den og legger inn utgang. Men det er ett problem at verdien fra potensiometeret hopper ganske mye, så jeg trengte å legge til et filter som gjør gjennomsnittet av de siste 5 verdiene, og deretter setter det ut. Dette forhindrer uønsket vingling.

Siste del av programmet leser data fra seriell port og bestemmer hva de skal gjøre basert på data som sendes.

For å forstå koden fullt ut, foreslår jeg at du besøker offisielle arduino -nettsteder.

Trinn 8: Programmering i Python

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

Denne delen av dette prosjektet er ikke nødvendig, men jeg tror at det bare gir mer verdi til dette prosjektet.

Python tilbyr tonnevis av biblioteker som er gratis å bruke, men i dette prosjektet bruker jeg bare tkinter og serial. Tkinter brukes til GUI (grafisk brukergrensesnitt) og seriell som navnet sier brukes til seriell kommunikasjon.

Denne koden oppretter GUI med 4 glidebrytere som har minimum verdi på 0 og maksimum 180. Det kan være hint for deg at det er i grader og hver glidebryter er programmert til å kontrollere én servo. Dette programmet er ganske enkelt - det tar verdien og sender det til arduino. Men måten den sender på er interessant. Hvis du velger å endre verdien til den første servoen til 123 grader, sender den til arduino -verdien 1123. Første nummer for hvert nummer som sendes, forteller hvilken servo som skal kontrolleres. Arduino har kode som kan dekode dette og flytte riktig servo.

Trinn 9: Liste over deler

Liste over deler
Liste over deler
  • 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
  • Kontakt AWP-10 2 deler
  • Kontakt FC681492 1 stk
  • Bryter P-B100G1 1 stk
  • Sokkel 2x14 1 stk
  • TTL-232R-5v-omformer 1 stk
  • Potensiometer B200K 4 stk
  • og mange flere skruer, pads og muttere

Trinn 10: Avsluttende tanker

Takk for at du leser dette, og jeg håper at jeg i det minste har motivert deg. Dette er mitt første større prosjekt som jeg lagde helt uten å kopiere ting fra internett og det første instruksjonsinnlegget. Jeg vet at armen kan oppgraderes, men jeg er fornøyd med den for nå. Alle deler og kildekoder er gratis, du er velkommen til å bruke den og endre den på hvilken som helst måte du vil. Hvis du har spørsmål, kan du stille dem i kommentarfeltet. Du kan også se på videoene, de er ikke av god kvalitet, men de viser funksjonaliteten til prosjektet.

Anbefalt: