====== Поворотный стол для 3D-фотосъемки ====== {{ :projects:photo-turntable:assembled.jpg?direct&700 |}} ===== Что это? ===== Для 3D-фотосъёмки небольших предметов часто используют поворотные столы. Предмет ставится на такой стол, после чего фотограф делает снимок и поворачивает стол на определённый угол. Далее процесс повторяется до тех пор, пока предмет не будет сфотографирован со всех сторон. Это занятие достаточно утомительно, поэтому мы решили автоматизировать процесс и собрать свой автоматический поворотный стол с автоспуском. ===== Что нам понадобится? ===== {{ :projects:photo-turntable:all-details.jpg?direct&700 |}} - [[amp>product/arduino-uno?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Arduino Uno]] - [[amp>product/arduino-troyka-shield?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Troyka Shield]] - [[amp>product/troyka-stepper-motor-driver?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Драйвер шагового двигателя (Troyka-модуль)]] - [[amp>product/troyka-relay?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Реле (Troyka-модуль)]] - [[amp>product/stepper-motor-nema17-42sth47-0406a?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Шаговый двигатель 42STH47-0406A]] - [[amp>product/shaft-coupler-5mm?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Втулка на вал мотора диаметром 5 мм]] - [[amp>product/wall-plug-1a?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Импульсный блок питания (1000 мА)]] - [[amp>product/wire-mm?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|Соединительные провода «папа-папа»]] - 18 × винт M3×10 - 4 × винт M3×15 - 3 × винт M3×25 с потайной головкой - 15 × металлическая гайка - 6 × стойка для печатных плат M3×30 - [[https://github.com/amperka-projects/photoTurntable/blob/master/turnTable5mm.pdf?raw=true|Корпус из 5 мм белого акрила]] - Мелкая шкурка - Смазка WD-40 - Пара длинных проводов или двухжильный провод Исходный код и файлы для лазерной резки акрила доступны на [[wpru>GitHub]]: https://github.com/amperka-projects/photoTurntable ===== Как это собрать? ===== - Для начала необходимо заказать изготовление корпуса из 5 мм белого акрила по [[https://github.com/amperka-projects/photoTurntable/blob/master/turnTable5mm.pdf?raw=true|нашему чертежу]]. Сделать это можно в любой фирме, специализирующейся на лазерной резке. - Установите в боковые отверстия стойки для печатных плат и закрепите их винтами M3×10. Эти стойки будут выполнять роль ножек. - Установите винты M3×15 в Arduino Uno. Закрутите на них гайки, чтобы получилась подставка между Arduino Uno и акриловым корпусом. Установите Arduino Uno в предназначенные для платы отверстия в акриле. Крайний винт закрепите стойкой для печатных плат, на оставшиеся винты закрутите гайки. {{ :projects:photo-turntable:insert_uno.jpg?direct&700 |}} - Установите Troyka-модули в предназначенные для них отверстия. Закрепите их винтами M3×10. {{ :projects:photo-turntable:troyka-front-back.jpg?direct&700 |}} - Установите на Arduino Uno Troyka Shield. В пин Vin вставьте красный провод «папа-папа», а в пин GND — чёрный. Второй конец красного провода установите в колодку «+» Stepper'а. Второй конец чёрного провода установите в колодку «-» Stepper'а. Зафиксируйте контакты в колодке винтами. Установите 3-х проводные шлейфы в тройки контактов 5, 6, 7 и 8 Troyka Shield'а. Вторые концы шлейфов просуньте в отверстие рядом с Arduino и обмотайте вокруг перешейка, чтобы избавиться от болтающихся проводов. {{ :projects:photo-turntable:troyka-wire-connection.jpg?direct&700 |}} - Соедините шлейфы с Troyka-модулями. Troyka-Stepper: 5 пин — step, 6 пин — direction, 7 пин — enable. Troyka-Реле — 8 пин. {{ :projects:photo-turntable:connection.png?direct& |}} - Слегка отшлифуйте большое отверстие в корпусе столика и два маленьких круга мелкой шкуркой. Немного смажьте отверстие смазкой. Возьмите большой акриловый круг с тремя отверстиями под винт. С помощью сверла или крестовой отвёртки снимите в отверстиях фаску под винты с потайной головкой. Вставьте винты M3×25 с потайной головкой в отверстия и наденьте на них два маленьких круга. Переверните столик, в большое отверстие проденьте получившийся бутерброд и наденьте сверху большую шестерёнку. Затяните винты гайками. {{ :projects:photo-turntable:rotor-assembling.jpg?direct&700 |}} - Прикрутите к маленькой шестерёнке втулку мотора винтами M3×10. {{ :projects:photo-turntable:shaft-connection.jpg?direct&700 |}} - Установите шаговый мотор в предназначенное для него отверстие валом вниз. Зафиксируйте мотор одним винтом M3×15 так, чтобы он мог с натяжкой ходить в отверстии. {{ :projects:photo-turntable:add-motor.jpg?direct&700 |}} - Наденьте на вал мотора маленькую шестерёнку и отрегулируйте положение мотора таким образом, чтобы шестерёнки были прижаты друг к другу. Придерживая мотор, снимите маленькую шестерёнку и окончательно закрепите мотор в нужном положении винтами. {{ :projects:photo-turntable:motor-fatality.jpg?direct&700 |}} - Закрепите маленькую шестерёнку на валу мотора на высоте большой шестерёнки при помощи шестигранного штифтового ключа, идущего в комплекте с втулкой. {{ :projects:photo-turntable:small-gear-connection.jpg?direct&700 |}} - Соедините провода мотора с колодками «1234» Troyka-Steppera. Белый и жёлтый провода мотора нам не понадобятся, ведь мы используем униполярный шаговый двигатель в биполярном режиме. Поэтому их можно просто откусить и заизолировать. {{ :projects:photo-turntable:motor-connect.jpg?direct&700 |}} - Необходимо прикрутить провода, отвечающие за автоспуск к колодкам Troyka-Реле. Провода нужно присоединить к контакту «COM» и «NO». {{ :projects:photo-turntable:relay-connection.jpg?direct&700 |}} - Другой конец этих проводов идёт в фотоаппарат, к пинам «Земля» и «Затвор». Конструкция ответной части может быть разной. Это может быть как 2,5 мм джэк, так и разъём N3 Cannon (наш случай). О том как подключить эти провода к нужному вам штекеру лучше почитать на [[http://canon.ucoz.com/publ/samodelnyj_trosik_dlja_canon/1-1-0-61|специализированных сайтах]]. Мы просто воспользовались наконечником «мама» от провода «мама-папа». Схема соединения к реле должна быть такой: {{ :projects:photo-turntable:photo-connection.jpg?direct& |}} Оставшийся контакт — автоматическая фокусировка. Мы решили его не использовать. - Готово! Теперь наш вращающийся столик выглядит вот так: {{ :projects:photo-turntable:turntable-top.jpg?direct&700 |}} {{ :projects:photo-turntable:turntable-bottom.jpg?direct&700 |}} ===== Исходный код ===== // Характеристика двигателя, // количество шагов на один оборот вала #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) { ; } } ===== Демонстрация работы устройства ===== {{youtube>eRLrCk5RlPs?large}} Посмотреть результат работы устройства можно на сайте [[https://megavisor.com/en/view/fd2c44c1-16aa-46c9-a1d3-6a06d0bb30a1|megavisor.com]] ===== Что можно сделать ещё? ===== * Для более плавной работы устройства полезно было бы увеличить передаточный коэффициент шестерёнок, увеличив его, к примеру, до 10 к 1. Если захочется это сделать, вам очень поможет скрипт для генерации шестерёнок с сайта [[http://www.thingiverse.com/thing:829|thingewerse.com]]. * Можно добавить настройку количества кадров и скорости вращения двигателя перед каждой съёмкой. Для этого понадобится [[amp>product/troyka-potentiometer?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|потенциометр]], пара [[amp>product/troyka-button?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|кнопок]] и [[amp>product/troyka-quad-display?utm_source=proj&utm_campaign=phototurntable&utm_medium=wiki|четырёхразрядный индикатор]]. * Мы не использовали автоматическую фокусировку. Фокусировка производилась перед началом съёмки и далее не менялась. Чтобы перед каждым снимком производилась автоматическая фокусировка, можно добавить ещё одно реле. * Добавив к столику web-камеру и лазерный модуль-линию, можно сделать [[http://habrahabr.ru/post/172317/|3D-сканер]].