Tartalomjegyzék:

Arduino vezérelt robotkar W/ 6 szabadságfok: 5 lépés (képekkel)
Arduino vezérelt robotkar W/ 6 szabadságfok: 5 lépés (képekkel)

Videó: Arduino vezérelt robotkar W/ 6 szabadságfok: 5 lépés (képekkel)

Videó: Arduino vezérelt robotkar W/ 6 szabadságfok: 5 lépés (képekkel)
Videó: Autonomous Line Tracking Robot - Önműködő vonalkövető robot 2024, Július
Anonim
Arduino vezérelt robotkar W/ 6 szabadságfok
Arduino vezérelt robotkar W/ 6 szabadságfok
Arduino vezérelt robotkar W/ 6 szabadságfok
Arduino vezérelt robotkar W/ 6 szabadságfok
Arduino vezérelt robotkar W/ 6 szabadságfok
Arduino vezérelt robotkar W/ 6 szabadságfok

Tagja vagyok egy robotika csoportnak, és a csoportunk minden évben részt vesz egy éves Mini-Maker Faire rendezvényen. 2014 -től úgy döntöttem, hogy minden évben új projektet építek fel. Akkor körülbelül egy hónapja volt az esemény előtt, hogy összeállítsak valamit, és fogalmam sem volt, mit szeretnék csinálni.

Egy képviselőtársam közzétett egy linket egy "érdekes nyílt forráskódú robotkar -felépítéshez", amely felkeltette az érdeklődésemet. A tervek csak egy kar volt, vezérlés és vezérlő nélkül. Figyelembe véve az időm korlátait, nagyon jó kiindulópontnak tűnt. Az egyetlen probléma az volt, hogy nem volt eszközöm az induláshoz.

A csoport néhány tagjának segítségével kivághattam és elküldhettem az akril részeket, valamint az alább látható két 3D nyomtatott részt. Néhány éjszakai hardver megrendeléssel és a helyi hardverboltba tett kirándulásokkal együtt befejeztem egy működő projektet az esemény előtti este!

Ahogy általában lenni szokott, a történetben több és több megtestesülése is van az építménynek, amelyet az alábbiakban látottakra sűrítettek. Ha érdekli a háttértörténet, további információkat itt talál:

1. lépés: Amire szüksége van - Hardver és elektronika

Amire szüksége van - Hardver és elektronika
Amire szüksége van - Hardver és elektronika
Amire szüksége van - Hardver és elektronika
Amire szüksége van - Hardver és elektronika

Az eredeti projekttervező Európában élt, majd metrikus méréseket és az ott elterjedt anyagokat használt. Például a testhez használt préslap 5 mm vastag volt. Hasonló anyag itt az USA -ban 1/8 , ami körülbelül 3,7 mm vastag. Ez rést hagyott a nyílásokban, amelyeket eredetileg préselésre terveztek. A rajzok javítása helyett egyszerűen Gorilla ragasztót használtam az ízületek rögzítésére.

M3 menetes anyákat és csavarokat is használt, amelyek nem szabványosak a helyi hardverboltban az Egyesült Államokban. Ahelyett, hogy ezeket helyben elérhető opciókká alakítanám, egyszerűen megrendeltem a hardvert online, ahogy az alábbi alkatrészlistám mutatja.

  • 22 - M3 x 0,5 x 23 mm
  • 15 - M3 x 15 mm -es távtartók
  • 40 - M3 csavarok
  • M3 Hatlapfejű anyák
  • M3 25 mm -es csavarok
  • 1 - Tavasz
  • 3/4 "kétoldalas rögzítőszalag
  • 5 - SG 5010 TowerPro szervo
  • 1 - SG92R TowerPro mini szervó
  • 1 - SG90 TowerPro mini szervó
  • 2,54 mm egysoros egyenes csapfej
  • 1 - Fél méretű kenyértábla
  • 1 - női/férfi "hosszabbító" jumper vezetékek - 40 x 6"
  • 1 - 12 "x 24" kék akrillap vagy kedvenc szolgáltatója lézerrel vágott darabjai
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm csuklócsapágy távtartók 3D nyomtatással (lásd alább)
  • 1 - Vezérlőpult *Lásd a megjegyzést a huzalozási részben
  • 1 - diffúz RGB (háromszínű) 10 mm -es LED
  • 1 - Arduino Uno
  • 1 - Standard LCD 16x2 + extra - fehér -kék
  • 1 - i2c / SPI karakterű LCD hátizsák
  • 1-Adafruit 16 csatornás 12 bites PWM/szervo meghajtó
  • 1 - MCP3008 - 8 csatornás 10 bites ADC SPI interfésszel
  • 3 - JoyStick Breakout Module Sensor *Lásd a megjegyzést a huzalozási részben
  • DC hordó Jack
  • AC -DC adapter
  • Szervo hosszabbító kábelek - különböző hosszúságúak

Ennek a karnak szinte az összes alkatrészét 1/8 hüvelyk méretű akrilból vágták. A két csuklós csapágy távtartót azonban ki kell nyomtatni. Ezenkívül az eredeti tervezés szerint a két csukló távtartó alapja 7 mm magas legyen a csapágytengelyhez képest. Amikor elkezdtem összeszerelni a felkarot, gyorsan világossá vált, hogy ezek túl magasak a TowerPro szervók magassága miatt. Új csuklócsapágyakat kellett készítenem, amelyek alapja mindössze 3 mm, ami egyébként még mindig túl magas volt, de kezelhető. Figyelembe kell vennie szervóinak relatív magasságát, és figyelembe kell vennie a két alsó kar közötti távolságot:

Szervómagasság + szervo kürt + csuklócsapágy + kétoldalas szalag = 47 mm +/- 3 mm.

2. lépés: Kar szerelése

Kar szerelvény
Kar szerelvény
Kar szerelvény
Kar szerelvény
Kar szerelvény
Kar szerelvény
Kar szerelvény
Kar szerelvény

Mielőtt elkezdené, győződjön meg róla, hogy minden szervóját középre helyezi! Ha az építés során bármikor, ha manuálisan mozgatja a szervó helyzetét, akkor újra kell készítenie, mielőtt a kerethez rögzíti. Ez különösen fontos a vállas szervóknál, amelyeknek mindig egyidejűleg kell mozogniuk.

  1. Csatlakoztassa az alapszervót a felső alaplemezhez az M3 25 mm -es csavarok és hatlapfejű anyák segítségével. MEGJEGYZÉS: Érdemes rögzíteni a meneteket, hogy minimálisra csökkentse az anyák használat közbeni meglazulását.

  2. Ha a fenti alkatrészlistát használja, akkor össze kell szerelnie az 5 alaptestet úgy, hogy az M3 x 0,5 x 23 mm -es támaszokat 2 db -ot összefűzi, majd hatlapú anyákkal rögzíti a felső alaplemezhez.
  3. Rögzítse az alsó alaplemezt az állványokhoz 5 M3 csavarral.
  4. Rögzítse a válllemezt a két szervo rögzítőlemezhez egy akril biztonságos ragasztóval. Itt Gorilla ragasztót használtam. MEGJEGYZÉS: Mindkét szervo lemez hátulján egy lyuk található, amely lehetővé teszi a megerősítő távtartó behelyezését. Győződjön meg róla, hogy a lyukak egy vonalban vannak!* Amíg kéznél van a ragasztó, menjen előre, és csatlakoztassa a csukló rögzítőlemezt a fogó főlapjához. Ezt a választást nem azért tettem, hogy ezeket az alábbiakban leírtakkal együtt rögzítsem.
  5. Csatlakoztassa a most kikeményedett vállszerelvényt az alapszervóhoz. A szervóhoz tartozó legszélesebb kürtöt használtam, amely a hat szárú rögzítő kürt volt.
  6. Az alsó kar keret hozzáadása a váll szervókhoz bonyolult lehet. Javaslom, hogy a folytatás előtt rögzítse a szarvakat az alsó karokhoz. MEGJEGYZÉS: Mielőtt a vázhoz rögzítené, győződjön meg arról, hogy a szervóját a vállszerelvényre helyezi. Ennek a két szervónak egyidejűleg kell mozognia, és ha rosszul vannak beállítva, akkor legalább szervo remegést okoz, és ha elég rosszul van beállítva, akkor károsíthatja a keretet vagy a szervókat. * Mindegyik váll -szervó a konzolokkal a rögzítőlemezek hátoldalára van felszerelve, ahelyett, hogy a szervókat a lemezeken átvezetné - ez lehetővé teszi, hogy a kürtöt ferdén tolja a szervótengelyre, és rögzítse a csavart. Még ne rögzítse a szervót a szerelőlaphoz. * Ezután adja hozzá a belső szervót és szerelje fel a kart

  7. Szerelje össze a felkarvázat és a szervókat úgy, hogy a szervókat a karokban lévő réseken keresztül nyomja, majd a távtartókat mindkét felkarlemez közé behelyezi, és M3 -as csavarokkal rögzíti.
  8. Tegyen kétoldalas ragasztószalagot a könyökcsukló -távtartó hátoldalára, és vágja le a felesleget.
  9. Csatlakoztassa a távtartót a szervó aljához, amely könyökhajtóként fog működni.
  10. Csúsztassa a felkar szerelvényt az alsó kar szerelvény keretébe, és rögzítse a szervókürt csavarjait.
  11. Adjon hozzá megerősítő ütközéseket két alsó karlap között. Mind a kettő helyett kettőt használtam a súly csökkentésére.
  12. Tegyen kétoldalas ragasztószalagot a csuklócsukló felső távtartójának hátoldalára, és vágja le a felesleget.
  13. Csatlakoztassa a távtartót a szervó aljához, amely csuklómotorként fog működni.
  14. Rögzítse a külső csuklólemezt a csukló szervo kürtjéhez, és rögzítse kürt csavarral.
  15. Szerelje össze a csukló szervo lemezt a két csuklócsukló lemezzel és az állványokkal.
  16. Rögzítse a csukló szervót a szervo lemezen a szervo bilincs lemezzel.
  17. Rögzítenie kell a csuklószarvát a szervóhoz, mielőtt a fogóegységet a szarvhoz rögzíti, mivel a kürt csavarja el van dugulva.
  18. Lazán szerelje össze a fogóelemeket, mielőtt illeszkedne, mielőtt a megfogó szervókürtöt a szervóhoz rögzítené. Ez elegendő helyet biztosít a kürt lecsavarásához az előző lépésben.
  19. Rögzítse a megfogó kürtöt a szervójához, és húzza meg tovább a fogócsuklókat tartó csavarokat. MEGJEGYZÉS: ne húzza meg teljesen ezeket az anyákat és csavarokat, mert lazának kell lenniük, hogy a fogó mozoghasson.

3. lépés: Kábelezés és vezérlőpult

Kábelezés és vezérlőpult
Kábelezés és vezérlőpult
Kábelezés és vezérlőpult
Kábelezés és vezérlőpult
Kábelezés és vezérlőpult
Kábelezés és vezérlőpult

Ezt a projektet fejlesztési platformként építettem fel néhány ötletemhez egy későbbi oktatási projekthez. Tehát a legtöbb csatlakozásom egyszerű dupont csatlakozó. Az egyetlen forrasztás az MCP3008 volt. Ha talál egy kitörő táblát ehhez az alkatrészhez, akkor képesnek kell lennie arra, hogy ezt a karforrasztást ingyenesen megépítse.

Az összetevők 3 csoportja van:

  1. Bemenetek - Ezek az elemek információt vesznek át a felhasználótól, és a joystickokból és az mcp3008 ADC -ből állnak.
  2. Kimenetek - Ezek az elemek adatokat közvetítenek a világnak, vagy állapotot mutatnak a felhasználónak, vagy frissítik a szervókat helyzetadatokkal. Ezek az elemek az LCD képernyő, az LCD hátizsák, az RGB LED, a szervo meghajtó tábla és végül a szervók.
  3. Feldolgozás - Az Arduino összefoglalja az utolsó csoportot, amely a bemenetek adatait veszi fel, és a kód utasításai szerint továbbítja az adatokat a kimenetekhez.

A fenti Fritzing vázlat részletezi az összes alkatrész csapszegeit.

Bemenetek

Kezdjük a bemenetekkel. A joystick analóg eszközök - vagyis változó feszültséget mutatnak be az Arduino bemeneteként. Mindhárom joystick két analóg kimenettel rendelkezik X és Y számára (felfelé, lefelé, balra jobbra), összesen 6 bemenettel az Arduino -hoz. Míg az Arduino Uno 6 analóg bemenettel rendelkezik, kettőt kell használnunk az I2C kommunikációhoz a képernyővel és a szervovezérlővel.

Emiatt beépítettem az MCP3008 analóg -digitális átalakítót (ADC). Ez a chip legfeljebb 8 analóg bemenetet vesz fel, és az Arduino SPI kommunikációs érintkezőin keresztül digitális jellé alakítja őket:

  • MCP Pins 1-6> A hüvelykujj joystick változó kimenetei
  • MCP Pins 7 & 8> Nincs kapcsolat
  • MCP Pin 9 (DGND)> Földelés
  • MCP 10. pin (CS/SHDN)> Pin 12 feloldása
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Pin 10 feloldása
  • MCP 13 -as érintkező (CLK)> Tű feloldása 9
  • MCP Pin 14 (AGND)> Földelés
  • MCP Pin 15 & 16> +5V

