Tartalomjegyzék:

Arduino robotkar: 5 lépés
Arduino robotkar: 5 lépés

Videó: Arduino robotkar: 5 lépés

Videó: Arduino robotkar: 5 lépés
Videó: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Image
Image
Arduino robotkar
Arduino robotkar
Arduino robotkar
Arduino robotkar

Mivel ez az első projektem az Arduino kezdő készletem 15 oktatója után, valódi célja, hogy kritikusokat, tippeket, javaslatokat, ötleteket szerezzek bárkitől, aki többet tud, mint én.

Ez a projekt egy robotkarról szól, 4 dof -al és markolattal. Tisztességesen alacsony költségvetéssel: a szerkezetet egy barátja vágta le, a 4 szervó 30 € volt, a 2 joystick 4 €, a csavarok stb. Kevesebb mint 10 €, és a többi (Arduino, vezetékek, markolat szervó stb.)) már benne volt az indító készletemben. Összesen 40-45 euróért, ami körülbelül 45-50 amerikai dollár (ugyanaz az ár, mint egy me-kar készlet, de hé, szórakoztató volt, hogy egyedül kellett megépítenem (és egyszer-egyszer elrontani valamit) és nem követi az utasításokat, mint egy gép).

Mivel ez volt az első projektem és az Instructable, részt vettem az „Első szerző” -ben és még pár versenyben, úgyhogy ha tetszik, szavazz:)

1. lépés: TERVEZÉS ÉS ÖSSZESZERELÉS:

Először egy szerkezetre volt szükségem: Ez határozottan a leghosszabb rész volt. Mivel nem akartam másolni és beilleszteni a projektet valaki mástól, ezért egy projektet vettem referenciaként és én (és még néhány képzett osztálytársam, aki valóban megmentett) az igényeinknek megfelelően kezdték el módosítani (különböző szervók, különböző nyomatékkal, tömeggel és mérettel stb.). Néhányszor meg kellett építenem, mindegyikben valami hibát találtam, és újra kellett dolgoznunk néhány darabot, és újra kellett próbálnunk. Csatoltam a.dxf fájlt, ha használni akarjuk. Aztán meg kellett vásárolnom az elektronikát: A legtöbb alkatrész szabványos volt, a kemény rész a szervók kiválasztása volt. A hüvelykujj szabályával kiszámítottam a szükséges nyomatékot, később megpróbáltam egy pontosabb számítást, és rájöttem, hogy lehet, hogy egy kicsit túlképztem. Látszólag 6 kg/cm elég lett volna a 2. szervóhoz (alapból), az enyém pedig 9-11 kg/cm-t biztosít. Nos, ez ad némi biztonságot és lehetőséget, hogy akár 2 kg terhelést is betölthessek (ami lehetetlen, de tetszik, hogy technikailag meg tudnám csinálni). Vásárolhattam volna különböző szervókat is, csökkentve a nyomatékot, miközben eltávolodtam az alaptól, de azonos szervók vásárlása ugyanaztól a szállítótól messze a legolcsóbb megoldás. 350 mA és a 9 g mikroszervó 100 mA áramot vesz fel, összesen 350*4 +100 = 1500 mA. Tehát megmentettem egy töltőt (6V 1,5A), és forrasztottam hozzá két áthidaló vezetéket. (Ha néhányannak szüksége lehet valódi utasításokra, kérdezze meg a megjegyzéseket, és mindent megteszek, hogy lépésről lépésre létrehozzam útmutató) Anyagok listája:- Szerkezet- M5x7cm csavar x5, m5 csavarok x15 (alap)- M3x16mm csavar x18*- M3x20mm csavar x13*- M3 csavarok x40*- M3x8cm csavar x3- bilincs (különben leesik)- 3 dübel- Arduino (vagy valami más, ami vezérli, legalább 5 PWM)) - Sok áthidaló vezeték - Kenyérlap*(csavarokat és csavarokat használtam a gyors összeszereléshez és szétszereléshez, különben szinte mindegyiket facsavarokra cserélhette)

2. lépés: KÓD:

Az ötlet az, hogy minden szervót egy ps2-szerű joystick két tengelyének egyikével vezéreljen. Úgy tűnt, hogy minden joystick különböző "nyugalmi értékekkel" rendelkezik (0-1023 közötti érték, amikor mozdulatlan) mind az y, mind az x tengelyen. gondot okozott, mivel a különbség kicsi volt (az egyiknél nulla volt az y-nál 623-nál), és a térkép funkciót akartam használni 0-1023 fok közötti konvertáláshoz. De a térképfüggvény szerint a többi érték 1023/2. Ami minden szervó mozgását eredményezte, amint bekapcsolom az Arduino -t, nem jó. Ezt sikerült megkerülni úgy, hogy manuálisan megtaláltam a különbséget az olvasási érték és az egyes pihenőértékek között (amelyeket minden joystickra külön számítottam), majd hogy a kódot rövidebbé és okosabbá tegyem, arra késztettem, hogy olvassa el a többi értéket a beállítási funkcióban, és mentse el azokat néhány változóba. Az új algoritmus a növekmény fokokban történő konvertálására támaszkodik, de én nagyon alacsony fokokat akartam növelni, ezért Állandóra kellett osztanom: sok értéket kipróbáltam, míg a végső 200 -ig jutottam (hozzáadhatok egy potenciométert, hogy manuálisan módosítsam ezt az értéket a kívánt értékre). Azt hiszem, a kód többi része elég szabványos, annak ellenére, hogy elegánsabb lehet, ha a növekmény számítását külön függvénybe helyezzük.

3. lépés: ELEKTRONIKA:

ELEKTRONIKA
ELEKTRONIKA

A kábelezés ugyanaz, mint a képen vagy a frizuráló fájlban: szervo jel a csapokhoz: 5-6-9-10-11 és a joystick tengelye az analóg csapokhoz: A0-A1-A2-A3-A4 A fő probléma, amibe belefutottam az volt, hogy a joystickokat az Arduino -nak kellett szállítania, NEM a szervókhoz használt töltővel. Ellenkező esetben a szervó csak megőrülne, véletlenszerűen előre -hátra mozogva. Azt hiszem, ez azért lehet, mert ha ellátom őket a töltővel, az Arduino nem fogja tudni pontosan megmondani a lehetséges különbséget, amikor áthelyezem őket, de akkor: Nagyon új vagyok az elektronikában, így ez csak egy találgatás. Az Arduino föld és a töltő földelésének összekapcsolása a kenyértáblán keresztül megakadályozta a véletlenszerű és váratlan mozgásokat, a joystick -kínálat hasonló oka miatt.

4. lépés: JELENLEG JÖVŐ

JELENTKEZÉS JELENLEG
JELENTKEZÉS JELENLEG

Mivel minden joystick 2 szervót tud vezérelni (tengelyenként egyet), 3 szervóra van szükségem az egész kar vezérléséhez, de szerencsére csak 2 hüvelykujjam van. Tehát úgy gondoltam, hogy ahelyett, hogy minden szervót irányítanék, csak a xyz pozícióját tudom szabályozni fogd és nyisd-zárd a markolatot, összesen 4 tengely, 2 joystick és 2 hüvelykujj segítségével! Megtudtam, hogy ez a probléma jól ismert Inverse Kinematics néven, és rájöttem, hogy ez minden, de egyszerű. Az ötlet az, hogy nemlineáris) egyenletek minden effektor állapotának megtalálásához (a szervók szögei), tekintettel a végső pozícióra. Feltöltöttem egy kézzel írt papírt az egyenletekkel, és jelenleg egy új kódon dolgozom, hogy használjam őket. Ez nem lehet túl nehéz, alapvetően el kell olvasnom a joystickokat, a leolvasott számokkal módosítanom a markolat xyz -koordinátáit, majd megadnom őket az egyenleteimhez, kiszámítanom a szervoszögeket és megírnom.

5. lépés: JÖVŐBENI JAVÍTÁSOK:

Szóval, nagyon elégedett vagyok az eredményével, és tekintve, hogy teljesen új vagyok az elektronikában, ha nem fújok fel valamit, vagy magam, már óriási győzelem volt. Ahogy az elején mondtam, minden elképzelés a jövőbeni fejlesztésekről, mind a szoftverekről, mind a hardver, több mint üdvözlendő! Eddig arra gondoltam: 1. A potenciométer a joystick „érzékenységének” módosítására.2. Új kód, amely arra készteti, hogy „rögzítsen” néhány mozdulatot, és ismételje meg őket (talán gyorsabban és rövidebben, mint az emberi bemenet) 3. Valamiféle vizuális/távolság/hangbevitel és az objektumok beszerzése anélkül, hogy valaki a joystickot használná4. Képes geometriai figurákat rajzolni Más ötlet? Kérjük, bátran tegyen megjegyzést bármilyen javaslattal. Köszönöm

Ajánlott: