Поворотный стол для 3D-фотосъемки
Что это?
Для 3D-фотосъёмки небольших предметов часто используют поворотные столы. Предмет ставится на такой стол, после чего фотограф делает снимок и поворачивает стол на определённый угол. Далее процесс повторяется до тех пор, пока предмет не будет сфотографирован со всех сторон. Это занятие достаточно утомительно, поэтому мы решили автоматизировать процесс и собрать свой автоматический поворотный стол с автоспуском.
Что нам понадобится?
- 18 × винт M3×10
- 4 × винт M3×15
- 3 × винт M3×25 с потайной головкой
- 15 × металлическая гайка
- 6 × стойка для печатных плат M3×30
- Мелкая шкурка
- Смазка WD-40
- Пара длинных проводов или двухжильный провод
Исходный код и файлы для лазерной резки акрила доступны на GitHub: https://github.com/amperka-projects/photoTurntable
Как это собрать?
- Для начала необходимо заказать изготовление корпуса из 5 мм белого акрила по нашему чертежу. Сделать это можно в любой фирме, специализирующейся на лазерной резке.
- Установите в боковые отверстия стойки для печатных плат и закрепите их винтами M3×10. Эти стойки будут выполнять роль ножек.
- Установите на Arduino Uno Troyka Shield. В пин Vin вставьте красный провод «папа-папа», а в пин GND — чёрный. Второй конец красного провода установите в колодку «+» Stepper'а. Второй конец чёрного провода установите в колодку «-» Stepper'а. Зафиксируйте контакты в колодке винтами. Установите 3-х проводные шлейфы в тройки контактов 5, 6, 7 и 8 Troyka Shield'а. Вторые концы шлейфов просуньте в отверстие рядом с Arduino и обмотайте вокруг перешейка, чтобы избавиться от болтающихся проводов.
- Слегка отшлифуйте большое отверстие в корпусе столика и два маленьких круга мелкой шкуркой. Немного смажьте отверстие смазкой. Возьмите большой акриловый круг с тремя отверстиями под винт. С помощью сверла или крестовой отвёртки снимите в отверстиях фаску под винты с потайной головкой. Вставьте винты M3×25 с потайной головкой в отверстия и наденьте на них два маленьких круга. Переверните столик, в большое отверстие проденьте получившийся бутерброд и наденьте сверху большую шестерёнку. Затяните винты гайками.
- Другой конец этих проводов идёт в фотоаппарат, к пинам «Земля» и «Затвор». Конструкция ответной части может быть разной. Это может быть как 2,5 мм джэк, так и разъём N3 Cannon (наш случай). О том как подключить эти провода к нужному вам штекеру лучше почитать на специализированных сайтах. Мы просто воспользовались наконечником «мама» от провода «мама-папа». Схема соединения к реле должна быть такой: Оставшийся контакт — автоматическая фокусировка. Мы решили его не использовать.
Исходный код
- 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-сканер.