A joystick kapcsolatok a vázlatban csak példaként láthatók. Attól függően, hogy milyen joystickokat vásárolnak és hogyan vannak felszerelve, a kapcsolatok eltérhetnek az enyémektől. A joystick különböző márkái eltérő tűvel rendelkezhetnek, és eltérően tájolhatják X -et és Y -t. Fontos megérteni, hogy az ADC egyes bemenetei mit képviselnek. Mindegyik tű a következő kapcsolatokat képviseli a kódomban:

  • 1. tüske - Az alap - Az ezen a tűn lévő analóg adatok forgatják a robot legalacsonyabb szervóját
  • 2. tű - A váll - Az analóg adatok ezen a tűn forgatják a két szervót az alapszervó felett
  • 3. tű - A könyök - Az ezen a tűn lévő analóg adatok a következő szervót felfelé forgatják a váll szervókról
  • 4. tüske - FEL/DN csukló - Ezen a tűn lévő analóg adatok forgatják a csukló szervóját, emelve és süllyesztve a megfogó szerelvényt
  • 5. tüske - A fogó - Az ezen a tűn lévő analóg adatok megnyitják és bezárják a fogót
  • 6. csap - Csukló elforgatása - Ezen a csapon lévő analóg adatok forgatják a fogót

MEGJEGYZÉS: Az alkatrészlistában említett hüvelykujj joystickok vásárlásakor és felszerelésekor ne feledje, hogy a modulok tájolása eltérhet az enyémtől, ezért ellenőrizze az x és y kimeneteket az ADC -hez való megfelelő csatlakoztatás érdekében. Továbbá, ha a 3D nyomtatott vezérlőpultomat használja, a rögzítési lyukak eltolódhatnak az enyémektől.

Kimenetek

Az Adafruit PWM/Servo Controller rendkívül egyszerűvé teszi ezt a projektet. Csak csatlakoztassa a szervókat a szervófejhez, és az összes táp- és jelcsatlakozás kezelve van. Hacsak nem talál extra hosszú vezetékekkel rendelkező szervókat, akkor szerezzen be egy sor különböző hosszúságú szervokábel -hosszabbítót, hogy minden szervokábel elérje a vezérlőpanelt.

A szervók az alábbiak szerint csatlakoznak:

  • Pozíció 0 - Alap szervo
  • 1. pozíció - Vállszervó (szervo Y kábel)
  • 2. pozíció - könyök szervó
  • 3. pozíció - csukló 1 szervó
  • 4. pozíció - Gripper Servo
  • 5. pozíció - csukló 2 szervó

Ezenkívül a VCC és a V + +5 volthoz, a GND pedig a földhöz van csatlakoztatva.

1. MEGJEGYZÉS: Egy nagy megjegyzés itt: Az egész projekt tápfeszültsége a szervo vezérlőpanel tápcsatlakozóblokkján keresztül érkezik. A szervovezérlő V+ csapja ténylegesen áramot szolgáltat a sorkapocsról az áramkör többi részére. Ha programoznia kell az Uno készüléket, javasoljuk, hogy húzza ki a V+ érintkezőt, mielőtt csatlakoztatná az Uno -t a számítógéphez, mivel a szervók áramfelvétele károsíthatja az USB -portot.

2. MEGJEGYZÉS: 6 V AC -DC fali adaptert használok a projekt áramellátásához. Olyan adaptert ajánlok, amely legalább 4A áramot tud szolgáltatni, hogy ha egy vagy több szervó lekötődjön, a hirtelen megugró áram ne barnítsa ki a rendszert és állítsa vissza az Arduino készüléket.

A 16X2 LCD képernyő az Adafruit LCD hátizsákhoz van csatlakoztatva, hogy kihasználja az I2C interfész előnyeit, amelyeket a szervovezérlő már használ. A szervovezérlőn lévő SCL és a hátizsákon lévő CLK egyaránt az Uno A5 -ös csapjához csatlakozik. Hasonlóképpen, a szervovezérlő SDA és a hátizsák DAT -ja egyaránt az Uno A4 -es tűjéhez csatlakozik. Ezenkívül az 5V +5 volthoz, a GND pedig a földhöz van csatlakoztatva. A hátizsákon található LAT nem kapcsolódik semmihez.

Végül az RGB LED az Uno 7. (PIROS), 6. (Zöld) és 5. (Kék) csatlakozójához csatlakozik. A LED földelt lába 330 ohmos ellenálláson keresztül csatlakozik a földhöz.

Feldolgozás

Végül, de nem utolsó sorban a fent fel nem sorolt Arduino -kapcsolatok többi része a következő: Az 5V -os érintkező +5 voltos, a GND pedig a földhöz van csatlakoztatva.

A beállításom során a kenyérlap oldalsó korlátjaival kötöttem össze az összes táp- és földvezetéket, valamint az összes eszköz I2C csapjait.

4. lépés: Kód

Kód
Kód

Amint azt korábban említettük, eredetileg ezt a projektet a helyi Maker Faire bemutatójaként készítettem. Arra szántam, hogy a gyerekek és a felnőttek játszhassanak velünk a standunkon. Mint kiderült, sokkal népszerűbb volt, mint gondoltam - annyira, hogy gyerekek veszekedtek emiatt. Tehát, amikor eljött az idő az újraíráshoz, beépítettem egy "Demo módot", amely időkorlátot valósít meg.

A kar ott ül, és várja, hogy valaki mozgassa a joystickot, és amikor megteszi, elindít egy 60 másodperces időzítőt. A 60 másodperc végén leáll a felhasználótól, és 15 másodpercig "pihen". Rövid odafigyelés, amilyenek, ez a pihenőidő nagymértékben csökkentette a botidőért való vitát.

Alapművelet

Az alábbi hivatkozási részben felsorolt kód meglehetősen egyszerű. Egy tömb nyomon követi a 6 csuklót, min, max kiterjedésekkel, otthoni pozícióval és az aktuális pozícióval. Amikor a kar be van kapcsolva, az indítási funkció meghatározza az MCP3008 készülékkel való beszélgetéshez szükséges könyvtárakat, az LCD hátizsákot (és ezt követően a képernyőt), és meghatározza a LED -érintkezőket. Innentől kezdve ellenőrzi az alaprendszereket, és elindul a kar felé. Az otthoni funkció a fogóval kezdődik, és lefelé halad az alaphoz, hogy normál körülmények között minimálisra csökkentse a kötés esélyét. Ha a kar teljesen ki van nyújtva, akkor a legjobb, ha manuálisan hazaindítja a kart, mielőtt bekapcsolja. Mivel az általános szervók nem adnak visszajelzést a helyzetéről, mindegyiket el kell helyeznünk egy előre meghatározott pontra, és nyomon kell követnünk, hogy mindegyik milyen távolságra mozog.

A fő hurok először várakozási módban indul - a joystickokat keresve, hogy elmozduljanak középső helyzetükből. Amint ez megtörténik, a fő ciklus az állapotokat visszaszámlálási állapotra változtatja. Amint a felhasználó mozgatja az egyes joystick -eket, a joystick középre helyezett helyzete hozzáadja az aktuális pozíciót vagy kivonja azt, és frissíti a megfelelő szervót. Miután egy szervó elérte a meghatározott határértéket egy irányban, a joystick leáll. A felhasználónak el kell mozgatnia a joystickot a másik irányba, hogy újra mozgassa. Ez egy szoftveres korlát, amelyet a szervókra szabnak, függetlenül a hardver leállásától. Ez a funkció lehetővé teszi, hogy szükség esetén tartsa a kar mozgását egy meghatározott működési területen belül. Ha a joystickot középre engedik, a mozgás leáll.

Ez a kód csak egy általános kiindulópont. Saját módokat adhat hozzá tetszés szerint. Az egyik példa lehet egy időzítő nélküli folyamatos futtatási mód, vagy hozzáadhatja a joystick nyomógombokat bemenetként, és írhat felvételi/lejátszási módot.

5. lépés: Hivatkozások és források

Kar referenciák

  • Bejegyzés, amely inspirálta ezt a projektet
  • Eredeti tervezők blogbejegyzései Saját robotkarom Saját robot szervók és kész robotkar Szorozzuk meg a robotkart és az elektronikát
  • Thingiverse Arm
  • Thingiverse Mini Servo Gripper

Software Libries

  • Adafruit PWM/szervo vezérlő erőforrások
  • MCP3008 Könyvtár
  • MCP3008 Adatlap

Vezérlőpult és kód

  • Tinkercad rajz az általam készített panelről
  • Az aktuális kódtár

Ajánlott: