Taula de continguts:

[WIP] Creació d'un Drawbot controlat per un braçalet Myo: 11 passos
[WIP] Creació d'un Drawbot controlat per un braçalet Myo: 11 passos

Vídeo: [WIP] Creació d'un Drawbot controlat per un braçalet Myo: 11 passos

Vídeo: [WIP] Creació d'un Drawbot controlat per un braçalet Myo: 11 passos
Vídeo: Marc Marquez Takes Over the Streets of Madrid 🇪🇸🏍️ 2024, Desembre
Anonim
[WIP] Creació d'un Drawbot controlat per un braçalet Myo
[WIP] Creació d'un Drawbot controlat per un braçalet Myo

Hola a tots!

Fa uns mesos, vam decidir intentar abordar la idea de construir un drawbot de marc obert que només utilitzés una banda Myo per controlar-lo. Quan vam començar el projecte per primera vegada, sabíem que s’hauria de dividir en un parell de fases diferents. La nostra primera fase principal va ser intentar embolicar el cap amb un disseny de marc obert per al nostre bot de dibuix. Es tracta d’una configuració no estàndard i volíem veure quins eren els avantatges d’aquest disseny.

En segon lloc, sabíem que construir aquest prototip només resultaria útil per a nosaltres. El nostre disseny i pla era traslladar el nostre quadre final a metall i, mitjançant un arduino, rebre la nostra posició des de l’acceleròmetre i el giroscopi integrats a la banda Myo. Aquesta informació s'enviaria als motors i replicaria el moviment de l'usuari. Sabíem que això faria que la nostra segona fase es dividís en tres aspectes principals:

  1. programació de Myo a motors, passant per Arduino
  2. disseny elèctric per traduir les nostres dades en moviment
  3. disseny mecànic per crear un marc de mida raonable que faciliti el nostre moviment

Cada membre del nostre equip es va sentir més còmode amb una part única del nostre procés de disseny, de manera que vam decidir dividir la nostra feina entre cada persona. També vam mantenir un bloc durant tot el procés de disseny per fer un seguiment del nostre pensament dia a dia, en lloc d’una aparença més global.

Pas 1: què teníem previst fer

Image
Image

El nostre objectiu era combinar aquests dos productes d’una manera que fins ara no havíem vist. Ens vam proposar fer un relleu en directe entre el nostre braçalet Myo i la nostra pròpia versió d’un disseny inspirat en AxiDraw de Evil Mad Scientist.

Pas 2: prototip de llista d'ingredients

2 taulers de fusta de 2 x 4 1 Cinturó o cadena de mida> = 65”4 Ungles de fusta 3 Engranatges amb dents que s’adapten al cinturó o a la cadena 4 3 x 8 plaques perforades vex 30 30” Espaciadors de goma 8 Rondelles de 1”de diàmetre 1 1” de diàmetre de fusta clavilla de 1 'de llarg 8 cargols Vex 1 "8 ½" cargols Vex 8 2 "cargols Vex 8 ¼" espaiadors de goma 48 femelles Vex 1 petita lligadura amb cremallera

Pas 3: [Prototip] Fusteria interior dels nostres braços i carruatges

[Prototip] Fusteria interior dels nostres braços i carruatges
[Prototip] Fusteria interior dels nostres braços i carruatges

Vam agafar dos 2x4 i els vam reduir a la mateixa longitud (33 ¼ )

Amb una serra de taula vam fer una osca al costat de la part estreta de les taules ¼”de profunditat i ⅛” d’amplada al centre

Tallar la clavilla en 4 trossos de 2 "i perforar un forat al mig de la clavilla d'uns ¼" de diàmetre amb una broca

Pas 4: [Prototip] Fer el nostre transport

[Prototip] Fer el nostre carro
[Prototip] Fer el nostre carro
[Prototip] Fer el nostre carro
[Prototip] Fer el nostre carro
[Prototip] Fer el nostre carro
[Prototip] Fer el nostre carro

L’ideal seria fer servir dues peces d’acer perforat de 7x7, però tot el que teníem a l’abast eren les tires de 2x7, de manera que les vam fixar juntes en una configuració “X”

Apileu 5 dels separadors de goma ⅜”i assegureu les cantonades de les plaques de vex entre elles

Assegureu lliurement els tacs de fusta tal i com es mostra a la figura 1 de manera que giren lliurement amb uns 2”d’espai entre ells. Utilitzeu la imatge per veure on s’haurien de col·locar els engranatges en aquest punt que hem utilitzat arandeles, però més tard hem trobat que els petits engranatges de plàstic funcionen millor.

Mitjançant ½ cargols vex, separadors de goma ¼ i volanderes de 1”de diàmetre assegureu les volanderes en una posició elevada tal com es mostra a la figura 1 (hem utilitzat engranatges de plàstic verds perquè no trobàvem les volanderes adequades) assegureu-vos que les volanderes siguin capaces per girar fàcilment i encaixar a les osques del tauler.

Pas 5: [prototip] Unir-ho tot

[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot
[Prototip] Unir-ho tot

Col·loqueu un tauler sobre una superfície i feu lliscar el carro cap al centre de manera que les volanderes subjectin el carro per sobre del tauler i, a banda i banda del tauler, clavin els engranatges cap avall perquè giren lliurement. Cloure un engranatge en un dels extrems del segon tauler assegurant-se que estigui centrat i llisqueu-lo sobre el carro perpendicular al primer tauler.

Ara, la corretja s’ha de passar pel sistema tal com es mostra, presteu molta atenció a la forma en què es troben els tacs a la part exterior de la corretja i a com no hi ha res al centre del xassís que pugui dificultar la corretja mentre es mou.

Ara cal fixar el cinturó al costat del tauler que no tingui engranatges. Hem fet servir una corbata extra per a claus i cremalleres per subjectar la nostra. Però el mètode utilitzat no importa mentre el cinturó estigui ancorat en aquest punt

Pas 6: [Prototip] acabat i en moviment

Image
Image

Això hauria de ser, estireu el cinturó en diferents combinacions i veureu els diferents efectes que té al braç.

Pas 7: traduir el nostre model al nostre disseny acabat

Traduir el nostre model al nostre acabat disseny
Traduir el nostre model al nostre acabat disseny
Traduir el nostre model al nostre acabat disseny
Traduir el nostre model al nostre acabat disseny

Un cop vam completar el nostre prototip, ens vam quedar extasiats. Cap de nosaltres no estava segur del funcionament del sistema abans del muntatge. Però, un cop reunides les nostres peces, vam descobrir ràpidament què ens agradava i com ho milloraríem en crear el disseny final. Les nostres principals queixes amb el sistema a resoldre van ser:

  1. Escala
    1. El nostre prototip era massiu i poc pesat, cosa que el feia propens a bolcar-se a la vora dels nostres braços
    2. El carro era molt més gran del necessari i tenia molt d’espai malgastat
    3. El nostre cinturó (una banda de rodament de tancs de vex) era molt més gran del necessari, cosa que introduïa un excés d’espai entre braços
  2. Fricció

    1. Els nostres passos de vex no van passar fàcilment per sobre dels rodets de fusta en tots els punts
    2. El plàstic sobre fusta feia que el carro no volgués moure’s en molts casos
  3. Motoritzant

    Necessitàvem que el sistema fos potent

Amb aquestes coses en ment, vam dibuixar els nostres plans per al disseny final. Volíem que el drawbot es controlés amb un Myo mitjançant un arduino i volíem fer el marc d'alumini i més petit.

Per fer-ho, vam agafar un percentatge del nostre prototip original i vam començar a treballar d’aquesta mida. En utilitzar xapa que es mecanitzaria per tenir canals prou amplis perquè hi passés un coixinet blindat, tindríem un disseny lleuger però robust que tindria una tolerància d’ús superior.

El nostre prototip també ens va permetre, en pocs minuts, determinar com la rotació del motor va afectar el cap del nostre drawbot. Això ens va fer comprendre que el nostre disseny de control seria més senzill del que havíem previst. Després d’una inspecció més detallada, hem descobert que el moviment del motor és additiu. Això significa que cada motor té un efecte desitjat independent sobre el nostre moviment, però quan els combinem, comencen a cancel·lar-se.

Per exemple, si es considera com un pla de coordenades, el motor situat a l'extrem x negatiu sempre tendirà a tirar del nostre calaix cap al segon i quart quadrants. Per contra, el motor que posa sobre l'extremitat x positiva sempre inclinarà el calaix cap al primer i tercer quadrant. Si combinem el moviment dels nostres motors, cancel·larà les parts de la direcció d’aquest conflicte i amplificarà les parts que concorden.

Pas 8: Codificació

Tot i que vaig treballar bastant extensament a C fa uns anys, no tenia experiència amb lua ni C ++, i això significava que havia de passar una quantitat considerable de temps buscant documentació. Sabia que la tasca general que intentaria realitzar era aconseguir la posició de l'usuari en intervals de temps i després passar-la als motors. Vaig decidir dividir la tasca per digerir millor les parts que necessitaria.

1. Obteniu dades de Myo (lua)

Sabia que necessitava trobar una manera de recollir la informació del Myo. Aquesta va ser la primera part del repte que volia plantejar. Per fer-ho, volia que l’usuari calibrés la mida del llenç abans de començar a dibuixar. Això em permetria tenir un límit per treballar. Llavors, podria normalitzar el programa entre diferents usuaris simplement prenent un percentatge del llenç màxim com a punts de dades per passar. Vaig decidir tenir un esdeveniment amb seqüència de comandaments que fes una comprovació getOrientation cada mig de segon, ja que permetria que les comprovacions no realitzessin mai un salt salvatge que hauríeu d’endevinar (per exemple, si l’usuari feia un gir enrere i endavant).

Això va suposar el primer obstacle que vaig assolir. Vaig descobrir una limitació molt gran de lua i que no em permetia esperar abans de continuar el guió. L'única manera de realitzar aquesta acció era pausar la CPU (que la posaria en pausa globalment, fins i tot mantenint el rellotge del sistema), o bé utilitzar comandes específiques del sistema operatiu. Al meu codi d'exemple, he deixat a la comprovació del sistema operatiu original que he realitzat (comentat). Això va passar després de fer una gran quantitat de recerca a la documentació de lua, i es va fer comprovant el format del camí del sistema. Va ser llavors quan vaig decidir que havia de mirar la documentació dels projectes publicats anteriorment. Em vaig adonar de seguida del temps que vaig perdre i em van conduir immediatament a la variable de plataforma. Amb ell, vaig poder implementar ordres d’espera específiques del sistema operatiu gairebé immediatament, a diferència dels dies que em van costar agafar la meva solució anterior.

Va ser en aquesta època de disseny que es va començar a treballar l’aspecte elèctric i vaig suspendre el treball sobre aquest aspecte del codi. La intenció és conèixer com els nostres motors s’interfaccionaven amb l’arduino.

2. Treballar al voltant d'Arduino (C ++)

A mesura que el treball amb la nostra taula de treball es feia cada vegada més complex, vaig saber que l’arduino era incapaç de fer múltiples fils. Aquesta va ser una gran clau en el meu disseny de codi original i, després de llegir més sobre les limitacions presentades amb el nostre controlador, vaig descobrir que hauria de programar com l’arduino canviava entre els dos. Aquest es va convertir en el focus dels meus esforços a mesura que s’acostava el nostre termini. Vaig haver de desfer grans parts del meu script original, ja que estaven dissenyades per escriure dades en un fitxer de manera sincronitzada amb el controlador del motor que llegia el fitxer. Això permetia una funció de cua per assegurar-se que, fins i tot si l’usuari s’avançava al nostre calaix, no arruïnaria el projecte.

Vaig decidir que s'hauria de desar la funció de cua, si no s'implementava de la mateixa manera que abans. Per fer-ho, he creat un vector de matrius. Això em va permetre no només mantenir l’esperit del meu disseny anterior relativament intacte, sinó que també significava que no havia de fer un seguiment del meu lloc al fitxer per llegir o escriure. En canvi, ara tot el que necessitava fer era simplement afegir un nou valor al meu vector si l’usuari es movia (les proves preliminars eren inferiors a l’1% de la diferència de mida del llenç tant en x com en l’última posició registrada, sense que es registressin dades). Aleshores podria agafar el valor més antic del meu vector i de cop, enviar-lo al control del motor, escriure'l al nostre fitxer i eliminar-lo del vector. Això va netejar moltes de les meves preocupacions per tenir en funcionament un flux de IO constant.

Pas 9: elèctric

Image
Image
Elèctric
Elèctric

Tot i que he passat una classe d’electrònica en el passat i he treballat força amb arduinos. Mai no m'he endinsat profundament en fer que l'arduino rebés informació d'una font externa (myo), només tinc experiència enviant informació a través de l'arduino. Tanmateix, em vaig dedicar a connectar els motors al nostre drawbot i a treballar en el codi perquè poguessin treballar amb el codi myo.

Materials que he utilitzat:

2 x motors pas a pas

1 x Taula de pa

1 x Arduino (Uno)

2 x Controlador IC L293DE

40 x cables de pont

2 x ventiladors

1. Connexió de motors pas a pas i el ventilador a la placa de pa

Seguint l’esquema del circuit, podem connectar un motor pas a pas al controlador de la placa. Aleshores, seguint el mateix esquema, apliqueu-ho al segon controlador i al motor, però, els cables del pont hauran d’estar connectats a un conjunt diferent de pins de l’arduino (ja que el primer motor ocupa l’espai d’altres 4).

Advertiment / Consell:

Els conductors són molt petits i els pins estan molt units. Seria aconsellable espaiar els dos conductors perquè els cables no es confonguessin.

El següent és connectar els ventiladors. Això és bastant senzill, els ventiladors que tenia disponibles eren ventiladors bàsics de processador d'ordinador, que tenen un aspecte positiu i fonamental. Connecteu els dos als seus respectius pins +/- de la taula de paràmetres i inclineu-los cap a cada controlador. (Vam comprovar que, com que els motors pas a pas reben ràfegues d'informació i ordres durant un llarg període de temps, els conductors tendeixen a escalfar-se i olorar-se. Si afegiu un ventilador per refredar-lo, s'ha solucionat aquest problema).

2. Codi Arduino

Aquesta és la part més fàcil!

Obriu l'IDE d'Arduino, aneu a la pestanya "Fitxer" i, a continuació, aneu a la pestanya "exemple", que es mostrarà encara més i us mostrarà una pestanya "pas a pas". A continuació, voleu obrir "Stepper_OneStepAtATime"

Això carregarà prèviament un exemple de codi gairebé plug-and-play al cablejat arduino / motor. Haurem de fer petits ajustaments perquè farem servir dos motors, que els mostraré a continuació. És possible que també hàgiu de fer ajustaments menors en funció dels pins que hàgiu decidit utilitzar, ja que l'IDE d'Arduino és per defecte els pins 8-11.

A continuació es mostra el codi que he fet servir per fer moure els dos motors "sincronitzats":

//#incloure

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicialitzar el port sèrie: Serial.begin (9600); }

bucle buit () {

myStepper1.step (1);

Serial.print ("passos:");

Serial.println (stepCount);

stepCount ++;

retard (0,5);

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

3. Possibles problemes

Els problemes que he tingut durant aquest procés no eren l'ús de l'exemple de codi adequat, l'ús d'un cable de pont incorrecte, l'ús del CI de controlador incorrecte.

Assegureu-vos que el controlador que utilitzeu sigui capaç de controlar un motor

Comproveu el número de sèrie i comproveu-ne les especificacions

Vaig tenir un problema de tenir un cable de pont mort, que va fer que els meus motors giressin de manera estranya

Vaig haver d’utilitzar un multímetre per comprovar tots els cables

I sempre reviseu el vostre codi per si hi ha errors petits, com ara que falti un extrem ";" comandament

Pas 10: mecànic

Mecànica
Mecànica
Mecànica
Mecànica
Mecànica
Mecànica
Mecànica
Mecànica

1. Material

Per al model de producció complet dels braços, es recomana que estiguin fets de material resistent però lleuger, hem considerat que l’alumini s’adaptava perfectament.

Hem utilitzat làmines d'alumini de calibre 032 tallades a 9,125 "x 17,5" i hem traçat el patró del dibuix que es mostra al pas anterior.

2. Fabricació

Utilitzant el hemmer (la màquina blava) vam afegir vores orientades en sentit contrari, de manera que quan la peça es trenca i es doblega, els dos vores es lligaran formant una sola peça completa.

Per als grans revolts hem utilitzat el tennismit, per la seva alta precisió.

Ara, per als revolts més petits, voldreu utilitzar una màquina amb un peu més petit, aquí és on entra una màquina com la rotativa. Per culpa del seu peu més petit, permet fer pauses més petites, per desgràcia., la matriu rotativa a la nostra disposició encara era massa gran per al nostre carril i es va deformar.

** Alternativament, si no teniu accés a l’equip o les eines adequades, es pot fer un substitut. **

En el nostre cas, vam tallar els braços dels rails de panells solars d’alumini amb un tallador de plasma i vam moldre els extrems llisos i els vam cargolar d’esquena a esquena per fer un sistema de rail de doble cara. L’ideal seria que voldríem soldar els rails, però, sense accedir a una estació de soldadura, vam fixar els rails i perforar-los i, a continuació, fixar-los. Però si es fa aquest recorregut, s'ha de tenir especial cura d'utilitzar una rosca de seguretat i una arandela per assegurar que la peça tingui el mínim de flexió possible.

3. El cinturó

Per a les corretges hem utilitzat algunes corretges d’impressores 3D antigues que hem pogut salvar.

Les corretges no eren prou llargues inicialment, de manera que utilitzant tubs termorretractables vam combinar dues peces per fer-ne una de llarga.

Els engranatges verds i les clavilles de fusta van ser substituïts per rodaments de discs amb volanderes molt amples utilitzades per evitar que la corretja relliscés de lloc.

4. Carro

I, finalment, el carro es va fer amb una làmina d'alumini 032 de 5 "x 5", amb forats premsats on hi hauria d'anar els cargols i les volandes corresponents. La distància variarà en funció de l’amplada del carril i de la quantitat d’espai lliure que tingueu a les rentadores.

Pas 11: Reflexions

Malauradament, tots els aspectes del nostre projecte van topar amb la barricada més important del temps i no vam poder completar el nostre disseny abans de la data prevista. Cada membre del nostre equip va acabar col·laborant en tots els altres aspectes del nostre disseny, almenys fins a cert punt, cosa que va provocar una certa corba d’aprenentatge. Això, unit a la voluntat de dissenyar un producte amb el mínim de recursos externs possible (ja que tots volíem crear les nostres parts respectives des de zero), condueix a una gran quantitat de rodes reinventades.

Tots els que van treballar al projecte van aprendre més sobre els altres aspectes del projecte. Una cosa és fer que el programari faci una acció específica i una altra és que el programari funcioni juntament amb el maquinari. Diria que és important que qualsevol persona que estigui treballant en l'aspecte de codificació d'aquest projecte sigui tan familiar com el nostre programador.

En general, no hem pogut aconseguir exactament el que volíem. Tot i això, sento que anàvem pel bon camí i tots vam descobrir i aprendre nous conceptes que podrem aplicar a futurs projectes.

Recomanat: