Sisukord:

[WIP] Myo käepaelaga juhitava Drawboti loomine: 11 sammu
[WIP] Myo käepaelaga juhitava Drawboti loomine: 11 sammu

Video: [WIP] Myo käepaelaga juhitava Drawboti loomine: 11 sammu

Video: [WIP] Myo käepaelaga juhitava Drawboti loomine: 11 sammu
Video: РАМНЫЙ ВНЕДОРОЖНИК за 400 тыс - Mitsubishi PAJERO 2 (1991-1997) 2024, Juuli
Anonim
[WIP] Drawboti loomine, mida juhib Myo käepael
[WIP] Drawboti loomine, mida juhib Myo käepael

Tere kõik!

Mõni kuu tagasi otsustasime lahendada idee ehitada avatud raamiga tõmbeauto, mille juhtimiseks kasutati ainult Myo bändi. Kui me projektiga esimest korda alustasime, teadsime, et see tuleb jagada mitmeks erinevaks etapiks. Meie esimene põhietapp oli proovida oma joonistusboti jaoks oma pead ümber avatud raami kujunduse ümbritseda. See on mittestandardne seadistus ja tahtsime näha, millised olid selle disaini eelised.

Teiseks teadsime, et selle prototüübi ehitamine osutub kasulikuks ainult meile endile. Meie disain ja plaan oli viia meie viimane raam metalliks ja arduino abil saada oma positsioon Myo bändi sisseehitatud kiirendusmõõturilt ja güroskoobilt. See teave saadetakse seejärel mootoritele ja see kordab kasutaja liikumist. Me teadsime, et see muudab meie teise etapi kolmeks põhiaspektiks:

  1. programmeerimine Myost mootoritele Arduino kaudu
  2. elektriline disain, et muuta meie andmed liikumiseks
  3. mehaaniline disain, et luua mõistliku suurusega raam, mis hõlbustab meie liikumist

Iga meie meeskonna liige tundis end kõige paremini oma disainiprotsessi ainulaadse osaga, mistõttu otsustasime oma töö iga inimese vahel jagada. Samuti pidasime kogu oma disainiprotsessi ajal ajaveebi, et jälgida oma igapäevast mõtlemist, mitte globaalsemat välimust.

Samm: mida me plaanisime teha

Image
Image

Meie eesmärk oli ühendada need kaks toodet viisil, mida me pole kumbagi varem näinud. Me asusime otseülekande tegema Myo käepaela ja meie enda versiooni kujundusest, mis on inspireeritud Evil Mad Scientist'i AxiDraw'st.

2. samm: prototüüpide koostisosade loend

2 2 x 4 puitlauda 1 Vöö või keti mõõt> = 65”4 Puidust naelad 3 Hammasrattad, mis sobivad rihma või keti külge tüübel 1 'pikk 8 Vex -kruvid 1 "8 ½" Vex -kruvid 8 2 -tollised Vex -kruvid 8 ¼ "Kummist vahekaugused 48 Vex -mutrid 1 Väike tõmblukk

3. samm: [prototüüp] Meie relvade ja kanduri sisemuse puidutöötlemine

[Prototüüp] Meie relvade ja kanduri sisemuse puidutöötlemine
[Prototüüp] Meie relvade ja kanduri sisemuse puidutöötlemine

Haarasime kaks 2x4 ja lõikasime need võrdseks pikkuseks (33 ¼)

Lauasaega tegime sälgu mööda laudade kitsast osa deep”sügav ja ⅛” lai keskel

Lõika tüübel 4 2 -tollisteks tükkideks ja puurige puuripressi abil tüübli keskele umbes ¼”läbimõõduga auk

4. samm: [prototüüp] meie kandekorvi valmistamine

[Prototüüp] Meie vankri valmistamine
[Prototüüp] Meie vankri valmistamine
[Prototüüp] Meie käru valmistamine
[Prototüüp] Meie käru valmistamine
[Prototüüp] Meie käru valmistamine
[Prototüüp] Meie käru valmistamine

Ideaalis kasutaksime kahte 7x7 tükki vex perforeeritud terast, kuid kõik, mis meil oli, olid 2x7 ribad, nii et keerasime need kokku X -konfiguratsiooniga

Pange 5 -tollised kummist vaherõngad kokku ja kinnitage vex -plaatide nurgad üksteise külge

Kinnitage puidust tüüblid lõdvalt, nagu on näidatud joonisel 1, nii et need pöörlevad vabalt ja nende vahel on umbes 2 tolli ruumi. Kasutage pilti, et näha, kuhu hammasrattad tuleks sel hetkel paigutada..

Kasutades ½ “veekruvisid, ¼” kummist vahetükke ja 1”läbimõõduga seibisid, kinnitage seibid kõrgemal asendis, nagu on näidatud joonisel 1 (kasutasime rohelisi plasthammasrattaid, kuna me ei leidnud õigeid seibisid), veenduge, et seibid suudavad hõlpsalt keerutada ja plaadi sälgudesse mahtuda.

5. samm: [prototüüp] kõik kokku

[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku
[Prototüüp] Paneme kõik kokku

Asetage laud pinnale ja libistage kelk keskele nii, et seibid hoiavad kelku laua kohal ja mõlemal pool lauda naelutavad hammasrattad alla, et need vabalt keerleksid. Naelutage hammasratas teise laua ühte otsa, veendumaks, et see on tsentreeritud, ja libistage see esimese lauaga risti vankrile.

Nüüd tuleb rihm läbi süsteemi loopida, nagu näidatud, pöörake hoolikalt tähelepanu sellele, kuidas tüüblid asuvad vöö välisküljel ja kuidas šassii keskel pole midagi, mis võiks rihma liikumise ajal takistada.

Nüüd tuleb rihm kinnitada plaadi küljele, millel pole käiku. Kinnitamiseks kasutasime täiendavat naela- ja tõmblukku. Kuid kasutatav meetod ei oma tähtsust seni, kuni rihm on sellesse kohta kinnitatud

6. samm: [prototüüp] valmis ja kolimas

Image
Image

See peaks nii olema, tõmmake vöö erinevates kombinatsioonides ja vaadake, millist mõju see käele avaldab!

Samm: meie mudeli tõlkimine meie valmis kujundusse

Meie mudeli tõlkimine meie valmis kujundusse
Meie mudeli tõlkimine meie valmis kujundusse
Meie mudeli tõlkimine meie valmis kujundusse
Meie mudeli tõlkimine meie valmis kujundusse

Kui me oma prototüübi valmis saime, olime ekstaasis. Keegi meist polnud enne kokkupanekut kindel, kuidas süsteem töötab. Kuid kui meie osad said kokku, avastasime kiiresti, mis meile meeldis ja kuidas seda lõpliku kujunduse loomisel täiustada. Meie peamised kaebused süsteemi lahendamiseks olid järgmised:

  1. Kaal

    1. Meie prototüüp oli massiivne ja raske, mistõttu muutus see käte servas ümberminekuks
    2. Vanker oli palju suurem kui vaja ja sellel oli palju raisatud ruumi
    3. Meie vöö (paksu paagi turvis) oli palju suurem kui vaja, mis tõstis käte vahele liigse ruumi
  2. Hõõrdumine

    1. Meie mustad turvised ei läinud puidust tüüblirullidest kõigis punktides kergesti üle
    2. Plastik puidul muutis vankri paljudel juhtudel liikumatuks
  3. Motoriseerimine

    Meil oli vaja muuta süsteem toitevõimeliseks

Neid asju silmas pidades koostasime lõpliku kujunduse plaanid. Tahtsime, et veoautot juhitaks Myo -ga arduino kaudu, ja tahtsime muuta raami alumiiniumist ja väiksemaks.

Selleks võtsime protsendi oma algsest prototüübist ja asusime sellest suurusest tööle. Kasutades lehtmetalli, mis oleks töödeldud nii, et kanalid oleksid varjestatud laagri läbimiseks piisavalt laiad, oleks meil kerge, kuid vastupidav konstruktsioon, millel oleks suurem kasutustaluvus.

Meie prototüüp võimaldas meil vaid mõne minutiga kindlaks teha, kuidas mootori pöörlemine meie veokasti pead mõjutas. See viis meid mõistma, et meie juhtimisseade oleks lihtsam, kui me eeldasime. Lähemal vaatlusel saime aru, et mootori liikumine on aditiivne! See tähendab, et igal mootoril on meie liikumisele sõltumatu soovitud mõju, kuid kui me need kokku kombineerime, hakkavad need tühistama.

Näiteks kui seda peetakse koordinaattasandiks, kipub negatiivsesse x -otsa asetatud mootor alati meie sahtli teise ja neljandasse veerandisse tõmbama. Vastupidi, mootor, mis asetab positiivsele x -otsale, kaldub sahtlisse alati esimesse ja kolmandasse veerandisse. Kui me kombineerime oma mootorite liikumise, tühistab see konflikti juhtimise osad ja võimendab nõustuvaid osi.

8. samm: kodeerimine

Kuigi ma töötasin mõned aastad tagasi C -s üsna palju, ei olnud mul kogemusi lua ega C ++ -ga ning see tähendas, et mul oli vaja kulutada märkimisväärselt palju aega dokumentide vaatamisele. Ma teadsin, et üldine ülesanne, mida ma püüan täita, on kasutaja positsiooni saamine ajavahemike järel ja seejärel selle edastamine mootoritele. Otsustasin ülesande enda jaoks katkestada, et vajaminevaid osi paremini seedida.

1. Andmete hankimine Myost (lua)

Ma teadsin, et pean välja mõtlema, kuidas Myost teavet koguda. See oli väljakutse esimene osa, millele tahtsin läheneda. Selleks tahtsin, et kasutaja kalibreeriks oma lõuendi suuruse enne joonistama asumist. See võimaldaks mul olla piir, millest töötada. Seejärel saaksin programmi normaliseerida erinevate kasutajate vahel, võttes lihtsalt andmepunktidena protsendi maksimaalsest lõuendist. Otsustasin korraldada skriptitud sündmuse, mis teeks iga poole sekundi järel getOrientation kontrolli, kuna see võimaldaks kontrollidel mitte kunagi teha metsikut hüpet, mida peaksite arvama (näiteks kui kasutaja pööras pööraselt tagasi ja edasi).

See tegi esimese takistuse, mille tabasin. Avastasin lua väga suure piirangu ja see ei võimalda mul enne skripti jätkamist oodata. Ainus viis selle toimingu tegemiseks oli CPU peatamine (mis peatab selle globaalselt, isegi süsteemi kella hoides) või OS -i spetsiifiliste käskude kasutamine. Näitekoodis jätsin esialgse OS -i kontrolli, mille tegin (kommenteerisin). Seda tehti pärast suure hulga uuringuid lua dokumentatsioonis ja seda tehti, kontrollides süsteemitee vormindamist. See oli siis, kui otsustasin, et pean vaatama varem avaldatud projektide dokumentatsiooni. Mõistsin kohe, kui palju aega raiskasin, ja juhatasin kohe platvormi muutuja juurde. Sellega suutsin peaaegu kohe rakendada operatsioonisüsteemi spetsiifilisi ootekäske, erinevalt päevadest, mis kulusid mul eelmise lahenduse kokku panemiseks.

Umbes sel projekteerimisajal alustati tööd elektrilise aspektiga ja ma peatasin töö selle koodi aspektiga. Eesmärk oli õppida, kuidas meie mootorid liitusid arduinoga.

2. Töö ümber Arduino (C ++)

Kui töö meie leivalauaga muutus üha keerulisemaks, sain teada, et arduino ei suuda mitut lõime teha. See oli minu esialgses koodikujunduses suur mutrivõti ja pärast meie kontrolleriga esitatud piirangute kohta lisateavet sain teada, et pean programmeerima, kuidas arduino nende kahe vahel vahetada. See sai minu jõupingutuste keskmesse, kui meie tähtaeg lähenes. Pidin oma esialgsest skriptist suured osad maha võtma, kuna need olid mõeldud andmete kirjutamiseks faili sünkroonselt faili lugeva mootorikontrolleriga. See pidi võimaldama järjekorrafunktsiooni tagamaks, et isegi kui kasutaja oleks meie sahtlist ees, ei rikuks see projekti.

Otsustasin, et järjekorrafunktsioon tuleks salvestada, kui seda ei rakendata samamoodi nagu varem. Selleks lõin massiivide vektori. See võimaldas mul mitte ainult hoida oma eelmise disaini vaimu suhteliselt puutumatuna, vaid tähendas ka seda, et ma ei pidanud lugema ega kirjutama oma asukohta failis. Selle asemel pidin ma nüüd lihtsalt lisama oma vektorisse uue väärtuse, kui kasutaja liigub (eeltestimine oli vähem kui 1% lõuendi suuruse erinevusest nii x kui ka y viimases salvestatud asukohas, mille tulemusel andmeid ei salvestatud). Võisin siis võtta oma vektori vanima väärtuse ja ühe hoobiga saata selle mootori juhtseadisele, kirjutada selle meie faili ja seejärel eemaldada selle oma vektorist. See puhastas palju muresid pideva IO voo käivitamise pärast.

9. samm: elektriline

Image
Image
Elektriline
Elektriline

Kuigi ma olen varem elektroonikatunnis käinud ja arduinodega päris palju koostööd teinud. Ma pole kunagi süvenenud sellesse, et arduino saaks teavet väljastpoolt pärit allikast (myo), mul on ainult kogemusi teabe edastamisel arduino kaudu. Siiski hakkasin juhtima meie tõmbekasti mootoreid ja töötama koodi kallal, et nad saaksid müokoodiga töötada.

Materjalid, mida kasutasin:

2 x samm -mootorid

1 x leivalaud

1 x Arduino (Uno)

2 x draiveri IC L293DE

40 x hüppaja juhtmed

2 x ventilaatorit

1. Stepper -mootorite ja ventilaatori ühendamine leivaplaadiga

Lülitusskeemi järgides saame ühe samm -mootori juhtpaneelile juhtmega ühendada. Seejärel, järgides sama skeemi, mis kehtib ka teise juhi ja mootori kohta, tuleb hüppaja juhtmed ühendada arduino erinevasse tihvtide komplekti (kuna esimene mootor hõivab nelja teise ruumi).

Hoiatus/näpunäide:

Juhid on väga väikesed ja tihvtid on üksteisele väga lähedal. Mõistlik oleks kaks draiverit eraldada, nii et juhtmed ei läheks segaseks.

Järgmine on ventilaatorite juhtmestik. See on üsna lihtne, mul olid kättesaadavad ventilaatorid põhilised arvutiprotsessori ventilaatorid, millel on positiivne külg. Ühendage need kaks leivalaua vastavatele +/- tihvtidele ja kaldke mõlemad iga juhi poole. (Leidsime, et kuna samm -mootorid saavad teavet ja käsklusi pika aja jooksul, kipuvad draiverid üle kuumenema ja lõhnama. Ventilaatori lisamine selle jahutamiseks lahendas selle probleemi).

2. Arduino kood

See on lihtne osa!

Avage Arduino IDE, minge vahekaardile „Fail”, seejärel minge vahekaardile „näide”, mis langeb veelgi kaugemale ja kuvab vahekaardi „samm” Seejärel soovite avada „Stepper_OneStepAtATime”

See eellaadib näidiskoodi, mis on peaaegu plug-and-play arduino/mootori juhtmestikku. Peame tegema väikeseid kohandusi, sest töötame kahe mootoriga, mida näitan allpool. Samuti peate võib-olla tegema väikeseid kohandusi sõltuvalt sellest, milliseid tihvte olete otsustanud kasutada, kuna Arduino IDE vaikimisi on tihvtid 8–11.

Kood, mida olen kasutanud kahe mootori sünkroonis liikumiseks, on allpool:

//#sisaldavad

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// initsialiseeri jadaport: Serial.begin (9600); }

void loop () {

myStepper1.step (1);

Serial.print ("steps:");

Serial.println (stepCount);

stepCount ++;

viivitus (0,5);

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

3. Võimalikud probleemid

Probleemid, millega selle protsessi käigus kokku puutusin, ei kasutanud õiget koodinäidet, kasutasin halba hüppajajuhet, kasutasin vale draiveri IC -d.

Veenduge, et teie kasutatav juht suudab mootorit juhtida

Kontrollige seerianumbrit ja kontrollige selle spetsifikatsioone

Mul tekkis probleem, et mul oli hüppetraat surnud, mis pani mu mootorid imelikult pöörlema

Iga juhtme kontrollimiseks pidin kasutama multimeetrit

Ja kontrollige alati oma koodi üle väikeste vigade osas, nagu näiteks lõpu puudumine;; käsk

Samm: mehaaniline

Mehaaniline
Mehaaniline
Mehaaniline
Mehaaniline
Mehaaniline
Mehaaniline
Mehaaniline
Mehaaniline

1. Materjal

Käte täieliku tootmismudeli jaoks on soovitatav, et need oleksid valmistatud tugevast, kuid kergest materjalist, tundsime, et alumiinium sobib ideaalselt.

Kasutasime 032 mõõtmega alumiiniumlehti, mis on lõigatud 9,125 x 17,5 tolli ja jälgisime mustrit eelmises etapis näidatud joonisel.

2. Valmistamine

Hemmeri (sinise masina) abil lisasime ääred, mis on suunatud vastassuunda, nii et kui tükk on katki ja volditud, lukustuvad need kaks serva, moodustades ühe tervikliku tüki.

Suurte kurvide puhul kasutasime tennismithit, kuna see on ülitäpne.

Nüüd, kui soovite teha väiksemaid kurve, soovite kasutada väiksema jalaga masinat, siin tuleb sisse selline masin nagu roto-die. Selle väiksema jala tõttu võimaldab see kahjuks teha väiksemaid pause, meie käsutuses olnud roto-die oli meie rööpa jaoks endiselt liiga suur ja see oli deformeerunud.

** Kui teil pole juurdepääsu nõuetekohasele varustusele või tööriistadele, saate selle asendada. **

Meie puhul lõikasime plasmalõikuri abil käed alumiiniumist päikesepaneelide rööbastelt ja lihvisime otsad siledaks, seejärel keerasime need kahe otsaga rööpasüsteemi saamiseks tagasi. Ideaalis tahaksime rööpad kokku keevitada, kuid ilma keevitusjaama juurde pääsemata klammerdasime rööpad kokku ja puurisime need läbi ning seejärel kruvisime kokku. Kuid kui seda teed valida, tuleb eriti hoolikalt kasutada lukustusmutrit ja seibi, et tükk oleks võimalikult vähe paindunud.

3. Vöö

Vööde jaoks kasutasime mõnda vana 3D -printeri vööd, mille suutsime päästa.

Rihmad ei olnud esialgu piisavalt pikad, nii et mõne termokahaneva toru abil ühendasime kaks tükki, et saada üks piisavalt pikk.

Rohelised hammasrattad ja puidust tüüblid asendati ketaslaagritega, millel olid eriti laiad seibid, et hoida vöö paigast libisemist.

4. Vanker

Ja lõpuks oli vanker valmistatud 5 "x 5" lehest 032 alumiiniumist, aukudega puuritud, kuhu vastavad kruvid ja seibid on mõeldud. Kaugus varieerub sõltuvalt sellest, kui lai on teie rööp ja kui palju on teie seibidel vaba ruumi.

11. samm: peegeldused

Kahjuks sattusid meie projekti kõik küljed aja suurde barrikaadi ja me ei suutnud oma kavandatud tähtajaks oma disaini lõpule viia. Iga meie meeskonna liige lõpetas vähemalt mingil määral koostööd meie disaini kõigis teistes aspektides, mis viis õppimiskõvera aja vajumiseni. See koos sooviga kujundada võimalikult väikeste väliste ressurssidega toode (nagu me kõik tahtsime oma osi nullist luua), tõi kaasa suure hulga uuesti leiutatud rattaid.

Kõik, kes projekti kallal töötasid, said rohkem teada projekti muudest aspektidest. Tarkvara konkreetse toimingu tegemine on üks asi, siis tarkvara ja riistvaraga koos töötamine on teine asi. Ma ütleksin, et on oluline, et igaüks, kes selle projekti kodeerimisega tegeleb, oleks sama tuttav kui meie projekti kodeerija.

Üldiselt ei suutnud me saavutada täpselt seda, mida tahtsime. Siiski tunnen, et olime õigel teel ning avastasime ja õppisime kõik uusi kontseptsioone, mida saame tulevastes projektides rakendada.

Soovitan: