Arduino Powered Bionic Arm: 8 trinn (med bilder)

Arduino Powered Bionic Arm: 8 trinn (med bilder)

Innholdsfortegnelse:

Anonim

Hei, jeg heter Frans, og i dette instruerbare lærer jeg deg hvordan du lager en bionisk arm fra bunnen av! Vårt mål er å skape en stabil og pålitelig arm mainframe som er i stand til å bevege seg mye som en ekte menneskelig arm ville! Før vi begynner vil jeg liste opp alle nødvendige materialer. Vær så snill å eksperimentere med forskjellige materialer eller kode!

Vær oppmerksom på at jeg ikke vil gå inn i å lage trefesten til armen. Jeg valgte ikke å inkludere det i trinnene, fordi treverkene mine er forferdelige, og poenget til armen er at det er modulært, noe som betyr at du i utgangspunktet kan henge den hvor som helst, og det vil fungere! Du er velkommen til å designe en skikkelig montering som ikke holdes sammen av tyraps.

Liste over nødvendige materialer:

  • 1x Arduino Uno + strømkabel.
  • Arduino brødbrett + lange jumper ledninger.
  • 3x Servo.
  • 3x servovinger + tilsvarende skruer.
  • Aluminiumsplater (ca. 40x20 cm skal være tilstrekkelig).
  • Generelle verktøy (et sett med skruetrekkere, skruer, hammer, arbeidsbenk).
  • En bærbar datamaskin eller datamaskin som kan kjøre Arduino-programvare.
  • Wii Nunchuck + Nunchuck skjold.
  • Verktøy for å kutte lettmetaller.

Vanskelighet: gjennomsnittlig - krever solid kunnskap om grunnleggende Arduino funksjoner og verktøy. Jeg forsøker å forklare alt i detalj slik at Arduino nybegynnere som meg selv kan følge denne veiledningen uten store problemer.

forsyninger:

Trinn 1: Opprette Aluminum Cutouts

Det første vi skal gjøre er å lage rammen der vår servo skal plasseres.

Først ta tak i aluminiumsplaten og kutt ut underarmen og øvre armstrimmelen. Det er ingen ekte feil eller feil når det gjelder størrelsen på disse delene ettersom du passer til de andre rammedeltene med den størrelsen du velger her. Personlig gikk jeg med en underarm på 15 cm i lengde med en bredde på 2 cm og en overarm på 13 cm i lengde og med en bredde på 4 cm. Juster størrelser etter eget ønske.

Viktig ting å merke seg når du velger en størrelse: Pass på at du justerer armens bredde til bredden på servoen din. Som en tommelfingerregel bør du gjøre den minst 1,5 / 2 cm lengre i bredden enn servoens bredde, slik at du har god plass til hullet servoen er plassert i.

Nå ønsker vi også å lage to cutouts for vår rotasjonsmekanisme. Klipp ut ytterligere to striper som har omtrent samme bredde som overarmen.

Trinn 2: Behandle aluminiumsutskuddene

Så du fikk dine aluminiumsutklipp alle sortert ut? Flott! Det neste trinnet er å faktisk bearbeide aluminiumet på en måte slik at vi kan sette inn våre servoer i dem. Måten du vil kutte på, er faktisk ved å bruke en punch maskin, også kjent som en "pons" maskin på nederlandsk. Det første bildet i dette trinnet viser maskinen og måten den fungerer på.

Først og fremst er det fire hull vi må lage for standardarmen som bruker 3 servoer til å flytte. Hvis du fulgte det forrige trinnet riktig, bør du nå ha:

  • 2x aluminiumstrimmel for overarm og underarm
  • 2x aluminiumstrimmel for rotasjonsmekanismen.

For å få utklippene riktig, vil du måle størrelsen på servene du skal bruke. Vi starter med overarmen. Denne stripen får en kutt, som er for overarm servo. Match størrelsen på utsnittet i henhold til servostørrelsen som du vil plassere i den.

Opp neste er rotasjonsmekanismen. Klipp dem begge i henhold til bildet. Man får 1 kutt og den andre vil få to kutt. Klar? La oss gå videre.

Trinn 3: Vedlikehold av servoer og montering

Gratulerer med å komme så langt! Nå har vi alle våre verktøy, alt vi trenger å gjøre er å ordentlig feste dem. Det er veldig viktig å feste komponenter på rammen riktig. Unnlatelse av å gjøre det kan føre til skjelvende bevegelser og eller andre feil og ustabiliteter.

Det er lettest å starte med rotasjonsdelene og arbeid deg ned til armdelene.

Viktig notat: Før du begynner å montere servoene dine, må du kontrollere at servo-vingen er ordentlig festet til servoen ved hjelp av den tilhørende skruen. Det vil ikke være mulig å få tilgang til toppen av bladet når den er montert!

Viktig notat nr. 2: Før du legger til servoene i rammen, må du sørge for å skru dem helt på en måte, enten med hånden eller ved å kjøre et skript. Dette vil gjøre det enklere å sette opp koden din senere i prosessen!

Først må du montere din servo i utsnittet du gjorde i den øvre rotasjonsdelen. Hvis du kutter den riktig, skal den glide perfekt.Ta det ut og bor hull for festeskjæret på servoen (sirklet rødt i vedlagt bilde), det skal være et hengsel på hver side av servoen. Ferdig? Skru det raskt!

Nå vil du feste servofløyen til den nedre delen av rotasjonsdelen som vist på bildet. Den enkleste måten å gjøre det på er å måle vinkellengden og markere stedet der borehullene må gå. Så fortsett å bore de merkede hullene og skru vingen fort! Voila!

For de andre to servene er det ikke mye mer til det, bare skyll og gjenta. Pass på at du bruker det vedlagte bildet som referanse. Det er ingen måte å gå galt her. Som du ser på bildet, valgte jeg å velge en større overarm servo, dette er ikke nødvendig, men det er definitivt verdt å vurdere, da det vil gi armen mye mer kraft og stabilitet enn en mikroservo ville.

Trinn 4: Koble arm til Arduino!

Nå som vi har alt satt opp, er det på tide å koble armen til Arduino og begynne å teste. Det er ganske enkelt å koble servos opp til Arduino, men jeg vil lage en liten ordning bare for å være sikker.

Merk: Jeg har lagt til en kondensator til energien i min større servo slik at den deler strømmen jevnere. Det er ikke en nødvendighet, men hvis din servo begynner å mislykkes eller drømmer, ville det være lurt å legge til en før du ser på andre mulige årsaker.

Servoer er ganske enkle å koble til, starter med å se på kablene som kommer ut av det. I nesten alle tilfeller bør det være tre ledninger farget gul -> rødt -> brun eller brun -> rød -> gul henholdsvis. For å koble til dine servoer, bruk skjemaet nedenfor:

  • Gul ledning - Dette er kabelen du vil koble til enten en digital eller analog port på din Arduino, avhengig av om du har en analog servo eller en digital servo.
  • Rød ledning - Dette er strømtilskuddet til Servo, skal alltid kobles til 5V-utgangen på Arduino.
  • Brunt ledning - Dette er bakkekabelen for din servo. Pass på at du plugger dette inn i bakken (eller GND) -pluggen på Arduino.

Fordi vi bruker tre servoer, vil det ikke være nok plass til at alle kabler kobles direkte til Arduino-brettet. Heldigvis er det en enkel og effektiv løsning: breadboards! En brødbrett trenger bare en ledning fra en Arduino port til en rad på breadboard for å multiplisere den porten så mange ganger du vil. Fordi vi har tre grunnkabler og Tre 5V kabler vi trenger definitivt å bruke et brødbrett.

Merk: I denne opplæringen bruker jeg et loddemessig brødbrett, slik at jeg enkelt kan justere ledninger og gjøre endringer i prototypen min, dette betyr ikke at loddingbrettet ikke fungerer!

Trinn 5: Legge til koden

Vi er nesten ferdige! Vi skal nå legge til koden. For å gjøre det, må du ha Arduino IDE installert på datamaskinen eller bærbar PC. Koble nå Arduino til den og start programmet Arduino.

I motsetning til hva folk flest synes er det ganske enkelt å programmere noe inn i Arduino, spesielt når du kan røpe hele koden fra denne galte, nyttige instruerbare! Jeg har lagt til en nedlastingskobling nedenfor. Slik bruker du det:

  1. Last ned hele zip-filen som inneholder all koden.
  2. Trekk ut.zip-filen hvor som helst du vil.
  3. Åpne den opp med Arduino-programmet (hvis det ikke er angitt som standard) og (når Arduino er koblet til), trykk opplastningsknappen. Dette vil sende koden til din Arduino. Når du har lastet opp, skal servoene dine flytte til hvilestillingen til armen. Dette er et godt tegn!

Feilsøking:

Jeg vil prøve å oppdatere denne feilsøkingsdelen for koden så mye som mulig, vær så snill å spørre meg noe i kommentarene!

Q1: Jeg har en kompilatorfeil mens du bygger, hva skal jeg sjekke først?

A1: Det viktigste ved denne koden er å koble dine servoer til de riktige digitale porter. I koden er disse servoene satt til:

  • Port 11 for overarm servo
  • Port 10 til underarm servo
  • Port 12 for Turner servo

Du er velkommen til å tildele disse servoene til andre punkter, men ikke glem å justere koden. Syntaxen går som følger: ServoName.attach (digital pinne du legger servoen inn i).

Merk: For å holde dette så enkelt som mulig, vil jeg ikke gjøre en sammenbrudd av koden i dette trinnet, men du trenger ikke frykte. For alle lurer på hva som skjer i koden, vil jeg gjerne referere til det siste trinnet, noe som er et valgfritt trinn der jeg bryter ned kodestykket etter hvert, forklarer hvordan koden fungerer og styrer armen din underveis!

studiepoeng: Koden som ble brukt i denne opplæringen ble bygget på et grunnbibliotek for Wii Nunchucks laget av Tod E. Kurt, du finner ham og hans fantastiske kreasjoner på

Trinn 6: Koble til Nunchuck

Vi har endelig kommet ned til det siste nødvendige skrittet for å få vår Bionic Arm å jobbe. Hvis du har kommet så langt, bør du forbinde Nunchuck med en bris!

Alt du trenger å gjøre for å koble det er å sette inn din Wii Nunchuck skjold for Arduino i Wii Nunchuck. For å gjøre det riktig bør du sørge for at teksten på Wii-skjermen passer til Nintendo-teksten på Nunchuck slik at de to sidene vender opp når de er koblet til Arduino (som vist på bildet). Ferdig? Flink! Sett arduinoen i de fire første analoge pinnene på din Arduino (også vist på bildet).

Fordi vi allerede har lagt til koden, bør dette fungere umiddelbart, det er ikke nødvendig å kaste med kode fordi koden du lastet ned i forrige trinn, også inneholder de nødvendige bytebiblioteker for å sende og motta innspill til og fra Arduino. Armenen din er nå funksjonell, vennligst se neste trinn for kontroller!

Trinn 7: Alle standard armkontroller

Det er enkelt å styre den bioniske armen!

Først av alt, for at armen skal følge bevegelsene dine deg må holde de c knapp. Det vil bare reagere på tommelfingerkontroller når du ikke holder denne knappen. Jeg programmerte armen på den måten for å få armen til å holde sin posisjon bedre når du ikke vil at den skal bevege seg.

Når du holder c-knappen, kan du sikte nunchuck opp og ned, armen vil etterligne den bevegelsen. Du styrer sving servo på armen ved å vippe nunchucken til venstre eller høyre side. En vanlig feil første gang brukerne gjør er faktisk flytting Servo i swiping bevegelser. Disse bevegelsene blir ikke registrert fordi det ikke finnes noen akselerometer i nunchucken, bare et gyroskop. Ikke bekymre deg selv, det håndterer jobben perfekt.

Til slutt er det tommelstikket på toppen av Nunchuck-bare-funksjonene langs sin vertikale akse, noe som betyr at du kontrollerer underarmen til den bioniske armen ved å skyve tommelstikket opp og ned. Når du slipper tommelfingeren, går den tilbake til standardposisjonen i 90 graders vinkel.

Ta en titt på bildene og videoen for en fin titt på hvordan prototypearmen min trente! Nyt din selvtillit bionic arm!

Trinn 8: (Tillegg) - Kodefordeling

Laget din arm og lurer på hvordan du kan justere til kode etter din smak? Se ikke lenger fordi i dette avsnittet vil jeg påpeke de viktigste kodene jeg har gitt deg, slik at du fritt kan eksperimentere med alle sine funksjoner. Gå videre og åpne koden og fortsett å lese!

1) Som du kan lese fra kommentarene i denne delen, håndterer denne koden alle initialiseringsfunksjonene. Vi starter med å inkludere grunnleggende biblioteker og og også Wii Nunchuck-biblioteket. Vi lager deretter navn for vår akse og for våre servoer, slik at vi kan tildele ting til disse navnene senere.

2) Dette er hvor vi starter når du slår på Arduino. Vi starter med å sette Serialmode til (19200), som er riktig modus for bruk av en Nunchuck med Arduino. Deretter knytter vi alle tre servene basert på digitale porter vi koblet dem til. Deretter sørger vi for at vi 'Skriver' alle servoene til standardposisjon når de starter opp. Når alt er satt opp, skriver vi ut at armen er klar til å følge kommandoene dine

3) Sløyfen er funksjonen som er kontinuerlig, derfor derfor legger vi våre faktiske bevegelsesskript inn her. Vi starter med å ta med variablene som "accx" og "accy" fra nunchuck-biblioteket som vi inkluderte i trinn 1, og vi danner dem til variabler som vi kan jobbe med. Vi legger også til variabel joyx og joyx, disse er styrespakene x og y akselkontrollere.

Tallene servoene skal skrive når arm brukes, skal være manipulerte versjoner av de grunnleggende 'accx' og 'accy' verdiene som vi fikk fra vårt nunchuck-bibliotek. Vi manipulerer verdiene disse variablene gir oss fordi de ikke varierer fra 0 til 180, men vanligvis fra 70-190. De fleste servoer kan bare håndtere en 180 graders sving, og derfor kartlegger vi verdiene til ikke å variere fra 70 til 190, men til 0 til 180.

Fortsatt forstår ikke hva som skjer? Her er et eksempel: Når jeg kartlegger et verdiområde som normalt vil gi resultater mellom 70-190 til 0-180, betyr dette at hvor den laveste verdien normalt ville være 70, ville det nå være 0. Dette går begge veier fordi den nye 190 nå bare er går opp til 180. Kartlegging er ekstremt nyttig for å kontrollere enheter som bare aksepterer begrensede verdiinnganger.

4) Den faktiske bevegelsesdelen av løkken

Vi beveger servoen ved å gjøre den 'skrive' (som betyr å flytte den til ønsket vinkel mellom 0 og 180) de mappede verdiene fra trinn 3. Før vi gjør det, kontrollerer vi om våre kartlagte verdier faktisk er mellom 0 og 180 fordi noen annen verdi kan forårsake funksjonsfeil eller til og med servofeil når servoen kontinuerlig blir bedt om å presse mot sine egne grenser.

Det første vi gjør er å kontrollere om tommelfingerverdien har endret seg, som er satt ut fra vinkelen der tommelstikket på toppen av Nunchuck holdes. Deretter følger vi opp med en "if" -erklæring, og kontrollerer om "c" -knappen holdes nede. Som jeg sa i kontrollseksjonen av denne instruksene; armen vil bare fungere når denne knappen holdes nede. Ta gjerne bort denne utsagnet og se om du liker det bedre, men for en stabil arm vil jeg sterkt anbefale at du forlater denne tilstanden på plass.

C-knappen trykket? Flink! Dette betyr at servoene nå også skal skrive alle data fra våre kartlagte y-akse- og x-akseverdier som angis av hvilken vinkel og tonehøyde vår Arduino holdes. Det er alt der er til det.

Så der har du det, min fulle forklaring på koden! Hvis du vil lære mer om den faktiske byteavlesningsdelen av koden som er gjort i biblioteket jeg brukte fra TodBot, vil jeg gjerne henvise til bloggen hans! Jeg på ingen måte tar æren for det vedlagte biblioteket jeg refererer til i kodene mine.

Merk: For de av dere lurer på hvorfor det er en forsinkelse mellom hver bevegelse og også mellom hver loopkontroll; Dette er for å hindre at inngangen til nunchucken oversvømmer servoene med kommandoer. Hvis du fjerner forsinkelsen, vil det oppstå en byte overbelastning på mottakersiden av nunchucken, som igjen vil føre til unøyaktig bevegelse av armen eller til og med feil.