Поворотный стол для 3D-фотосъемки

Что это?

Для 3D-фотосъёмки небольших предметов часто используют поворотные столы. Предмет ставится на такой стол, после чего фотограф делает снимок и поворачивает стол на определённый угол. Далее процесс повторяется до тех пор, пока предмет не будет сфотографирован со всех сторон. Это занятие достаточно утомительно, поэтому мы решили автоматизировать процесс и собрать свой автоматический поворотный стол с автоспуском.

Что нам понадобится?

  1. 18 × винт M3×10
  2. 4 × винт M3×15
  3. 3 × винт M3×25 с потайной головкой
  4. 15 × металлическая гайка
  5. 6 × стойка для печатных плат M3×30
  6. Мелкая шкурка
  7. Смазка WD-40
  8. Пара длинных проводов или двухжильный провод

Исходный код и файлы для лазерной резки акрила доступны на GitHub: https://github.com/amperka-projects/photoTurntable

Как это собрать?

  1. Для начала необходимо заказать изготовление корпуса из 5 мм белого акрила по нашему чертежу. Сделать это можно в любой фирме, специализирующейся на лазерной резке.
  2. Установите в боковые отверстия стойки для печатных плат и закрепите их винтами M3×10. Эти стойки будут выполнять роль ножек.
  3. Установите винты M3×15 в Arduino Uno. Закрутите на них гайки, чтобы получилась подставка между Arduino Uno и акриловым корпусом. Установите Arduino Uno в предназначенные для платы отверстия в акриле. Крайний винт закрепите стойкой для печатных плат, на оставшиеся винты закрутите гайки.
  4. Установите Troyka-модули в предназначенные для них отверстия. Закрепите их винтами M3×10.
  5. Установите на Arduino Uno Troyka Shield. В пин Vin вставьте красный провод «папа-папа», а в пин GND — чёрный. Второй конец красного провода установите в колодку «+» Stepper'а. Второй конец чёрного провода установите в колодку «-» Stepper'а. Зафиксируйте контакты в колодке винтами. Установите 3-х проводные шлейфы в тройки контактов 5, 6, 7 и 8 Troyka Shield'а. Вторые концы шлейфов просуньте в отверстие рядом с Arduino и обмотайте вокруг перешейка, чтобы избавиться от болтающихся проводов.
  6. Соедините шлейфы с Troyka-модулями. Troyka-Stepper: 5 пин — step, 6 пин — direction, 7 пин — enable. Troyka-Реле — 8 пин.
  7. Слегка отшлифуйте большое отверстие в корпусе столика и два маленьких круга мелкой шкуркой. Немного смажьте отверстие смазкой. Возьмите большой акриловый круг с тремя отверстиями под винт. С помощью сверла или крестовой отвёртки снимите в отверстиях фаску под винты с потайной головкой. Вставьте винты M3×25 с потайной головкой в отверстия и наденьте на них два маленьких круга. Переверните столик, в большое отверстие проденьте получившийся бутерброд и наденьте сверху большую шестерёнку. Затяните винты гайками.
  8. Прикрутите к маленькой шестерёнке втулку мотора винтами M3×10.
  9. Установите шаговый мотор в предназначенное для него отверстие валом вниз. Зафиксируйте мотор одним винтом M3×15 так, чтобы он мог с натяжкой ходить в отверстии.
  10. Наденьте на вал мотора маленькую шестерёнку и отрегулируйте положение мотора таким образом, чтобы шестерёнки были прижаты друг к другу. Придерживая мотор, снимите маленькую шестерёнку и окончательно закрепите мотор в нужном положении винтами.
  11. Закрепите маленькую шестерёнку на валу мотора на высоте большой шестерёнки при помощи шестигранного штифтового ключа, идущего в комплекте с втулкой.
  12. Соедините провода мотора с колодками «1234» Troyka-Steppera. Белый и жёлтый провода мотора нам не понадобятся, ведь мы используем униполярный шаговый двигатель в биполярном режиме. Поэтому их можно просто откусить и заизолировать.
  13. Необходимо прикрутить провода, отвечающие за автоспуск к колодкам Troyka-Реле. Провода нужно присоединить к контакту «COM» и «NO».
  14. Другой конец этих проводов идёт в фотоаппарат, к пинам «Земля» и «Затвор». Конструкция ответной части может быть разной. Это может быть как 2,5 мм джэк, так и разъём N3 Cannon (наш случай). О том как подключить эти провода к нужному вам штекеру лучше почитать на специализированных сайтах. Мы просто воспользовались наконечником «мама» от провода «мама-папа». Схема соединения к реле должна быть такой: Оставшийся контакт — автоматическая фокусировка. Мы решили его не использовать.
  15. Готово! Теперь наш вращающийся столик выглядит вот так:

Исходный код

photoTurntable.ino
// Характеристика двигателя,
// количество шагов на один оборот вала
#define MOTOR_STEPS_REVOLUTION 200
 
// Передаточный коэффициент шестерёнок
#define GEAR_COEFFICIENT 2
 
// Итоговое количество шагов на один оборот столика
#define STEPS_REVOLUTION GEAR_COEFFICIENT * MOTOR_STEPS_REVOLUTION
 
// Необходимое количество кадров за один оборот
#define SHOTS 40
 
// Количество шагов двигателя между снимками
#define STEPS_ON_SHOT STEPS_REVOLUTION/SHOTS
 
// Выдержка времени между шагами.
// Чем больше это число, тем медленнее вращается двигатель
#define DELAY_TIME 8
 
// Назначим пины
// Troyka-Stepper:
// Шаг двигателя
#define STEP 5 
// Направление вращения
#define DIR  6 
// Включение двигателя
#define EN   7 
 
// Реле. При срабатывании включает затвор фотоаппарата
#define SHOT 8
 
void setup() {
  // Настроим все необходимые пины на выход
  for (int i = STEP; i <= SHOT; ++i) {
    pinMode(i, OUTPUT);
  }
}
 
void loop() {
  // Включаем мотор
  digitalWrite(EN, HIGH);
 
  // Для каждого из необходимого количества снимков...
  for (int i = 0; i < SHOTS; ++i) {
    // Ждём 500 мс, чтобы столик остановился
    delay(500);
 
    // Замыкаем реле, происходит съёмка
    digitalWrite(SHOT, HIGH);
    delay(200);
    // Размыкаем реле
    digitalWrite(SHOT, LOW);
 
    // Выдержка, чтобы фотоаппарат успел записать снимок на карту
    delay(1000);
 
    // Поворачиваем столик на необходимое количество шагов
    for (int i = 0; i < STEPS_ON_SHOT; ++i) {
 
      // Один шаг
      digitalWrite(STEP, HIGH);
      delay(DELAY_TIME);
      digitalWrite(STEP, LOW);
      delay(DELAY_TIME);
    }
  }
 
  // После завершения съёмки отключаем двигатель
  digitalWrite(EN, LOW);
 
  // Завершаем работу.
  // Чтобы возобновить работу нужно нажать кнопку RESET
  while (true) {
    ;
  }
}

Демонстрация работы устройства

Посмотреть результат работы устройства можно на сайте megavisor.com

Что можно сделать ещё?

  • Для более плавной работы устройства полезно было бы увеличить передаточный коэффициент шестерёнок, увеличив его, к примеру, до 10 к 1. Если захочется это сделать, вам очень поможет скрипт для генерации шестерёнок с сайта thingewerse.com.
  • Можно добавить настройку количества кадров и скорости вращения двигателя перед каждой съёмкой. Для этого понадобится потенциометр, пара кнопок и четырёхразрядный индикатор.
  • Мы не использовали автоматическую фокусировку. Фокусировка производилась перед началом съёмки и далее не менялась. Чтобы перед каждым снимком производилась автоматическая фокусировка, можно добавить ещё одно реле.
  • Добавив к столику web-камеру и лазерный модуль-линию, можно сделать 3D-сканер.