Obsah:

[WIP] Vytvorenie Drawbot ovládaného páskou Myo: 11 krokov
[WIP] Vytvorenie Drawbot ovládaného páskou Myo: 11 krokov

Video: [WIP] Vytvorenie Drawbot ovládaného páskou Myo: 11 krokov

Video: [WIP] Vytvorenie Drawbot ovládaného páskou Myo: 11 krokov
Video: ВСЕ, что НУЖНО знать о будущем времени в ХОРВАТСКОМ ЯЗЫКЕ 2024, Jún
Anonim
[WIP] Vytvorenie Drawbot ovládaného páskou Myo
[WIP] Vytvorenie Drawbot ovládaného páskou Myo

Ahoj všetci!

Pred niekoľkými mesiacmi sme sa rozhodli pokúsiť sa zaoberať myšlienkou vybudovania ťažného robota s otvoreným rámom, ktorý na ovládanie používal iba pásmo Myo. Keď sme sa do projektu prvýkrát pustili, vedeli sme, že bude potrebné ho rozdeliť na niekoľko rôznych fáz. Našou prvou hlavnou fázou bolo pokúsiť sa obaliť hlavy okolo dizajnu s otvoreným rámom pre nášho kresliaceho robota. Toto je neštandardné nastavenie a chceli sme vidieť, aké sú výhody tohto dizajnu.

Za druhé, vedeli sme, že vybudovanie tohto prototypu bude užitočné iba pre nás. Náš návrh a plán bol presunúť náš konečný rám do kovu a pomocou arduina získať našu pozíciu z akcelerometra a gyroskopu zabudovaného v pásme Myo. Tieto informácie by potom boli odoslané do motorov a replikovali by pohyb užívateľa. Vedeli sme, že naša druhá fáza sa rozdelí na tri hlavné aspekty:

  1. programovanie od Myo po motory, cez Arduino
  2. elektrický dizajn na prenos našich údajov do pohybu
  3. mechanický dizajn na vytvorenie primerane veľkého rámu, ktorý uľahčí náš pohyb

Každý člen nášho tímu sa cítil najpohodlnejšie s jedinečnou súčasťou nášho procesu navrhovania, a preto sme sa rozhodli rozdeliť našu prácu medzi každého človeka. Počas celého procesu navrhovania sme tiež udržiavali blog, aby sme sledovali naše každodenné myslenie, na rozdiel od globálnejšieho vzhľadu.

Krok 1: Čo sme plánovali urobiť

Image
Image

Našim cieľom bolo spojiť tieto dva produkty spôsobom, ktorý sme predtým nevideli ani jeden, ani druhý. Rozhodli sme sa vytvoriť živé relé medzi páskou Myo a našou vlastnou verziou dizajnu inšpirovaného AxiDraw od Evil Mad Scientist.

Krok 2: Zoznam zložiek prototypu

2 2 x 4 drevené dosky 1 Opasok alebo reťaz merajúce> = 65”4 Drevené klince 3 Ozubené kolesá so zubami, ktoré zodpovedajú pásu alebo reťazi 4 3 x 8 vex dierovaných plechov 30 ⅜” Gumové podložky 8 Podložky s priemerom 1”1 drevený priemer hmoždinka 1 'dlhá 8 Vex skrutky 1”8 ½” Vex skrutky 8 2”Vex skrutky 8 ¼” Gumové podložky 48 Vex matice 1 Malá pútka na zips

Krok 3: [Prototyp] Spracovanie dreva naše zbrane a interiér kočíka

[Prototyp] Spracovanie dreva naše zbrane a interiér kočíka
[Prototyp] Spracovanie dreva naše zbrane a interiér kočíka

Uchopili sme dve 2x4 a skrátili sme ich na rovnaké dĺžky (33 ¼”)

Pomocou stolnej píly sme na boku vytvorili úzku časť dosiek deep”hlbokú a ⅛” širokú v strede

Hmoždinku rozrežte na 4 2 “kusy a vyvŕtajte do stredu hmoždinky dieru v priemere asi ¼”

Krok 4: [Prototyp] Výroba nášho koča

[Prototyp] Výroba nášho koča
[Prototyp] Výroba nášho koča
[Prototyp] Výroba nášho koča
[Prototyp] Výroba nášho koča
[Prototyp] Výroba nášho koča
[Prototyp] Výroba nášho koča

V ideálnom prípade by sme použili dva kusy 7x7 vex perforovanej ocele, ale jediné, čo sme mali k dispozícii, boli pásy 2x7, takže sme ich spojili skrutkami v konfigurácii „X“

Uložte na seba 5 gumových rozperiek ⅜”a zaistite rohy drážkových dosiek k sebe

Uvoľnene zaistite drevené hmoždinky, ako je znázornené na obrázku 1, aby sa voľne otáčali s asi 2 -palcovým priestorom medzi nimi. Na obrázku použite obrázok, aby ste zistili, kde by mali byť v tomto mieste umiestnené prevody. Použili sme podložky, ale neskôr sme zistili, že drobné plastové vex prevody fungujú lepšie..

Pomocou ½ “vex skrutiek, ¼” gumových podložiek a podložiek s priemerom 1”zaistite podložky vo vyvýšenej polohe, ako je to znázornené na obrázku 1 (použili sme zelené plastové prevody, pretože sme nemohli nájsť správne podložky) a uistite sa, že sú podložky schopné. aby sa ľahko otáčali a zapadli do zárezov dosky.

Krok 5: [Prototyp] dajte to všetko dohromady

[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady
[Prototyp] Dať to všetko dohromady

Položte dosku na povrch a zasuňte vozík do stredu tak, aby podložky držali vozík nad doskou a na oboch stranách dosky pribite prevody nadol, aby sa voľne otáčali. Na jeden koniec druhej dosky pribite výstroj a uistite sa, že je v strede, a zasuňte ju na vozík kolmo na prvú dosku.

Teraz musí byť pás prevlečený systémom, ako je to znázornené. Dávajte pozor na to, ako sú hmoždinky na vonkajšej strane pásu a ako v strede podvozku nie je nič, čo by mohlo prekážať pásu pri jeho pohybe.

Teraz musí byť pás upevnený na boku dosky, ktorá nemá ozubené koleso. Na upevnenie nášho sme použili ďalší klinček a kravatu na zips. Na použitej metóde však nezáleží, pokiaľ je pás ukotvený na tomto mieste

Krok 6: [Prototyp] skončil a pohybuje sa

Image
Image

To by malo byť, natiahnite opasok v rôznych kombináciách a uvidíte rôzne efekty, ktoré má na ruku!

Krok 7: Prevod nášho modelu do nášho hotového dizajnu

Prevod nášho modelu do nášho hotového dizajnu
Prevod nášho modelu do nášho hotového dizajnu
Prevod nášho modelu do nášho hotového dizajnu
Prevod nášho modelu do nášho hotového dizajnu

Keď sme dokončili náš prototyp, boli sme vo vytržení. Pred montážou si nikto z nás nebol istý, ako systém funguje. Akonáhle sa však naše diely spojili, rýchlo sme zistili, čo sa nám páči a ako by sme to vylepšili pri vytváraní konečného návrhu. Naše hlavné sťažnosti na riešenie systému boli tieto:

  1. Mierka
    1. Náš prototyp bol masívny a ťažkopádny, a preto bol náchylný na prevrhnutie na okraji našich paží
    2. Koč bol oveľa väčší, ako bolo potrebné, a mal veľa premrhaného priestoru
    3. Náš pás (behúň nádrže) bol oveľa väčší, ako bolo potrebné, čo predstavovalo prebytočný priestor medzi ramenami
  2. Trenie

    1. Naše otrasné behúne neprechádzali po drevených valčekoch hmoždiniek ľahko vo všetkých bodoch
    2. Plast na dreve spôsobil, že sa kočiar v mnohých prípadoch nechcel pohnúť
  3. Motorizácia

    Potrebovali sme, aby bol systém schopný napájania

S ohľadom na tieto veci sme nakreslili naše plány na konečný návrh. Chceli sme, aby bol zdvihák ovládaný Myom prostredníctvom arduina, a chceli sme rám vyrobiť hliníkový a menší.

Aby sme to urobili, zobrali sme percento nášho pôvodného prototypu a pustili sme sa do práce od tejto veľkosti. Použitím plechu, ktorý by bol opracovaný tak, aby mal kanály dostatočne široké na to, aby cez ne prechádzalo tienené ložisko, by sme mali ľahký, ale robustný dizajn, ktorý by mal vyššiu toleranciu použitia.

Náš prototyp nám tiež umožnil v priebehu niekoľkých minút určiť, ako rotácia motora ovplyvnila hlavu nášho ťahadla. Vďaka tomu sme pochopili, že náš návrh ovládania bude jednoduchší, ako sme očakávali. Pri bližšom skúmaní sme zistili, že pohyb motora je aditívny! To znamená, že každý motor má na náš pohyb nezávislý požadovaný účinok, ale keď ich spojíme, začnú sa rušiť.

Ak je napríklad motor považovaný za súradnicovú rovinu, bude mať vždy sklon ťahať našu zásuvku do druhého a štvrtého kvadrantu. Naopak, motor položený na kladnú x extrémnosť bude vždy smerovať zásuvku do prvého a tretieho kvadrantu. Ak spojíme pohyb našich motorov, zruší to časti riadenia tohto konfliktu a zosilnia sa časti, ktoré súhlasia.

Krok 8: Kódovanie

Aj keď som pred niekoľkými rokmi pracoval pomerne rozsiahlo v jazyku C, nemal som žiadne skúsenosti s jazykom lua alebo C ++, a to znamenalo, že som musel stráviť značné množstvo času prezeraním dokumentácie. Vedel som, že všeobecnou úlohou, ktorú sa budem snažiť splniť, je získať pozíciu užívateľa v časových intervaloch a potom ju odovzdať motorom. Rozhodol som sa rozdeliť úlohu pre seba, aby som lepšie strávil časti, ktoré budem potrebovať.

1. Získajte údaje z Myo (Lua)

Vedel som, že musím nájsť spôsob, ako zbierať informácie od Mya. Toto bola prvá časť výzvy, ku ktorej som sa chcel priblížiť. Za týmto účelom som chcel, aby používateľ pred začatím kresby kalibroval svoju veľkosť plátna. To by mi umožnilo mať hranicu, z ktorej môžem pracovať. Potom by som mohol normalizovať program medzi rôznymi používateľmi tak, že jednoducho prejdem percento z maximálneho plátna, ktoré mi prejdú dátové body. Rozhodol som sa zorganizovať skriptovanú udalosť, ktorá by každú pol sekundy vykonala kontrolu getOrientation, pretože by umožnila, aby kontroly nikdy nevykonali divoký skok, z ktorého by ste museli uhádnuť (napríklad ak sa používateľ divoko hojdá späť a ďalej).

To bol prvý zátaras, na ktorý som narazil. Objavil som veľmi veľké obmedzenie lua a to, že mi to nedovolí počkať, kým budem pokračovať v scenári. Jediným spôsobom, ako vykonať túto akciu, bolo buď pozastaviť procesor (čo by ho pozastavilo globálne, dokonca aj so podržaním systémových hodín), alebo použiť príkazy špecifické pre OS. V mojom ukážkovom kóde som nechal pôvodnú kontrolu operačného systému, ktorú som vykonal (komentoval). To bolo potom, čo urobil veľké množstvo výskumu v dokumentácii Lua, a bolo vykonané kontrolou formátovania systémovej cesty. Vtedy som sa rozhodol, že sa musím pozrieť na dokumentáciu k projektom, ktoré boli predtým publikované. Okamžite som si uvedomil, koľko času som stratil, a okamžite ma priviedli k premennej platformy. Vďaka tomu som bol schopný implementovať čakacie príkazy špecifické pre OS takmer okamžite, na rozdiel od dní, ktoré mi trvalo skĺbiť moje predchádzajúce riešenie.

Zhruba v tomto období návrhu sa začali práce na elektrickom aspekte a prácu na tomto aspekte kódu som pozastavil. Cieľom je zistiť, ako sa naše motory dotýkajú arduina.

2. Práca okolo Arduina (C ++)

Ako bola práca s naším breadboardom čoraz komplexnejšia, zistil som, že arduino nie je schopné viacvláknového spracovania. V mojom pôvodnom dizajne kódu to bol veľký kľúč a po prečítaní ďalších informácií o obmedzeniach, ktoré prináša náš ovládač, som zistil, že budem musieť naprogramovať, ako arduino prepína medzi týmito dvoma. Toto sa stalo stredobodom môjho úsilia, keď sa blížil náš termín. Musel som zošrotovať veľké časti svojho pôvodného skriptu, pretože boli navrhnuté tak, aby zapisovali údaje do súboru synchrónne s tým, že ovládač motora číta súbor. To malo umožniť funkciu zaradenia do frontu, aby sa zaistilo, že aj keby používateľ bol pred našou zásuvkou, projekt to nezruinuje.

Rozhodol som sa, že funkcia frontu by mala byť uložená, ak nie je implementovaná rovnakým spôsobom ako predtým. Aby som to mohol urobiť, vytvoril som vektor polí. To mi umožnilo nielen udržať relatívne nedotknutý duch môjho predchádzajúceho návrhu, ale tiež to znamenalo, že som nemusel sledovať svoje miesto v súbore ani pri čítaní, ani pri písaní. Namiesto toho teraz všetko, čo som musel urobiť, bolo jednoducho pridať novú hodnotu do môjho vektora, ak sa používateľ pohyboval (predbežné testovanie bolo menšie ako 1% rozdielu veľkosti plátna v x aj y od poslednej zaznamenanej polohy neviedlo k zaznamenaniu údajov). Potom som mohol zobrať najstaršiu hodnotu vo svojom vektore a jedným rázom ho odoslať do riadenia motora, zapísať ho do nášho súboru a potom ho odstrániť z môjho vektora. To vyčistilo mnoho mojich obáv z neustáleho spustenia streamu IO.

Krok 9: Elektrika

Image
Image
Elektrické
Elektrické

Aj keď som v minulosti absolvoval kurz elektroniky a pracoval som na arduinoch dosť veľa. Nikdy som sa nepúšťal hlboko do toho, aby arduino dostával informácie z vonkajšieho zdroja (myo), mám iba skúsenosti s odosielaním informácií prostredníctvom arduina. Začal som však zapojiť motory do nášho zberača a pracovať na kóde, aby mohli pracovať s myo kódom.

Materiály, ktoré som použil:

2 x krokové motory

1 x Breadboard

1 x Arduino (Uno)

2 x Ovládač IC L293DE

40 x prepojovacie vodiče

2 x ventilátory

1. Pripojenie krokových motorov a ventilátora k doske

Podľa schémy zapojenia môžeme jeden krokový motor prepojiť s vodičom na doske. Potom podľa rovnakého diagramu platí, že pre druhý ovládač a motor však budú musieť byť prepojovacie vodiče zapojené do inej sady kolíkov v arduine (pretože prvý motor zaberá priestor 4 ďalších).

Varovanie/Tip:

Vodiče sú veľmi malé a kolíky sú veľmi blízko seba. Bolo by múdre rozložiť dva ovládače tak, aby drôty neboli mätúce.

Ďalej je zapojenie ventilátorov. Je to celkom jednoduché, ventilátory, ktoré som mal k dispozícii, boli základnými ventilátormi počítačových procesorov, ktoré majú pozitíva a uzemnenie. Pripojte tieto dva k príslušným +/- kolíkom na doske a každý nakloňte ku každému vodiču. (Zistili sme, že pretože krokové motory dostávajú veľké množstvo informácií a príkazov počas dlhého časového obdobia, ovládače majú tendenciu sa prehrievať a zapáchať. Tento problém vyriešil pridanie ventilátora na chladenie.)

2. Arduino kód

Toto je ľahká časť!

Otvorte Arduino IDE, prejdite na kartu „Súbor“a potom prejdite na kartu „Príklad“, ktorá sa rozbalí ešte viac a zobrazí sa vám karta „stepper“. Potom chcete otvoriť „Stepper_OneStepAtATime“

Tým sa predbežne nahrá ukážkový kód, ktorý je takmer možné použiť na zapojenie arduino/motora. Budeme musieť urobiť malé úpravy, pretože budeme poháňať dva motory, ktoré ukážem nižšie. Možno budete musieť tiež vykonať drobné úpravy v závislosti od toho, ktoré piny ste sa rozhodli použiť, pretože Arduino IDE má predvolené hodnoty piny 8–11.

Kód, ktorý som použil na synchronizáciu dvoch motorov, je uvedený nižšie:

//#zahrnúť

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicializácia sériového portu: Serial.begin (9600); }

prázdna slučka () {

myStepper1.step (1);

Serial.print ("kroky:");

Serial.println (stepCount);

stepCount ++;

oneskorenie (0,5);

myStepper2.step (1); oneskorenie (0,5); }

3. Možné problémy

Problémy, s ktorými som sa počas tohto procesu stretol, neboli použitie správneho príkladu kódu, použitia zlého prepojovacieho kábla a nesprávneho integrovaného ovládača.

Uistite sa, že váš ovládač, ktorý používate, je schopný ovládať motor

Skontrolujte sériové číslo a skontrolujte jeho špecifikácie

Narazil som na problém s mŕtvym prepojovacím káblom, čo spôsobilo, že sa moje motory podivne točili

Na kontrolu každého vodiča som musel použiť multimetr

A vždy dvakrát skontrolujte, či váš kód neobsahuje malé chyby, ako napríklad chýbajúci koniec „;“príkaz

Krok 10: Mechanický

Mechanický
Mechanický
Mechanický
Mechanický
Mechanický
Mechanický
Mechanický
Mechanický

1. Materiál

Pri sériovo vyrábanom modeli ramien sa odporúča, aby boli vyrobené zo silného, ale ľahkého materiálu. Cítili sme, že hliník sa perfektne hodí.

Použili sme hliníkové plechy s rozmerom 032 rozrezané na 9,125 "x 17,5" a vysledovali sme vzor z výkresu zobrazeného v predchádzajúcom kroku.

2. Výroba

Pomocou lemovača (modrý stroj) sme pridali lemy, ktoré smerujú opačným smerom, takže keď je kus zlomený a zložený, dva lemy sa spoja a vytvoria jeden úplný kus.

Na veľké ohyby sme použili tennismus, pretože je veľmi presný.

Teraz pre menšie ohyby budete chcieť použiť stroj s menšou nohou, tu nastupuje stroj ako rotačná matrica. Vďaka svojej menšej nohe umožňuje, bohužiaľ, robiť menšie prestávky, rotačná matrica, ktorú sme mali k dispozícii, bola pre našu koľajnicu stále príliš veľká a bola zdeformovaná.

** Alternatívne, ak nemáte prístup k správnemu zariadeniu alebo nástroju, je možné vykonať náhradu. **

V našom prípade sme ramená vystrihli z hliníkových koľajníc solárneho panelu pomocou plazmovej rezačky a konce sme zbrúsili hladko a potom ich priskrutkovali chrbtom k sebe, aby sme vytvorili obojstranný systém koľajníc. V ideálnom prípade by sme chceli zvariť koľajnice dohromady, avšak bez prístupu k zváraciemu stanovišťu sme koľajnice namiesto toho zovreli a prevŕtali a potom ich priskrutkovali. Ak sa však vydáte touto cestou, potom by ste mali obzvlášť dbať na to, aby ste použili poistnú maticu a podložku, aby ste zaistili, že kus bude mať čo najmenej ohybov.

3. Pás

Na pásy sme použili staré pásy 3D tlačiarní, ktoré sa nám podarilo zachrániť.

Pásy pôvodne neboli dostatočne dlhé, takže pomocou tepelne zmršťovacej trubice sme skombinovali dva kusy, aby sme vytvorili ten, ktorý by bol dostatočne dlhý.

Zelené ozubené kolesá a drevené hmoždinky boli nahradené diskovými ložiskami s extra širokými podložkami, ktoré slúžili na to, aby pás nekĺzal z miesta.

4. Preprava

A nakoniec bol vozík vyrobený z plechu 5 x 5 palcov z hliníka 032 s vyvŕtanými dierami, kam majú ísť zodpovedajúce skrutky a podložky. Vzdialenosť sa bude líšiť v závislosti od toho, ako široká je vaša koľajnica a koľko voľného priestoru máte na svojich podložkách.

Krok 11: Úvahy

Bohužiaľ, každá strana nášho projektu narazila na veľkú barikádu času a my sme neboli schopní dokončiť náš návrh do cieľového dátumu. Každý člen nášho tímu skončil aspoň v určitej miere v spolupráci na všetkých ostatných aspektoch nášho návrhu, čo viedlo k určitému skráteniu času učenia. To spolu s túžbou navrhnúť produkt s čo najmenšími vonkajšími zdrojmi (keďže sme všetci chceli vytvoriť naše príslušné diely od začiatku), viedlo k veľkému množstvu znovu objavených kolies.

Každý, kto pracoval na projekte, sa dozvedel viac o ďalších aspektoch projektu. Jedna vec je prinútiť softvér vykonať konkrétnu akciu, druhá potom je spolupráca softvéru s hardvérom. Povedal by som, že je dôležité, aby ktokoľvek, kto pracuje na kódovacom aspekte tohto projektu, bol taký známy ako náš kódovač projektu.

Celkovo sme neboli schopní dosiahnuť presne to, čo sme chceli. Mám však pocit, že sme boli na dobrej ceste a všetci sme objavili a naučili sa nové koncepty, ktoré budeme môcť uplatniť v budúcich projektoch.

Odporúča: