Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Computer Skills
  2. Electronics

  Управління рухом з Arduino: Автолюбитель камери слайдер

by
Difficulty:IntermediateLength:LongLanguages:

Ukrainian (українська мова) translation by Tanya Ira (you can also view the original English article)

 Наявність дешевих крокові двигуни і драйвери в ці дні дає широкі можливості для експериментів за межами більш дорогі і складні 2D і 3D різання і друку проектів.

 Для цього проекту, я візьму OpenBuilds повзунок камери (див. відео побудувати будинок в основну відео слайдер з відкритим вихідним кодом частини CNC) і motorise його. Я також буду створювати автономні системи управління двигуном.

 Цей підручник охоплює воєдино обладнання, але в першу чергу побудуємо найпростіший 16x2 РК-інтерфейс з використанням бібліотеки LiquidCrystal і просте меню системи для того, щоб відобразити, а потім роботу водія a4988 крокового і як ним керувати з Arduino.

Цей проект важко на петлі і кроки, і хоча в цілому проект більше середнього, я намагався пояснити це таким чином, що новачки можуть бути запущений і працює досить швидко.

 Цей проект важко на петлі і кроки, і хоча в цілому проект більше середнього, я намагався пояснити це таким чином, що новачки можуть бути запущений і працює досить швидко.Список Обладнання

 Компоненти

Частини

  •  ГТ2 5 мм шириною, 2 мм-крок зубчастого ременя: подвійний слайдер довжина плюс ноги для безпеки (11 футів для мене)
  • Гладкий натяжний шків комплект
  •  Ремінь-натяг пружини кручення, якщо у вас є труднощі в підтримці натягу ременя більш довгостроковій перспективі
  •  2х пояс обжимний хомут (можна замінити невеликою zipties)
  •  ГТ2 7 мм завширшки, 20-зуб алюміній шків однаковий Розмір свердловини вал мотора
  •  4х 30мм м3-0.5 шапка-головний машині гвинти

 Інструменти

  •  Комп'ютер середовищі розробки Arduino (я використовую Win7, в Ардуїнов 1.0.5 R2)
  •  Паяльник з невеликим зубилом наконечник, припій, і т. д
  •  Ключ шестигранний 2.5 мм для гвинти М5
  •  Ключові 2мм шестигранний для гвинтів M3
  •  Ключ шестигранний 1.5 мм для установки гвинтів в класі GT2 шків
  •  мультиметр для пошуку несправностей і регулювання струму
  • Вузькі плоскогубці для стяжки в невеликих приміщеннях

Огляд Функціональних Можливостей

 Я прикрию додавши мотора і шківів з повзунком, натягивающий ремінь і кріплення.  Це проста модифікація.

 Потім я розповім, як зібрати з a4988 pololu на чорний видання комплект і як прикрутити її на макетної платі разом з усіма іншими зовнішніми плит, а також простий фанери корпусу я збиваються в кілька хвилин для мого живлення 12В (перерахованих вище) для того, щоб запобігти удари, так як клеми піддаються.

Пліч, так що він залишається досить великою, що номери контактів видно досі!

 Меню дозволяє введення дальності поїздки, поїздки, кількість кроків і напрямок руху. В кінці кожного кроку, повзунок паузи, коли камера спрацьовує.

 Зміна повзунка

 Крок 1: Збірка Двигуна

 У OpenBuilds V-подібний ПАЗ, Привід кінець держателя має нема 17 Розмір отворів в ньому, так що чотири 30мм м3 головкою гвинти все, що потрібно підключити мотор до неї.

The OpenBuilds V-Slot Actuator End Mount
 У OpenBuilds V-Подібний ПАЗ, Привід Кінець Гори

 Забезпечити 20-зуб класі GT2 шків всередині гори перед вами слот з валом двигуна, а кріплення не достатньо широким, щоб додати його на потім.  Як тільки двигун прикручена внизу, підтягти гвинти настановні з одним з них проти плоскої частини валу двигуна, гарантуючи, що зуби прямо в лінію з центром всього екструзії блок.

 Крок 2: Натяжний Шків Комплект

 Натяжний ролик комплект йде разом як комплект коліс і шліців на протилежному кінці приводу Кріплення:

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

Крок 3: Бельтинг Вгору

 Годувати ремінь через центр V-подібний ПАЗ, у відповідності зі шківами, забезпечуючи зуби вгору.

 Потім годувати його і двох шківів і повернути його в середину до Доллі побудувати плиту.

Feeding the belt
Зуби хваткою один в одного.

 Тут ви обернути одного боку через щілину і затиск ременя, або стяжку, потім використовувати його, щоб затягнути всім пояси через всю систему, перш ніж підключити іншій стороні.  Не надто туго для включити мотор, але не досить вільно, щоб пропустити зубів на приводний шків!

 Збірка електроніки

 Крок 1: зібрати драйвер крокового

В с a4988 pololu на чорний видання драйвер крокового двигуна (технічно з a4988 перевізник правління - a4988 є сам чіп), як правило, поставляється у вигляді комплекту, який просто означає, що заголовки повинні бути припаяні.  Оскільки цей компонент харчування, навіть якщо це не схема блоку на максимальній потужності, це гарна ідея, щоб додати радіатор, щоб допомогти підвищити свою тривалість життя.

 Розбити рядок заголовка в півтора-два ряди з восьми.  Слот у металізованих отворів в платі, і тоді цей уважно на макет. Припаяти штирі на місці, поки макет тримає все красиво і перпендикулярно.

Putting together the Stepper Driver
Збираю драйвер крокового

 Після цього відрізати кутку невеликий самоклеючі радіатор, використовуючи ножівку і випилюємо (обережно, хомут!) для кріплення до з a4988 СК.

Cut off the corner of a small self-stick heatsink
 Відрізати кутку невеликий радіатор самоклеючі

 Крок 2: макет монтажу компонентів

 Тепер все має бути встановлено в макетах, так що він може бути підключений разом у функціонуванні cicuit.  Я використовую окремі списки для кожної частини для повної ясності в образах, але не соромтеся, щоб умістити його в один рада, якщо ви хочете.

 РК-клавіатура щит не може бути встановлений на борту, завдяки дивним Ардуїнов вибір дотримуватися конструктивний недолік, а не відповідати стандартам.  Це буде тримати окремо, хоча навинтив його на шматок дерева або що-то для захисту контактів не може бути поганою ідеєю.

 Тригер камери ланцюги в її найбільш простій складається з резистора, транзистори та 2,5 мм ТРС суб-міні-штекер.  Я додав світлодіод, який буде блимати, коли на курок штифт шипи висока, і 3,5 мм типу TRS міні-джек для того, щоб забезпечити гнучкість.

 Якщо ви купуєте компоненти для цієї збірки, 3,5 мм роз'єм, призначений для 0.1 дошки тангажа б непогано, але у мене від продувають купу, так що замість нього я припаяв роз'єм до нього.

Витягни все, готовий до проводу все.

 Крок 3: Проводка Всі Разом

 Час, щоб захопити всі сполучні кабелі.  Маючи достатньо тримати речі з колірним кодуванням полегшує життя при пошуку та усунення несправностей.  Зверніться до схемі вгорі, якщо наступне опис бентежить вас у будь-який момент.

Wiring Everything Together
 Проводка Всі Разом

 Перший провід до РК.  Візьміть 10 жіночі джемпери та підключити їх до наступних щит контактів: контакти 4-9, шини живлення штирі Reset (якщо ви хочете використовувати кнопку скидання РКІ), 5В і один з GNDs.

 Якщо у вас є жінка-чоловік джемпери, ви можете залишити його там.  В іншому випадку, підключіть чоловічий джемпер—на інший кінець самки—для того, щоб підключити їх до відповідного Ардуїнов гніздо розетки.  Якщо у вас є РК-клавіатура щит, який має наскрізну розеткові встановлений зверху, ви можете пропустити цей крок, так як ваш щит не блокує.

 Потім дошку з a4988 pololu.  Це має вісім стрибунів з одного боку, я використовувала чорний і червоний за логікою/Потужність двигуна easch кінця, і червоний/зелений/синій/жовтий у центрі чотирьох до матчу з ШД-х сервоприводів.

 Логіка-контактний роз'єм живлення йде до 3.3 V на Arduino, як РК вище, використовуючи висновок 5V.  Потужність двигуна дроти йдуть на своє джерело живлення 12В.  На іншій стороні, біля чіпа з a4988, я використовую синій і помаранчевий НТП і дір відповідно на відміну від відносно однорідного кольору скрізь.  Вони йдуть до Arduino штирі 11 і 12 відповідно, якщо ви змінити код.  Потім короткі RST і СЛП разом, щоб тримати рада включений; я використовував свинцеві білила тут.

When youre done it should look something like this
 Коли ви закінчите, вона повинна виглядати щось на зразок цього.

 Нарешті, проводи запуску камери вимикача.  Тут чорного дроту масу - поспіль дроти до Arduino, з рядка проводу на гніздо 3.5 мм   Жовтий колір вільно переходить до Arduino висновку 13 (значить, є світлодіодний індикатор на платі, а також на вимикачі!), і червоний провід йде до іншої сторони гніздо 3.5 мм (або 2.5 мм штекера, якщо ви збираєтеся цей маршрут).

 Підключити кроковий двигун в кольорових дротів згідно з a4988 схема плати і даташит кроковий по вашому.   Для мене це було так:

Like the button reader the test rotation sketch is included in the zip up top
 Як кнопку рідер, тест на обертання ескіза входить в zip вгору.

 Увага: пам'ятайте, що дроти подачі живлення на двигун, ймовірно, буде витягувати 1-2А в обраному напруга, тому переконайтеся, що використовуються дроти розраховані на це. Чіп a4988 і дошки навколо нього можуть нагріватися!  Чіп a4988 і дошки навколо нього можуть нагріватися! Потенціометр, вбудований в борт забезпечує обмеження струму для захисту a4988 і мотор, тому переконайтеся, що ви встановите його належним чином перед використанням за допомогою мультиметра.

 Налаштування Програми

 Як тільки компоненти були зібрані, можна перейти до кодування.  Завантажити zip в комплекті з цим підручником, або перевірити цей репозиторій github, розташований, якщо ви віддаєте перевагу.  Я розповім, як я поклав його разом, так що ви можете зрозуміти Загальний потік програми і модулі працюють разом.

 Крок 1: включає в себе основні визначення

 Тільки включати необхідні для цього був РК письмовій бібліотека LiquidCrystal.ч.  Це дає доступ до РК.ХХХХ() функції.   Там через pow() в програмі, і я виявив, що в тому числі бібліотеки C++ математики.ч не треба, як деякі з його найбільш корисних функцій, включених в Arduino фондової середовищі, в тому числі через pow().


 Я поставив РК-виводу, драйвер крокового виводу і камери тригера виводу.  Після того, як фактична апаратний інтерфейс налаштований, я додав змінні для подій натискання кнопок потім кнопку-значення функції, яку я адаптував від DFRobot Вікі на їх ідентичні РК клавіатура щит.  Зверніть увагу, що SainSmart надає жодних документів.

 Крок 2: Настройка() Цикл

 Це супер скачайте стоковий фотографію Bahia.  Ініціалізувати LCD та відповідних вихідних контактів, потім основний екран привітання, потім падіння на головному екрані меню 1 з обнулені значення.

 Крок 3: Кнопки Монітора

 Перевага кодування тут-мудрий, що обладнання не потрібно нічого робити взагалі без участі користувача.  Це означає, що найперше, що може бути вічним кнопку цикл опитування.  Не називаючи readLcdButtons() функція знову і знову, поки її значення не змінюється негативно позначитися на продуктивності програми, і вам не потрібно турбуватися про вихід переривання контактів доступний.

ReadLcdButtons() має затримку 90мс для того, щоб брязкоту кнопок.  Насправді, це не брязкоту, так як це не перездати вимірювання АЦП після певної кількості часу, а скоріше поголовно кнопки досить рідко рідко реєструвати більш ніж один клік.

 Він досягає те ж саме, з практичної точки зору УБ.   Це скоріше опитування кнопок кожен 90мс, а не постійно, тому використання затримки() це взагалі не вважається хорошою практикою для цілей debouncing, але він вирішив проблему (були доступні тільки в кожному кінці меню).

Крок 4: Оновіть Екран

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

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

Це звучить складно, але на практиці робить життя набагато легше. Він видаляє велика кількість РК-команди з інших країн в програмі, і створює змінну-Тип-агностик зони, яка мінімально впливає на оновлення програми зовнішні по відношенню до неї.

Фактичний освіжаючий частини еволюціонували, щоб включати в себе чотири окремих етапи:

 Скидання параметрів...

...друку у верхньому рядку...

 ...друку в нижньому рядку, які я поясню трохи пізніше...

 ...і додати екран спеціальні команди поверх того, що вже надруковано.

Створення Меню: Головні Рубрики

Природно, що точної розділі оновлення екрану не пише сам, і ми повинні знати меню він пише на екрані, перш ніж він може бути завершений. Основні рубрики легко, так як вони фактично не змінюються в залежності від введення користувача. Це означає, що можна просто бути рядка масиву - технічно масив покажчиків на тип char, або масив масивів:

Це означає, що можна просто бути рядка масиву - технічно масив покажчиків на тип char, або масив масивів: Це означає, що цей масив menuItemsTop можна переміщатися шляхом простої зміни числа в квадратних дужках під час оновлення екрану. І так трапляється, оскільки всі нуль-індексований, щоб відстежувати тотожне з цілим currentMenuItem.

Маніпулюючи currentMenuItem на кнопку заходах дозволяє нам одновимірних навігації, тому, коли ви бачите menuItemsTop[currentMenuItem] очевидно, що даний розділ рубрики.

 Так що ви можете рухатися вліво і вправо, і перейти в меню, або у разі йти! потім активоване контролю руху.  Що це все, що потрібно тут.

 Створення Меню: Підменю

 Система підменю довелося попотіти, завдяки своїй внутрішній складності.  Перші три записи, відстань, Тривалість і дії, технічно складаються з суб-суб-меню, кожен, дозволяє навігації, мульти-символьне значення, а також кожного окремо взятого персонажа.

 Це покривається, що робить кожна запис підменю відключається рубриці системи в своєму власному праві.  Хоча це був довгий шлях навколо, це простий і послідовний спосіб такого низького рівня навігації.   Так як я дуже просто прорахував відстань підменю, а потім скопіювати її на інші підменю, ось подивися на цього.

Зліва і праворуч є по суті такими ж, як в меню верхнього рівня, просто рухаючись вперед і назад вздовж ряду в ту ж сторону, що число насправді буде набір цифр int масив та поточне місце розташування зберігається в int називається currentCursorPos що дозволяє блимати, як показано на екрані оновити модуль вище.

Друкуючи ці масиви вздовж нижньої частини РК-поспіль, що для петлі були для в розділі оновлення екрану; I від 0 до 3, РК-колони від 0 до 3, currentDistance[] від 0 до 3.

 Збільшення і зменшення числа досягається за рахунок зберігання поточного цифру змінної currentChar, який потім передається в adjustDigit (функції) поряд з логічне значення, яке вказує напрямок; щоб збільшити або зменшити двигуна.

 Це просто налаштовує цифра за логічним значенням і зберігає результат, коли потік повертається в основний цикл, де currentChar значення зберігається назад в правильне положення оригінальний currentDistance[] масив і нова скоригована цифра друкується на екрані оновлення.

 Парсинг Відображення Значень Масиву

 Коли виберіть виберіть з одного числа масиву підменю, воно викликає відповідну функцію парсинга - в цьому випадку parseArrayDistance().  Вам треба розібрати блок, використовується для зручного відображення та редагування в ціле число корисних для реальних обчислень руху.  Я вирішив зробити це зараз, а не на ходу! щоб зберегти УБ почуття жваво.

 Я придумав цю функцію з однієї корисної передає коментар я знайшов після вичерпання Гуглі шукаю стандартний набір-для-інт функції, порожню, і позбутися від безладу масиву в чарі-на-інт функції, які були неефективний спосіб.  Здається, досить короткі і легкі, враховуючи, що це буквально на основі десяткової математики, але якщо ви знаєте кращий спосіб, я всі вуха.

 Контроль руху та запуску камери

 Всі значення встановлюються і натисніть Go! Що відбувається далі?  Вам потрібно розрахувати, які саме цифри даний йому повинні зробити для того, щоб виконати завершальний рух.   Ця частина є функціональною, але робота в прогресі, я вважаю, що там повинні бути більше варіантів різних видах руху.

 Що відбувається у цій функції є достатньо зрозуміло з коментарів, я думаю.  Я shutterDuration 2 секунди в програмному забезпеченні, в основному, продовжуєш відчувати досить швидке. Якщо ви знімаєте вночі, на низьких ISO, то це, можливо, буде потрібно більше схоже на 25-35 секунд в залежності від вашої точної витримки.

У pulseDelay множиться на 1000 В кінці, щоб перетворення секунд в мілісекунди, звичайно.  L для перетворення постійного інт на Лонг більше мені помилятися в бік обережності, ніж строго необхідно.  Оскільки це порівняно невелика замальовка, я не дуже турбувався про використання змінної пам'яті.

 Ці розрахунки припускають, що сама петля вимагає незначної кількості часу в порівнянні з часом pulseDelay, який, як тільки я вийняв кнопка голосування з'являється, щоб бути правдою.

Нарешті, зверніть увагу на значення currentSteps на 1.  Нарешті, зверніть увагу на значення currentSteps на 1. Я не створений помилка-перевіряти функцію для цього, але простий здоровий глузд говорить, кроку стане нескінченним, якщо currentStepsInt == 0, тому краще тримати його в одному безперервному русі, якщо це необхідно.  Я додав запис поліпшення для цього вже.

 Запуск кінцевого продукту

 Те, що працює на код, написаний більш або менш з нуля за два дні і виправлена більше двох, він працює як сон!  Доказ знаходиться в пудинг.  Це насправді вам варто інтервальна запис, і блок управління дійсно добре працювати в полі?

У моїх тестах, відповідь представляється гучне "так".  Нижче знаходиться дві години, 650-рамки інтервальної зйомки, самий перший тест.  Повзунок також пройшов 9-годинний тест 720 кадр бездоганно, але на жаль акумулятор камери не так добре після 2 годин ..., якого я не дізнався, до 8.5 годин, природно.

 Якщо я встановив належним чином про час і кроків, рух може бути безперервним протягом Доллі повільно рухається у відео дій, хоча уривчасто закінчується необхідність редагування, або швидкість-нарощує.

 Звук може бути проблемою, якщо ваш степпер дуже тихо, але для додавання вартості до самостійної запису, це варіант.

 Поліпшення

 Як і всі, можливі поліпшення.   Я перерахував вгорі .файл Іно, правда без особливого догляду за доцільності, ні замовити будь-який вид важливість.

 Деякі з них я вважав фіксації до виходу цього підручника з V0.2, але мені здається, що вони самі по собі є досвідом подивитися з точки зору морально демонтаж юзабіліті програми.

 Це просто поліпшень, які я гадав досі, в прагненні керівництва до codebase з рудиментарною, але функціональна версія V0.2 в бік більш оптимізовані і більш здатним відпустити v1.0.  Ви можете більше уваги.  Не соромтеся залишати їх у коментарях нижче або на github.

 Завертаючи

 Якщо Ви виконали від початку до кінця, включаючи фотографії Туц+ частина побудувати, тепер ти гордий власник високої якості моторизований слайдер камера, яка може виробляти таймлапс зйомки і тонкі Доллі рухається. Якщо ви використовуєте код для якийсь інший проект, я б хотів побачити його.

 У цьому уроці, я подивився на різні форми циклу на основі управління потоком, створюючи зачатки GUI і оновлення РК на основі введення користувача.  Я теж подивився на одночасне управління кількома зовнішніми механічними пристроями через дошки проламати.

 Ви бачили потік і легкість програмування модульний код, а також побачити ідеї як покращити код, який працює, але не оптимізований, як з UX і процесор з точки зору ефективності.  Ці кошти повинні служити вам добре для різноманітності спілкування і взаємодії на основі проектів в майбутньому.

Будь ласка, залиште які-небудь питання або зауваження в коментарях нижче!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.