Слайдер для камери на Arduino
Слайдер — інструмент для відеозйомки, що дозволяє камері плавно переміщатися в просторі,
Проект був створений на основі проекту слайдера з відкритим вихідним кодом - https://www.jjrobots.com/camera-slider-tracking-system-3d-printed/. Проект цікавий, але електронна частина використовує власні плати розробника, які не хотілося придбавати. Було вирішено використовувати те, що було в наявності - плату Arduino Mega та RAMPS, крокові двигуни NEMA 17, драйвери А4988, оптичний кінцевий вимикач і дисплей MKS Mini 12864 v1.0 з енкодером.
Були надруковані деталі на 3D-принтері (скачати можна на сайті проекту), куплений профіль 20 на 20 V-slot. Збірку слайдера зробив за інструкцією https://www.jjrobots.com/camera-slider-kit-2-0-assembly-guide/
Додатково на 3D-принтері надрукував 2 корпуси:
MKS_Mini12864_V2.0_LCD_Box
Case_for_Arduino_Mega_R3_and_RAMPS_1.4
Схема підключення для електроніки проста - плата RAMPS ставиться на Arduino Mega, встановлюються на плату RAMPS два драйвера A4988 (вісі x і y). До контактів осей x і y підключаються крокові двигуни NEMA17.
Дисплей MKS_Mini12864_V1.0 підключається до плати RAMPS через перехідник. Виникла проблема з підключенням дисплея MKS Mini 12864 v1.0 до плати RAMPS. Дисплей підключається до плати RAMPS за допомогою адаптера, але шлейф потрібно перевернути на 180 градусів, треба стачувати, щоб входило в роз'єм.
Програму пишемо в середовищі Arduino IDE. Використовуємо бібліотеки
U8g2lib - для дисплея https://github.com/olikraus/u8g2/wiki/setup_tutorial
RotaryEncoder - бібліотека енкодера
Для збереження налаштувань вбудована EEPROM
В скетчі реалізовано 2 режими
Режим 1
- Задається швидкість переміщення каретки уздовж осі X
- Задається відстань, до якої каретка доїде, і почне рухатися назад до 0 і назад до того
моменту, поки не натиснемо стоп
- Задається швидкість обертання другого двигуна
- задається відстань, з якої почне обертатися другий двигун
- Задається кут, на який буде обертатися другий двигун з заданою швидкістю
- Є можливість ВКЛ і ВИКЛ функції: якщо вона включена, то другий двигун, коли почне обертатися і
досягне заданого кута, то він зупиниться і обертатися не буде. А якщо функція вимкнена, то після того
як другий двигун досягне свого заданого кута, то він почне обертатися в зворотному напрямку до свого
попереднього стану і так далі до того моменту, поки не натиснемо кнопку Стоп
Режим 2 (Напрямок на об'єкт)
- Задаються координати об'єкта x і y відносно нульової точки слайдера
- Задається відстань, до якої каретка доїде, і почне рухатися назад до 0 і назад до того
моменту, поки не натиснемо стоп
- Задається швидкість переміщення каретки уздовж осі X
- При русі камера постійно направлена на об'єкт (на точку з координатами x, y)
Пункт меню < Камера > обертання камери енкодером для встановлення в початкове положення
Меню двохрівневе. Навігація по пунктах меню обертанням енкодера, вибір пункту меню - кнопка енкодера, зміна параметра - обертанням енкодера, підтвердження вибору параметра - кнопкою енкодера. Для кожного режиму свій набір параметрів.
const char *level0Names[12]={ "Стоп", "Старт", "< Камера >", "Режим", "X ", "Y ", "V1 ", "L1 мм ", "V2 ", "L2 мм ", "Angle ", "Цикл ", }; int arrpos0[]={1,2,3,6,7,8,9,10,11}; int countpos0=9; int paramvalue[12]={0, 0, 5, 1, 1000, 1000, 100, 900, 5, 240, 50, 1}; int minvalue[12]= {0, 0, 0, 1, 5, 100, 50, 100, 1, 20, 0, 0}; int maxvalue[12]= {10,10, 10, 2, 2000, 5000, 400,2000, 50,1500, 180, 1}; int stepvalue[12]= {1, 1, 1, 1, 50, 100, 5, 20, 1, 20, 1, 1}; int kvalue[12] = {1, 1, 1, 1, 1, 1, 10, 1, 10, 1, 1, 1};
Запуск з пункту меню Старт, яке одразу перетворюється в Стоп. Зупинка програми натисканням кнопки енкодера в пункті Стоп.
Список радіоелементів
Позначення | Тип | Номінал | Кількість | Примітка |
---|---|---|---|---|
Плата Arduino |
Arduino Mega
|
1 | ||
Плата | RAMPS 1.4 | 1 | ||
LCD-дисплей | MKS Mini 12864 v1.0 | 1 | ||
Адаптер для | LCD2004 і LCD12864 | 1 | ||
Драйвер | A4988 | 2 | ||
Кроковий двигун | NEMA17 | 1 |
Прикриті файли:
- MKS_Mini12864_V2_0_LCD_Box.zip (110 Кб)
- Case_for_Arduino_Mega_R3_and_RAMPS_1_4.zip (5380 Кб)
- slider_28.zip (51 Кб)