INHOUDSOPGAWE:

Arduino -beheerde robotarm met 6 grade vryheid: 5 stappe (met foto's)
Arduino -beheerde robotarm met 6 grade vryheid: 5 stappe (met foto's)

Video: Arduino -beheerde robotarm met 6 grade vryheid: 5 stappe (met foto's)

Video: Arduino -beheerde robotarm met 6 grade vryheid: 5 stappe (met foto's)
Video: Leap Motion SDK 2024, Julie
Anonim
Arduino -beheerde robotarm met 6 grade vryheid
Arduino -beheerde robotarm met 6 grade vryheid
Arduino -beheerde robotarm met 6 grade vryheid
Arduino -beheerde robotarm met 6 grade vryheid
Arduino -beheerde robotarm met 6 grade vryheid
Arduino -beheerde robotarm met 6 grade vryheid

Ek is lid van 'n robotika-groep en elke jaar neem ons groep deel aan 'n jaarlikse Mini-Maker Faire. Vanaf 2014 het ek besluit om 'n nuwe projek vir elke jaar se geleentheid te bou. Destyds het ek ongeveer 'n maand voor die geleentheid iets gehad om saam te stel en het ek nie 'n idee wat ek wou doen nie.

'N Mede -lid het 'n skakel na' 'n interessante oopbron -robotarm -bou '' geplaas wat my aandag getrek het. Die planne was net 'n arm sonder kontroles of 'n kontroleerder. Gegewe my tydsbeperkings, het dit na 'n baie goeie beginpunt gelyk. Die enigste probleem was dat ek regtig geen gereedskap gehad het om aan die gang te kom nie.

Met die hulp van sommige van die groeplede kon ek die akrielonderdele laat sny en vir my stuur, sowel as die twee 3D -gedrukte dele hieronder. Gekombineer met 'n paar hardeware -bestellings vir oornag en verskeie reise na die plaaslike hardewarewinkel, het ek die aand voor die geleentheid 'n werkprojek voltooi!

Soos gewoonlik die geval is, is daar meer in die verhaal en verskeie inkarnasies van die gebou wat saamgevoeg is tot wat u hieronder sien. As u belangstel in die agterverhaal, kan u meer hier vind:

Stap 1: Wat u benodig - hardeware en elektronika

Wat u benodig - hardeware en elektronika
Wat u benodig - hardeware en elektronika
Wat u benodig - hardeware en elektronika
Wat u benodig - hardeware en elektronika

Die oorspronklike projekontwerper het in Europa gewoon en daarna metrieke metings en materiaal gebruik wat daar algemeen voorkom. Die persbord wat hy vir die liggaam gebruik het, was byvoorbeeld 'n standaard van 5 mm dik. Soortgelyke materiaal hier in die VSA is ongeveer 1,7 mm dik, ongeveer 3,7 mm dik.

Hy het ook moere en boute van M3 gebruik wat nie standaard by u plaaslike hardewarewinkel in die VSA is nie. In plaas daarvan om dit oor te skakel na plaaslik beskikbare opsies, het ek die hardeware eenvoudig aanlyn bestel, soos in my onderstaande lys hieronder getoon.

  • 22 - M3 x 0,5 x 23 mm afstande
  • 15 - M3 x 15 mm afstandhouers
  • 40 - M3 -skroewe
  • M3 heksneute
  • M3 25 mm skroewe
  • 1 - Lente
  • 3/4 "dubbelzijdige monteerband
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini -servo
  • 1 - SG90 TowerPro mini -servo
  • 2,54 mm enkelvoudige ry reguit penkop
  • 1 - Halfgrootte broodbord
  • 1 - Trui -drade vir vroulike/manlike 'uitbreidings' - 40 x 6"
  • 1 - 12 "x 24" blou akrielblad of die lasersnitte van u gunsteling diensverskaffer
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm lasdraadafstandhouders 3D -gedruk (sien hieronder)
  • 1 - Beheerpaneel *Sien aantekening in die bedradingafdeling
  • 1 - Verspreide RGB (driekleurige) 10 mm LED
  • 1 - Arduino Uno
  • 1 - Standaard LCD 16x2 + ekstras - wit op blou
  • 1 - i2c / SPI karakter LCD rugsak
  • 1-Adafruit 16-kanaal 12-bis PWM/Servo Driver
  • 1 - MCP3008 - 8 -kanaals 10 -bis ADC met SPI -koppelvlak
  • 3 - JoyStick -uitbreekmodulesensor *Sien opmerking in die bedradingafdeling
  • DC Barrel Jack
  • AC na DC adapter
  • Servo verlengkabels - verskillende lengtes

Byna al die dele vir hierdie arm is van 1/8 -duim -akriel gesny. Die twee afstandhouers moet egter gedruk word. Die oorspronklike ontwerp het ook aangedui dat die twee gewrigsafstandhouers 7 mm lank moet wees tot by die laerskag. Toe ek die bo -arm begin monteer, word dit vinnig duidelik dat dit te hoog was vanweë die hoogte van die TowerPro -servo's. Ek moes 'n nuwe laer maak met 'n basis van slegs 3 mm lank, wat terloops nog 'n bietjie te hoog maar hanteerbaar was. U moet let op die relatiewe hoogte van u servo's en die afstand tussen die twee onderarms in ag neem:

Servohoogte + servohoring + lasdraad + dubbelzijdige band = 47 mm +/- 3 mm.

Stap 2: Armbyeenkoms

Arm vergadering
Arm vergadering
Arm vergadering
Arm vergadering
Arm vergadering
Arm vergadering
Arm vergadering
Arm vergadering

Voordat u begin, moet u al u servo's sentreer! As u op enige tydstip tydens die konstruksie die posisie van die servo handmatig verplaas, moet u dit weer voor u dit aan die raam bevestig. Dit is veral belangrik met die skouerservo's wat altyd eendragtig moet beweeg.

  1. Bevestig die basisservo aan die boonste basisplaat met die M3 25 mm -skroewe en seskantmoere. LET OP: Dit is moontlik om die drade styf vas te sit om die moere wat tydens gebruik loskom, te verminder.

  2. As u die onderstaande lys gebruik wat ek hierbo het, dan wil u die 5 afstandhouers aanmekaar sit deur 2 elk van die M3 x 0,5 x 23 mm afstandpunte aan mekaar te ryg en dit dan aan die boonste basisplaat vas te maak met heksmoere.
  3. Bevestig die onderste voetplaat met 5 M3 -skroewe aan die afstande.
  4. Bevestig die skouerplaat aan die twee servo -monteerplate met 'n akriel veilige gom. Ek het Gorilla Glue hier gebruik. OPMERKING: Elkeen van die twee servoplaatjies het 'n gat aan die agterkant waarmee 'n versterkingsafstandhouer ingevoeg kan word. Maak seker dat die gate in lyn is!* Terwyl u die gom byderhand het, kan u die monteerplaat van die pols met die grypplaat vasmaak.* U kan ook die pols -servoplaat aan die twee polsgewrigplate plak. Ek het dit nie gedoen nie, maar ek het dit gekombineer met afstande soos hieronder beskryf.
  5. Bevestig die nou geneesde skouermontering aan die basisservo. Ek gebruik die breedste horing wat by die servo ingesluit is, wat die sesstang -monteerhoring was.

  6. Dit kan lastig wees om die onderarmraam by die skouerservo's te voeg. Ek stel voor dat die horings aan die onderarmrame vasgemaak word voordat u verder gaan. LET WEL: Sorg dat u u servo's vir die skouermontage sentreer voordat u dit aan die raam bevestig. Hierdie twee servo's moet eenstemmig beweeg, en as hulle verkeerd in lyn is, kan die servo -jitter ten minste veroorsaak word en kan die raam of servo's beskadig word as dit genoeg is. * Elkeen van die skouerservo's is met hul hakies aan die agterkant van die monteerplate gemonteer in plaas van om die servo's deur die borde te laat loop - dit sal u toelaat om die horing skuins op die servo -as te druk en die skroef vas te maak. Bevestig die servo nog nie aan die monteerplaat nie. * Voeg dan die binneste servo by en monteer die arm
  7. Monteer die bo -armraam en servo's deur die servo's deur die spasies in die arms te druk en plaas die afstandhouers tussen die bo -armplate en steek dit vas met M3 -skroewe.
  8. Voeg dubbelzijdige kleeflint aan die agterkant van die elmbooggewrigafstandhouer by en sny die oortollige af.
  9. Bevestig die afstandhouer aan die onderkant van die servo wat as die elmboogaktuator dien.
  10. Steek die bo -arm saam in die onderarm raam en maak die servo horing skroewe vas.
  11. Voeg versterkingsafstande tussen twee onderarmplate by. Ek het twee in plaas van al vier gebruik om die gewig te verlaag.
  12. Voeg dubbelzijdige kleeflint aan die agterkant van die afstandhouer van die boonste pols vas en sny die oortollige af.
  13. Bevestig die afstandhouer aan die onderkant van die servo wat sal dien as die polsaktuator.
  14. Bevestig die buitenste polsplaat aan die polsservohoring en maak dit vas met 'n horingskroef.
  15. Monteer die pols servoplaat met die twee polsgewrigplate en afstande.
  16. Bevestig die polsservo op die servoplaat met die servoklemplaat.
  17. U moet die polshoring aan die servo bevestig voordat u die gryper aan die horing heg, aangesien die opening vir die horingsskroef geblokkeer word.
  18. Monteer die gryperstukke los om te pas voordat u die servohoring van die grijper aan die servo bevestig. Dit gee u ruimte om die horing in die vorige stap af te skroef.
  19. Bevestig die gryphoring aan die servo en draai die skroewe verder vas wat die grypverbindings hou. LET WEL: moere en boute moet nie heeltemal vasgedraai word nie, want hulle moet los wees sodat die gryper kan beweeg.

Stap 3: Bedrading en bedieningspaneel

Bedrading en bedieningspaneel
Bedrading en bedieningspaneel
Bedrading en bedieningspaneel
Bedrading en bedieningspaneel
Bedrading en bedieningspaneel
Bedrading en bedieningspaneel

Ek het hierdie projek gebou as 'n ontwikkelingsplatform vir 'n paar idees wat ek vir 'n latere opvoedkundige projek het. Die meeste van my verbindings is dus eenvoudige dupont -verbindings. Die enigste soldeer wat ek gedoen het, was vir die MCP3008. As u 'n uitbreekbord vir hierdie komponent kan vind, moet u hierdie arm soldeer gratis kan bou.

Daar is 3 groepe komponente:

  1. Insette - Hierdie items neem inligting van die gebruiker in en bestaan uit die joysticks en die mcp3008 ADC.
  2. Uitsette - Hierdie items dra data oor aan die wêreld, óf deur status aan die gebruiker te wys, óf die servo's by te werk met posisiesdata. Hierdie items is die LCD -skerm, LCD -rugsak, die RGB -LED, die Servo -bestuurdersbord en laastens die servo's.
  3. Verwerking - Die Arduino sluit die laaste groep in wat die data van die insette inneem en data na die uitsette stoot volgens die kode -instruksies.

Die Fritzing -skema hierbo beskryf die penverbindings vir al die komponente.

Insette

Ons begin met die insette. Die joysticks is analoog toestelle - wat beteken dat hulle 'n veranderlike spanning as 'n ingang van die Arduino bied. Elkeen van die drie joysticks het twee analoog -uitsette vir X en Y (op, af, links regs), wat 'n totaal van 6 insette tot die Arduino maak. Alhoewel die Arduino Uno 6 analoog ingange beskikbaar het, moet ons twee van hierdie penne gebruik vir I2C -kommunikasie met die skerm en servobestuurder.

As gevolg hiervan het ek die MCP3008 analoog na digitale omskakelaar (ADC) opgeneem. Hierdie chip neem tot 8 analoog insette in en skakel dit soos volg oor na 'n digitale sein oor die Arduino se SPI kommunikasie penne:

  • MCP-penne 1-6> Veranderlike uitsette van die duim-joysticks
  • MCP -penne 7 en 8> Geen verbinding nie
  • MCP -pen 9 (DGND)> Grond
  • MCP Pin 10 (CS/SHDN)> Uno Pin 12
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP Pin 13 (CLK)> Uno Pin 9
  • MCP Pin 14 (AGND)> Grond
  • MCP Pin 15 & 16> +5V

Die joystickverbindings in die skematiese weergawe word net vir 'n voorbeeld getoon. Afhangende van watter joysticks koop en hoe hulle gemonteer is, kan u verbindings van myne verskil. Verskillende handelsmerke van die joystick kan 'n ander pinout hê en kan X en Y ook anders oriënteer. Wat belangrik is, is om te verstaan wat elke inset op die ADC verteenwoordig. Elke pen stel die volgende verwantskappe in my kode voor:

  • Speld 1 - Die basis - Analoog data op hierdie pen sal die laagste servo op die robot draai
  • Speld 2 - die skouer - Analoog data op hierdie pen sal die twee servo's bokant die basisservo draai
  • Speld 3 - Die elmboog - Analoog data op hierdie pen sal die volgende servo van die skouerservo's omdraai
  • Speld 4 - UP/DN pols - Analoog gegewens op hierdie pen sal die polsservo draai, die grypgedeelte verhoog en laat sak
  • Pin 5 - The Gripper - Analoog data op hierdie pin sal die gripper oopmaak en toemaak
  • Speld 6 - Draai pols - Analoog data op hierdie pen sal die grijper draai

OPMERKING: Hou in gedagte dat die oriëntasie van die modules anders as myne kan wees, en toets die x- en y -uitsette vir 'n behoorlike verbinding met die ADC. As u ook my 3D -gedrukte bedieningspaneel gebruik, kan die monteergate van myne afgeskakel word.

Uitsette

Die Adafruit PWM/Servo Controller maak hierdie projek super eenvoudig. Koppel net die servo's aan die servo -koppe en al die krag- en seinverbindings word hanteer. Tensy u servo's met ekstra lang drade vind, sal u 'n stel servokabeluitbreidings in verskillende lengtes wil hê, sodat al u servokabels u kontroleerderbord kan bereik.

Servo's word soos volg verbind:

  • Posisie 0 - Basisservo
  • Posisie 1 - Skouerservo (Servo Y -kabel)
  • Posisie 2 - Elmboog Servo
  • Posisie 3 - Pols 1 Servo
  • Posisie 4 - Gripper Servo
  • Posisie 5 - Pols 2 Servo

Boonop is VCC en V + albei gekoppel aan +5 Volt en GND is gekoppel aan Ground.

OPMERKING 1: 'n GROOT opmerking hier: Die voedingsspanning vir die hele projek kom deur die kragklemblok op die Servo Control Board. Die V+ -pen op die Servo Controller lewer eintlik krag van die aansluitblok na die res van die stroombaan. As u u Uno moet programmeer, beveel ek u sterk aan om die V+ -pennetjie te ontkoppel voordat u die Uno aan u rekenaar koppel, aangesien die huidige trekking van die servo's u USB -poort kan beskadig.

NOTA 2: Ek gebruik 'n 6V AC na DC muuradapter om die projek aan te dryf. Ek beveel 'n adapter aan wat ten minste 4A stroom kan verskaf, sodat as een of meer van die servo's vasgebind word, die skielike toename in stroom nie u stelsel verbruin en u Arduino herstel nie.

Die 16X2 LCD -skerm is gekoppel aan die Adafruit LCD -rugsak om voordeel te trek uit die I2C -koppelvlak wat reeds deur die Servo Controller gebruik word. Die SCL op die Servo Controller en die CLK op die rugsak maak beide verbinding met Pin A5 op die Uno. Net so sluit die SDA op die Servo Controller en die DAT op die rugsak beide aan Pin A4 op die Uno. Boonop is 5V gekoppel aan +5 Volt en GND is gekoppel aan Ground. LAT op die rugsak is aan niks gekoppel nie.

Laastens is die RGB LED gekoppel aan penne 7 (ROOI), 6 (groen) en 5 (blou) op die Uno. Die grondpoot van die LED is deur middel van 'n weerstand van 330 Ohm aan die grond gekoppel.

Verwerking

Laastens, maar nie die minste nie, is die res van die Arduino -verbindings wat nie hierbo gelys is nie, soos volg: Pin 5V is gekoppel aan +5 Volt en GND is gekoppel aan Ground.

In my opstelling het ek die syrails van die broodbord gebruik om al die krag- en grondlyne aanmekaar te bind, sowel as die I2C -penne vir al die toestelle.

Stap 4: Kode

Kode
Kode

Soos voorheen genoem, bou ek hierdie projek oorspronklik as 'n demonstrasie vir my plaaslike Maker Faire. Ek het bedoel dat dit iets was vir kinders en volwassenes om mee te speel terwyl ons by ons stand was. Soos dit blyk, was dit baie gewilder as wat ek gedink het - soveel so dat kinders daaroor baklei. Toe die tyd aangebreek het om weer te skryf, het ek 'n 'Demomodus' opgeneem wat 'n tydsbeperking implementeer.

Die arm sit daar en wag vir iemand om 'n joystick te skuif, en as hy dit doen, begin hy 'n timer van 60 sekondes. Aan die einde van die 60 sekondes stop dit met die invoer van die gebruiker en "rus" vir 15 sekondes. Die kort tydsberekening was presies wat dit is, en die rustyd het die stryd om stoktyd aansienlik verminder.

Basiese werking

Die kode wat in die onderstaande verwysingsafdeling verskyn, is redelik eenvoudig. 'N Skikking hou die ses gewrigte by met min, maksimum omvang, 'n tuisposisie en die huidige posisie. As die arm aangeskakel word, definieer die opstartfunksie die biblioteke wat nodig is om met die MCP3008, die LCD -rugsak (en daarna die skerm) te praat, en definieer die LED -penne. Van daar af kontroleer die basiese stelsels en gaan voort om die arm tuis te kry. Die tuisfunksie begin met die gryp en werk af na die basis sodat dit die kans op binding onder normale omstandighede tot 'n minimum beperk. As die arm heeltemal uitgestrek is, is dit die beste om die arm handmatig te huisves voordat u hom aanskakel. Aangesien generiese servo's nie terugvoer gee oor die posisie nie, moet ons elkeen op 'n voorafbepaalde plek plaas en tred hou met hoe ver hulle beweeg.

Die hooflus begin eers in 'n wagmodus - op soek na die joysticks om weg te beweeg van hul middelste posisie. Sodra dit gebeur, verander die hooflus die toestande na die afteltoestand. Terwyl die gebruiker elke joystick beweeg, sal die relatiewe posisie van die joystick vanuit die middel die huidige bekende posisie byvoeg of aftrek en die toepaslike servo opdateer. Sodra 'n servo sy gedefinieerde limiet in een rigting bereik het, stop die joystick. Die gebruiker moet die joystick in die ander rigting beweeg om dit weer te beweeg. Dit is 'n sagtewarelimiet wat aan die servo's opgelê moet word, ongeag die hardeware -stop. Met hierdie funksie kan u die arm se bewegings binne 'n spesifieke operasionele gebied hou indien nodig. As die joystick in die middel losgelaat word, stop die beweging.

Hierdie kode is slegs 'n algemene beginpunt. U kan u eie modusse byvoeg soos u wil. Een voorbeeld kan 'n tydlose modus vir deurlopende werking wees, of u kan die joystick-knoppies as insette byvoeg en 'n opname-/afspeelmodus skryf.

Stap 5: Skakels en hulpbronne

Armverwysings

  • Plasing wat hierdie projek geïnspireer het
  • Oorspronklike ontwerpers blogposte My eie robotarm My mini servogrepers en voltooide robotarm Vermenigvuldig die robotarm en elektronika
  • Thingiverse Arm
  • Thingiverse Mini Servo Gripper

Sagteware Libries

  • Adafruit PWM/Servo Controller Resources
  • MCP3008 -biblioteek
  • MCP3008 Gegevensblad

Beheerpaneel en kode

  • Tinkercad tekening van die paneel wat ek gemaak het
  • Huidige kode bewaarplek

Aanbeveel: