[Из песочницы] Моторизованный timelapse видео слайдер

Идея сделать видео слайдер, да и к тому же моторизованный, мне пришла в голову в августе 2014-го. К тому времени я уже чуть больше года занимался ночной съёмкой звёздных пейзажей и решил попробовать себя в timelapse-деле.

В timelapse всегда ценится «живость картинки»! Смена кадров, сделанных на статично установленный фотоаппарат в большинстве случаев не так эффектно влияет на зрителя, как тот же сюжет, но уже снятый на движущуюся в пространстве камеру. Композиция видео наполняется безграничной динамикой, оставляя хорошие впечатления о ролике!

7e0a5e8c59944417b231495e413fe7fa.jpg

Как обстоит дело с продажами такого оборудования? Да без проблем! Вот только космические цены пугают… В процессе поиска вариантов, будь это фирменный или китайский, делаешь вывод, что понятия «бюджетный моторизованный слайдер» не существует в природе! Бюджетный вариант — это только если сконструировать подобное самому! Я так и сделал!
Изготавливать слайдер начал не сразу, покуда не нашёл выход, как сделать рельсу за недорого! С неё всё и началось.
В мебельном магазине я купил направляющие для мебельной фурнитуры и ролики для них.

90ed1a57de0c4745a4facdded791d8da.jpg

0e452cdc905049e39a25dd3dd06906d4.jpg

За основу рельсы я взял имеющееся в хозяйстве алюминиевое строительное правило длиной 1.5 м (встроенный уровень помогает ровно установить слайдер). При помощи дрели, вытяжных заклёпок, а также вставок из фанеры по обоим концам правила, уже за несколько часов была изготовлена рельса длиной 2 метра.

5c10c6d8128d48eea8a810f93e6ec8d8.jpg

Осталось дело за кареткой. Её я сделал из прочного оргстекла. Ролики крепил при помощи болтов и гаек маркировкой М6.

be8476c53d4f46e1b5a873b9a3a52c72.jpg

Первый тест был провален, к сожалению. Каретка катилась рывками, и на видео это было очень заметно (плавные дребезг то вниз, то вверх). Всё это из-за не нормально отцентрированных при производстве роликов (хотя продавец сказал, что фурнитура итальянская). Выход — заблокировать все колёса. Теперь они выполняют роль подшипников скольжения. Каретка стала прямолинейно скользить по рельсе!

6a77a37af5dd454798f9bd7e03bf15ab.jpg

11cd46f0f2ed4fc5907c90662ea16ef1.jpg

Чтобы рельса держалась на штативах, к ней приделаны две штативные площадки. Здесь они самодельные, из фанеры. Крепятся болтами и гайками М6.

ed2ecff6d8b647a5abb560251eb1208a.jpg

077213736d394ad1b48091b2ee712b97.jpg

9474b6a54e02414f8f90b384b32a8b79.jpg

c0664656d0db4f2980c75d2b182a24ca.jpg

a56ce76893d74c8dadf47bf32b8665c4.jpg

0d185560b7cf4d5286bad57bcf1e8c3a.jpg

9dce25eea8984a34ab6f4a7a1d508989.jpg

Электрика


Что я хотел изначально сделать? Поначалу было задумано использовать один привод для каретки. Для этого нужно всего ничего тяговитый моторчик, элемент питания и микросхемка для управления скоростью. Впервые узнал о сервоприводах, и решил его взять в свой проект. Микросхемой был сервотестер, который может управлять скоростью сервопривода. То, что надо! Нужно брать! Но не спешим…

Дальнейшее знакомство с сервоприводом наткнуло меня на такое понятие, как Arduino. И это хорошо! Я ещё раз обдумал проект и решил, что в слайдере мне нужно не постоянное движение каретки, а интервальное. Ведь движение во время экспозиции (ночная фотосъёмка — длинные выдержки) может забраковать кадр смазом.

И раз уж у меня будет такой умный блок управления, то я решил дополнить свой слайдер ещё и другим механизмом. Кроме движения вдоль рельсы фотоаппарат будет ещё и вращаться вокруг вертикальной оси. Конструкцию можно назвать «видео слайдером с астротрекером на борту».

Итак, было куплено:

  • Микроконтроллер Arduino UNO R3
  • Сервопривод TowerPro MG995 13kg/cm
  • Шаговый двигатель 28byj-48–5v + Driver ULN2003

Сначала я сделал крепление сервопривода к рельсе из того же оргстекла.

007703b5beb7404dad46ccabfdcc907e.jpg

Каретка и сервопривод были связаны нерастяжимой нитью, которая наматывается на его вал.
Вращение камеры осуществляется при помощи шагового двигателя 28byj-48, который установлен на червячном редукторе 1/55.

9ec23ae8f9994f02ae6b97d6a79010ee.jpg

Корпус для Arduino и других электрических компонентов я решил сделать опять таки из оргстекла. Склеивал всё суперклеем, хотя для этого материала обычно используют специальный клей, который припаивает детали друг к другу из потом не разорвать. Для подключения моторов к блоку управления сделал два кабеля, на которых использовал надёжные проверенные советские разъёмы типа «папа» DIN 5 PIN.

0bdf4e25cab744c2b55a2aa8bb01af6a.jpg

Питание подаётся через обычный DC connector.

Элемент питания: 7.2V, 2250mAh:

10943ebaea7e47b88584e9930fea155e.jpg

Время первых тестов электрики! Подключаем моторы, питание, устанавливаем фотоаппарат, подключаем к нему пульт ДУ, настраиваем его под Arduino: выдержка 30 сек, интервал 5 сек. Нажимаем одновременно старт на пульте и Arduino. Ждём…

Не прошло и пяти минут, как была обнаружена несинхронность в работе. Главный моторчик начинал крутиться, когда ещё был открыт затвор. Дело в пульте: он неправильно отсчитывает время. Если в реале пройдёт 30 секунд, то счётчик в пульте отсчитает только 28–29 секунд. Он тормозит. Может быть из-за того, что китайский или по какой-то другой причине (интересно будет узнать от вас почему так)!

Чтобы этого избежать, нужно делать всё на базе одной системы — Arduino. Но как управлять затвором фотоаппарата через Arduino?
Снова гугл в помощь!

Переходник пульта:

35ced1eb75b4457780c43a5db28801dd.jpg

Переходник пульта подсоединяется одним концом к камере, а другим (jack 2.5) к проводу пульта. Jack 2.5 имеет три контакта, и из принципа работы пульта фотоаппарата я узнал, что для срабатывания затвора нужно сомкнуть два из трёх этих контакта. Попробовав несколько комбинаций, нашёл — работает!

Сделал двухжильный кабель, один конец которого имеет разъём «мама» jack 2.5 и подключается через тот переходник пульта к фотоаппарату, другой конец идёт в блок управления. Внутри него смыкать эти две жилы я придумал при помощи механической кнопки. Она сделана из микро сервопривода и контактной кнопки.

Качелька микро сервы нажимает в определённый момент на тактовую кнопку, тем самым замыкая два контакта, и фотоаппарат делает снимок:

a8ceee355a21497c88763c99c8f9290c.jpg

Двухжильный кабель:

d39d4a3cfdb84567888d72d1300aeb54.jpg

Двухжильный кабель + переходник пульта:

0c94858bc55c48b6a4299fd68cc2838b.jpg

Поздней осенью, когда бывают небольшие заморозки, я как-то решил протестировать слайдер и обнаружил ещё один недочёт: даже при +2°C главный сервопривод отказывался работать. Это было связано со сгущением смазки шестерёнок. Сервопривод заедало после 5–10 минут нахождение на такой температуре.

Позже, уже настоящей зимой, когда были морозы до -10°C также и микро сервопривод дал о себе знать! Хотя при той же температуре в +2°C, в которой перестал работать большой MG995, механическая кнопка работала стабильно и нареканий не вызывала. Видимо, это связано с тем, что она находилась в корпусе с Arduino, который не давал быстро промёрзнуть микро моторчику на ней. Тогда кнопка работала хорошо, но теперь сигнал на срабатывание затвора посылался не каждый раз, а это не то, что нужно. Пришлось дорабатывать.

Вскоре нашёл решение для мотора и спуска затвора. Купил биполярный шаговый двигатель типа Nema 17 и плюс к нему громоздкий самодельный драйвер от продавца. И никакой мороз теперь не помеха!

6640369b73f54c88af1a8f4b507c8c8e.jpg

Этот шаговый двигатель я также использовал в связке с аналогичным редуктором 1/55, про который писал выше. Тросик наматывается на катушку.

a91ee4beef4f463a877443f2035b59c8.jpg

Проблему с кнопкой решил, прочитав статью в интернете о самодельном интервалометре для фотоаппарата на базе Arduino. Там использовался обычный транзистор для замыкания цепи (двух контактов).

Ещё избавился от огромного самодельного драйвера, который жестоко грелся из-за большого тока в нём, и мог бы в неподходящий момент просто подвести. Заменив его после на знаменитый EasyDriver, у меня появилась возможность регулировать ток в драйвере за счёт подстроечного резистора на нём. Сила тока пропорционально влияет на крутящий момент мотора. Его здесь достаточно меньше половины от максимума нормы, так как используется червячный редуктор с большим передаточным числом. Драйвер ощутимо меньше стал греться.

Также в EasyDriver есть возможность легко устроить «режим сна», когда драйвер отключён и не потребляет ток на удерживающий момент мотора — мотор полностью отключён. Возможность деления шага также не лишняя функция! Теперь уж без проблем можно сделать относительно идентичную копию блока управления из купленных в магазине компонентов!

Сейчас места в корпусе стало значительно больше, чем было.

ДО

ad0a0807173e4c00b8ba0b4f756215af.jpg

ПОСЛЕ

33e3ae9e9a984f0c8559a6921f822170.jpg

Время

Большую часть его я потратил на изучение программирования в Arduino. И даже сейчас мой скетч можно дорабатывать. Есть единственная проблема. Не получается сделать так, чтобы нажатием тактовой кнопкой переключался режим работы и оставался на одном из них постоянно. Режимы отличаются всего лишь временем выдержки. Интервал всегда одинаковый и равен 3,5 секунды. Много перепробовал, но покуда есть такой вариант. Написал я его ещё в конце зимы, и он меня устраивает.

Всё просто: выдержка задаётся и приравнивается к промежутку времени, прошедшем с момента начала программы и до момента единичного нажатия тактовой кнопки. Чтобы её изменить, нужно перезагрузить Arduino.

Скетч:

#include 
int Distance = 0; 
int x = 0;
#define STEPS_MOTOR 32   
#define STEPS_OUTPUT 32 * 64  // = 2048
Stepper stepper2(STEPS_MOTOR, 8, 10, 9, 11);

int  steps;
int button = 12;
int previousMillis = 0; 
void setup()
{
  pinMode(13, OUTPUT);     
  pinMode(12, INPUT);
  pinMode(2, OUTPUT);     
  pinMode(3, OUTPUT);
  pinMode(7, OUTPUT);

 
}

void loop()
{ 
     
   if (digitalRead(12) == HIGH)
     { 
     
     
      
       previousMillis = millis();     

int x = map(previousMillis,60000, 0, 78, 0);


 a:
 
digitalWrite(2, HIGH);
  digitalWrite(3, LOW);

 { 
   digitalWrite(3, HIGH);
  delayMicroseconds(552);          
  digitalWrite(3, LOW); 
  delayMicroseconds(552);
  Distance = Distance + 1; 
  

  if (Distance == 3620)
  {
    if (digitalRead(2) == HIGH)
    {
      digitalWrite(2, HIGH);
    }
    else
    {
      digitalWrite(2, LOW);
    }
   
   
 digitalWrite(2, LOW);
 digitalWrite(3, LOW);  
                   
 steps = STEPS_OUTPUT;
  stepper2.setSpeed(161.25);     // 500 ms
  stepper2.step(steps = - x);                                    
                      
digitalWrite(8, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(11, LOW);  
   
  
   delay(500);                   // 500 ms


digitalWrite(13, HIGH);  
  digitalWrite(7, HIGH);   
  delay(50);                     // 50 ms
 digitalWrite(7, LOW);     
  digitalWrite(13, LOW);    
delay(previousMillis-3050);             // inerval = x-3500 ms
  Distance = 0;
}
}
goto a;
}}


Установка слайдера


f9e68528ece84bbdb58c8288f13987f2.jpg

ebdef15af9d1472f80e852a3996dc95f.jpg

02846a6fef894a669968201cd9d82412.jpg

c5ff3471c7804d2792fe181ebb78b83e.jpg

Всё подключено. Слайдер готов к работе!

191019999ff9403fa38f7c08d63fef44.jpg

8b547dac094a4ba68ee796352f16dabb.jpg

5808c4da0f1140189c777553f6a328c1.jpg

58105460ea4e4fe8afd977e81a3f14f8.jpg

Выводы


Что я думаю:

На данный момент слайдер готов к использованию, и в полной мере отрабатывает своё предназначение, но есть некоторые нюансы, которые в будущем я хотел бы доработать. Почти все они относятся к каретке. Думаю, вы заметили.

Нужен более надёжный механизм удержания «астротрекера». Ось его вала должна всегда быть перпендикулярна земле. Фирменная штативная головка придаст моей конструкции ещё более эстетический вид, который был задуман мной изначально! Что касается электроники: так меня здесь всё устраивает, даже скетч на Ардуино! В любом случае, я уже добился планируемого результата!

Чисто технический пример работы слайдера (зима, февраль, -15°C):

Себестоимостью данного видео слайдера составляет менее 100$, не считая стоимость двух штативов.

Спасибо за внимание! Всем удачи в самоделках!

© Geektimes