Съдържание:

[WIP] Създаване на Drawbot, контролиран от Myo Armand: 11 стъпки
[WIP] Създаване на Drawbot, контролиран от Myo Armand: 11 стъпки

Видео: [WIP] Създаване на Drawbot, контролиран от Myo Armand: 11 стъпки

Видео: [WIP] Създаване на Drawbot, контролиран от Myo Armand: 11 стъпки
Видео: Създаване и редактиране на Custom Slideshow в PowerPoint презентация и приложение(видео 74 от 100) 2024, Юли
Anonim
[WIP] Създаване на Drawbot, контролиран от Myo Armand
[WIP] Създаване на Drawbot, контролиран от Myo Armand

Здравейте всички!

Преди няколко месеца решихме да се опитаме да се справим с идеята за изграждане на отворен фреймворк, който да използва само група Myo, за да го контролира. Когато за първи път се заехме с проекта, знаехме, че той ще трябва да бъде разделен на няколко различни фази. Първата ни основна фаза беше да се опитаме да увием главите си около дизайн с отворена рамка за нашия бот за теглене. Това е нестандартна настройка и искахме да видим какви са предимствата на този дизайн.

Второ, знаехме, че изграждането на този прототип ще се окаже полезно само за нас. Нашият дизайн и план беше да преместим последната си рамка в метал и с помощта на arduino да получим позицията си от акселерометъра и жироскопа, вградени в лентата Myo. След това тази информация ще бъде изпратена до двигателите и ще повтори движението на потребителя. Знаехме, че това ще накара втората ни фаза да се раздели на три основни аспекта:

  1. програмиране от Myo до двигатели, през Arduino
  2. електрически дизайн за преобразуване на нашите данни в движение
  3. механичен дизайн за създаване на рамка с разумни размери, която ще улесни движението ни

Всеки член на нашия екип се чувстваше най -комфортно с уникална част от нашия процес на проектиране, затова решихме да прекъснем работата си между всеки човек. Също така поддържахме блог по време на целия ни процес на проектиране, за да проследяваме ежедневното си мислене, за разлика от по -глобалния облик.

Стъпка 1: Какво планирахме да направим

Image
Image

Нашата цел беше да комбинираме тези два продукта по начин, който досега не сме виждали използван. Ние се заехме да направим реле на живо между нашата Myo лента и нашата собствена версия на дизайн, вдъхновен от AxiDraw на Evil Mad Scientist.

Стъпка 2: Списък на прототипните съставки

2 2 x 4 дървени дъски 1 Измерване на колан или верига> = 65”4 Дървени пирони 3 Зъбни колела със зъби, които отговарят на колана или веригата 4 3 x 8 vex перфорирани плочи 30 ⅜” Гумени дистанционери 8 1”диаметър шайби 1 1” диаметър дървен дюбел 1 'дълъг 8 Vex винтове 1”8 ½” Vex винтове 8 2”Vex винтове 8 ¼” Гумени дистанционни елементи 48 Vex гайки 1 Малка вратовръзка с цип

Стъпка 3: [Прототип] Обработка на дърво Интериорът на нашите оръжия и карета

[Прототип] Дървообработване Нашите оръжия и карета Интериор
[Прототип] Дървообработване Нашите оръжия и карета Интериор

Взехме две 2x4 и ги изрязахме на еднакви дължини (33 ¼”)

С помощта на настолен трион направихме прорез отстрани на тясната част от дъските ¼ „дълбоко и ⅛” широко в средата

Нарежете дюбела на 4 2”парчета и пробийте дупка в средата на дюбела с диаметър около ¼” с помощта на свредло

Стъпка 4: [Прототип] Осъществяване на нашия превоз

[Прототип] Making Our Carriage
[Прототип] Making Our Carriage
[Прототип] Making Our Carriage
[Прототип] Making Our Carriage
[Прототип] Making Our Carriage
[Прототип] Making Our Carriage

В идеалния случай бихме използвали две 7x7 парчета перфорирана стомана, но всичко, което ни беше на разположение, бяха 2х7 ленти, така че ги закрепихме заедно в конфигурация "X"

Подредете 5 от rubber”гумените дистанционни елементи и закрепете ъглите на Vex плочите един към друг

Разхлабете добре дървените дюбели, както е показано на фигура 1, така че те да се въртят свободно с около 2 инча пространство между тях. Използвайте картината, за да видите къде трябва да бъдат разположени зъбните колела в този момент, използвахме шайби, но по -късно установихме, че малките пластмасови зъбни колела работят по -добре.

С помощта на ½ „винтове vex, ¼” гумени дистанционни елементи и шайби с диаметър 1”фиксирайте шайбите в повдигнато положение, както е показано на фигура 1 (използвахме зелени пластмасови зъбни колела, защото не можахме да намерим правилните шайби), уверете се, че шайбите са в състояние да се върти лесно и да се побере в прорезите на дъската.

Стъпка 5: [Прототип] Всичко заедно

[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно
[Прототип] Сглобявайки всичко заедно

Поставете дъска върху повърхност и плъзнете каретата в средата, така че шайбите да държат каретата над дъската и от двете страни на дъската забиват зъбните колела надолу, така че да се въртят свободно. Заковайте зъбно колело към единия край на втората дъска, като се уверите, че е центрирано и го плъзнете върху каретата перпендикулярно на първата дъска.

Сега коланът трябва да се прекара през системата, както е показано, внимателно обърнете внимание на това как дюбелите са от външната страна на колана и как няма нищо в центъра на шасито, което да възпрепятства колана, докато се движи.

Сега коланът трябва да бъде закрепен от страната на дъската, която няма предавка. Използвахме допълнителен гвоздей и вратовръзка с цип, за да закопчаваме нашите. Но използваният метод няма значение, стига колана да е закотвен на това място

Стъпка 6: [Прототип] Готово и преместване

Image
Image

Това трябва да е всичко, дръпнете колана в различни комбинации и вижте различните ефекти, които оказва върху ръката!

Стъпка 7: Превръщане на нашия модел в нашия завършен дизайн

Превръщане на нашия модел в нашия завършен дизайн
Превръщане на нашия модел в нашия завършен дизайн
Превръщане на нашия модел в нашия завършен дизайн
Превръщане на нашия модел в нашия завършен дизайн

След като завършихме нашия прототип, бяхме в екстаз. Никой от нас не беше сигурен как работи системата преди сглобяването. Но след като частите ни се събраха, ние бързо открихме какво ни харесва и как бихме го подобрили при създаването на окончателния дизайн. Основните ни оплаквания към системата за разрешаване бяха:

  1. Мащаб

    1. Нашият прототип беше масивен и тромав, което го направи склонен да се преобърне на ръба на ръцете ни
    2. Каретата беше много по -голяма от необходимото и имаше много загубено място
    3. Коланът ни (протектор на резервоара за раздразнение) беше много по -голям от необходимото, което въведе излишно пространство между раменете
  2. Триене

    1. Нашите протектори на Vex не преминаваха лесно върху дървените ролки за дюбели във всички точки
    2. Пластмасата върху дърво караше каретата да не се движи в много случаи
  3. Моторизиране

    Трябваше да направим системата мощна

Имайки предвид тези неща, ние съставихме плановете си за окончателния дизайн. Искахме да се управлява тегленето с Myo чрез arduino и искахме да направим рамката алуминиева и по -малка.

За да направим това, взехме процент от първоначалния ни прототип и се заехме да работим от този размер. Използвайки ламарина, която ще бъде обработена, за да има достатъчно широки канали, за да може да преминава екраниран лагер, ще имаме лек, но здрав дизайн, който ще има по -висок толеранс при използване.

Нашият прототип също ни позволи само за няколко минути да определим как въртенето на двигателя влияе върху главата на нашия теглич. Това ни накара да разберем, че нашата схема на управление ще бъде по -проста, отколкото очаквахме. При по -внимателно проучване установихме, че движението на двигателя е адитивно! Това означава, че всеки двигател има независим желан ефект върху движението ни, но когато ги комбинираме заедно, те започват да се анулират.

Например, ако се разглежда като координатна равнина, моторът, разположен в отрицателния x край, винаги ще има тенденция да дърпа чекмеджето ни във втория и четвъртия квадрант. Обратно, моторът, разположен върху положителния x край, винаги ще насочва чекмеджето към първия и третия квадрант. Ако комбинираме движението на нашите двигатели, това ще отмени частите за насочване на този конфликт и ще засили частите, които са съгласни.

Стъпка 8: Кодиране

Докато преди няколко години работех доста широко в C, нямах опит с lua или C ++ и това означаваше, че трябва да прекарам значително време в разглеждане на документацията. Знаех, че общата задача, която ще се опитвам да изпълня, е да получа позицията на потребителя на интервали от време и след това да я предам на двигателите. Реших да прекъсна задачата за себе си, за да усвоя по -добре частите, които ще ми трябват.

1. Вземете данни от Myo (lua)

Знаех, че трябва да измисля начин за събиране на информацията от Myo. Това беше първата част от предизвикателството, към което исках да се приближа. За да направя това, исках потребителят да калибрира размера на платното си, преди да започне да рисува. Това би ми позволило да имам граница, от която да работя. След това бих могъл да нормализирам програмата между различни потребители, като просто взема процент от максималното платно, докато моите данни прехвърлят. Реших да има скриптирано събитие, което да прави проверка на getOrientation на всеки половин секунда, тъй като ще позволи на проверките никога да не извършват див скок, от който ще трябва да отгатнете (например, ако потребителят се люлееше диво назад и напред).

Това направи първата преграда, която ударих. Открих много голямо ограничение на lua и че няма да ми позволи да чакам преди да продължа сценария. Единственият начин да извършите това действие беше или да поставите на пауза процесора (което би го поставило на глобално ниво, дори да държи системния часовник), или да използвате специфични за ОС команди. В моя примерен код оставих в оригиналната проверка на ОС, която извърших (коментирах). Това беше след като направих голямо количество изследвания в документацията на lua и беше направено чрез проверка на форматирането на системния път. Тогава реших, че трябва да разгледам документацията за проекти, публикувани преди това. Веднага разбрах колко време съм загубил и веднага ме доведоха до променливата на платформата. С него успях да приложа специфични команди за изчакване на операционната система почти веднага, за разлика от дните, които ми отнеха да събера предишното си решение.

По това време на проектирането започна работата по електрическия аспект и спрях работата по този аспект на кода. Намерението е да научим как нашите двигатели се свързват с arduino.

2. Работа около Arduino (C ++)

Тъй като работата с нашата платка ставаше все по -сложна, научих, че arduino не е способен на многонишково. Това беше голям ключ в оригиналния ми дизайн на кода и след като прочетох повече за ограниченията, представени с нашия контролер, разбрах, че ще трябва да програмирам как arduino ще превключва между двете. Това навлезе в центъра на усилията ми с наближаването на крайния срок. Трябваше да премахна големи части от оригиналния си скрипт, тъй като те бяха проектирани да записват данни във файл синхронно с контролера на двигателя, който чете файла. Това трябваше да позволи функция на опашката, за да се гарантира, че дори потребителят да е пред чекмеджето ни, това няма да съсипе проекта.

Реших, че функцията на опашката трябва да бъде запазена, ако не се реализира по същия начин като преди. За да направя това, създадох вектор от масиви. Това ми позволи не само да запазя духа на предишния си дизайн сравнително непокътнат, но също така означаваше, че не трябваше да следя мястото си във файла нито за четене, нито за писане. Вместо това сега всичко, което трябваше да направя, беше просто да добавя нова стойност във вектора си, ако потребителят се движи (предварителното тестване беше по -малко от 1% от разликата в размера на платното както в x, така и в y от последната записана позиция, което не доведе до запис на данни). След това бих могъл да взема най -старата стойност във моя вектор и с един замах да я изпратя до управлението на двигателя, да я запиша в нашия файл и след това да я премахна от моя вектор. Това изчисти много от притесненията ми за постоянен IO поток.

Стъпка 9: Електрически

Image
Image
Електрически
Електрически

Докато съм ходил на курс по електроника в миналото и съм работил доста с arduinos. Никога не съм се впускал дълбоко в това да накарам arduino да получава информация от външен източник (myo), имам само опит с извеждането на информация чрез arduino. Обаче взех да окабелявам двигателите на нашия чертог и работя върху код, за да могат те да работят с кода на myo.

Материали, които използвах:

2 x стъпкови двигатели

1 x Платка

1 x Arduino (Uno)

2 x драйвер IC L293DE

40 x джъмперни проводници

2 x Вентилатори

1. Свързване на стъпкови двигатели и вентилатор към платката

Следвайки електрическата схема, можем да свържем един стъпков двигател към драйвера на макета. След това, следвайки същата диаграма, приложете това към втория драйвер и двигател, но кабелите на джъмпера ще трябва да бъдат включени в различен набор от щифтове в arduino (тъй като първият двигател заема мястото на 4 други).

Предупреждение/Съвет:

Драйверите са много малки и щифтовете са много близо един до друг. Би било разумно да отделите двата драйвера, така че кабелите да не се объркат.

Следващото е да свържете проводниците на вентилаторите. Това е сравнително просто, вентилаторите, които имах на разположение, бяха основни вентилатори на компютърни процесори, които имат положителен резултат и основание. Включете тези две в съответните им +/- щифтове на макета и наклонете всеки един към всеки водач. (Открихме, че тъй като стъпковите двигатели получават изблици от информация и команди за дълъг период от време, шофьорите са склонни да прегряват и миришат. Добавянето на вентилатор за охлаждане разреши този проблем).

2. Код на Arduino

Това е лесната част!

Отворете IDE на Arduino, отидете в раздела „Файл“, след това отворете раздела „пример“, който ще падне още по -надолу и ще ви покаже раздел „стъпков“След това искате да отворите „Stepper_OneStepAtATime“

Това ще зареди предварително код, който е почти plug-and-play към кабелите arduino/мотор. Ще трябва да направим малки корекции, защото ще работим с два двигателя, които ще покажа по -долу. Може също да се наложи да направите малки корекции в зависимост от това кои щифтове сте решили да използвате, тъй като IDE на Arduino по подразбиране е пинове 8-11.

Кодът, който използвах, за да накарам двата двигателя да се движат в „синхронизация“е по -долу:

//#включва

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// инициализира серийния порт: Serial.begin (9600); }

void loop () {

myStepper1.step (1);

Serial.print ("стъпки:");

Serial.println (stepCount);

stepCount ++;

забавяне (0,5);

myStepper2.step (1); забавяне (0,5); }

3. Възможни проблеми

Проблемите, които срещнах по време на този процес, бяха, че не използвах правилния пример за код, използвах лош джъмпер, използвах грешната интегрална схема на драйвера.

Уверете се, че вашият шофьор, който използвате, може да управлява мотор

Проверете серийния номер и неговите характеристики

Сблъсках се с проблем, че има мъртва жила на джъмпера, което предизвика моторите ми да се въртят странно

Трябваше да използвам мултицет, за да проверя всеки проводник

И винаги проверявайте двукратно кода си за малки грешки като пропускане на край „;“команда

Стъпка 10: Механична

Механични
Механични
Механични
Механични
Механични
Механични
Механични
Механични

1. Материал

За пълния производствен модел на оръжията се препоръчва те да са изработени от здрав, но лек материал. Смятахме, че алуминият е перфектен.

Използвахме алуминиеви листове 032 с размери, нарязани на 9,125 "x 17,5" и проследихме шаблона от чертежа, показан в предишната стъпка.

2. Изработка

С помощта на подгъва (синята машина) добавихме подгъви, които са обърнати в противоположни посоки, така че когато парчето се счупи и сгъне, двата подгъва биха се блокирали, образувайки едно цялостно парче.

За големите завои използвахме тенисмит, поради неговата висока точност.

Сега за по-малките завои ще искате да използвате машина с по-малък крак, тук идва машина като рото-матрицата. Поради по-малкия си крак, тя позволява да се правят по-малки паузи, за съжаление, рото-матрицата, с която разполагахме, все още беше твърде голяма за нашата релса и беше деформирана.

** Като алтернатива, ако нямате достъп до подходящото оборудване или инструменти, може да се направи заместител. **

В нашия случай отрязахме ръцете си от алуминиеви релси за слънчеви панели, използвайки плазмен нож, и шлифовахме гладките краища, след което ги закрепихме с гръб, за да направим двустранна релсова система. В идеалния случай бихме искали да заваряваме релсите заедно, но без достъп до заваръчна станция ние вместо това стегнахме релсите и пробихме, след което ги закрепихме заедно. Но ако се поеме по този път, тогава трябва да се обърне специално внимание на използването на контргайка и шайба, за да се гарантира, че парчето има възможно най -малко огъване.

3. Коланът

За коланите използвахме някои стари колани за 3D принтери, които успяхме да спасим.

Първоначално коланите не бяха достатъчно дълги, така че с помощта на термосвиваеми тръби комбинирахме две части, за да направим една, която да бъде достатъчно дълга.

Зелените зъбни колела и дървените дюбели бяха заменени с дискови лагери с изключително широки шайби, използвани за предпазване на колана от изплуване.

4. Превоз

И накрая каретата беше направена от 5 "x 5" лист от алуминий 032, с пробити отвори, притиснати там, където са предназначени съответните винтове и шайби. Разстоянието ще варира в зависимост от това колко широка е релсата ви и колко хлабина имате върху шайбите си.

Стъпка 11: Размисли

За съжаление, всяка страна на нашия проект се сблъска с голямата барикада от време и не успяхме да завършим дизайна си до целевата дата. Всеки член на нашия екип в крайна сметка си сътрудничи във всеки друг аспект на нашия дизайн поне до известна степен, което доведе до някои криви на обучение. Това, съчетано с желанието да се проектира продукт с възможно най -малко външни ресурси (тъй като всички искахме да създадем съответните си части от нулата), доведе до голямо количество преоткрити колела.

Всички, които са работили по проекта, са научили повече за другите аспекти на проекта. Да накараш софтуера да извърши конкретно действие е едно, а след това да накараш софтуера да работи заедно с хардуера е друго. Бих казал, че е важно всеки, който работи по кодиращия аспект на този проект, да бъде толкова запознат, колкото и нашият кодер на проекта.

Като цяло не успяхме да постигнем точно това, което искахме. Чувствам обаче, че бяхме на прав път и всички открихме и научихме нови концепции, които ще можем да приложим към бъдещи проекти.

Препоръчано: