1

Тема: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Для многих фотолюбителей  актуальна проблема приобретения автоматической панорамной головки.Цена заоблачная. Поэтому, вариант самостоятельного изготовления, с использованием б/у принтеров весьма привлекателен. Я взялся бы изготовить образец рученьками . Только мозгов маловато, понять, как будет выглядеть схема и программа для управления панорамной головкой с использованием Freeduino 2013 и двигателей от принтера LJ1200 - M49SP-2K  7,5°step mitsumi  Микросхемы-драйверы оттуда же - AN8495SB
Логика процесса съёмки:
1)Включение(фотик смотрит вниз под углом 45°)
2)Поворот площадки по горизонтали на 30°
3)Подача сигнала(аналог включателя)на спусковую кнопку
  второй и третий пункт повторяется 12 раз
4)Поворот фотоаппарата на угол 45° (фотик смотрит горизонтально)
  второй и третий пункт повторяется 12 раз
5)Поворот фотоаппарата на угол 45°(фотик смотрит вверх под углом 45°)
  второй и третий пункт повторяется 12 раз
6)Поворот фотоаппарата на угол 45°(фотик смотрит вверх под углом 90°)
3)Подача сигнала(аналог включателя)на спусковую кнопку
7)Возврат в исходное положение(поворот фотоаппарата вниз под углом 45°)
8)автовыключение схемы.


ВАЖНО: временные интервалы должны регулироваться(если освещения мало,выдержка
увеличивается).
Сигнал на съёмку должен подаваться,когда фотик стопудово остановился
(что бы не было смазанных фот)
Питание 12 вольт(аккум.от бесперебойника)

2

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Сложности вижу только в наличии прямых рук, что бы всё собрать из груды железа ))
И еще, чем на кнопку нажимать?
Проще, наверное, на рулевых машинках сделать... Там известны начало, конец и середина. Наклон фотика сделать точно на рулевой машинке.
Горизонтальный поворот - на шаговом моторе. Нажатие кнопки для съемки - тоже рулевой машинкой или соленоидом.
Итого имеем необходимость управления четырьмя моторами. Это всё можно решить с помощью стандартной платы расширения.

Напишите точно, какие моторы и как будете устанавливать, а я помогу запрограммировать...

3

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Irkutyanin пишет:

Сложности вижу только в наличии прямых рук, что бы всё собрать из груды железа ))

Напишите точно, какие моторы и как будете устанавливать, а я помогу запрограммировать...

Отвечаю по порядку :
1)физически на кнопку нажимать не надо, надо чтобы был выход на котором бы появлялось напряжение 5v или пара работающая, как нормально открытый контакт. Кенон предполагает дистанционное управление по USB, подачей 5v по шинам питания.
2)макет головы у меня уже собран, по размерам для Canon ixus 65. Двигатели шаговые на поворот и на подъём ф-аппарата. Шестерни на редукторе 17 и 46 зубьев, передаточное число получается-2,705882352941176.Есть ещё 2 двигателя от принтера , есть платы от принтера с микросхемами драйвера ШД. Схемы и какие есть у меня данные прилагаю в папке http://yadi.sk/d/mKW8vvR9EUdyQ  у меня на Я-диске.
У меня трудность такая надо попробовать согласовать эти 2 двигателя с драйверами и фридуино уно и конечно написать программу по изложенному выше алгоритму.
Руки не совсем вроде кривые, а вот мозги плесневеют. Вручную сделанные мои панорамы можно посмотреть вот здесь: http://yadi.sk/d/FoNimGTN4QLPc   ,тут же есть и прога которой удобно смотреть.

4 (2014-01-30 08:53:46 отредактировано Irkutyanin)

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Ок, сейчас посмотрю... Почему то уведомление не пришло об ответе...

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

По алгоритму вопрос: Правильно я понял принцип работы? Включаем фотик и крутим его на 360 градусов через каждые 30 градусов делая снимок. Затем приподнимаем и повторяем цикл?

5

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Нет датчиков нету, потому как не знаю, какие должны быть! Если просто микрики -не проблема. Алгоритм понял верно , только упустил - в положении зенита фотик должен сделать последний снимок. И вернуться в исходное. Вот ссылка на видео : рабочая голова, только сделанная чисто на механике, поэтому весьма отказонеустойчивая: http://yadi.sk/d/r6ORkCq4Gy8XN

6

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Нужны будут микрики на горизонталь и на вертикаль.
Для включения фотоаппарата какой длительности надо импульс 5 вольт?
Для эмуляции нажатия кнопки съемки какая должна быть длительность импульса?

7

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Насчёт микриков-концевичков , это без проблем устанавливается! ВКЛЮЧЕНИЕ  аппарата-вручную ,а вот сигнал на съёмку - программно.Длительность импульса - не знаю. ручками нажал,отпустил и всё. описание программы для управления фотиками Canon находится вот тут: http://chdk.clan.su/faq/4-1 , я про длительность ничего не нашёл (или не смог, по причине тупорылости :( )  Весь процесс съёмки панорамы должен уложиться в 1,5-2,0 мин.

8

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Понятненько ))) Так как у меня есть только Motor Shield и нет таких микросхем и моторов, то получился "сферический конь в вакууме" ))

// Надо подцепить подтягивающие резисторы внешние между gnd и 14 и 15 пинами (это 0 и 1 analog in)
// кнопки включаем между 5+ и 14 и 15 пинами, кнопки нормально разомкнуты
// this code is public domain, enjoy!

#include <AFMotor.h>

// Connect a stepper motor with 48 steps per revolution (7.5 degree)
// to motor port #2 (M3 and M4)
AF_Stepper motor2(48, 1);
AF_Stepper motor3(48, 2);
int kon2 = 14; // на какой пин концевик горизонтали (это 0 аналоговый пин)
int kon3 = 15; // на какой пин концевик вертикали (1 аналоговый пин)
int b_power = 16; //пин сигнал включения фотоаппарата (2 аналоговый пин)
int b_start = 17; // пин сигнал съемки (3 аналоговый пин)
int state2 = 0; //начальное положение
int state3 = 0; // то же самое

void setup() {
  pinMode(kon2, INPUT); //концевик горизонтали
  pinMode(kon3, INPUT); // концевик вертикали
  pinMode(b_power, OUTPUT); // говорим ардуине, что этим пином включаем фотик
  pinMode(b_start, OUTPUT); // этим пином будем фотографировать
  digitalWrite(b_power, LOW); //на выходе для включения фотика 0
  digitalWrite(b_start, LOW); //на выходе для кнопки спуска 0

  motor2.setSpeed(10);  // 10 rpm   скорость вращения ротора задаем
  motor3.setSpeed(10);
}

void loop() {
 
  start();
  digitalWrite(b_power, HIGH); //включаем фотик. Считаем, что + должен быть всегда, пока фотик включен
  //delay(300); //если нужен только импульс, то расскоментируем строки. Задержка в миллисекундах
  // digitalWrite(b_power, LOW); //и эту тоже
  foto(); // делаем снимок
  // поворачиваем и фотаем 12 раз по 30 градусов
  overshtag();
  vozvrat();// возвращаем по горизонту в начальное положение
  motor3.step(6, FORWARD, SINGLE); //задираем фотик на 45 градусов или на 6 шагов
  foto();
  overshtag();
  vozvrat();
  motor3.step(6, FORWARD, SINGLE); //задираем фотик на 45 градусов или на 6 шагов
  foto();
  overshtag();
  vozvrat();
  motor3.step(6, FORWARD, SINGLE); //задираем фотик на 45 градусов или на 6 шагов
  foto();
  start(); //возврат в исходное положение
 
}
void start() {
  // считываем положения концевиков, сначала горизонт
  state2 = digitalRead(kon2);
  while(state2 == LOW) {
    //концевик не нажат, крутим мотор против часовой стрелки
    motor2.step(1, BACKWARD, SINGLE); 
    state2 = digitalRead(kon2);
  }
  //теперь вертикаль
  state3 = digitalRead(kon3);
  while(state3 == LOW) {
    motor3.step(1, BACKWARD, SINGLE);
    state3 = digitalRead(kon3);
  }
 
}
void foto() {
digitalWrite(b_start, HIGH); // делаем импульс 300 миллисекунд, имитируем нажатие кнопки
  delay(300);
  digitalWrite(b_start, LOW);
  delay(3000); // три секунды фотику на настройку резкости и собственно снимок
}
void overshtag(){
  // крутим по горизонтали на 4 шага и делаем фото(48 шагов на оборот делим на 4), если есть редуктор, корректируем
  for (int i=0; i <= 11; i++){
  motor2.step(4, FORWARD, SINGLE); // подпрограмма поворота по горизонтали на 30 градусов
  digitalWrite(b_start, HIGH); // делаем импульс 300 миллисекунд, имитируем нажатие кнопки
  delay(300);
  digitalWrite(b_start, LOW);
  delay(3000); // три секунды фотику на настройку резкости и собственно снимок
  }
}
void vozvrat(){
  state2 = digitalRead(kon2);
  while(state2 == LOW) {
    //концевик не нажат, крутим мотор против часовой стрелки
    motor2.step(1, BACKWARD, SINGLE); 
    state2 = digitalRead(kon2);
  }
}

9

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Вот это подвижка! Теперь когда есть программа, можно заказать и Фридуино- Уно . Потом буду тренироваться проверять  в реале! Большое Вам СПАСИБО за труд . Теперь надо какое то время для реализации!

10 (2014-01-31 10:13:10 отредактировано Irkutyanin)

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Мотор Шилд заодно закажите, тогда всё проще будет делать, чем на родных микросхемах от принтера

Nano5 и Motor Shield v3 с крепежом под Nano. Дешево и сердито получится.

11

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

А у Motor Shield v3 токов хватит для движка по вертикали?(там пишут 0.6а) , он неплохо кушает в режиме удержания (1,2 а.). На горизонтальном(0,24а.) мощность удержания минимальная. Или использовать для вертикального подъёма другой , менее прожорливый двигатель,  но через редуктор?Тогда в программе придётся изменить количество шагов и всё.  Если заказывать Motor Shield v3 с крепежом под Nano,  то Nano5 нужно заказывать со штырьками?

12

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Да, со штырьками. Моторчик здесь же есть... У которого с редуктором 2048 шагов на оборот. Можно для моторчиков использовать внешнее питание. Напрямую от аккумулятора, а не через ардуину, тогда выдержит нормально.

13

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Понял,  спасибо! Потом ещё наверняка появятся вопросы, можно будет задавать? моя почта sat--s@mail.ru зовут Стас.

14

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Можно ))
irkrexx@mail.ru

15

Re: Как из Freeduino 2013 и принтера LJ 1200 сделать панорамную головку

Вот вам ссылки, всё уже сделано и я тоже это сделал, цена до 2000р за всё кроме дуино.  http://kitevlad.ru/forum/14-214-2   сообщение 39, вот ссылка на видео работы  моего рига http://www.youtube.com/watch?v=ouljO59ftzs, если нужен скеч то скину, но лучше скеч со спид серво, плавнее всё движется.