Tartalomjegyzék:

[WIP] Egy Myb karszalag által vezérelt Drawbot létrehozása: 11 lépés
[WIP] Egy Myb karszalag által vezérelt Drawbot létrehozása: 11 lépés

Videó: [WIP] Egy Myb karszalag által vezérelt Drawbot létrehozása: 11 lépés

Videó: [WIP] Egy Myb karszalag által vezérelt Drawbot létrehozása: 11 lépés
Videó: Дизель Шоу – 94 НОВЫЙ ВЫПУСК – 28.05.2021 | ЮМОР ICTV 2024, November
Anonim
[WIP] Drawbot létrehozása Myo karszalaggal
[WIP] Drawbot létrehozása Myo karszalaggal

Hello mindenki!

Néhány hónappal ezelőtt úgy döntöttünk, hogy megpróbáljuk megvalósítani azt a gondolatot, hogy egy nyitott keretes vonórudat építünk, amely csak Myo sávot használ az irányításhoz. Amikor először nekiláttunk a projektnek, tudtuk, hogy azt két különböző szakaszra kell bontani. Az első fő fázisunk az volt, hogy megpróbáltuk a fejünket egy nyitott keret köré fonni a rajzolóbotunk számára. Ez egy nem szabványos beállítás, és meg akartuk nézni, hogy milyen előnyei vannak ennek a kialakításnak.

Másodszor, tudtuk, hogy ennek a prototípusnak az elkészítése csak nekünk lesz hasznos. Terveink és tervünk az volt, hogy végső keretünket fémbe helyezzük át, és egy arduino segítségével megkapjuk pozíciónkat a Myo sávba épített gyorsulásmérőből és giroszkópból. Ezt az információt ezután elküldik a motoroknak, és megismétlik a felhasználó mozgását. Tudtuk, hogy ezáltal a második szakasz három fő szempontra oszlik majd:

  1. programozás a Myo -tól a motorokig, az Arduino -n keresztül
  2. elektromos tervezés, hogy adatainkat mozgássá alakítsuk
  3. mechanikus kialakítás, hogy ésszerű méretű keretet hozzon létre, amely megkönnyíti a mozgásunkat

Csapatunk minden tagja a legkényelmesebben érezte magát tervezési folyamatunk egyedi részében, ezért úgy döntöttünk, hogy felosztjuk munkánkat minden ember között. A tervezési folyamat során blogot is tartottunk, hogy nyomon kövessük mindennapi gondolkodásunkat, szemben a globálisabb megjelenéssel.

1. lépés: Amit terveztünk

Image
Image

Célunk az volt, hogy ötvözzük ezt a két terméket oly módon, hogy egyiket sem láttuk még használatban. Élő közvetítést indítottunk a Myo karszalagunk és az Evil Mad Scientist AxiDraw által inspirált dizájn saját verziója között.

2. lépés: Prototípus összetevők listája

2 2 x 4 falap 1 Szalag vagy láncmérés> = 65”4 Fa szögek 3 Fogaskerekek, amelyek illeszkednek az övhez vagy a lánchoz 4 3 x 8 vastag perforált lemezek 30 ⅜” Gumi távtartók 8 1”átmérőjű alátétek 1 1” átmérőjű fa Dübel 1 'hosszú 8 Vex csavar 1 "8 ½" Vex csavar 8 2 "Vex csavar 8 ¼" Gumi távtartó 48 Vex anya 1 Kis cipzár

3. lépés: [Prototípus] Fánk megmunkálása a karjainkon és a kocsi belsején

[Prototípus] Fánk megmunkálása a karjainkban és a kocsi belsejében
[Prototípus] Fánk megmunkálása a karjainkban és a kocsi belsejében

Fogtunk két 2x4 -et, és egyforma hosszúságúra vágtuk őket (33 ¼”)

Asztali fűrésszel bevágást készítettünk a táblák keskeny részén deep”mélyen és wide” szélesen középen

Vágja a tiplit 4 db 2”-os darabra, és fúrjon egy lyukat a tipli közepébe, körülbelül ¼” átmérőjű fúrógép segítségével

4. lépés: [Prototípus] Szállításunk

[Prototípus] Szállításunk
[Prototípus] Szállításunk
[Prototípus] Szállításunk
[Prototípus] Szállításunk
[Prototípus] Szállításunk
[Prototípus] Szállításunk

Ideális esetben két 7x7 darab vékony perforált acélt használnánk, de csak a 2x7 csík állt a rendelkezésünkre, így „X” alakban csavaroztuk össze őket

Halmozza fel a 5 hüvelykes gumi távtartókat, és rögzítse a vex lemezek sarkait egymáshoz

Lazán rögzítse a fa dübeleket az 1. ábrán látható módon, hogy szabadon foroghassanak, és körülbelül 2 hüvelyknyi távolság legyen közöttük. A kép alapján nézze meg, hogy a fogaskerekeket hol kell elhelyezni ezen a ponton..

A „fél” csavarok, ¼”gumi távtartók és 1” átmérőjű alátétek segítségével rögzítse az alátéteket az 1. ábrán látható módon (zöld műanyag fogaskerekeket használtunk, mert nem találtuk a megfelelő alátéteket). hogy könnyen pörögjön és beleférjen a tábla bevágásaiba.

5. lépés: [Prototípus] Összerakás

[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni
[Prototípus] Összerakni

Helyezzen egy deszkát egy felületre, és csúsztassa a kocsit középre úgy, hogy az alátétek tartsák a kocsit a tábla fölött, és a tábla mindkét oldalán szegezzék le a fogaskerekeket, hogy szabadon foroghassanak. Szegezzen egy fogaskereket a második tábla egyik végére, ügyelve arra, hogy középen legyen, és csúsztassa rá a kocsira merőlegesen az első táblára.

Most az övet az ábrán látható módon be kell hurkolni a rendszeren, figyeljen arra, hogy a tiplik hogyan helyezkednek el az öv külsején, és hogy az alváz közepén nincs semmi, ami akadályozhatná az övet mozgás közben.

Most az övet a tábla azon oldalán kell rögzíteni, amelyen nincs fogaskerék. Egy extra szöget és cipzárat használtunk, hogy rögzítsük a mieinket. De az alkalmazott módszer nem számít, amíg az öv rögzítve van az adott helyen

6. lépés: [Prototípus] Kész és mozog

Image
Image

Ennek kell lennie, húzza az övet különböző kombinációkban, és nézze meg a karra gyakorolt különböző hatásokat!

7. lépés: Modellünk lefordítása kész dizájnná

Modellünk lefordítása kész dizájnunkba
Modellünk lefordítása kész dizájnunkba
Modellünk lefordítása kész dizájnunkra
Modellünk lefordítása kész dizájnunkra

Miután elkészült a prototípusunk, eksztatikus voltunk. Az összeszerelés előtt egyikünk sem volt biztos abban, hogyan működik a rendszer. De miután az alkatrészeink összeálltak, gyorsan felfedeztük, hogy mit szeretünk, és hogyan javítanánk a végső terv elkészítésekor. A rendszerrel kapcsolatos fő panaszaink a következők voltak:

  1. Skála
    1. A prototípusunk hatalmas és nehézkes volt, ezért hajlamos volt felborulni a karjaink szélén
    2. A kocsi sokkal nagyobb volt a kelleténél, és sok elpazarolt hely volt benne
    3. Az övünk (egy feszült tartály futófelület) jóval nagyobb volt a kelleténél, ami felesleges helyet teremtett a karok között
  2. Súrlódás

    1. Vex futófelületeink nem minden ponton mentek át könnyen a fa tiplik hengerein
    2. A fán lévő műanyag miatt a kocsi sok esetben nem volt hajlandó mozogni
  3. Motorizálás

    Szükségünk volt a rendszer áramellátására

Ezeket figyelembe véve rajzoltuk meg a végső terv terveit. Azt szerettük volna, hogy a vonórudat Myo -val vezérelhessük egy arduino segítségével, és a keretet alumíniumból és kisebbé akartuk tenni.

Ennek érdekében elvettük az eredeti prototípusunk egy százalékát, és elkezdtünk dolgozni ebből a méretből. Ha olyan fémlemezeket használunk, amelyek megmunkálásával olyan szélesek lesznek, hogy az árnyékolt csapágyak áthaladhassanak, könnyű, mégis robosztus kialakítással rendelkezünk, amely nagyobb használati tűréssel rendelkezik.

A prototípusunk néhány perc alatt lehetővé tette számunkra, hogy meghatározzuk, hogyan befolyásolja a motor forgása a vonófejünket. Ez megértette velünk, hogy a vezérlésünk egyszerűbb lesz, mint amire számítottunk. Közelebbről megvizsgálva rájöttünk, hogy a motor mozgása additív! Ez azt jelenti, hogy minden motor önállóan kívánatos hatást gyakorol a mozgásunkra, de amikor egyesítjük őket, elkezdenek leállni.

Például, ha úgy tekintjük, mint egy koordinátasíkot, akkor a negatív x végtagban elhelyezkedő motor mindig hajlamos a fiókunkat a második és a negyedik negyedbe húzni. Ezzel szemben a pozitív x végtagra fektetett motor mindig a fiókot az első és a harmadik negyedbe irányítja. Ha egyesítjük motorjaink mozgását, az törli a konfliktus irányításának részeit, és felerősíti az egyetértő részeket.

8. lépés: Kódolás

Míg néhány éve meglehetősen sokat dolgoztam a C -ben, nem volt tapasztalatom a lua -val vagy a C ++ - val, és ez azt jelentette, hogy jelentős időt kell eltöltenem a dokumentáció átnézésével. Tudtam, hogy az általános feladat, amit megpróbálok megvalósítani, az, hogy időközönként megszerzem a felhasználó pozícióját, majd átadom a motoroknak. Úgy döntöttem, hogy felbontom magamnak a feladatot, hogy jobban megemészthessem a szükséges részeket.

1. Adatok beszerzése a Myo -tól (lua)

Tudtam, hogy ki kell találnom az információgyűjtés módját a Myo -tól. Ez volt a kihívás első része, amelyet meg akartam közelíteni. Ehhez azt akartam, hogy a felhasználó a rajzolás megkezdése előtt kalibrálja a vászon méretét. Ez lehetővé tenné számomra, hogy legyen egy határ, ahonnan dolgozhatok. Ezután normalizálhatnám a programot a különböző felhasználók között úgy, hogy egyszerűen a maximális vászon egy százalékát veszem át adatpontként. Úgy döntöttem, hogy egy olyan forgatókönyves eseményt tartok, amely minden fél másodpercben elvégez egy getOrientation ellenőrzést, mivel ez lehetővé teszi, hogy az ellenőrzések soha ne végezzenek olyan vad ugrást, amelyre tippelnie kellene (például, ha a felhasználó vadul hátradőlt, és tovább).

Ezzel létrejött az első útlezárás. Felfedeztem a lua nagyon nagy korlátozását, és azt, hogy ez nem engedi meg, hogy várjak a szkript folytatása előtt. Ennek a műveletnek az egyetlen módja a CPU szüneteltetése (amely globálisan szünetelteti, akár a rendszer óráját is tartva), vagy az operációs rendszer specifikus parancsainak használata. A példakódomban hagytam az eredeti operációs rendszer -ellenőrzést, amelyet végrehajtottam (megjegyzést fűztem). Ez nagy mennyiségű kutatás elvégzése után történt a lua dokumentációjában, és a rendszer elérési útjának formázását ellenőrizte. Ekkor döntöttem úgy, hogy meg kell néznem a korábban közzétett projektek dokumentációját. Rögtön rájöttem, hogy mennyi időt vesztegetek el, és azonnal a platformváltozóhoz vezettem. Ezzel szinte azonnal végrehajthattam az operációs rendszer specifikus várakozási parancsait, szemben azokkal a napokkal, amelyeken eltartott, hogy összerakjam a korábbi megoldást.

Körülbelül a tervezés idején kezdődtek az elektromos szempontokat érintő munkálatok, és felfüggesztettem a munkát a kód ezen aspektusával kapcsolatban. A cél az volt, hogy megtudjuk, hogyan kapcsolódnak motorjaink az arduino -hoz.

2. Dolgozás az Arduino környékén (C ++)

Ahogy a kenyérlapunkkal végzett munka egyre összetettebbé vált, megtudtam, hogy az arduino képtelen többszálúságra. Ez egy nagy kulcs volt az eredeti kódtervemben, és miután többet olvastam a vezérlőnk által bemutatott korlátozásokról, rájöttem, hogy be kell programoznom, hogy az arduino hogyan váltson a kettő között. Ez lett a törekvéseim középpontjában a határidő közeledtével. Az eredeti szkriptem nagy részeit le kellett selejteznem, mivel azokat úgy tervezték, hogy adatokat írjanak egy fájlba szinkronban a fájlt olvasó motorvezérlővel. Ez lehetővé tette a sorban állás funkciót, hogy megbizonyosodjon arról, hogy ha a felhasználó megelőzi a fiókunkat, nem teszi tönkre a projektet.

Úgy döntöttem, hogy a sorban állási funkciót el kell menteni, ha nem ugyanúgy hajtják végre, mint korábban. Ennek érdekében létrehoztam egy tömbvektort. Ez lehetővé tette számomra, hogy ne csak viszonylag érintetlenül tartsam korábbi tervezésem szellemiségét, hanem azt is, hogy nem kellett nyomon követnem a fájlban elfoglalt helyemet sem olvasás, sem írás esetén. Ehelyett most csak annyit kellett tennem, hogy új értéket adok a vektoromhoz, ha a felhasználó mozog (az előzetes teszt kevesebb, mint 1% -a volt a vászon méretkülönbségének mind az x, mind az y értékben az utolsó rögzített pozíciótól, ami nem eredményezett adatrögzítést). Ezután felvehetném a vektorom legrégebbi értékét és egy csapásra elküldhetném a motorvezérlőnek, írhatnánk a fájlunkba, majd eltávolíthatnám a vektoromból. Ez sok aggodalmamat eloszlatta azzal kapcsolatban, hogy állandó IO adatfolyam fut.

9. lépés: Elektromos

Image
Image
Elektromos
Elektromos

Míg korábban elektronika órát vettem, és elég sokat dolgoztam arduinókkal. Soha nem merültem bele abba, hogy az arduino külső forrásból (myo) kapjon információt, csak tapasztalataim vannak az arduino -n keresztül történő információkiadásban. Azonban hozzáfogtam a motorok bekötéséhez a drawbotunkon, és azon dolgoztam a kódon, hogy képesek legyenek a myo kóddal dolgozni.

Az általam használt anyagok:

2 x léptetőmotor

1 x kenyeretábla

1 x Arduino (Uno)

2 x illesztőprogram IC L293DE

40 x jumper vezeték

2 x ventilátor

1. A léptetőmotorok és a ventilátor csatlakoztatása a kenyértáblához

A kapcsolási rajzot követve egy léptetőmotort köthetünk a vezetőhöz a kenyértáblán. Ezután ugyanazt a diagramot követve alkalmazza a második meghajtóra és a motorra is, de az áthidaló vezetékeket az arduino másik csapkészletébe kell csatlakoztatni (mivel az első motor 4 másik helyet foglal el).

Figyelmeztetés/tipp:

A meghajtók nagyon kicsik, és a csapok nagyon közel vannak egymáshoz. Bölcs dolog lenne elkülöníteni a két meghajtót, hogy a vezetékek ne legyenek zavarosak.

A következő a vezetékek bekötése. Ez meglehetősen egyszerű, a rendelkezésre álló ventilátorok alapvető számítógépes processzor -ventilátorok voltak, amelyek pozitív és alaposak. Csatlakoztassa a kettőt a +/- csapokhoz a kenyértáblán, és döntse mindegyiket a vezető felé. (Megállapítottuk, hogy mivel a léptetőmotorok hosszú időn keresztül kapnak információt és parancsokat, az illesztőprogramok hajlamosak túlmelegedni és szagolni. A ventilátor hozzáadása a hűtéshez megoldotta ezt a problémát).

2. Arduino kód

Ez a könnyű rész!

Nyissa meg az Arduino IDE -t, menjen a „Fájl” fülre, majd ugorjon a „példa” fülre, amely még tovább csökken, és megjelenik egy „léptető” fül. Ezután meg szeretné nyitni a „Stepper_OneStepAtATime” -t

Ez előre betölt egy példakódot, amely majdnem plug-and-play az arduino/motor vezetékhez. Kis módosításokat kell végrehajtanunk, mert két motort fogunk üzemeltetni, amelyeket alább mutatok be. Lehet, hogy kisebb módosításokat is kell végrehajtania attól függően, hogy mely csapokat választotta, mivel az Arduino IDE alapértelmezés szerint a 8-11.

Az alábbi kódot használtam a két motor „szinkron” mozgatásához:

//#include

const int stepsPerRevolution = 200;

Stepper myStepper1 (stepsPerRevolution, 9, 10, 11, 12);

Stepper myStepper2 (stepsPerRevolution, 4, 5, 6, 7);

int stepCount = 0;

void setup () {// inicializálja a soros portot: Serial.begin (9600); }

void loop () {

myStepper1.lépés (1);

Serial.print ("steps:");

Serial.println (stepCount);

stepCount ++;

késleltetés (0,5);

myStepper2.step (1); késleltetés (0,5); }

3. Lehetséges problémák

Azok a problémák, amelyekkel a folyamat során találkoztam, nem a megfelelő kódpélda, a rossz áthidaló vezeték használata, a rossz illesztőprogram -IC használata volt.

Győződjön meg arról, hogy az Ön által használt illesztőprogram képes a motor vezérlésére

Ellenőrizze a sorozatszámot és a specifikációkat

Beleütköztem egy problémába, hogy megszakadt az áthidaló vezetékem, emiatt furcsán forogtak a motorjaim

Multimétert kellett használnom minden vezeték ellenőrzéséhez

És mindig ellenőrizze a kódot, hogy nincsenek -e olyan apró hibák, mint például a vég hiánya; " parancs

10. lépés: Mechanikus

Mechanikai
Mechanikai
Mechanikai
Mechanikai
Mechanikai
Mechanikai
Mechanikai
Mechanikai

1. Anyag

A karok teljes gyártási modelljéhez ajánlott, hogy erős, mégis könnyű anyagból készüljenek, úgy éreztük, hogy az alumínium tökéletesen illeszkedik.

032 -es méretű alumínium lemezeket használtunk 9,125 x 17,5 hüvelykre vágva, és a mintát az előző lépésben látható rajz alapján követtük.

2. Gyártás

A hemmer (a kék gép) segítségével olyan szegélyeket adtunk hozzá, amelyek ellentétes irányba néznek, hogy amikor a darab törik és hajtogatja, a két szegély összekapcsolódik, és egyetlen teljes darabot alkot.

A nagy kanyarokhoz a tennismith -t használtuk, nagy pontossága miatt.

Most a kisebb kanyarokhoz egy kisebb lábú gépet kell használni, itt jön be egy olyan gép, mint a roto-szerszám. Kisebb lába miatt sajnos lehetővé teszi a kisebb szüneteket., a rendelkezésünkre álló roto-szerszám még túl nagy volt a sínünkhöz, és deformálódott.

** Alternatív megoldásként, ha nincs hozzáférése a megfelelő felszereléshez vagy szerszámokhoz, akkor helyettesítheti. **

Esetünkben plazmavágóval vágtuk le a karjainkat az alumínium napelem sínekről, és simítsuk le a végeket, majd csavarozzuk vissza egymáshoz, hogy kétoldalas sínrendszert hozzunk létre. Ideális esetben a síneket szeretnénk összehegeszteni, azonban hegesztőállomáshoz való hozzáférés nélkül összeszorítottuk a síneket, és átfúrtuk, majd összecsavaroztuk őket. De ha ezt az utat választják, akkor különösen ügyelni kell arra, hogy biztosítóanyát és alátétet használjunk annak biztosítására, hogy a darab a lehető legkevesebb hajlítással rendelkezzen.

3. Az öv

Az övekhez néhány régi 3D nyomtatószíjat használtunk, amelyeket meg tudtunk menteni.

A szíjak kezdetben nem voltak elég hosszúak, ezért hőre zsugorodó csöveket használva két darabot kombináltunk, hogy megfelelő hosszúságú legyen.

A zöld fogaskerekeket és a fa dübeleket korongcsapágyakra cserélték, extra széles alátétekkel, amelyek megakadályozták, hogy az öv elcsússzon a helyéről.

4. Szállítás

És végül a kocsi egy 5 "x 5" méretű 032 -es alumínium lemezből készült, lyukakat fúrva, ahol a megfelelő csavarokat és alátéteket el kell helyezni. A távolság attól függ, hogy milyen széles a sín, és mekkora szabad hely van az alátéteken.

11. lépés: Gondolatok

Sajnos projektünk minden oldala az idő nagy barikádjába ütközött, és nem tudtuk befejezni a tervezést a kitűzött dátumig. Csapatunk minden tagja végül legalább bizonyos mértékben együttműködött tervezésünk minden más vonatkozásában, ami némi tanulási görbéhez vezetett. Ez párosulva azzal a kívánsággal, hogy a lehető legkevesebb külső erőforrással tervezzünk egy terméket (mivel mindannyian a semmiből akartuk létrehozni a saját alkatrészeinket), rengeteg újjáalakuló kerékhez vezetett.

Mindenki, aki a projekten dolgozott, többet megtudott a projekt egyéb vonatkozásairól. Az egyik dolog, hogy a szoftvert meghatározott műveletre késztessük, az pedig más, hogy a szoftvert a hardverrel együtt működtessük. Azt mondanám, hogy fontos, hogy aki a projekt kódolási aspektusán dolgozik, olyan ismerős legyen, mint a projektkódolónk.

Összességében nem tudtuk pontosan elérni azt, amit szerettünk volna. Úgy érzem azonban, hogy jó úton jártunk, és mindannyian felfedeztünk és megtanultunk új fogalmakat, amelyeket alkalmazni fogunk a jövőbeli projektekben.

Ajánlott: