Turinys:

[WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės: 11 žingsnių
[WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės: 11 žingsnių

Video: [WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės: 11 žingsnių

Video: [WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės: 11 žingsnių
Video: SCP-973 – Призрак Полицейского (Анимация SCP) 2024, Liepa
Anonim
[WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės
[WIP] „Drawbot“sukūrimas, valdomas „Myo“rankinės

Sveiki visi!

Prieš kelis mėnesius nusprendėme pabandyti įgyvendinti idėją sukurti atviro kadro traukiamąjį bloką, kuriam valdyti buvo naudojama tik „Myo“juosta. Kai pirmą kartą ėmėmės projekto, žinojome, kad jį reikės suskaidyti į keletą skirtingų etapų. Pirmasis mūsų pagrindinis etapas buvo pabandyti apvynioti galvas aplink atviro rėmo dizainą, skirtą mūsų piešimo robotui. Tai nestandartinė sąranka ir norėjome sužinoti, kokia buvo šio dizaino nauda.

Antra, žinojome, kad šio prototipo kūrimas bus naudingas tik mums patiems. Mūsų planas ir planas buvo perkelti galutinį rėmą į metalą ir, naudojant arduino, gauti savo poziciją iš akselerometro ir giroskopo, įmontuoto į „Myo“juostą. Tada ši informacija būtų siunčiama varikliams ir pakartotų vartotojo judesį. Mes žinojome, kad tai padarys mūsų antrąjį etapą į tris pagrindinius aspektus:

  1. programavimas nuo Myo iki variklių per Arduino
  2. elektros projektavimas, kad mūsų duomenys būtų paversti judesiu
  3. mechaninį dizainą, kad sukurtumėte protingo dydžio rėmą, kuris palengvins mūsų judėjimą

Kiekvienas mūsų komandos narys jaučiasi patogiausiai naudodamas unikalią mūsų projektavimo proceso dalį, todėl nusprendėme suskirstyti savo darbą tarp kiekvieno žmogaus. Mes taip pat nuolat kūrėme tinklaraštį viso projektavimo proceso metu, kad galėtume sekti savo kasdienį mąstymą, o ne labiau pasaulinį vaizdą.

1 žingsnis: ką planavome padaryti

Image
Image

Mūsų tikslas buvo sujungti šiuos du produktus taip, kaip anksčiau nematėme nė vieno. Mes nusprendėme sukurti tiesioginę estafetę tarp „Myo“apyrankės ir mūsų pačių dizaino versijos, įkvėptos „Evil Mad Scientist“„AxiDraw“.

2 žingsnis: prototipų sudedamųjų dalių sąrašas

2 2 x 4 medžio lentos 1 Diržo arba grandinės matavimas> = 65”4 Medinės vinys 3 Krumpliaračiai su dantimis, priglundantys prie diržo ar grandinės 4 3 x 8 vex perforuotos plokštės 30 ⅜” Guminės tarpinės 8 1”skersmens poveržlės 1 1” skersmens medinės kaištis 1 'ilgio 8 Vex varžtai 1 "8 ½" Vex varžtai 8 2 "Vex varžtai 8 ¼" guminiai tarpikliai 48 Vex veržlės 1 Mažas užtrauktukas

3 žingsnis: [prototipas] Medžio apdirbimas mūsų ginklų ir vežimo viduje

[Prototipas] Medienos apdirbimas mūsų ginklų ir vežimo viduje
[Prototipas] Medienos apdirbimas mūsų ginklų ir vežimo viduje

Mes paėmėme du 2x4 ir supjaustėme juos vienodo ilgio (33 colių)

Naudodami stalo pjūklą, padarėme įpjovą išilgai siauros lentų dalies deep”gylio ir wide pločio viduryje

Supjaustykite kaištį į 4 2 colių gabalus ir gręžimo presu išgręžkite maždaug ¼ colio skersmens skylę kaiščio viduryje

4 žingsnis: [prototipas] Padarykite mūsų vežimą

[Prototipas] Gaminame savo vežimą
[Prototipas] Gaminame savo vežimą
[Prototipas] Gaminame savo vežimą
[Prototipas] Gaminame savo vežimą
[Prototipas] Gaminame savo vežimą
[Prototipas] Gaminame savo vežimą

Idealiu atveju mes naudosime du 7x7 gabalus iš perforuoto plieninio plieno, tačiau turėjome tik 2x7 juosteles, todėl jas sujungėme „X“konfigūracija

Sudėkite 5 rubber colių gumines tarpines ir pritvirtinkite vex plokščių kampus vienas prie kito

Laisvai pritvirtinkite medinius kaiščius, kaip parodyta 1 paveiksle, kad jie laisvai suktųsi, palikdami maždaug 2 colių tarpą tarp jų. Naudokite paveikslėlį, kad pamatytumėte, kur šiuo metu reikia įstatyti krumpliaračius, mes panaudojome poveržles, tačiau vėliau nustatėme, kad mažos plastikinės pavaros veikia geriau.

Naudodami ½ „vex varžtus, ¼“guminius tarpiklius ir 1 colio skersmens poveržles, pritvirtinkite poveržles aukštesnėje padėtyje, kaip parodyta 1 paveiksle (naudojome žalias plastikines pavaras, nes negalėjome rasti tinkamų poveržlių), įsitikinkite, kad poveržlės gali lengvai suktis ir tilpti į lentos įpjovas.

5 žingsnis: [prototipas] Sudėkite viską kartu

[Prototipas] Sudėti viską
[Prototipas] Sudėti viską
[Prototipas] Sudėti viską
[Prototipas] Sudėti viską
[Prototipas] Sudėti viską kartu
[Prototipas] Sudėti viską kartu
[Prototipas] Sudėti viską kartu
[Prototipas] Sudėti viską kartu

Padėkite lentą ant paviršiaus ir pastumkite vežimėlį į vidurį taip, kad poveržlės laikytų vežimėlį virš lentos ir abiejose lentos pusėse prikaustytų krumpliaračius, kad jie laisvai suktųsi. Pritvirtinkite krumpliaratį prie vieno antrosios lentos galo ir įsitikinkite, kad jis yra centre, ir pastumkite jį ant vežimėlio statmenai pirmajai lentai.

Dabar diržas turi būti perlenktas per sistemą, kaip parodyta, atidžiai stebėkite, kaip kaiščiai yra diržo išorėje ir ar važiuoklės centre nėra nieko, kas galėtų trukdyti diržui judant.

Dabar diržas turi būti pritvirtintas toje lentos pusėje, kurioje nėra pavaros. Mes pritvirtinome papildomą vinį ir užtrauktuką. Tačiau naudojamas metodas neturi reikšmės tol, kol diržas yra pritvirtintas toje vietoje

6 žingsnis: [prototipas] baigtas ir juda

Image
Image

Taip ir turėtų būti, traukite diržą įvairiais deriniais ir pamatysite skirtingą jo poveikį rankai!

7 žingsnis: paverskite mūsų modelį į mūsų gatavą dizainą

Mūsų modelio pavertimas mūsų baigtu dizainu
Mūsų modelio pavertimas mūsų baigtu dizainu
Mūsų modelio pavertimas mūsų baigtu dizainu
Mūsų modelio pavertimas mūsų baigtu dizainu

Kai baigėme savo prototipą, buvome ekstazėje. Nė vienas iš mūsų nebuvo tikras, kaip sistema veikė prieš surinkimą. Tačiau, kai mūsų dalys buvo sujungtos, mes greitai sužinojome, kas mums patiko ir kaip ją patobulinsime kurdami galutinį dizainą. Mūsų pagrindiniai nusiskundimai dėl sistemos buvo išspręsti:

  1. Skalė

    1. Mūsų prototipas buvo masyvus ir sunkus, todėl jis galėjo apsiversti mūsų rankų krašte
    2. Vežimėlis buvo daug didesnis nei reikia, ir joje buvo daug iššvaistytos vietos
    3. Mūsų diržas (tankus tanko protektorius) buvo daug didesnis nei būtina, todėl tarp rankų atsirado perteklius
  2. Trintis

    1. Mūsų švelnūs protektoriai visuose taškuose lengvai nepraėjo medinių kaiščių volelių
    2. Plastikas ant medžio daugeliu atvejų vežimėlį nenorėjo pajudinti
  3. Motorizuojantis

    Turėjome padaryti sistemą galingą

Turėdami tai omenyje, mes parengėme galutinio dizaino planus. Mes norėjome, kad traukimo mašina būtų valdoma naudojant „Myo“per arduino, ir norėjome, kad rėmas būtų aliuminis ir mažesnis.

Norėdami tai padaryti, mes paėmėme procentą savo pradinio prototipo ir pradėjome dirbti nuo tokio dydžio. Naudodami lakštinį metalą, kuris būtų apdirbtas taip, kad jo kanalai būtų pakankamai platūs, kad ekranuotas guolis galėtų praeiti, turėtume lengvą, tačiau tvirtą dizainą, kuris turėtų didesnį naudojimo toleranciją.

Mūsų prototipas taip pat leido mums vos per kelias minutes nustatyti, kaip variklio sukimasis paveikė mūsų traukos galvutę. Tai leido mums suprasti, kad mūsų valdymo dizainas bus paprastesnis, nei tikėjomės. Atidžiau apžiūrėję supratome, kad variklio judesys yra adityvus! Tai reiškia, kad kiekvienas variklis turi nepriklausomą norimą poveikį mūsų judesiui, tačiau kai mes juos sujungiame, jie pradeda atšaukti.

Pvz., Jei variklis laikomas koordinatės plokštumoje, variklis, esantis neigiamoje x galūnėje, visada linkęs ištraukti stalčių į antrąjį ir ketvirtąjį kvadrantus. Priešingai, variklis, uždėtas ant teigiamos x galūnės, stalčių visada nukreipia į pirmąjį ir trečiąjį kvadrantus. Jei sujungsime savo variklių judesį, tai panaikins konflikto nukreipimo dalis ir sustiprins sutinkančias dalis.

8 žingsnis: kodavimas

Nors prieš kelerius metus gana daug dirbau C, neturėjau patirties su „lua“ar „C ++“, o tai reiškė, kad turėjau praleisti daug laiko peržiūrėdamas dokumentus. Žinojau, kad bendra užduotis, kurią bandysiu atlikti, buvo tam tikrais laiko tarpais nustatyti vartotojo padėtį ir tada ją perduoti varikliams. Aš nusprendžiau nutraukti užduotį sau, kad geriau suvirškčiau tas dalis, kurių man reikia.

1. Gaukite duomenis iš „Myo“(lua)

Žinojau, kad turiu sugalvoti būdą, kaip surinkti informaciją iš „Myo“. Tai buvo pirmoji iššūkio dalis, į kurią norėjau atsakyti. Norėdami tai padaryti, norėjau, kad vartotojas prieš pradėdamas piešti sukalibruotų drobės dydį. Tai leistų man turėti ribą, nuo kurios reikia dirbti. Tada galėčiau normalizuoti programą tarp skirtingų vartotojų, paprasčiausiai paimdamas maksimalios drobės procentinę dalį, kad mano duomenys būtų perduoti. Nusprendžiau surengti scenarijų, kuris kas pusę sekundės tikrintų „getOrientation“, nes tai leistų tikrinimams niekada neatlikti laukinio šuolio, kurį turėtum atspėti (pvz., Jei vartotojas nepaprastai svyravo atgal ir pirmyn).

Dėl to susidūriau su pirmąja kliūtimi. Aš atradau labai didelį lua apribojimą ir tai neleis man palaukti prieš tęsiant scenarijų. Vienintelis būdas atlikti šį veiksmą buvo pristabdyti procesorių (kuris pristabdytų jį visame pasaulyje, net laikydamas sistemos laikrodį) arba naudoti konkrečias OS komandas. Savo kodo pavyzdyje palikau pradinį OS patikrinimą, kurį atlikau (pakomentavau). Tai buvo atlikta atlikus daug lua dokumentacijos tyrimų ir tai buvo padaryta patikrinus sistemos kelio formatavimą. Tai buvo tada, kai nusprendžiau, kad reikia pažvelgti į anksčiau paskelbtų projektų dokumentus. Iškart supratau, kiek laiko sugaišau, ir iškart buvau nukreiptas į platformos kintamąjį. Su juo aš beveik iš karto galėjau įgyvendinti konkrečias OS laukimo komandas, o ne tas dienas, kai man prireikė susivokti savo ankstesniame sprendime.

Maždaug tuo metu, kai buvo kuriamas projektavimas, prasidėjo darbas su elektriniu aspektu, ir aš sustabdžiau šio kodo aspekto darbą. Tikslas buvo sužinoti, kaip mūsų varikliai sąveikauja su arduino.

2. Darbas aplink Arduino (C ++)

Kadangi darbas su mūsų duonos lenta tapo vis sudėtingesnis, aš sužinojau, kad arduino nepajėgia atlikti kelių gijų. Tai buvo didelis mano pradinio kodo dizaino veržliaraktis, ir, perskaitęs daugiau apie mūsų valdikliui pateiktus apribojimus, sužinojau, kad turėčiau užprogramuoti, kaip arduino persijungtų tarp dviejų. Artėjant mūsų terminui tai tapo mano pastangų akcentu. Turėjau atsisakyti didelių savo originalaus scenarijaus dalių, nes jie buvo skirti duomenims įrašyti į failą sinchroniškai su variklio valdikliu, kuris skaito failą. Tai leido sukurti eilės funkciją, kad būtų užtikrinta, jog net jei vartotojas būtų priekyje mūsų stalčiaus, jis nesugadintų projekto.

Nusprendžiau, kad eilės funkcija turėtų būti išsaugota, jei nebus įgyvendinta taip, kaip anksčiau. Norėdami tai padaryti, sukūriau masyvų vektorių. Tai leido man ne tik išlaikyti nepažeistą ankstesnio dizaino dvasią, bet ir reiškė, kad neturėjau sekti savo vietos faile nei skaitymui, nei rašymui. Vietoj to, dabar viskas, ką man reikėjo padaryti, tai tiesiog pridėti naują vertę prie savo vektoriaus, jei naudotojas juda (preliminarus bandymas sudarė mažiau nei 1% drobės dydžio skirtumo tiek x, tiek y nuo paskutinės įrašytos vietos, todėl duomenys nebuvo įrašyti). Tada galėčiau paimti seniausią savo vektoriaus vertę ir vienu ypu nusiųsti ją į variklio valdiklį, įrašyti į mūsų failą ir tada pašalinti iš savo vektoriaus. Tai pašalino daugybę mano rūpesčių dėl nuolatinio IO srauto.

9 žingsnis: elektrinis

Image
Image
Elektros
Elektros

Nors anksčiau lankiau elektronikos klasę ir nemažai dirbau su arduino. Niekada nesigilinau į tai, kad arduino gautų informaciją iš išorinio šaltinio (myo), turiu tik patirties perduodant informaciją per arduino. Tačiau aš pradėjau prijungti variklius prie mūsų traukos bloko ir dirbti su kodu, kad jie galėtų dirbti su myo kodu.

Medžiagos, kurias naudojau:

2 x žingsniniai varikliai

1 x duonos lenta

1 x „Arduino“(„Uno“)

2 x tvarkyklės IC L293DE

40 x jungiamųjų laidų

2 x ventiliatoriai

1. Žingsninių variklių ir ventiliatoriaus prijungimas prie duonos lentos

Vadovaudamiesi grandinės schema, mes galime prijungti vieną žingsninį variklį prie vairuotojo ant duonos lentos. Tada, vadovaujantis ta pačia schema, taikoma ir antrajam vairuotojui ir varikliui, tačiau jungiamieji laidai turės būti prijungti prie kito arduino kaiščių rinkinio (nes pirmasis variklis užima 4 kitų erdvę).

Įspėjimas/patarimas:

Vairuotojai yra labai maži, o kaiščiai yra labai arti vienas kito. Būtų protinga atskirti du tvarkykles, kad laidai nesusimaišytų.

Kitas yra prijungti ventiliatorius. Tai gana paprasta, mano turimi ventiliatoriai buvo pagrindiniai kompiuterio procesoriaus ventiliatoriai, kurie turi teigiamą ir pagrindą. Įkiškite du į duonos lentos +/- kaiščius ir pakreipkite juos kiekvieno vairuotojo link. (Mes nustatėme, kad dėl to, kad žingsniniai varikliai ilgą laiką gauna informacijos ir komandų pliūpsnius, vairuotojai linkę perkaisti ir užuosti. Pridėjus ventiliatorių, jis atvėsino, ši problema išspręsta).

2. „Arduino“kodas

Tai lengva dalis!

Atidarykite „Arduino IDE“, eikite į skirtuką „Failas“, tada eikite į skirtuką „pavyzdys“, kuris nukris dar toliau ir parodys skirtuką „žingsninis“Tada norite atidaryti „Stepper_OneStepAtATime“

Tai iš anksto įkels pavyzdinį kodą, kuris yra beveik prijungtas ir paleistas prie „arduino“/variklio laidų. Turėsime atlikti nedidelius pakeitimus, nes veiksime dviem varikliais, kuriuos parodysiu žemiau. Taip pat gali tekti šiek tiek pakoreguoti, priklausomai nuo to, kuriuos kaiščius nusprendėte naudoti, nes „Arduino IDE“numatytasis yra 8–11 kaiščių.

Kodas, kurį naudojau, kad abu varikliai judėtų „sinchronizuotai“:

//#įtraukti

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicijuoti nuoseklųjį prievadą: Serial.begin (9600); }

void loop () {

myStepper1.step (1);

Serial.print ("steps:");

Serial.println (stepCount);

stepCount ++;

vėlavimas (0,5);

myStepper2.step (1); vėlavimas (0,5); }

3. Galimos problemos

Problemos, su kuriomis susidūriau šio proceso metu, buvo ne tinkamo kodo pavyzdžio naudojimas, netinkamas jungiamasis laidas, netinkamas tvarkyklės IC.

Įsitikinkite, kad jūsų naudojamas vairuotojas gali valdyti variklį

Patikrinkite serijos numerį ir jo specifikacijas

Susidūriau su problema, kad nutrūko jungiamoji viela, todėl mano varikliai keistai sukasi

Aš turėjau naudoti multimetrą, kad patikrintų kiekvieną laidą

Ir visada dar kartą patikrinkite savo kodą, ar nėra mažų klaidų, pavyzdžiui, trūksta pabaigos “;” komandą

10 žingsnis: mechaninis

Mechaninis
Mechaninis
Mechaninis
Mechaninis
Mechaninis
Mechaninis
Mechaninis
Mechaninis

1. Medžiaga

Viso gamybos ginklų modeliui rekomenduojama, kad jie būtų pagaminti iš tvirtos, bet lengvos medžiagos, manėme, kad aliuminis puikiai tinka.

Mes naudojome 032 aliuminio lakštus, supjaustytus iki 9,125 x 17,5 colio, ir atsekėme modelį iš brėžinio, parodyto ankstesniame žingsnyje.

2. Gamyba

Naudodami kėbulą (mėlyną mašiną) pridėjome apvadus, nukreiptus priešingomis kryptimis, kad, kai gabalas sulaužomas ir sulankstomas, abu kraštai susilieja ir sudaro vieną pilną gabalą.

Dideliems posūkiams mes naudojome tennismithą, nes jis yra labai tikslus.

Dabar, norėdami atlikti mažesnius posūkius, norėsite naudoti mašiną su mažesne koja, čia patenka tokia mašina kaip roto-die. Dėl mažesnės kojos, deja, galima padaryti mažesnes pertraukas, mūsų turimas roto štampas vis dar buvo per didelis mūsų bėgiui ir jis buvo deformuotas.

** Arba, jei neturite prieigos prie tinkamos įrangos ar įrankių, galite jį pakeisti. **

Mūsų atveju, mes nukirpėme rankas nuo aliuminio saulės kolektorių bėgių, naudodami plazminį pjaustytuvą, ir galus lygiai šlifavome, tada prisukome juos atgal, kad sukurtume dvipusę bėgių sistemą. Idealiu atveju norėtume suvirinti bėgius kartu, tačiau, neturėdami prieigos prie suvirinimo stoties, vietoj to prispaudėme bėgelius ir išgręžėme, tada prisukome varžtais. Bet jei pasirinktas šis kelias, ypatingas dėmesys turėtų būti skiriamas veržlės ir poveržlės naudojimui, siekiant užtikrinti, kad gabalas būtų kuo mažiau lankstomas.

3. Diržas

Diržams panaudojome keletą senų 3D spausdintuvo diržų, kuriuos pavyko išgelbėti.

Diržai iš pradžių nebuvo pakankamai ilgi, todėl, panaudodami termiškai susitraukiančius vamzdžius, mes sujungėme du gabalus, kad gautume pakankamai ilgą.

Žalias krumpliaračius ir medinius kaiščius pakeitė diskiniai guoliai su ypač plačiomis poveržlėmis, naudojamomis tam, kad diržas neslystų iš vietos.

4. Vežimas

Galiausiai vežimėlis buvo pagamintas iš 5 x 5 colių 032 aliuminio lakšto, kuriame buvo išgręžtos skylės, kur turi būti uždėti atitinkami varžtai ir poveržlės. Atstumas skirsis priklausomai nuo to, koks yra jūsų bėgio plotis ir kiek laisvos vietos turite ant poveržlių.

11 žingsnis: apmąstymai

Deja, kiekviena mūsų projekto pusė pateko į pagrindinę laiko barikadą, ir mes negalėjome užbaigti savo projekto iki numatytos datos. Kiekvienas mūsų komandos narys bent jau tam tikru mastu bendradarbiavo visais kitais mūsų dizaino aspektais, dėl to šiek tiek sumažėjo mokymosi kreivės laikas. Tai kartu su noru sukurti produktą, turintį kuo mažiau išorinių išteklių (kaip mes visi norėjome sukurti savo dalis nuo nulio), sukėlė daug iš naujo sukurtų ratų.

Visi, dirbę prie projekto, sužinojo daugiau apie kitus projekto aspektus. Priversti programinę įrangą atlikti konkretų veiksmą yra vienas dalykas, o kitas - priversti programinę įrangą veikti kartu su aparatūra. Sakyčiau, kad svarbu, kad kiekvienas, dirbantis su šio projekto kodavimo aspektu, būtų toks pat pažįstamas kaip mūsų projekto koduotojas.

Apskritai mums nepavyko pasiekti to, ko norėjome. Tačiau jaučiu, kad einame teisingu keliu ir visi atradome ir sužinojome naujų koncepcijų, kurias galėsime pritaikyti būsimuose projektuose.

Rekomenduojamas: