INHOUDSOPGAWE:

[WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband: 11 stappe
[WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband: 11 stappe

Video: [WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband: 11 stappe

Video: [WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband: 11 stappe
Video: Metallica: Whiplash (Live - San Diego '92) [Live Sh*t: Binge & Purge] 2024, Julie
Anonim
[WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband
[WIP] 'n Drawbot skep wat beheer word deur 'n Myo -armband

Hallo almal!

'N Paar maande gelede het ons besluit om die idee van die bou van 'n oopraam-trekstang aan te pak wat slegs 'n Myo-band gebruik het om dit te beheer. Toe ons die eerste keer met die projek begin, het ons geweet dat dit in 'n paar verskillende fases verdeel moes word. Ons eerste hooffase was om ons koppe te probeer draai om 'n oop raamontwerp vir ons trekkingbot. Dit is 'n nie -standaard opstelling, en ons wou kyk wat die voordele van hierdie ontwerp was.

Tweedens, ons het geweet dat die bou van hierdie prototipe slegs vir uself nuttig sou wees. Ons ontwerp en plan was om ons finale raam in metaal te skuif, en met behulp van 'n arduino, ons posisie te ontvang van die versnellingsmeter en die gyroscoop wat in die Myo -band ingebou is. Die inligting sal dan na die motors gestuur word en die gebruiker se beweging herhaal. Ons het geweet dat dit ons tweede fase in drie hoofaspekte sou laat uitbreek:

  1. programmeer van Myo tot motors, deur die Arduino
  2. elektriese ontwerp om ons data in beweging te omskep
  3. meganiese ontwerp om 'n raam van redelike grootte te skep wat ons beweging vergemaklik

Elke lid van ons span het die meeste gemaklik gevoel met 'n unieke deel van ons ontwerpproses, en daarom het ons besluit om ons werk onder elke persoon te verdeel. Ons het ook 'n blog gehou tydens ons hele ontwerpproses om ons daaglikse denke te volg, in teenstelling met 'n meer globale voorkoms.

Stap 1: Wat ons beplan het om te doen

Image
Image

Ons doel was om hierdie twee produkte te kombineer op 'n manier wat ons nog nie gesien het nie. Ons was van plan om 'n lewendige aflos te maak tussen ons Myo -armband en ons eie weergawe van 'n ontwerp wat geïnspireer is deur Evil Mad Scientist's AxiDraw.

Stap 2: Lys van die prototipe -bestanddele

2 2 x 4 houtborde 1 Gordel- of kettingafmeting> = 65”4 Houtspykers 3 Tande met tande wat by die gordel of ketting pas 4 3 x 8 geperforeerde plate 30 ⅜” Rubberafstandhouers 8 1”deursnee ringe 1 1” in deursnee hout plugel 1 'lang 8 Vex -skroewe 1”8 ½” Vex -skroewe 8 2”Vex -skroewe 8 ¼” Rubberafstandhouers 48 Vex -moere 1 Klein ritssluiting

Stap 3: [prototipe] Houtbewerking van ons arms en waens binne

[Prototipe] Houtbewerking van ons arms en waens binne
[Prototipe] Houtbewerking van ons arms en waens binne

Ons gryp twee 2x4's en sny dit in gelyke lengtes (33 ¼ )

Met 'n tafelsaag het ons die smal deel van die planke ¼ "diep en ⅛" breed in die middel langs die kant gemaak.

Sny die stokkie in 4 2 "stukke en boor 'n gat in die middel van die stok ongeveer ¼" in deursnee met 'n boorpers

Stap 4: [prototipe] Maak ons wa

[Prototipe] Maak ons wa
[Prototipe] Maak ons wa
[Prototipe] Maak ons wa
[Prototipe] Maak ons wa
[Prototipe] Maak ons wa
[Prototipe] Maak ons wa

Ideaal gesproke sou ons twee 7x7 stukke vex geperforeerde staal gebruik, maar al wat ons beskikbaar gehad het, was die 2x7 stroke, sodat ons dit in 'n 'X' opset vasgebout het

Stapel 5 van die ⅜”rubber afstandhouers en maak die hoeke van die veerplate aan mekaar vas

Maak die houtknoppies los soos in figuur 1 getoon, sodat hulle vry kan draai met ongeveer 2 ruimte tussen hulle. Gebruik die prentjie om te sien waar die ratte op hierdie punt geplaas moet word..

Maak seker dat die ringe in 'n verhoogde posisie is, soos getoon in figuur 1, met behulp van die ½ "vex skroewe, ¼" rubber afstandhouers en 1 "deursnee ringe. om maklik te draai en in die kerwe van die bord te pas.

Stap 5: [prototipe] Om alles bymekaar te sit

[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit
[Prototipe] Om alles bymekaar te sit

Plaas 'n bord op 'n oppervlak en skuif die wa in die middel sodat die ringe die wa bo die bord hou en aan beide kante van die bord die ratte vasspyker sodat hulle vrylik kan draai. Spyker 'n rat aan die een kant van die tweede bord vas en maak seker dat dit in die middel is en skuif dit op die wa loodreg op die eerste bord.

Nou moet die gordel deur die stelsel geslinger word, soos aangedui, let noukeurig op hoe die pluge aan die buitekant van die gordel is en dat daar niks in die middel van die onderstel is wat die band kan belemmer terwyl dit beweeg nie.

Nou moet die gordel vasgemaak word aan die kant van die bord wat nie 'n ratkas het nie. Ons het 'n ekstra spyker en rits vasgemaak om ons s'n vas te maak. Maar die metode wat gebruik word, maak nie saak nie, solank die gordel op die plek vasgemaak is

Stap 6: [prototipe] klaar en beweeg

Image
Image

Dit moet dit wees, trek die gordel in verskillende kombinasies en sien die verskillende effekte wat dit op die arm het!

Stap 7: Vertaal ons model in ons afgewerkte ontwerp

Vertaal ons model in ons voltooide ontwerp
Vertaal ons model in ons voltooide ontwerp
Vertaal ons model in ons voltooide ontwerp
Vertaal ons model in ons voltooide ontwerp

Toe ons ons prototipe voltooi het, was ons in ekstase. Nie een van ons was seker hoe die stelsel werk voordat dit gemonteer is nie. Maar sodra ons onderdele bymekaar gekom het, het ons vinnig ontdek waarvan ons hou en hoe ons dit sou verbeter as ons die finale ontwerp skep. Ons belangrikste klagtes met die stelsel om op te los, was:

  1. Skaal

    1. Ons prototipe was massief en onhandig, wat dit geneig was om aan die rand van ons arms om te draai
    2. Die wa was baie groter as wat nodig was, en dit het baie vermorsde ruimte gehad
    3. Ons gordel ('n veer tenk loopvlak) was baie groter as wat nodig was, wat 'n oormaat ruimte tussen arms veroorsaak het
  2. Wrywing

    1. Ons trane het nie te alle tye maklik oor die houthakkers geloop nie
    2. Plastiek op hout het die wa in baie gevalle onwillig gemaak om te beweeg
  3. Motoriseer

    Ons moes die stelsel kragtig maak

Met hierdie dinge in gedagte, het ons ons planne vir die finale ontwerp opgestel. Ons wou hê dat die trekstang met 'n Myo via 'n arduino beheer moes word, en ons wou die raam aluminium en kleiner maak.

Om dit te kan doen, het ons 'n persentasie van ons oorspronklike prototipe geneem en met die grootte begin werk. Deur plaatmetaal te gebruik wat bewerk sou word om kanale wyd genoeg te hê vir 'n afgeskermde laer om deur te gaan, sou ons 'n ligte, maar robuuste ontwerp hê wat 'n groter gebruikstoleransie sou hê.

Ons prototipe het ons ook binne enkele minute in staat gestel om vas te stel hoe die motorrotasie die kop van ons trekkerbot beïnvloed. Dit het ons laat verstaan dat ons kontrole -ontwerp eenvoudiger sou wees as wat ons verwag het. By nadere ondersoek het ons agtergekom dat die motor se beweging bykomend is! Dit beteken dat elke motor 'n onafhanklike gewenste uitwerking op ons beweging het, maar as ons dit saamvoeg, begin dit uitskakel.

As ons byvoorbeeld as 'n koördinaatvlak beskou word, sal die motor wat in die negatiewe x -ledemaat lê, altyd ons laai in die tweede en vierde kwadrant trek. Omgekeerd sal die motor wat op die positiewe x ekstremiteit lê, die laai altyd in die eerste en derde kwadrant neig. As ons die beweging van ons motors kombineer, kanselleer dit die gedeeltes van die bestuur van die konflik en versterk dit die gedeeltes wat ooreenstem.

Stap 8: Kodering

Terwyl ek 'n paar jaar gelede redelik uitgebrei in C gewerk het, het ek geen ervaring met lua of C ++ nie, en dit het beteken dat ek 'n aansienlike tyd moes bestee om dokumentasie deur te kyk. Ek het geweet dat die algemene taak wat ek sou probeer verrig, om die posisie van die gebruiker met tussenposes van tyd te kry en dit dan aan die motors oor te dra. Ek het besluit om die taak vir myself op te los om die dele wat ek benodig, beter te verteer.

1. Kry data van Myo (lua)

Ek het geweet dat ek 'n manier moes vind om die inligting uit die Myo te versamel. Dit was die eerste deel van die uitdaging wat ek wou benader. Om dit te doen, wou ek die gebruiker die doekgrootte laat kalibreer voordat hy begin teken. Dit sou my toelaat om 'n grens te hê om van te werk. Ek kon die program tussen verskillende gebruikers normaliseer deur eenvoudig 'n persentasie van die maksimum doek te neem terwyl my datapunte verby is. Ek het besluit om 'n geskrewe gebeurtenis te hou wat elke halfsekonde 'n getOrientation -kontrole sou doen, aangesien dit die tjeks in staat sou stel om nooit 'n wilde sprong uit te voer waaruit u sou moes raai nie (byvoorbeeld as die gebruiker wild terug swaai en vorentoe).

Dit was die eerste padblokkade wat ek getref het. Ek het 'n baie groot beperking van lua ontdek, en dat dit my nie sou toelaat om te wag voordat ek met die draaiboek voortgaan nie. Die enigste manier om hierdie aksie uit te voer, was om die SVE te onderbreek (wat dit wêreldwyd sou onderbreek, selfs die stelselklok sou hou), óf om OS -spesifieke opdragte te gebruik. In my voorbeeldkode het ek die oorspronklike bedryfstjek nagegaan wat ek uitgevoer het (kommentaar gelewer). Dit was nadat 'n groot hoeveelheid navorsing in lua se dokumentasie gedoen is, en dit is gedoen deur die stelselpadopmaak na te gaan. Dit was toe ek besluit het dat ek na die dokumentasie moes kyk vir projekte wat voorheen gepubliseer is. Ek het onmiddellik besef hoeveel tyd ek gemors het, en is onmiddellik na die platformveranderlike gelei. Daarmee kon ek byna onmiddellik OS -spesifieke wagopdragte implementeer, in teenstelling met die dae wat dit my geneem het om my vorige oplossing saam te voeg.

Omtrent hierdie ontwerpstyd het begin met die werk aan die elektriese aspek, en ek het die werk aan hierdie aspek van die kode opgeskort. Die bedoeling is om te leer hoe ons motors met die arduino in aanraking kom.

2. Om die Arduino werk (C ++)

Namate die werk met ons broodplank toenemend ingewikkelder geword het, het ek geleer dat die arduino nie in staat was om te multidraad nie. Dit was 'n groot sleutel in my oorspronklike kodeontwerp, en nadat ek meer gelees het oor die beperkings wat ons beheerder bied, het ek uitgevind dat ek sou moes programmeer hoe die arduino tussen die twee sou skakel. Dit het die fokus van my pogings geword toe ons sperdatum nader gekom het. Ek moes groot gedeeltes van my oorspronklike skrif verwyder, aangesien dit ontwerp was om data sinchronies na 'n lêer te skryf met die motorbestuurder wat die lêer gelees het. Dit was om 'n toufunksie moontlik te maak om seker te maak dat selfs as die gebruiker voor ons laai was, dit die projek nie sou verwoes nie.

Ek het besluit dat die toufunksie gestoor moet word, indien dit nie op dieselfde manier as voorheen geïmplementeer word nie. Om dit te kan doen, het ek 'n vektor skikkings gemaak. Dit het my toegelaat om nie net die gees van my vorige ontwerp relatief ongeskonde te hou nie, maar dit het ook beteken dat ek nie my plek in die lêer hoef by te hou vir lees of skryf nie. Al wat ek hoef te doen was om net 'n nuwe waarde in my vektor te voeg as die gebruiker beweeg (voorlopige toetse was minder as 1% van die doekgrootteverskil in beide x en y vanaf die laaste aangetekende posisie, wat geen opname van data veroorsaak het nie). Ek kan dan die oudste waarde in my vektor neem, en dit in een klap stuur, dit na die motorbeheer stuur, dit na ons lêer skryf en dit dan uit my vektor verwyder. Dit het baie van my bekommernisse oor die konstante IO -stroom skoongemaak.

Stap 9: Elektries

Image
Image
Elektries
Elektries

Terwyl ek in die verlede 'n elektronika -klas gevolg het en redelik met arduino's gewerk het. Ek het nog nooit daaroor gedink om die arduino -inligting van 'n eksterne bron te ontvang nie (myo); ek het slegs ervaring om inligting deur die arduino te stuur. Ek het egter die motors op ons drawbot aangesluit en aan die kode gewerk sodat hulle met die myo -kode kon werk.

Materiaal wat ek gebruik het:

2 x Stepper motors

1 x broodbord

1 x Arduino (Uno)

2 x bestuurder IC L293DE

40 x jumper drade

2 x waaiers

1. Koppel Stepper Motors en die waaier aan die broodbord

Na aanleiding van die stroombaan -diagram, kan ons een stapmotor na die bestuurder op die broodbord lei. Volg dan dieselfde diagram en geld vir die tweede bestuurder en motor, maar die jumperdrade moet in 'n ander stel penne in die arduino gekoppel word (aangesien die eerste motor die ruimte van 4 ander beslaan).

Waarskuwing/wenk:

Die bestuurders is baie klein en die penne is baie naby aan mekaar. Dit sal verstandig wees om die twee bestuurders uit te ruim sodat die drade nie verwarrend raak nie.

Volgende is om die waaiers te bedraad. Dit is redelik eenvoudig; die waaiers wat ek beskikbaar gehad het, was basiese rekenaarverwerker -waaiers, wat 'n positiewe en goeie basis het. Koppel die twee in hul onderskeie +/- penne op die broodbord en skuif elkeen na elke bestuurder. (Ons het agtergekom dat die bestuurders geneig is om te oorverhit en te ruik, omdat die stepper -motors oor 'n lang tydstip inligting en opdragte ontvang en die probleem oplos).

2. Arduino -kode

Dit is die maklike deel!

Maak die Arduino IDE oop, gaan na die oortjie "File" en gaan dan na die "voorbeeld" -oortjie, wat nog verder sal verskyn en 'n "stepper" -oortjie wys, dan wil u "Stepper_OneStepAtATime" oopmaak

Dit laai 'n voorbeeldkode wat amper plug-and-play is by die arduino-/motorbedrading, vooraf in. Ons sal klein aanpassings moet maak, want ons sal twee motors gebruik, wat ek hieronder sal wys. Miskien moet u ook klein aanpassings maak, afhangende van watter penne u besluit het om te gebruik, aangesien die Arduino IDE standaard op penne 8-11 is.

Die kode wat ek gebruik het om die twee motors in 'sinchronisering' te laat beweeg, is hieronder:

//#insluit

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

ongeldige opstelling () {// initialiseer die reekspoort: Serial.begin (9600); }

leemte -lus () {

myStepper1.step (1);

Serial.print ("stappe:");

Serial.println (stepCount);

stepCount ++;

vertraging (0,5);

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

3. Moontlike probleme

Probleme wat ek tydens hierdie proses raakgeloop het, was nie die gebruik van die regte kode nie, die gebruik van 'n slegte draad, die verkeerde bestuurder IC.

Maak seker dat u bestuurder wat u gebruik 'n motor kan beheer

Gaan die reeksnommer na en kyk na die spesifikasies daarvan

Ek het 'n probleem gehad met 'n dooie springdraad, wat my motors vreemd laat draai het

Ek moes 'n multimeter gebruik om elke draad te kontroleer

Kontroleer altyd u kode op klein foute, soos om 'n einde te mis ";" bevel

Stap 10: Meganies

Meganies
Meganies
Meganies
Meganies
Meganies
Meganies
Meganies
Meganies

1. Materiaal

Vir die volledige produksiemodel van die arms word aanbeveel dat dit gemaak is van sterk, maar liggewig materiaal, en ons het gevoel dat aluminium perfek pas.

Ons het aluminiumplate van 032 meter gebruik wat tot 9,125 x 17,5 cm gesny is, en het die patroon opgespoor uit die tekening wat in die vorige stap getoon is.

2. Vervaardiging

Met behulp van die hamer (die blou masjien) het ons soom bygevoeg wat in teenoorgestelde rigtings wys, sodat wanneer die stuk gebreek en gevou word, die twee soom inmekaar sou val en 'n enkele stuk kon vorm.

Vanweë die hoë presisie het ons die tennismith gebruik vir die groot draaie.

Nou vir die kleiner draaie, sal u 'n masjien met 'n kleiner voet wil gebruik, dit is waar 'n masjien soos die rotostertjie inkom. As gevolg van sy kleiner voet, kan u ongelukkig kleiner onderbrekings maak, die roto-die tot ons beskikking was nog te groot vir ons spoor en dit was vervorm.

** As alternatief, as u nie toegang tot die regte toerusting of gereedskap het nie, kan u 'n plaasvervanger maak. **

In ons geval sny ons ons arms van aluminium sonpaneelrails met behulp van 'n plasmasnyer en maak die ente glad en maak dit dan van agter na agter vas om 'n dubbelsydige spoorstelsel te maak. Ideaal gesproke sou ons die relings aan mekaar wou sweis, maar sonder toegang tot 'n sweisstasie het ons die relings vasgeklem en geboor en dit dan vasgebout. Maar as hierdie roete gevolg word, moet u veral sorg dra dat u 'n borgmoer en 'n wasser gebruik om te verseker dat die stuk so min as moontlik buig.

3. Die gordel

Vir die gordels het ons 'n paar ou 3D -drukkerbande gebruik wat ons kon red.

Die gordels was aanvanklik nie lank genoeg nie, en met behulp van 'n hitte krimpbuis het ons twee stukke gekombineer om een te maak wat lank genoeg sou wees.

Die groen ratte en houtdoppels is vervang deur skyflagers met ekstra wye ringe wat gebruik word om te verhoed dat die gordel uit sy plek gly.

4. Vervoer

En uiteindelik is die wa gemaak van 'n 5 "x 5" vel 032 aluminium, met gate geboor waar die ooreenstemmende skroewe en ringe gegooi moet word. Die afstand sal wissel, afhangende van hoe breed u spoor is en hoeveel speling u op u wassers het.

Stap 11: Refleksies

Ongelukkig het elke kant van ons projek die grootste versperring van die tyd raakgeloop, en ons kon ons ontwerp nie teen ons teikendatum voltooi nie. Elke lid van ons span het ten minste tot 'n mate aan elke ander aspek van ons ontwerp saamgewerk, wat gelei het tot 'n mate van leerkurwe. Dit, tesame met die begeerte om 'n produk te ontwerp met so min as moontlik hulpbronne van buite (aangesien ons almal ons onderdele van nuuts af wou skep), lei tot 'n groot hoeveelheid nuwe wiele.

Almal wat aan die projek gewerk het, het meer geleer oor die ander aspekte van die projek. Om sagteware 'n spesifieke aksie te laat doen, is een ding; om sagteware saam met hardeware te laat werk, is 'n ander ding. Ek sou sê dat dit belangrik is dat elkeen wat aan die koderingsaspek van hierdie projek werk, net so bekend is as ons projekkodeerder.

Oor die algemeen kon ons nie presies bereik wat ons wou nie. Ek voel egter dat ons op die regte pad was en ons het almal nuwe konsepte ontdek en geleer wat ons op toekomstige projekte sal kan toepas.

Aanbeveel: