Sadržaj:

[WIP] Izrada Drawbota kojim upravlja Myo traka: 11 koraka
[WIP] Izrada Drawbota kojim upravlja Myo traka: 11 koraka

Video: [WIP] Izrada Drawbota kojim upravlja Myo traka: 11 koraka

Video: [WIP] Izrada Drawbota kojim upravlja Myo traka: 11 koraka
Video: Bruce Springsteen falls on stage while performing in Amsterdam 2024, Srpanj
Anonim
[WIP] Izrada Drawbota kojim upravlja Myo traka
[WIP] Izrada Drawbota kojim upravlja Myo traka

Pozdrav svima!

Prije nekoliko mjeseci odlučili smo se uhvatiti u koštac s idejom o izgradnji otvorenog okvira koji će koristiti samo Myo bend za kontrolu. Kad smo tek krenuli u projekt, znali smo da će ga trebati podijeliti u nekoliko različitih faza. Naša prva glavna faza bila je pokušati zamotati glavu oko dizajna otvorenog okvira za našeg bota za izvlačenje. Ovo je nestandardno postavljanje i htjeli smo vidjeti koje su prednosti ovog dizajna.

Drugo, znali smo da će se izgradnja ovog prototipa pokazati samo korisnom za nas same. Naš dizajn i plan bio je premjestiti naš posljednji okvir u metal, te pomoću arduina dobiti svoj položaj s akcelerometra i žiroskopa ugrađenog u Myo bend. Ti bi se podaci zatim slali motorima i ponavljali bi korisnikovo gibanje. Znali smo da će to našu drugu fazu podijeliti u tri glavna aspekta:

  1. programiranje od Mya do motora, preko Arduina
  2. električni dizajn za prevođenje naših podataka u pokret
  3. mehanički dizajn za stvaranje okvira razumne veličine koji će olakšati naše kretanje

Svaki član našeg tima osjećao se najugodnije s jedinstvenim dijelom našeg dizajnerskog procesa, pa smo odlučili prekinuti naš rad među svakom osobom. Također smo vodili blog tijekom cijelog procesa dizajna kako bismo pratili naše svakodnevno razmišljanje, za razliku od globalnijeg izgleda.

Korak 1: Ono što smo planirali učiniti

Image
Image

Naš je cilj bio spojiti ova dva proizvoda na način na koji dosad nismo vidjeli niti jedan. Krenuli smo stvarati prijenos uživo između naše Myo trake i vlastite verzije dizajna inspirirane AxiDrawom Evil Mad Scientist.

Korak 2: Popis sastojaka prototipa

2 2 x 4 drvene ploče 1 Mjerenje pojasa ili lanca> = 65”4 Drveni čavli 3 Zupčanici sa zupcima koji odgovaraju pojasu ili lancu 4 3 x 8 vex perforiranih ploča 30 ⅜” Gumeni odstojnici 8 1”podloške promjera 1 1” promjer drveni tipla 1 'duga 8 Vex vijci 1”8 ½” Vex vijci 8 2”Vex vijci 8 ¼” Gumeni odstojnici 48 Vex matice 1 Mala vezica s patentnim zatvaračem

Korak 3: [Prototip] Obrada drveta Naša unutrašnjost oružja i kočije

[Prototip] Obrada drveta Interijer našeg oružja i kočije
[Prototip] Obrada drveta Interijer našeg oružja i kočije

Uzeli smo dva 2x4 i izrezali ih na jednake duljine (33 ¼”)

Pomoću stolne pile napravili smo usjek uz bok uskog dijela ploča ¼ "duboko i ⅛" široko u sredini

Izrežite tiplo na 4 2”komade i izbušite rupu u sredini tiple promjera oko ¼” pomoću bušilice

Korak 4: [Prototip] Izrada našeg prijevoza

[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage

U idealnom slučaju koristili bismo dva 7x7 komada vex perforiranog čelika, ali sve što nam je bilo na raspolaganju bile su 2x7 trake pa smo ih spojili zajedno u "X" konfiguraciji

Složite 5 rubber”gumenih odstojnika i učvrstite uglove vex ploča jedan za drugi

Labavo učvrstite drvene tiple kao što je prikazano na slici 1, tako da se slobodno okreću s razmakom od oko 2 inča. Pomoću slike vidite da li bi zupčanici trebali biti postavljeni na ovom mjestu, koristili smo podloške, no kasnije smo otkrili da maleni plastični zupčanici rade bolje.

Pomoću ½ “vijaka od viška, ¼” gumenih odstojnika i podmetača promjera 1”učvrstite podloške u povišenom položaju kao što je prikazano na slici 1 (koristili smo zupčanike od zelene plastike jer nismo mogli pronaći prave podloške) provjerite jesu li podloške u mogućnosti za lako okretanje i uklapanje u zareze ploče.

Korak 5: [Prototip] Spajanje svega

[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega

Postavite dasku na podlogu i gurnite kolica u sredinu tako da podloške drže kolica iznad daske, a s obje strane daske pribijte zupčanike prema dolje, tako da se slobodno okreću. Zabijte zupčanik na jedan kraj druge ploče pazeći da je centriran i gurnite ga na nosač okomito na prvu ploču.

Sada se pojas mora provući kroz sustav kao što je prikazano, obratite posebnu pozornost na to kako su tiple s vanjske strane pojasa i kako u središtu šasije nema ničega što bi moglo omesti pojas dok se kreće.

Sada pojas treba pričvrstiti sa strane ploče koja nema zupčanik. Za pričvršćivanje smo upotrijebili dodatni kravatu za nokte i patentni zatvarač. No korištena metoda nije važna sve dok je pojas usidren na tom mjestu

Korak 6: [Prototip] Završeno i kreće se

Image
Image

To bi trebalo biti to, povucite pojas u različitim kombinacijama i pogledajte različite učinke koje ima na ruku!

Korak 7: Prevođenje našeg modela u gotov dizajn

Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn

Kad smo dovršili prototip, bili smo u ekstazi. Nitko od nas nije bio siguran kako je sustav funkcionirao prije montaže. No, kad su se naši dijelovi spojili, brzo smo otkrili što nam se sviđa i kako bismo to poboljšali pri izradi konačnog dizajna. Naše glavne pritužbe sa sustavom za rješavanje bile su:

  1. Ljestvica
    1. Naš je prototip bio masivan i nezgrapan, što ga je činilo sklonim prevrtanju na rubu ruku
    2. Kočija je bila mnogo veća nego što je bilo potrebno i imala je mnogo izgubljenog prostora
    3. Naš je remen (gazni sloj tenksa) bio mnogo veći nego što je bilo potrebno, što je unijelo višak prostora između ruku
  2. Trenje

    1. Naša vex gazišta nisu lako prolazila preko drvenih valjaka za tiple na svim mjestima
    2. Plastika na drvu u mnogim je slučajevima učinila da se kočija ne želi kretati
  3. Motoriziranje

    Morali smo sustav učiniti snažnim

Imajući to na umu, nacrtali smo planove za konačni dizajn. Željeli smo da se vučnim mehanizmom upravlja pomoću Myo -a putem arduina, a okvir smo željeli učiniti aluminijskim i manjim.

Da bismo to učinili, uzeli smo postotak našeg izvornog prototipa i krenuli s radom od te veličine. Korištenjem lima koji bi se obrađivao tako da ima kanale dovoljno široke za prolazak zaštićenog ležaja, imali bismo lagan, ali robustan dizajn koji bi imao veću toleranciju korištenja.

Naš prototip nam je također omogućio, u samo nekoliko minuta, da utvrdimo kako je rotacija motora utjecala na glavu naše vučne kutije. To nas je dovelo do razumijevanja da bi naš dizajn kontrole bio jednostavniji nego što smo očekivali. Nakon pomnijeg pregleda, shvatili smo da je kretanje motora aditivno! To znači da svaki motor ima neovisan željeni učinak na naše kretanje, ali kada ih spojimo zajedno, oni se počinju poništavati.

Na primjer, ako se smatra koordinatnom ravninom, motor koji leži u negativnom x ekstremitetu uvijek će nastojati povući našu ladicu u drugi i četvrti kvadrant. Nasuprot tome, motor koji leži na pozitivnom x kraju uvijek će gurati ladicu u prvi i treći kvadrant. Kombiniramo li kretanje naših motora, to će otkazati dijelove usmjeravanja tog sukoba i pojačati dijelove koji se slažu.

Korak 8: Kodiranje

Iako sam prije nekoliko godina radio prilično opsežno u C -u, nisam imao iskustva s lua -om ili C ++ -om, a to je značilo da sam morao provesti znatno vrijeme pregledavajući dokumentaciju. Znao sam da je opći zadatak koji ću nastojati ostvariti bilo dobivanje položaja korisnika u intervalima vremena, a zatim njegovo prenošenje motorima. Odlučio sam si riješiti zadatak kako bih bolje probavio dijelove koji bi mi trebali.

1. Nabavite podatke od Myoa (lua)

Znao sam da moram smisliti način prikupljanja podataka od Myoa. Ovo je bio prvi dio izazova kojem sam se htio približiti. Da bih to učinio, želio sam da korisnik kalibrira svoju veličinu platna prije nego što počne crtati. To bi mi omogućilo da imam granicu za rad. Tada bih mogao normalizirati program između različitih korisnika jednostavnim uzimanjem postotka od maksimalnog platna dok podaci prolaze. Odlučio sam imati skriptirani događaj koji bi provjeravao getOrientation svakih pola sekunde, jer bi omogućio provjere da nikada ne izvedu divlji skok iz kojeg biste trebali pogoditi (na primjer, ako se korisnik divlje ljuljao unatrag i dalje).

Time sam postigao prvu prepreku na putu. Otkrio sam vrlo veliko ograničenje lue i da mi ne dopušta da čekam prije nego nastavim scenarij. Jedini način za izvođenje ove radnje bio je ili pauziranje CPU -a (što bi ga pauziralo globalno, čak i držanje sistemskog sata), ili upotreba posebnih naredbi za OS. U svom primjeru koda ostavio sam u izvornoj provjeri OS -a koju sam izvršio (komentirao). To je bilo nakon što je obavljena velika količina istraživanja u luinoj dokumentaciji, a to je učinjeno provjerom oblikovanja putanje sustava. Tada sam odlučio da moram pogledati dokumentaciju za projekte koji su prethodno objavljeni. Odmah sam shvatio koliko sam vremena izgubio i odmah sam doveden do varijable platforme. Pomoću njega sam mogao gotovo odmah implementirati posebne naredbe čekanja za OS, za razliku od dana koje mi je trebalo da sastavim svoje prethodno rješenje.

Otprilike u to vrijeme projektiranja počeo je rad na električnom aspektu, pa sam obustavio rad na ovom aspektu koda. Namjera nam je naučiti kako su naši motori povezani s arduinom.

2. Rad oko Arduina (C ++)

Kako je rad s našom matičnom pločom postajao sve složeniji, saznao sam da arduino nije sposoban za višestruku nit. Ovo je bio veliki ključ u mom izvornom dizajnu koda, a nakon što sam pročitao više o ograničenjima prezentiranim s našim kontrolerom, otkrio sam da ću morati programirati kako će se arduino prebacivati s jednog na drugo. To se usredotočilo na moje napore kako se bližio rok. Morao sam odbaciti velike dijelove svoje izvorne skripte jer su bili dizajnirani za upisivanje podataka u datoteku sinkrono s kontrolerom motora koji čita datoteku. To je trebalo omogućiti funkciju čekanja u redu kako bi bila sigurna da čak i ako je korisnik ispred naše ladice, to neće uništiti projekt.

Odlučio sam da funkciju čekanja treba spremiti, ako se ne implementira na isti način kao prije. Da bih to napravio, stvorio sam vektor nizova. To mi je omogućilo ne samo da zadržim duh svog prethodnog dizajna relativno netaknutim, već je značilo i da ne moram pratiti svoje mjesto u datoteci ni za čitanje ni za pisanje. Umjesto toga, sada je sve što sam trebao učiniti bilo jednostavno dodati novu vrijednost u svoj vektor ako se korisnik kretao (preliminarno testiranje bilo je manje od 1% razlike u veličini platna u x i y od posljednjeg snimljenog mjesta nije rezultiralo snimanjem podataka). Tada sam mogao uzeti najstariju vrijednost u svom vektoru i jednim potezom poslati je u upravljačku jedinicu motora, upisati u našu datoteku, a zatim je ukloniti iz svog vektora. Ovo je očistilo mnoge moje brige oko stalnog izvođenja IO toka.

Korak 9: Električno

Image
Image
Električni
Električni

Iako sam u prošlosti pohađao tečaj elektronike i dosta sam radio s arduinima. Nikada nisam duboko zaronio u to da arduino prima informacije iz vanjskog izvora (myo), imam samo iskustvo s iznosom informacija putem arduina. No, uzeo sam u obzir ožičenje motora na našoj vučnoj ploči i radio na kodu kako bi mogli raditi s myo kodom.

Materijali koje sam koristio:

2 x koračni motori

1 x Oglasna ploča

1 x Arduino (Uno)

2 x IC upravljački program L293DE

40 x kratkospojne žice

2 x Ventilatori

1. Spajanje koračnih motora i ventilatora na pločicu

Slijedeći dijagram kruga, možemo spojiti jedan koračni motor na upravljački program na ploči. Zatim, slijedeći isti dijagram, primijenite to na drugi upravljački program i motor, međutim, žice kratkospojnika će morati biti priključene u drugačiji set pinova u arduinu (budući da prvi motor zauzima prostor za 4 druga).

Upozorenje/Savjet:

Upravljački programi su vrlo mali, a pinovi su jako blizu. Bilo bi pametno razmaknuti dva upravljačka programa kako se žice ne bi zbunile.

Slijedi ožičenje ventilatora. Ovo je prilično jednostavno, ventilatori koje sam imao na raspolaganju bili su osnovni ventilatori za računalne procesore, koji imaju pozitivnu osnovu. Uključite to dvoje u odgovarajuće +/- pinove na ploči i okrenite svaki prema svakom vozaču. (Otkrili smo da, jer koračni motori primaju hrpe informacija i naredbi tijekom dužeg vremenskog razdoblja, vozači se imaju tendenciju pregrijavati i mirisati. Dodavanje ventilatora za hlađenje riješilo je ovaj problem).

2. Arduino kod

Ovo je lakši dio!

Otvorite Arduino IDE, idite na karticu "Datoteka", a zatim prijeđite na karticu "primjer" koja će se još više spustiti i pokazati vam karticu "koračni". Zatim želite otvoriti "Stepper_OneStepAtATime"

Ovo će unaprijed učitati primjer koda koji je gotovo plug-and-play na ožičenje arduino/motora. Morat ćemo napraviti male prilagodbe jer ćemo raditi s dva motora, što ću pokazati dolje. Možda ćete također morati izvršiti manje prilagodbe ovisno o tome koje ste pinove odlučili koristiti jer je Arduino IDE prema zadanim postavkama postavljen na pinove 8-11.

Kôd koji sam upotrijebio za pokretanje dva motora u "sinkronizaciji" je u nastavku:

//#include

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicijalizira serijski port: Serial.begin (9600); }

void loop () {{100} {101}

myStepper1.step (1);

Serial.print ("koraci:");

Serial.println (stepCount);

stepCount ++;

kašnjenje (0,5);

myStepper2.step (1); kašnjenje (0,5); }

3. Mogući problemi

Problemi na koje sam naišao tijekom ovog procesa nisu bili upotreba pravog primjera koda, upotreba neispravne kratkospojne žice, upotreba pogrešnog IC upravljačkog programa.

Uvjerite se da vaš upravljački program koji koristite može upravljati motorom

Provjerite serijski broj i njegove specifikacije

Naišao sam na problem mrtve kratkospojne žice, zbog čega su mi se motori čudno vrtjeli

Morao sam koristiti multimetar za provjeru svake žice

I uvijek dvaput provjerite da li u vašem kodu postoje male pogreške poput propuštanja kraja “;” naredba

Korak 10: Mehanički

Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički

1. Materijal

Za potpuni proizvodni model ruku preporučuje se da su izrađene od čvrstog, ali laganog materijala, smatrali smo da je aluminij savršeno pristajao.

Koristili smo aluminijske limove promjera 032 izrezane na 9,125 "x 17,5" i pratili uzorak sa crteža prikazanog u prethodnom koraku.

2. Izrada

Koristeći hemmer (plavi stroj) dodali smo rubove koji su okrenuti u suprotnim smjerovima tako da se, kad se komad slomi i preklopi, dva ruba spoje i tvore jedan cjeloviti komad.

Za velike zavoje koristili smo tennismith, zbog njegove visoke preciznosti.

Za manje zavoje htjet ćete koristiti stroj s manjom nogom, tu dolazi stroj poput roto-matrice. Zbog manjeg stopala, nažalost omogućuje manje pauze, roto matrica koja nam je bila na raspolaganju bila je još uvijek prevelika za našu tračnicu i bila je deformirana.

** Alternativno, ako nemate pristup odgovarajućoj opremi ili alatima, tada se može napraviti zamjena. **

U našem slučaju, izrezali smo ruke s aluminijskih tračnica solarnih panela pomoću plazma rezača i glatko izbrusili krajeve te ih pričvrstili leđima leđima kako bismo napravili dvostrani sustav tračnica. U idealnom slučaju, htjeli bismo zavariti šine zajedno, međutim, bez pristupa stanici za zavarivanje, umjesto toga smo spojili šine i izbušili ih, a zatim ih spojili. No ako se krene ovim putem, tada treba posebno paziti da se osigura matica i podloška kako bi se osiguralo da se komad što manje savija.

3. Pojas

Za pojaseve smo koristili neke stare pojaseve 3D pisača koje smo uspjeli spasiti.

Remeni u početku nisu bili dovoljno dugi pa smo pomoću neke termoskupljajuće cijevi spojili dva komada kako bismo napravili jedan koji će biti dovoljno dug.

Zeleni zupčanici i drveni klinovi zamijenjeni su disk ležajevima s iznimno širokim podlošcima koji su spriječili klizanje remena.

4. Kočija

I na kraju je kolica napravljena od lima dimenzija 5 "x 5" od aluminija 032, sa izbušenim rupama na mjestima na koja odgovaraju predviđeni vijci i podloške. Udaljenost će varirati ovisno o tome koliko je široka vaša tračnica i koliko imate slobodnog prostora na podloškama.

Korak 11: Razmišljanja

Nažalost, sve strane našeg projekta naišle su na veliku barikadu vremena, pa nismo uspjeli dovršiti dizajn do ciljanog datuma. Svaki je član našeg tima barem u određenoj mjeri surađivao u svakom drugom aspektu našeg dizajna, što je dovelo do nekih vremenskih krivulja učenja. To, zajedno sa željom da se dizajnira proizvod sa što je moguće manje vanjskih resursa (jer smo svi htjeli stvoriti svoje dijelove od nule), dovelo je do velike količine ponovno izumljenih kotača.

Svi koji su radili na projektu saznali su više o drugim aspektima projekta. Jedno je natjerati softver da učini određenu radnju, a drugo je učiniti da softver radi zajedno s hardverom. Rekao bih da je važno da tko god radi na aspektu kodiranja ovog projekta, bude upoznat kao i naš koder projekta.

Sve u svemu, nismo uspjeli postići točno ono što smo htjeli. Međutim, osjećam da smo bili na dobrom putu i svi smo otkrili i naučili nove koncepte koje ćemo moći primijeniti na buduće projekte.

Preporučeni: