Слайдер — инструмент для видеосъёмки, позволяющий камере плавно передвигаться в пространстве,
Проект был создан на основе проекта слайдера с открытым исходным кодом - 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)
Пункт меню < Камера > вращение камеры энкодером для установки в начальное положение
Меню двухуровневое. Навигация по пунктам меню вращением энкодера, выбор пункта меню - кнопка энкодера, изменение параметра - вращением энкодера, подтверждение выбора параметра - кнопкой энкодера. Для каждого режима свой набор параметров.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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};
Запуск из пункта меню Старт, которое сразу превращается в Стоп. Останов программы нажатие кнопки энкодера в пункте Стоп.
Скачать список элементов (PDF)
Прикрепленные файлы:
- MKS_Mini12864_V2_0_LCD_Box.zip (110 Кб)
- slider_28.zip (51 Кб)
Автор: victoruni