Съдържание:

Направи си сам лазерен кормилен модул за Arduino: 14 стъпки (със снимки)
Направи си сам лазерен кормилен модул за Arduino: 14 стъпки (със снимки)

Видео: Направи си сам лазерен кормилен модул за Arduino: 14 стъпки (със снимки)

Видео: Направи си сам лазерен кормилен модул за Arduino: 14 стъпки (със снимки)
Видео: Leap Motion SDK 2024, Юли
Anonim
Image
Image

В тази инструкция ще демонстрирам изграждането на двуосен модул за едноогледален лазерен лъч, използващ 3D печат, и евтини компоненти от eBay.

Този проект има сходства с Arduino Laser Show с пълен XY контрол и Arduino Laser Show с Real Galvos, но вярвам, че е първият, който използва 3D отпечатан дизайн с евтини соленоиди. Поставям всички дизайнерски файлове под GPLv3, за да може дизайнът да бъде подобрен и подобрен.

Въпреки че в момента само съм сглобил модула и написал много основен тест код, надявам се един ден да мога да го изведа на следващото ниво, като включа кода на векторната графика от по -ранните ми Instructable, супер бързи аналогови напрежения от Arduino.

Стъпка 1: Съберете не-3D отпечатаните части

Лазерният възел се състои от следните части:

  • 4 микро соленоида
  • Едно огледало 1/2 инча
  • Четири винта M3

Конкретните соленоиди, които използвах, бяха закупени в eBay за $ 1.45 всеки. Кръглото огледало беше намерено в занаятчийската пътека в HobbyLobby - опаковка от 25 ми струваше по -малко от 3 долара. Можете също да намерите огледала в eBay.

Ще ви е необходим и евтин лазерен показалец, отново от eBay. Виолетовият лазер заедно със светещ в тъмното лист винил е отлична комбинация за този проект!

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

Ще ви е необходим Arduino (използвах Arduino Nano) и начин да управлявате соленоидите. Както VajkF е посочил в коментарите, можете да използвате предварително направен H-мост, като тези, базирани на L298 или L9110. Те са лесно достъпни в eBay за няколко долара и могат да се използват и за управление на двигатели и роботи.

Тъй като нямах H-мост, изградих свой собствен драйвер от дискретни компоненти:

  • Четири NPN биполярни транзистора (използвах MPS3704)
  • Четири резистора (използвах резистор 1.2k ohm)
  • Четири диода (използвах 1N4004)
  • 9V батерия и конектор за батерията

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

Стъпка 2: 3D отпечатване на огледалния модул за управление

3D печат на огледалния модул за управление
3D печат на огледалния модул за управление
3D печат на огледалния модул за управление
3D печат на огледалния модул за управление

Лазерният модул за управление се състои от две 3D отпечатани части: основа за монтиране на четири соленоида и шарнирна платформа за огледалото.

Прикачих двата STL файла за вас към 3D печат, както и FreeCAD файлове в случай, че трябва да промените дизайна. Цялото съдържание е под GPLv3, така че вие сте свободни да правите и споделяте вашите подобрения!

Стъпка 3: Сглобете лазерния модул

Сглобете лазерния модул
Сглобете лазерния модул
Сглобете лазерния модул
Сглобете лазерния модул
Сглобете лазерния модул
Сглобете лазерния модул
  • Използвайте горещо лепило, за да прикрепите четирите соленоида към долната част.
  • Използвайте горещо лепило, за да прикрепите огледалото в центъра на горната част.
  • Поставете металните бутала в соленоидите и след това поставете горната част на стълбовете (но не я завинтвайте). Завъртете леко горната част и с помощта на малка отвертка повдигнете всяко бутало на място. Устната на диска трябва да се плъзне в жлеба на буталото. Бъдете внимателни, тъй като 3D отпечатаните панти са много крехки. С търпение и евентуално няколко неуспешни опита, трябва да можете да позиционирате и четирите бутала, без да ги усуквате или да оказвате натиск върху пантите.
  • След като всички бутала са позиционирани, поставете частично винтовете М3, но преди да ги затегнете, натиснете леко всяко бутало надолу и се уверете, че огледалото се накланя свободно. Ако не се движи свободно или се хваща, може да се наложи да премахнете горната плоча, да извадите един или повече соленоиди и да я прикрепите отново под лек ъгъл навън (поставянето на дистанционери между нея и централната стойка може да помогне за това).

Стъпка 4: Отпечатайте яката на лазерната показалка

Отпечатайте яката на лазерната показалка
Отпечатайте яката на лазерната показалка
Отпечатайте яката на лазерната показалка
Отпечатайте яката на лазерната показалка

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

Стъпка 5: Сглобете шофьорската верига

Сглобете шофьорската верига
Сглобете шофьорската верига

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

Всяка верига ще се свърже с щифт Arduino, два за управление на левия и десния соленоид и два за соленоидите нагоре и надолу. Те ще трябва да бъдат свързани към PWM съвместими щифтове, както следва:

  • ПИН 9: Соленоид нагоре
  • Pin 3: Down Solenoid
  • Пин 11: Ляв соленоид
  • Пин 10: Десен соленоид

Единична 9V батерия може да се използва за задвижване на четирите вериги на соленоидните драйвери или можете да използвате настолно захранване. Arduino ще се захранва от USB захранване и не трябва да бъде свързан към положителната страна на 9V батерията. Отрицателната страна на батерията обаче се използва като заземяване и трябва да бъде свързана към щифта GND на Arduino, както и към излъчващите щифтове на транзисторите.

Стъпка 6: Качете примерния код

Качете примерния код
Качете примерния код

Примерният код е актуализиран със следните функции:

  • Регулира честотата на ШИМ така, че механизмът да е почти безшумен при ниски скорости. Бръмченето в Motion Test 1 изчезна напълно!
  • Добавя се като уравнения на напрежението въз основа на хартията на Schimpf, за да се "линеаризира" нелинейната реакция на соленоидите.

Включих и реализация на Lorenz Attractor въз основа на кода от този блог.

Верността на резултатите оставя доста да се желае, но все още работя върху това!:)

Следващите стъпки илюстрират някои от техниките, използвани в кода.

Стъпка 7: Намаляване на звука

В моя Motion Test 1 можете да чуете силно бръмчене, особено по време на движение нагоре и надолу. Оказва се, че това е причинено от честотата на рязане на PWM по подразбиране на Arduino, която е в звуковия диапазон. Бързото включване и изключване на напрежението на бобината би ги накарало да вибрират на тази честота, превръщайки ги в малки малки високоговорители.

За да разреша този проблем, увеличих честотата на ШИМ в кода:

#define PWM_FREQ_31372Hz 0x01 // Задава честотата на PWM на 31372.55 Hz #дефинира PWM_FREQ_3921Hz 0x02 // Настройва честотата на PWM на 3921.16 Hz #дефинира PWM_FREQ_980Hz 0x03 // настройва честотата на PWM = 9CB TCTRC & 0b11111000) | честота; // Задайте таймер1 (щифтове 9 и 10) честота TCCR2B = (TCCR2B & 0b11111000) | честота; // Задаване на таймер 2 (щифтове 3 и 11) честота}

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

Стъпка 8: Настройване на напреженията за намаляване на изкривяванията

Настройка на напреженията за намаляване на изкривяванията
Настройка на напреженията за намаляване на изкривяванията

Първоначалните ми тестове за движение показаха, че това е значително изкривяване в реакцията на соленоидите. В Motion Test 3 (лява фигура), това, което трябваше да бъде кръгла спирала, вместо това се превърна в правоъгълна мрежа с назъбени ръбове.

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

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

Стъпка 9: Усъвършенстване на софтуера, с математика

Усъвършенстване на софтуера, с математика
Усъвършенстване на софтуера, с математика
Усъвършенстване на софтуера, с математика
Усъвършенстване на софтуера, с математика

Тайната за настройка на системата се оказа отличен доклад, наречен „Подробно обяснение на соленоидната сила“от Пол Х. Шимпф от университета в Източен Вашингтон (връзка). По -специално, уравнение 17 ми даде соленоидната сила по отношение на различни термини.

Следните термини бяха лесни за измерване:

  • R - Съпротивлението на моя соленоид
  • l - Дължината на соленоида
  • x - Преместването на буталото в соленоида
  • V - Напрежението в соленоида

Знаех също, че силата, излъчвана от соленоида, трябва да балансира силата от 3D отпечатаните пружини върху двуосното огледало. Силата на пружината се управлява от закона на Хук, който е посочен, както следва:

F = -kx

Въпреки че не знаех стойността на k, поне знаех, че силата, която измъкнах от уравнение 17 от хартията на Schimpf, трябва да бъде равна на силата от закона на Хук.

Стойността на алфа (α) беше сложна. Въпреки че уравнения 13 и 14 показаха как да се изчислят тези стойности от областта на соленоида (A), броя на завоите (N) и стойностите на магнитната пропускливост (μ), не исках да разкъсвам соленоид, за да преброя брой завъртания, нито знаех материала, от който е направена сърцевината на соленоида ми.

Стъпка 10: Евтиният тестер за компоненти спасява деня

Евтин тестер за компоненти спасява деня!
Евтин тестер за компоненти спасява деня!
Евтин тестер за компоненти спасява деня!
Евтин тестер за компоненти спасява деня!
Евтин тестер за компоненти спасява деня!
Евтин тестер за компоненти спасява деня!

Оказа се обаче, че уравнение 15 и 16 ми даде това, от което имах нужда. Имах евтин тестер за компоненти M328, който бях закупил от eBay за 10 долара. Той беше в състояние да го използва за измерване на индуктивността на моя соленоид и открих, че чрез натискане на котвата на различни дълбочини ми дава различни стойности на индукция.

Измерването му с напълно вкарана арматура ми даде стойността на L (0).

Дължината на соленоида ми беше 14 мм, затова измерих индуктивността с котвата в пет позиции и това ми даде различни стойности за L (x):

  • L (0.0) = 19.8 mH
  • L (3.5) = 17.7 mH
  • L (7.0) = 11.1 mH
  • L (10.5) = 9.3 mH
  • L (14) = 9,1 mH

След това използвах електронна таблица, за да начертая стойностите си спрямо стойността на уравнение 15 и 16, за конкретен избор от μr и след това промених избора си, докато намерих добро съвпадение. Това се случи, когато μr беше 2,9, както е показано на графиката.

Стъпка 11: Намерете пружинната константа К, решете проблема

Image
Image
Анализ на текущите проблеми и възможните решения
Анализ на текущите проблеми и възможните решения

Единственото неизвестно е K, пружинната константа. Измерих това, като приложих 9V към един от соленоидите в моя двуосен монтаж и измерих разстоянието, на което огледалото беше изтеглено надолу. С тези стойности успях да реша уравненията за К, които установих, че е около 10.41.

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

Графиката показва напрежението, необходимо за преместване на соленоида в произволно положение x.

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

Тази връзка определено е нелинейна, но с уравненията от хартията на Schimpf мога да напиша моя код на Arduino, за да изведа правилните напрежения, така че отклонението на лъча да е линейно:

float positionToVoltage (float x) {

// Възстановяване на силата, упражнявана от пантите (закон на Хук) при желаното x. const float spring_F = -spring_K * (x - spring_X0); // Напрежение такова, че дърпащата сила на соленоида съвпада с // възстановяващата сила на пантите връщане sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len))); }

Това води до много по -кръгова спирала, отколкото в моя оригинален тест за движение. Мисията изпълнена!

Стъпка 12: Въпроси и отговори относно веригата на драйвера, използваща дискретни компоненти

Защо не мога да свържа соленоида директно към Arduino?

Въпросът е колко ток може да осигури Arduino, без да понесе щети. Това е около 40mA на пин. Знаейки, че Arduino работи при 5V, можем да използваме закона на Ом, за да изчислим необходимото минимално съпротивление на товара (в този случай соленоида). Разделянето на 5 волта на 0,040 ампера дава 125 ома. Ако товарът има по -голямо съпротивление, можем да го закачим директно към Arduino, в противен случай не можем. Малък соленоид обикновено има съпротивление от 50 ома, така че не можем да го управляваме директно от Arduino. Ако го направим, той ще издърпа 100mA, което очевидно е твърде много.

Защо използвате 9V за соленоида, но 5V за Arduino?

Arduino работи на 5V, но това е малко твърде малко за соленоид. Използването на транзистор ни позволява да изберем напрежение за соленоида, което е независимо от 5V, използвани за Arduino.

Как да разбера дали транзисторът е подходящ за този проект?

Точно като Arduino, основното изискване е токът, протичащ през соленоида, да не надвишава максималните стойности за транзистора (по -специално тока на колектора). Можем лесно да изчислим най-лошия сценарий, като измерим съпротивлението на соленоида и след това разделим захранващото напрежение на това. В случай на 9V захранващ ток за соленоидите и соленоидно съпротивление от 50 ома, най-лошият сценарий ни поставя на 180mA. MPS3704 например е номинален за максимален ток на колектора от 600 mA, което ни дава запас от около 3.

Как да определя минималната стойност на съпротивлението, което да се постави между изхода на Arduino и основата на транзистора?

Изходът на Arduino ще свърже основния крак на биполярните транзистори чрез резистор за ограничаване на тока. Тъй като Arduino работи при 5V, можем отново да използваме закона на Ом за изчисляване на съпротивлението, необходимо за ограничаване на тока под 40mA. Тоест, разделете 5 волта на 0,04 ампера, за да получите стойност най -малко 125 ома. По -високите стойности на резистора ще намалят тока, като по този начин ще ни осигурят още по -голяма граница на безопасност.

Има ли максимална стойност за това съпротивление, която не трябва да надвишавам?

Оказва се, да. Транзисторът има това, което е известно като текущо усилване. Например, ако усилването е 100, това означава, че ако поставим 1mA в базата, тогава до 100mA ще тече през товара, който транзисторът контролира. Ако поставим 1,8 mA в основата, тогава до 180mA ще тече през товара. Тъй като по -рано сме изчислили, че при 9V, 180mA тече през соленоида, тогава базов ток от 1.8mA е "сладкото място", а по -малко и нашият соленоид няма да се включи напълно.

Знаем, че Arduino излъчва 5V и искаме да тече 1.8mA ток, затова използваме закона на Ом (R = V/I) за изчисляване на съпротивлението (R = V/I). 5V, разделено на 1.8mA, дава съпротивление от 2777 ома. Така че предвид предположенията, които направихме, очакваме съпротивлението да бъде между 125 и 2777 - изборът на нещо като 1000 ома ни дава доста добър запас на безопасност така или иначе.

Стъпка 13: Анализ на текущите проблеми и възможните решения

Анализ на текущите проблеми и възможните решения
Анализ на текущите проблеми и възможните решения

Настоящият прототип показва потенциал, но остават няколко проблема:

  1. Движението по оста X и Y не изглежда перпендикулярно.
  2. Има скок, когато огледалото промени посоката.
  3. Разделителната способност е доста ниска и има видими модели на стъпала.
  4. При по -високи скорости на движение, пътят на лазера се изкривява от вибрации и звънене.

Проблем 1) може да бъде причинен от дизайна на 3D отпечатаните гъвкави панти, които предават движение по една ос към перпендикулярната ос.

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

Проблем 3) възниква, защото PWM по подразбиране на Arduino има само 255 нива и доста от тях се губят поради формата на кривата на напрежението. Това може да бъде подобрено значително чрез използването на timer1, който е 16-битов и би могъл да има 65536 уникални стойности.

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

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

Намаляването на масата е основното решение за проблем 4), но всички останали проблеми могат да бъдат насочени директно в софтуера чрез внедряване на профил за управление на движението в софтуер за ускоряване и забавяне на огледалото по контролиран начин. Това вече е широко направено във фърмуера на 3D принтера и подобни методи може да работят и тук. Ето някои ресурси, свързани с управлението на движението, което се отнася за 3D принтерите:

  • "Математика на профилите за управление на движението", Чък Левин (връзка)
  • „Обяснено движение с контролирани движения с шут“, (връзка)

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

Стъпка 14: Бъдеща работа и възможни приложения

Въпреки че разработването на решения на тези проблеми ще отнеме значителна работа, надявам се, че този модул за управление с лъч с отворен код може да се превърне в достъпна алтернатива на проекти, базирани на галванометър, в такива приложения като:

  • Евтино лазерно шоу за диджеи и виджеи.
  • Електромеханичен векторен дисплей за ретро аркадна игра като Vectrex.
  • СЛА 3D принтер от типа на смола, който в духа на движението RepRap може да отпечата свой собствен модул за лазерно управление.
  • Цифрово панорамиране или оптична стабилизация на изображението за фотоапарати.
Arduino конкурс 2017
Arduino конкурс 2017
Arduino конкурс 2017
Arduino конкурс 2017

Втора награда в конкурса Arduino 2017

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