Sadržaj:
- Korak 1: Šta smo planirali da uradimo
- Korak 2: Lista prototipskih sastojaka
- Korak 3: [Prototip] Obrada drveta Unutrašnjost našeg oružja i kočije
- Korak 4: [Prototip] Naše vozilo
- Korak 5: [Prototip] Spajanje svega
- Korak 6: [Prototip] Završeno i kreće se
- Korak 7: Prevođenje našeg modela u gotov dizajn
- Korak 8: Kodiranje
- Korak 9: Električno
- Korak 10: Mehanički
- Korak 11: Razmišljanja
Video: [WIP] Kreiranje Drawbota kojim upravlja Myo traka: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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šaj da se zamotamo 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 bi se izgradnja ovog prototipa pokazala korisnom samo za nas same. Naš dizajn i plan je bio da naš posljednji okvir premjestimo u metal i pomoću arduina dobijemo svoju poziciju sa akcelerometra i žiroskopa ugrađenog u Myo bend. Te bi se informacije zatim slale motorima i ponavljale korisnikovo kretanje. Znali smo da će se tako naša druga faza podijeliti u tri glavna aspekta:
- programiranje od Myo -a do motora, preko Arduina
- električni dizajn za prevođenje naših podataka u pokret
- 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š posao između svake osobe. Takođe smo vodili blog tokom čitavog procesa dizajniranja kako bismo pratili naše svakodnevno razmišljanje, za razliku od globalnijeg izgleda.
Korak 1: Šta smo planirali da uradimo
Naš cilj je bio kombinirati ova dva proizvoda na način na koji do sada nismo vidjeli da se koriste. Krenuli smo da napravimo relej uživo između naše Myo trake i sopstvene verzije dizajna inspirisanog AxiDraw -om Evil Mad Scientist -a.
Korak 2: Lista prototipskih sastojaka
2 2 x 4 drvene ploče 1 Mjerenje pojasa ili lanca> = 65”4 Drveni ekseri 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 Unutrašnjost našeg oružja i kočije
Uzeli smo dva 2x4 i izrezali ih na jednake dužine (33 ¼”)
Pomoću stolne pile napravili smo usjek uz bok uskog dijela dasaka deep "duboko i ⅛" široko u sredini
Isecite tiple na 4 2”komade i izbušite rupu u sredini tiple prečnika oko ¼” pomoću bušilice
Korak 4: [Prototip] Naše vozilo
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 pričvrstite uglove veks ploča jedni za druge
Labavo prič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, ali smo kasnije otkrili da sitni plastični zupčanici bolje rade.
Pomoću ½ “vijaka sa vijkom, ¼” 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 zelene plastične zupčanike jer nismo mogli pronaći prave podloške) provjerite jesu li podloške u mogućnosti za lako okretanje i uklapanje u zareze na ploči.
Korak 5: [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. Zakucajte zupčanik na jedan kraj druge ploče pazeći da je centriran i gurnite je na nosač okomito na prvu ploču.
Sada pojas mora biti provučen kroz sistem, kao što je prikazano, obratite posebnu pažnju na to kako su tiple s vanjske strane pojasa i kako u središtu šasije nema ništa š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 koristili dodatni čavao i kravatu. Ali korištena metoda nije bitna sve dok je pojas usidren na tom mjestu
Korak 6: [Prototip] Završeno i kreće se
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
Kad smo dovršili prototip, bili smo u ekstazi. Niko od nas nije bio siguran kako je sistem radio prije montaže. No, kad su se naši dijelovi spojili, brzo smo otkrili šta nam se sviđa i kako bismo to poboljšali pri kreiranju konačnog dizajna. Naše glavne žalbe koje sistem treba riješiti su:
-
Scale
- Naš prototip bio je masivan i nezgrapan, što ga je činilo sklonim prevrtanju na rubu ruku
- Kočija je bila mnogo veća nego što je bilo potrebno i imala je mnogo izgubljenog prostora
- Naš pojas (gazni sloj tenka u spremniku) bio je mnogo veći nego što je bilo potrebno, što je unijelo višak prostora između ruku
-
Trenje
- Naši vex gazišta nisu lako prelazili preko drvenih valjaka za tiple na svim mjestima
- Plastika na drvetu činila je da se kolica u mnogim slučajevima ne žele kretati
-
Motorizovanje
Morali smo sistem učiniti moćnim
Imajući ove stvari na umu, nacrtali smo planove za konačni dizajn. Željeli smo da se upravljačkom jedinicom 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 originalnog prototipa i krenuli s radom od te veličine. Korištenjem lima koji bi se obrađivao tako da ima kanale dovoljno široke da može proći zaštićeni ležaj, imali bismo lagan, ali robustan dizajn koji bi imao veću toleranciju upotrebe.
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 upravljanja 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 počinju poništavati.
Na primjer, ako se posmatra kao koordinatna ravnina, 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. Ako kombiniramo 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 značajno vrijeme pregledavajući dokumentaciju. Znao sam da je opći zadatak koji bih pokušao ostvariti bio da u određenim vremenskim intervalima dobijem položaj korisnika, a zatim ga proslijedim motorima. Odlučio sam si riješiti zadatak kako bih bolje probavio dijelove koji su mi potrebni.
1. Nabavite podatke od Myo -a (lua)
Znao sam da moram smisliti način prikupljanja podataka od Myoa. Ovo je bio prvi dio izazova kojem sam želio pristupiti. 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 za prenošenje podataka. Odlučio sam imati skriptirani događaj koji će provjeravati getOrientation svakih pola sekunde, jer će omogućiti provjere da nikada ne izvedu divlji skok iz kojeg biste trebali pogoditi (na primjer, ako se korisnik divlje ljuljao unatrag i dalje).
Ovo je učinilo prvu prepreku na koju sam naišao. Otkrio sam vrlo veliko ograničenje lue i da mi neće dopustiti 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 mom primjeru koda, ostavio sam u originalnoj 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 sistemske putanje. 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 spojim svoje prethodno rješenje.
Otprilike u to vrijeme dizajna 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 rad s više niti. Ovo je bio veliki ključ u mom izvornom dizajnu koda, a nakon što sam pročitao više o ograničenjima koja predstavlja naš kontroler, otkrio sam da ću morati programirati kako će se arduino prebacivati s jednog na drugo. Ovo je postalo fokus mojih napora kako se bližio rok. Morao sam odbaciti velike dijelove moje originalne skripte jer su bili dizajnirani za upisivanje podataka u datoteku sinhrono sa 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 očuvam 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 je bilo manje od 1% razlike u veličini platna i u x i y od posljednje snimljene pozicije nije rezultiralo snimanjem podataka). Tada sam mogao uzeti najstariju vrijednost u svoj vektor i jednim potezom poslati je u upravljačku jedinicu motora, upisati u našu datoteku, a zatim je ukloniti iz vektora. Ovo je očistilo mnoge moje brige oko stalnog izvođenja IO toka.
Korak 9: Električno
Iako sam u prošlosti pohađao tečaj elektronike i prilično 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. Međutim, odlučio sam ožičiti motore na našoj vučnoj kutiji i raditi 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. Povezivanje koračnih motora i ventilatora na matičnu ploču
Slijedeći dijagram kruga, možemo povezati jedan koračni motor s upravljačkim programom na matičnoj ploči. Zatim, slijedeći isti dijagram, primijenite to na drugi upravljački program i motor, međutim, žice kratkospojnika će morati biti uključ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 iglice su vrlo 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čunarske procesore, koji imaju pozitivnu osnovu. Uključite to dvoje u odgovarajuće +/- pinove na ploči i okrenite svaki prema svakom vozaču. (Utvrdili smo da, jer koračni motori primaju hrpe informacija i naredbi tokom dužeg vremenskog perioda, vozači se pregrijavaju i mirišu. 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 mala prilagođavanja jer ćemo raditi s dva motora, što ću pokazati dolje. Možda ćete također morati izvršiti manja prilagođavanja ovisno o tome koje ste pinove odlučili koristiti jer Arduino IDE prema zadanim postavkama postavlja pinove 8-11.
Kôd koji sam koristio za pokretanje dva motora u "sinkronizaciji" je dolje:
//#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 tokom 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 sa mrtvom kratkospojnom žicom, zbog čega su mi se motori čudno vrtjeli
Morao sam koristiti multimetar za provjeru svake žice
I uvijek dvaput provjerite kod ima li malih grešaka poput propuštanja kraja “;” komanda
Korak 10: Mehanički
1. Materijal
Za cjelokupni proizvodni model ruku preporučuje se da su izrađene od jakog, 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 (plava mašina) dodali smo rubove koji su okrenuti u suprotnim smjerovima tako da se, kada se komad slomi i preklopi, dva ruba spoje i tvore jedan cjeloviti komad.
Za velike krivine koristili smo tennismis zbog visoke preciznosti.
Za manje zavoje htjet ćete koristiti stroj s manjom nogom, tu dolazi mašina poput roto-matrice. Zbog svoje manje stope, nažalost se mogu napraviti manji prekidi., 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, odrezali smo ruke od aluminijskih šina solarnih panela pomoću plazma rezača i glatko izbrusili krajeve te ih pričvrstili leđima unatrag 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 na to da se matica i podloška osiguraju da se komad što manje savija.
3. Pojas
Za pojaseve smo koristili neke stare kaiševe za 3D štampače koje smo uspjeli spasiti.
Pojas u početku nije bio dovoljno dugačak pa smo pomoću neke termoskupljajuće cijevi spojili dva komada kako bismo napravili jedan koji će biti dovoljno dugačak.
Zeleni zupčanici i drveni klinovi zamijenjeni su disk ležajevima s izuzetno širokim podloškama koje su služile da spriječe klizanje pojasa.
4. Prevoz
I na kraju, nosač je napravljen od lima dimenzija 5 "x 5" od aluminijuma 032, sa izbušenim rupama tamo gdje su predviđeni odgovarajući vijci i podloške. Udaljenost će varirati ovisno o tome koliko je široka vaša šina i koliko imate slobodnog prostora na podloškama.
Korak 11: Razmišljanja
Nažalost, svaka strana našeg projekta naišla je na veliku barikadu vremena, pa nismo uspjeli dovršiti dizajn do ciljanog datuma. Svaki član našeg tima barem je u određenoj mjeri surađivao u svakom drugom aspektu našeg dizajna, što je dovelo do određenog vremenskog pada. Ovo, 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 ko god radi na aspektu kodiranja ovog projekta, bude upoznat kao i naš koder projekta.
Sve u svemu, nismo uspjeli postići ono što smo željeli. 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čuje se:
Oblak u boji kojim upravlja aplikacija: 7 koraka (sa slikama)
Oblak u boji koji kontrolira aplikacija: Zdravo, u ovom uputstvu pokazat ću vam kako izgraditi osvjetljenje prostorije od rešetke od šljunčane staze. Cijela stvar se može kontrolirati putem WLAN -a pomoću aplikacije. Https://youtu.be/NQPSnQKSuoUT Bilo je nekih problema s projektom. Ali na kraju možete uspjeti
Kako napraviti pametni lonac s NodeMCU -om kojim upravlja aplikacija: 8 koraka
Kako napraviti pametni lonac s NodeMCU -om kojim kontrolira aplikacija: U ovom vodiču ćemo izgraditi pametni lonac kojim upravlja ESP32 i aplikaciju za pametne telefone (iOS i Android). Koristit ćemo NodeMCU (ESP32) za povezivanje i biblioteku Blynk za oblak IoT i aplikaciju na pametnom telefonu. Na kraju smo
Kako napraviti Android rover kojim upravlja Android: 8 koraka (sa slikama)
Kako napraviti Android rover s kontrolom: u ovom uputstvu ću vam pokazati kako da napravite automobil ili rover koji kontroliše Android. Kako funkcioniše robot koji kontroliše Android? Robot s Android aplikacijom komunicira putem Bluetootha s Bluetooth modulom prisutnim na pljački
Bežični Arduino robot kojim upravlja računar: 4 koraka
Bežični Arduino robot kojim upravlja računar: U ovom uputstvu ćete naučiti kako postaviti komunikacijski kanal između vašeg računala i robota zasnovanog na Arduinu. Robot koji ovdje koristimo koristi mehanizam diferencijalnog upravljanja za kretanje. Koristim upravljački program motora baziran na releju umjesto MO
Napravite robota za teleprisutnost kojim se upravlja putem Wi -Fi -ja: 11 koraka (sa slikama)
Izgradite robota za teleprisutnost kontroliranog putem Wi -Fi -ja: Ovaj projekt govori o izgradnji robota koji može komunicirati s udaljenim okruženjem i kontrolirati ga iz bilo kojeg dijela svijeta putem Wi -Fi -ja. Ovo je moj posljednji inženjerski projekt i naučio sam mnogo o elektronici, IoT -u i programiranju iako