Sisällysluettelo:

Arduino -ohjattava robottivarsi W/ 6 vapausastetta: 5 vaihetta (kuvilla)
Arduino -ohjattava robottivarsi W/ 6 vapausastetta: 5 vaihetta (kuvilla)

Video: Arduino -ohjattava robottivarsi W/ 6 vapausastetta: 5 vaihetta (kuvilla)

Video: Arduino -ohjattava robottivarsi W/ 6 vapausastetta: 5 vaihetta (kuvilla)
Video: You will get straight As using this device 💀 #electronics #engineering #arduino 2024, Marraskuu
Anonim
Arduino -ohjattava robottivarsi W/ 6 vapausastetta
Arduino -ohjattava robottivarsi W/ 6 vapausastetta
Arduino -ohjattava robotti käsivarsi W/ 6 vapausastetta
Arduino -ohjattava robotti käsivarsi W/ 6 vapausastetta
Arduino -ohjattava robotti käsivarsi W/ 6 vapausastetta
Arduino -ohjattava robotti käsivarsi W/ 6 vapausastetta

Olen robotiikkaryhmän jäsen ja ryhmämme osallistuu vuosittain vuosittaiseen Mini-Maker Faire -tapahtumaan. Vuodesta 2014 alkaen päätin rakentaa uuden projektin jokaisen vuoden tapahtumaa varten. Tuolloin minulla oli noin kuukausi ennen tapahtumaa koottavaksi jotain, enkä tiennyt mitä halusin tehdä.

Kollegani lähetti linkin "mielenkiintoiseen avoimen lähdekoodin robottirakenteeseen", joka herätti kiinnostukseni. Suunnitelmat olivat vain käsivarsi ilman ohjaimia tai ohjain. Ottaen huomioon aikarajoitukseni se tuntui todella hyvältä lähtökohdalta. Ainoa ongelma oli se, että minulla ei todellakaan ollut työkaluja aloittamiseen.

Joidenkin ryhmän jäsenten avulla pystyin leikkaamaan ja lähettämään minulle akryyliosat sekä kaksi alla esitettyä 3D -tulostettua osaa. Yhdessä joidenkin yön laitteistotilausten ja useiden paikallisen rautakaupan matkojen kanssa sain päätökseen työprojektin tapahtumaa edeltävänä iltana!

Kuten yleensä tapahtuu, tarinassa on enemmän ja rakennuksessa on useita inkarnaatioita, jotka on tiivistetty alla olevaan. Jos olet kiinnostunut tarinasta, löydät lisää täältä:

Vaihe 1: Mitä tarvitset - Laitteisto ja elektroniikka

Mitä tarvitset - laitteisto ja elektroniikka
Mitä tarvitset - laitteisto ja elektroniikka
Mitä tarvitset - laitteisto ja elektroniikka
Mitä tarvitset - laitteisto ja elektroniikka

Alkuperäinen suunnittelija asui Euroopassa ja käytti myöhemmin metrisiä mittauksia ja siellä yleisiä materiaaleja. Esimerkiksi runkoon käytetty puristuslevy oli 5 mm paksu. Vastaava materiaali täällä Yhdysvalloissa on 1/8 , joka on noin 3,7 mm paksu. Tämä jätti aukon aukkoihin, jotka oli alun perin suunniteltu puristettaviksi. Piirustusten korjaamisen sijaan käytin yksinkertaisesti Gorilla -liimaa näiden liitosten kiinnittämiseen.

Hän käytti myös M3 -kierteisiä muttereita ja pultteja, jotka eivät ole vakiona paikallisessa rautakaupassasi Yhdysvalloissa. Sen sijaan, että muuttaisin nämä paikallisesti saataville vaihtoehdoille, tilasin yksinkertaisesti laitteiston verkosta alla olevan osaluettelon mukaisesti.

  • 22 - M3 x 0,5 x 23 mm
  • 15 - M3 x 15 mm välikappaleet
  • 40 - M3 -ruuvit
  • M3 Kuusiomutterit
  • M3 25mm ruuvit
  • 1 - Kevät
  • 3/4 "kaksipuolinen kiinnitysteippi
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini -servo
  • 1 - SG90 TowerPro mini -servo
  • 2,54 mm yksirivinen suora nastainen otsikko
  • 1 - Puolikokoinen leipälauta
  • 1 - Naaras/uros -jatkojohdin - 40 x 6"
  • 1 - 12 "x 24" sininen akryylilevy tai laserleikatut kappaleet suosikkipalveluntarjoajalta
  • 2-3 mm x 20 mm + 4 mm x 5 mm nivellaakerin välikkeet 3D -tulostettu (katso alla)
  • 1 - Ohjauspaneeli *Katso Huomautus Johdotus -osassa
  • 1 - Hajautettu RGB (kolmivärinen) 10 mm: n LED
  • 1 - Arduino Uno
  • 1 - Vakio LCD 16x2 + lisävarusteet - valkoinen sinisellä
  • 1 - i2c / SPI -merkkinen LCD -reppu
  • 1-Adafruit 16-kanavainen 12-bittinen PWM/servo-ohjain
  • 1 - MCP3008 - 8 -kanavainen 10 -bittinen ADC SPI -liitännällä
  • 3 - JoyStick Breakout Module Sensor *Katso Huomautus Johdotus -osassa
  • DC Barrel Jack
  • AC -DC -sovitin
  • Servo -jatkojohdot - eripituisia

Lähes kaikki tämän käsivarren osat leikattiin 1/8 tuuman akryylistä. Kaksi nivelen laakeriväliä on kuitenkin tulostettava. Myös alkuperäinen suunniteltu vaati, että kaksi nivelvälilevyä ovat 7 mm korkeat laakeriakseliin nähden. Kun aloitin olkavarren kokoonpanon, tuli nopeasti selväksi, että ne olivat liian korkeita TowerPro -servojen korkeuden vuoksi. Minun piti tehdä uudet nivellaakerit, joiden pohja oli vain 3 mm korkea, mikä muuten oli vielä hieman liian pitkä, mutta hallittavissa. Haluat ottaa huomioon servojesi suhteellisen korkeuden ja ottaa huomioon kahden alavarren välisen etäisyyden:

Servokorkeus + servosarvi + nivellaakeri + kaksipuolinen teippi = 47 mm +/- 3 mm.

Vaihe 2: Varren asennus

Varren kokoonpano
Varren kokoonpano
Varren kokoonpano
Varren kokoonpano
Varren kokoonpano
Varren kokoonpano
Varren kokoonpano
Varren kokoonpano

Ennen kuin aloitat, muista keskittää kaikki servosi! Jos milloin tahansa rakentamisen aikana, jos siirrät servon asentoa manuaalisesti, sinun on päivitettävä se ennen kuin kiinnität sen runkoon. Tämä on erityisen tärkeää olkapääservojen kanssa, joiden täytyy aina liikkua yhdessä.

  1. Kiinnitä servoservo ylälevyyn käyttämällä 25 mm: n M3 -ruuveja ja kuusiomuttereita. Älä kiristä liikaa! HUOMAUTUS: Voit kiinnittää kierteet lukitustiukkaan, jotta mutterit eivät löysty käytön aikana.

  2. Jos käytät yllä olevaa osaluetteloa, haluat seuraavaksi koota 5 pohjaväliä kiertämällä 2 kpl M3 x 0,5 x 23 mm: n välilevyjä yhteen ja kiinnittämällä ne sitten ylempään pohjalevyyn kuusiomuttereilla.
  3. Kiinnitä alempi pohjalevy vasteisiin 5 M3 ruuvilla.
  4. Kiinnitä olkalevy kahteen servoasennuslevyyn akryyliturvallisella liimalla. Käytin täällä Gorilla -liimaa. HUOMAUTUS: Molemmissa kahdessa servolevyssä on reikä takana, joka mahdollistaa vahvistusvälikkeen asettamisen niiden yhdistämiseksi. Varmista, että reiät ovat kohdakkain!* Kun liima on käsillä, mene eteenpäin ja yhdistä ranteen kiinnityslevy tarttujan päälevyyn. En tehnyt tätä valintaa sen sijaan, että pulttaisin nämä yhteen pysäytysten kanssa alla kuvatulla tavalla.
  5. Kiinnitä nyt kovettunut olkapääkokoonpano peruspalvelimeen. Käytin servon leveintä sarvea, joka oli kuuden varren kiinnitystorvi.
  6. Alavarren rungon lisääminen olkaservoihin voi olla hankalaa. Ehdotan, että sarvet kiinnitetään varren alakehyksiin ennen kuin jatkat. HUOMAUTUS: Varmista, että keskität servosi olkapääyksikköön ENNEN kuin kiinnität ne runkoon. Näiden kahden servon on liikuttava yhtenäisesti, ja jos ne on kohdistettu väärin, ne aiheuttavat vähintään servovärinää ja, jos ne on kohdistettu väärin, voivat vahingoittaa runkoa tai servoja. * Jokainen olkaservo on asennettu kiinnikkeineen asennuslevyjen takapuolelle sen sijaan, että ohjaisi servoja levyjen läpi - tämän avulla voit työntää sarven servoakselille kulmassa ja kiinnittää ruuvin. Älä vielä kiinnitä servoa asennuslevyyn. * Seuraavaksi lisää sisäinen servo ja asenna varsi

  7. Kokoa olkavarren runko ja servot työntämällä servot käsivarsien aukkojen läpi ja asettamalla välikkeet molempien olkavarren levyjen väliin ja kiinnitä M3 -ruuveilla.
  8. Lisää kaksipuolinen teippi kyynärliitoksen välilevyn takaosaan ja leikkaa ylimääräinen.
  9. Kiinnitä välikappale servon pohjaan, joka toimii kyynärpäätoimilaitteena.
  10. Liu'uta olkavarresarja alavarsivarren runkoon ja kiinnitä servosarven ruuvit.
  11. Lisää vahvikkeita kahden alavarsilevyn väliin. Käytin kahta kaikkien neljän sijasta painon alentamiseen.
  12. Lisää kaksipuolinen teippi ylemmän ranteenivelen välikkeen takaosaan ja leikkaa ylimääräinen.
  13. Kiinnitä välike ranteen toimilaitteena toimivan servon pohjaan.
  14. Kiinnitä ulompi rannelevy ranneservosarveen ja kiinnitä torviruuvilla.
  15. Kokoa ranteen servolevy kahden ranteenivellevyn ja vasteiden kanssa.
  16. Kiinnitä ranneservo servolevylle servokiinnityslevyllä.
  17. Sinun on kiinnitettävä rannesarvi servoon ennen kuin kiinnität tartuntakokoonpanon kyseiseen sarveen, koska sarviruuvin aukko on tukossa.
  18. Kokoa löysästi tartuntakappaleet löysästi, ennen kuin kiinnität tarttimen servosarven servoon. Tämä antaa sinulle tilaa kiertää torvi edellisessä vaiheessa.
  19. Kiinnitä tarttujan torvi sen servoon ja kiristä pidikkeen nivelet pitävät ruuvit edelleen. HUOMAUTUS: älä kiristä näitä muttereita ja pultteja kokonaan, koska niiden on oltava löysällä, jotta tarttuja liikkuu.

Vaihe 3: Johdotus ja ohjauspaneeli

Johdotus ja ohjauspaneeli
Johdotus ja ohjauspaneeli
Johdotus ja ohjauspaneeli
Johdotus ja ohjauspaneeli
Johdotus ja ohjauspaneeli
Johdotus ja ohjauspaneeli

Rakensin tämän projektin kehitysalustaksi joillekin ideoille, joita minulla on myöhempää koulutusprojektia varten. Suurin osa yhteyksistäni on siis yksinkertaisia dupont -liittimiä. Ainoa juotos, jonka tein, oli MCP3008. Jos voit löytää murtokortin tälle komponentille, sinun pitäisi pystyä rakentamaan tämä käsivarsi juotoksesta.

Komponentteja on 3 ryhmää:

  1. Tulot - Nämä kohteet ottavat tietoja käyttäjältä ja koostuvat ohjaussauvoista ja mcp3008 ADC: stä.
  2. Lähdöt - Nämä kohteet välittävät tietoa maailmalle joko näyttämällä tilan käyttäjälle tai päivittämällä servot sijaintitiedoilla. Näitä kohteita ovat LCD -näyttö, LCD -reppu, RGB -LED, servo -ohjainkortti ja lopuksi servot.
  3. Käsittely - Arduino kokoaa viimeisen ryhmän, joka ottaa tiedot syötteistä ja työntää tiedot ulos lähtöihin koodiohjeiden mukaisesti.

Yllä oleva Fritzing -kaavio esittää yksityiskohtaisesti kaikkien komponenttien nastaliitännät.

Tulot

Aloitamme panoksilla. Ohjaussauvat ovat analogisia laitteita - mikä tarkoittaa, että niissä on muuttuva jännite tulona Arduinolle. Jokaisessa kolmessa ohjaussauvassa on kaksi analogista lähtöä X: lle ja Y: lle (ylös, alas, vasemmalle oikealle), mikä tekee yhteensä 6 tuloa Arduinolle. Vaikka Arduino Unossa on 6 analogista tuloa, meidän on käytettävä kahta näistä nastoista I2C -viestintään näytön ja servo -ohjaimen kanssa.

Tämän vuoksi olen sisällyttänyt MCP3008 analoginen digitaalimuunnin (ADC). Tämä siru ottaa jopa 8 analogista tuloa ja muuntaa ne digitaaliseksi signaaliksi Arduinon SPI -tiedonsiirtonastien kautta seuraavasti:

  • MCP-nastat 1-6> Peukalon ohjaussauvojen muuttuvat lähdöt
  • MCP -nastat 7 ja 8> Ei yhteyttä
  • MCP -nasta 9 (DGND)> Maa
  • MCP -nasta 10 (CS/SHDN)> Irrota nasta 12
  • MCP -nasta 11 (DIN)> Irrota nasta 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP -nasta 13 (CLK)> Irrota nasta 9
  • MCP -nasta 14 (AGND)> Maadoitus
  • MCP Pin 15 & 16> +5V

Kaavion joystick -liitännät on esitetty vain esimerkkinä. Liitännät voivat poiketa omastani riippuen siitä, mitkä ohjaussauvat ostavat ja miten ne on asennettu. Joystickin eri merkeillä voi olla erilainen pistoke ja ne voivat myös suunnata X: n ja Y: n eri tavalla. Tärkeää on ymmärtää, mitä kukin ADC: n tulo edustaa. Jokainen nasta edustaa seuraavia suhteita koodissani:

  • Nasta 1 - Pohja - Tämän nastan analogiset tiedot pyörivät robotin alinta servoa
  • Nasta 2 - Olkapää - Tämän nastan analogiset tiedot kiertävät kahta servoa peruspalvelon yläpuolella
  • Nasta 3 - Kyynärpää - Tämän nastan analogiset tiedot kääntävät seuraavan servon ylös olkapäästä
  • Nasta 4 - UP/DN -ranne - Tämän nastan analogiset tiedot pyörivät ranneservoa, nostavat ja laskevat tartuntakokoonpanoa
  • Nasta 5 - Tarttuja - Tämän tapin analogiset tiedot avaavat ja sulkevat tarttujan
  • Nasta 6 - Kierrä rannetta - Tämän tapin analogiset tiedot kääntävät tarttujaa

HUOMAUTUS: Kun ostat ja asennat osaluettelossa mainittuja peukalon ohjaussauvoja, muista, että moduulien suunta voi poiketa omastani, joten testaa x- ja y -ulostulot, että ne on liitetty oikein ADC: hen. Lisäksi, jos käytät 3D -tulostettua ohjauspaneeliani, asennusreiät voivat olla syrjässä omastani.

Lähdöt

Adafruit PWM/Servo Controller tekee tästä projektista erittäin yksinkertaisen. Liitä vain servot servopäätteisiin ja kaikki virta- ja signaaliliitännät käsitellään. Ellet löydä servoja, joissa on erityisen pitkät johdot, haluat hankkia eripituisia servokaapelipidennyksiä, jotta kaikki servokaapelit ulottuvat ohjainkortillesi.

Servot on kytketty seuraavasti:

  • Asento 0 - Pohja servo
  • Asento 1 - Olkapää servo (Servo Y -kaapeli)
  • Asento 2 - Kyynärpääservo
  • Asento 3 - Ranne 1 Servo
  • Asento 4 - Gripper Servo
  • Asento 5 - Ranne 2 Servo

Lisäksi VCC ja V + on molemmat kytketty +5 volttiin ja GND on kytketty maahan.

HUOMAUTUS 1: Yksi iso huomautus tässä: Koko projektin syöttöjännite tulee sisään Servo -ohjauskortin virtaliittimen kautta. Servo -ohjaimen V+ -nasta syöttää itse asiassa virtaa riviliittimestä muuhun piiriin. Jos sinun on ohjelmoitava Uno -laitteesi, suosittelen, että irrotat V+ -tapin ennen Unon liittämistä tietokoneeseen, koska servojen virranotto voi vahingoittaa USB -porttia.

HUOMAUTUS 2: Käytän projektin virtalähteenä 6V AC -DC -seinäsovitinta. Suosittelen sovitinta, joka voi syöttää vähintään 4A virtaa, jotta kun yksi tai useampi servo kytkeytyy, äkillinen virtapiikki ei ruskista järjestelmääsi ja nollaa Arduinoa.

16X2 LCD -näyttö on liitetty Adafruit LCD -reppuun hyödyntääkseen I2C -käyttöliittymää, jota Servo -ohjain jo käyttää. Servo -ohjaimen SCL ja reppu CLK yhdistyvät molemmat Unon nastaan A5. Samoin servo -ohjaimen SDA ja reppu DAT yhdistyvät molemmat Uno -nastan nastaan A4. Lisäksi 5V on kytketty +5 volttiin ja GND maadoitukseen. Reppu LAT ei liity mihinkään.

Lopuksi RGB -LED on kytketty Unon nastoihin 7 (PUNAINEN), 6 (Vihreä) ja 5 (sininen). LEDin maadoitusjalka on kytketty maahan 330 ohmin vastuksen kautta.

Käsittely

Viimeisenä mutta ei vähäisimpänä, loput Arduino -yhteydet, joita ei ole lueteltu edellä, ovat seuraavat: Pin 5V on kytketty +5 volttiin ja GND on kytketty maahan.

Kokoonpanossani käytin leipälaudan sivukiskoja sitomaan kaikki virta- ja maadoituslinjat yhteen sekä kaikkien laitteiden I2C -nastat.

Vaihe 4: Koodi

Koodi
Koodi

Kuten aiemmin totesin, rakensin tämän projektin alun perin esittelyksi paikalliselle Maker Fairelle. Tarkoitin sen olevan lapsille ja aikuisille leikkimistä osastollamme. Kuten käy ilmi, se oli paljon suositumpi kuin olin kuvitellut - niin paljon, että lapset taistelivat siitä. Joten kun tuli aika kirjoittaa uudelleen, sisällytin "demotilan", joka toteuttaa aikarajan.

Käsi istuu siellä odottamassa, että joku liikuttaa ohjaussauvaa, ja kun he tekevät, se käynnistää 60 sekunnin ajastimen. 60 sekunnin kuluttua se lopettaa käyttäjän syöttämisen ja "lepää" 15 sekunnin ajan. Lyhyen huomion kesto on mitä he ovat, tämä lepoaika vähensi huomattavasti kiistoja tikkuajasta.

Perusoperaatio

Alla olevassa viiteosiossa lueteltu koodi on melko yksinkertainen. Joukko seuraa kuutta liitosta min, max ulottuvuuksilla, kotiasennolla ja nykyisellä sijainnilla. Kun varsi on kytketty päälle, käynnistystoiminto määrittää kirjastot, joita tarvitaan MCP3008: n, LCD -reppun (ja sen jälkeen näytön) puheluun, ja määrittää LED -nastat. Sieltä se tekee perusjärjestelmätarkastuksen ja jatkaa kotiin käsivarteen. Kotitoiminto alkaa tarttimesta ja toimii alaspäin pohjaan niin, että se minimoi sitomisen mahdollisuuden normaaleissa olosuhteissa. Jos käsivarsi on kokonaan ojennettuna, saattaa olla parasta palauttaa käsivarsi käsin ennen sen käynnistämistä. Koska yleiset servot eivät anna palautetta sen sijainnista, meidän on sijoitettava jokainen ennalta määritettyyn kohtaan ja seurattava, kuinka pitkälle jokainen on siirtynyt.

Pääsilmukka alkaa ensin odotustilassa - etsien ohjaussauvoja siirtymään pois keskiasennostaan. Kun tämä tapahtuu, pääsilmukka vaihtaa tilat laskuritilaksi. Kun käyttäjä liikuttaa jokaista ohjaussauvaa, ohjaussauvan suhteellinen sijainti keskeltä lisää nykyiseen tunnettuun paikkaan tai vähentää siitä ja päivittää sopivan servon. Kun servo on saavuttanut määritetyn rajan yhteen suuntaan, ohjaussauva pysähtyy. Käyttäjän on siirrettävä ohjaussauvaa toiseen suuntaan liikuttaakseen sitä uudelleen. Tämä on ohjelmistorajoitus, joka asetetaan servoille riippumatta niiden laitteistopysähdyksistä. Tämän ominaisuuden avulla voit tarvittaessa pitää käsivarren liikkeet määrätyllä toiminta -alueella. Jos ohjaussauva vapautetaan keskelle, liike pysähtyy.

Tämä koodi on vain yleinen lähtökohta. Voit lisätä omia tiloja haluamallasi tavalla. Yksi esimerkki voi olla ajastamaton jatkuva ajotila tai ehkä lisätä ohjaussauvan painikkeet tuloiksi ja kirjoittaa tallennus/toistotila.

Vaihe 5: Linkit ja resurssit

Käsivirheet

  • Viesti, joka inspiroi tätä projektia
  • Alkuperäisten suunnittelijoiden blogikirjoituksetOma robottivarsi Minipalvelukahvat ja valmis robottivarsi Kerro robottivarsi ja elektroniikka
  • Thingiverse Arm
  • Thingiverse Mini Servo Gripper

Ohjelmistotiedostot

  • Adafruit PWM/servo -ohjaimen resurssit
  • MCP3008 -kirjasto
  • MCP3008 tuotetiedot

Ohjauspaneeli ja koodi

  • Tinkercad -piirustus paneelista, jonka tein
  • Nykyinen koodivarasto

Suositeltava: