A A A A Автор Тема: Canon: серия кадров с разными экспозициями  (Прочитано 12896 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
C300D работает с файлом test.bot !!!
О как! Вот-так новость!

Фотик затыкается на 9 кадре с надписью Бизи на индикаторе и ERROR: Ser Tv=4 ->? Unknown STI на мониторе.
После этого скрипт продолжает выполняться. Бизи не исчезает. Выключение питания помогает, как понял, не всегда.
Так, завал внутри слоя Microsoft. Слушай, а сходи на сайт Canon, поищи самых свежих WIA-драйверов для своей камеры. Может быть поможет.
Кстати, а это первый set Tv ? А если не первый, то что с предыдущими?

Попробуй вот чего (если время есть). Надо определиться с тремя цифрами.
1) Время между checkpoint'ами. По смыслу в них нужно поставить кадров примерно столько, сколько у тебя влезает во внутренний буфер камеры. Я бы даже на 1-2 уменьшил. Теперь врему. Идеально, чтобы у тебя между checkpoint'ами влезала съемка всех этих кадров + запись всего. Может быть потом удастся сократить, но пусть сначала заработает.

2) Время ShotTime. Ставим самую маленькую выдержку на фотике, нажимаем и держим кнопку спуска. Фотоаппарат делает щелк-щелк-щелк, потом буфер заполняется и фотик продолжает делать "щелк", но уже с паузами между съемкой. Время этих пауз (с некоторым запасом сверху) -- это грубая верхняя граница на ShotTime. Потом от нее можно попробовать вниз спуститься.

С другой стороны ограничение такое. У меня в доке к фотику написано: серийная съемка 2.2 кадра в секунду. 1/2.2*1000 = 450 ms. Это нижняя граница ShotTime.

Для этих тестов нужны камера и секундомер.

3) После того как все заработает на коротких выдержках можно попробовать с длинными выдержками (больше 1 секунды) и ShotMul=1. Если на длинных сериях начнет затыкаться -- надо увеличивать ShotMul. Помним также, что при аппаратном подавлении шума Canon делает съемку темнового кадра для вычитания, соответственно, если включено, то нужно экспериментировать, начиная от ShotMul=2.

И еще вопрос. На сколько кадров у 300D хватает внутреннего буфера?


Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 096
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Фотик затыкается на 9 кадре с надписью Бизи на индикаторе и ERROR: Ser Tv=4 ->? Unknown STI на мониторе.
После этого скрипт продолжает выполняться. Бизи не исчезает. Выключение питания помогает, как понял, не всегда.
Кстати, а это первый set Tv ? А если не первый, то что с предыдущими?

Вроде первый, как в test.bot. Не очень понимаю отличие set Tv от shot tv

Наблюл, что 300D делает только 6 кадров, при любой комбинации shotmul и checkpoint. Причем затвор срабатывает 7 раз. Последний уже на фоне мигающего busy. После завершения скрипта ещеьодин щелчек затвора. busy перестает мигать, но фотик виснет при нажатии любой клавиши и питание не выключается. только открытием крышки батарейного отсека.

Еще если сделать кадров меньше 6 ти, то скрипт завершается нормально., но последующий запуск будет неудачным - что-то там с неудачным запуском сессии.


Цитата
Попробуй вот чего (если время есть). Надо определиться с тремя цифрами.
Ставил задержку между кадрами shotmul=8 - один фиг
Цитата
И еще вопрос. На сколько кадров у 300D хватает внутреннего буфера?
А черт знает! 3 кадра моментально, потом 2-3 с задержкой 2 сек, а последующие только через 6.

В ПСЗ2006 кадров 30 или 40 удалось только сделать

А 5МБ WIA через GPRS не выкачать :(

[/quote]
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Грин

  • Гость
Но вот вот эти шаманские танцы владельцев К-350д хоть убей не пойму. Чем же ДСЛРфокус-то не угодил? ???
Да и прочие фотики в Максиме стреляют на раз.
Странно... ;D
Чем не угодил: все эти "фокусы" и максимы ориентированы на съемку с длинными выдержками в более-менее неспешном темпе. Задержка на пару секунд -- не проблема ни разу.
 Кстати, народ преподъёмом зеркала интересовался (который у меня работает) - при нём о какой скорострельности речь вообще? ;D

Это не так!
 Когда я в ДЛСР снимаю флэты с выдержкой десятые-сотые доли секунды, мой Кенон строчит как пулемёт. И 20-30 кадров безо всяких задержек слиты в ноут, простенький, кстати.
  Кстати, народ преподъёмом зеркала интересовался (который у меня работает) - при нём о какой скорострельности речь вообще? ;D
Цитата
Там нужны выдержки в 1/250-1/1000, затем нужно переходить к длинным выдержкам (я планирую до 2 секунд). И к третьему контакту возвращаться на короткие выдержки на другую сторону хромосферы. Этого в Максиме нет, а Фокус у меня просто не заработал.
Да? раздел Секвиенс в Максиме смотрели, нет там такого? Вот из любопытства сегодня посмотрю... ;D
 Ну , а Фокус... что сказать? - у всех работает и делает всё как надо. ;)

Оффлайн Павел Бахтинов

  • *****
  • Сообщений: 2 500
  • Благодарностей: 111
    • Сообщения от Павел Бахтинов
    • Искусство астрофотографии
Как я понимаю, нужно включить руками опцию предварительного подъема в Custom-функциях (они из API только на чтение, причем для каждой камеры свои). И дальше надо делать две команды: одну с короткой выдержкой для обработки подъема, вторая -- собственно съемка. В скрипте будет что-то вроде:

shot Tv=1/1000
shot Tv=1/10
Попробовал подобное с Canon-350D. К сожалению, такой фокус не проходит: при включенной опции предподъема зеркала камера никак не реагирует на команду shot. Вероятно, это особенность прошивки таких камер, недаром в других программах (например MaxIm DL) съемка с предподъемом реализована подачей внешнего электрического сигнала управления (напр., через линию RTS свободного COM-порта). Однако в существующей версии DSLRobot камера все время находится в состоянии busy (даже в процессе выполнения команд типа wait user и подобных), и на электрические сигналы не реагирует тоже (как и на нажатие кнопки затвора вручную).
Таким образом, для организации съемки с предподъемом зеркала на Canon-350D необходимо сделать две вещи: добавить еще одну команду, которая выдавала бы импульс положительной полярности на линию RTS порта COMn, и каким-то образом выводить на это время камеру из состояния busy (во всяком случае, в Максиме это как-то реализовано).
Такая доработка резко повысила бы ценность программы DSLRobot для съемки предстоящего затмения, поскольку камер таких много, а уменьшение вибраций при работе со сравнительно длиннофокусной оптикой на монтировках облегченного "походного" класса - насущная необходимость.

Оффлайн Nik-pax

  • Новичок
  • *
  • Сообщений: 1
  • Благодарностей: 0
    • Сообщения от Nik-pax
Дядя Вова
Не знаю, как для других камер, но для Canon 300D, можно сделать серию кадров с различными выдержками с помощью  DSLR Remote Pro не используя брекетинг и прочих танцев с бубнами.

1. Ставим Васину прошивку и устанавливаем для одиночных кадров предподъем зеркала 1.5 сек.
2. Устанавливаем DSLR Remote Pro, в папке DSLRRemoteTest есть файл DSLRRemoteTest.exe.
3. Пишем для него простейший бат-файл, типа:

DSLRRemoteTest -s 48
DSLRRemoteTest -s 26
....................
....................

число определяет выдержку,т.е. 0=bulb; 1=30сек. и т.д.

4. На камере ставим режим "М"
5. Запускаем DSLR Remote Pro
6. запускаем бат-файл
и все камера щелкает в соответствии с записанным алгоритмом.
За 2 мин. у меня получается всего 23 кадра, но зато ничего не виснет и трогать не надо фотоаппарат. Можно наслаждаться затмением. Больше кадров просто не успевает сделать, т.к. скорость самого Canon 300D очень маленькая и буфер быстро заполняется.

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Попробовал подобное с Canon-350D. К сожалению, такой фокус не проходит: при включенной опции предподъема зеркала камера никак не реагирует на команду shot.

Таким образом, для организации съемки с предподъемом зеркала на Canon-350D необходимо сделать две вещи: добавить еще одну команду, которая выдавала бы импульс положительной полярности на линию RTS порта COMn,
Сделать можно. Но тут нужна помощь клуба. Открыть COM-порт -- не бином Ньютона, но что ему дальше надо сказать. Чего писать туда надо, чтобы добиться искомого импульса? Подскажите, кто знает.


Однако в существующей версии DSLRobot камера все время находится в состоянии busy (даже в процессе выполнения команд типа wait user и подобных),
Это не бага, а фича. :)
Я при первом обращении к камере блокирую управление. Этого можно не делать. Но тогда это придется делать на каждый снимок -- больше команд, больше вероятность, что камера сойдет с ума. Пожалуй, сделаю я возможность блокировать камеру по желанию пользователя. Кто хочет -- блокирует сразу, кто нет -- не блокирует вообще.

Вот бага то, что после серии кадров камера не всегда в разблокированное состояние возвращается. В доке у Canon про это написано в духе: "такова жизнь, выключите и включите камеру". :(

И еще. Новые камеры, которые работают по PTP блокируют интерфейс вообще при подключении к компьютеру. Безо всяких команд. И вот что делать в такой ситуации может помочь только "вскрытие", т.е. много тестов на реальном железе. Боюсь, что это за оставшееся время не осилим.

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Не знаю, как для других камер, но для Canon 300D, можно сделать серию кадров с различными выдержками с помощью  DSLR Remote Pro не используя брекетинг и прочих танцев с бубнами.
...
2. Устанавливаем DSLR Remote Pro, в папке DSLRRemoteTest есть файл DSLRRemoteTest.exe.
3. Пишем для него простейший бат-файл, типа:

DSLRRemoteTest -s 48
DSLRRemoteTest -s 26
Я с этого начал. Во-первых, показалось что медленно (в прочем, если хочется игр с преподъемом, то это по фигу). Во-вторых, камера 20D висла точно так же.

число определяет выдержку,т.е. 0=bulb; 1=30сек. и т.д.
Вообще у Canon коды чуть хитрее (если надо, могу выложить доку). Или это особенность Васиной прошивки? Кстати, может кто-то для темных программистов пояснить, что за зверь -- "Васина прошивка"?

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 096
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Кстати, может кто-то для темных программистов пояснить, что за зверь -- "Васина прошивка"?
http://satinfo.narod.ru/
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Павел Бахтинов

  • *****
  • Сообщений: 2 500
  • Благодарностей: 111
    • Сообщения от Павел Бахтинов
    • Искусство астрофотографии
Сделать можно. Но тут нужна помощь клуба. Открыть COM-порт -- не бином Ньютона, но что ему дальше надо сказать. Чего писать туда надо, чтобы добиться искомого импульса? Подскажите, кто знает.
Я сам не программист...  :-\
Нашел вот на домашнем компе только пример под Delphi (см. вложение) - это у нас на работе писали для открытия COM-порта для обычного последовательного обмена, но с принудительной установкой в определенное состояние сигналов квитирования RTS, DTR (от них питалась оптопара развязки в подключенном к порту приборе).
Состояние сигналов квитирования (и еще каких-то параметров порта) определяется полем DCB.Flags (строка №49 в примере). Какой именно бит отвечает за RTS - не помню :( , завтра на работе постараюсь выяснить.

Пожалуй, сделаю я возможность блокировать камеру по желанию пользователя. Кто хочет -- блокирует сразу, кто нет -- не блокирует вообще.
Да, это то, что надо.

Оффлайн ctac

  • Первооткрыватель астероидов и сверхновых
  • Обозреватель
  • *****
  • Сообщений: 7 789
  • Благодарностей: 266
  • Привет, со снежных вершин в июле... Короткий Стас
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от ctac
    • НЦ "Ка-Дар"
« Последнее редактирование: 27 Июл 2008 [17:20:21] от ctac »
http://vk.com/astro.nomy - новости наблюдательной астрономии

                 Ясного неба и удачи в наблюдениях!

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Всех приветствую.

Выложил обновление DSLRobot, если это кому-то еще интересно. Почему сомнения -- лично про себя не уверен, что за 2 дня до отъезда повелся бы на какую-то непонятную программу. Но на всякий случай выкладываю.

Что изменилось.

1) Существенно изменена работа с сигналами от камеры. Это сильно полечило стабильность новых камер на PTP-протоколе -- там (счастье!) нашлись все необходимые сигналы. Стабильность старых камер с legacy-протоколом тоже улучшилось, но... ценой изрядного замедления съемки. Как я писал, сигналы тут приходят не все, а те что приходят -- приходят поздно.

2) Я сделал таки возможность детального протоколирования информации об обмене с камерой. Включается ключем -log в командной строке. Очень помогает при разборе полетов.

3) Несколько переделана логика блокирования интерфейса. К сожалению, совсем без него не получается. PTP-камеры блокируются сразу при включении в комп, legacy -- не блокируются, но если их не заблокировать, перестают приниматься параметры камеры. Говоришь ты, установи Tv=1/30, а она тебе -- угу, приняли, но Tv, как была 1/1000, так и осталась. Причем иногда как-то срабатывает. Но примерно один раз из 10.

4) Появилась новая настройка BufSize -- число кадров, которое помещается во внутренней памяти камеры. Получить его из API нельзя, переполнять крайне нежелательно, а снимать по одному кадру -- медленно. Вот и приходится побираться. Счастье еще, что камера в искателе это число показывает.

Собственно, можно брать и пробовать.

Пару слов про сравнение с DSL Remote Pro. После последних изменений в сигналах, быстродействие DSLRobot на старых камерах изрядно упало (правда тогда оно работало быстро, но ломалось через раз). Я бы сказал, что по скорострельности сейчас мой робот и DSL Remote Pro довольно близки. В общем, если нет желания устраивать лихие скачки по выдержкам, и вполне устраивает работа с длинным линейным брекетингом (15 ступеней от длинных выдержек к коротким), то надо брать инструкцию Стаса Короткого и не мудрствовать.

Хотя надо заметить, что проблемы со стабильностью на старых камерах (например, на моей 20D) есть и там, и там. Виснет в самый неподходящий момент и почему -- непонятно.

Отдельное слово про DSLRRemoteTest.exe. В принципе работает, но бывает что и кадры пропускает, и камеру вешает. Тоже та еще штучка.

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Я сам не программист...  :-\
Все равно уважаю! ;)

...это у нас на работе писали для открытия COM-порта для обычного последовательного обмена, но с принудительной установкой в определенное состояние сигналов квитирования RTS, DTR ...
Посмотрел пример и документацию по этим вызовам в Windows API -- надо сказать, что структура данных DCB несколько отличается. Вернее даже не сама структура, а ее раскладка. Я прицепил архив со страничкой документации про это DCB, может кто понимает, разберется, чего ей говорить?


Пожалуй, сделаю я возможность блокировать камеру по желанию пользователя. Кто хочет -- блокирует сразу, кто нет -- не блокирует вообще.
Да, это то, что надо.
Не вышло (почему -- описал выше). Сейчас сделано так: на время выполнения команд set и shot интерфейс блокируется напрочь. На время всех wait -- блокировка снимается. Если будет работа через COM, можно будет присобачить отключение блокировки и сюда.

Оффлайн Aurorыч

  • *****
  • Сообщений: 8 424
  • Благодарностей: 561
    • Instagram: aurorbor
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Aurorыч
    • The world of Boris Dmitriev Photography
The world of Boris Dmitriev Photography
АПОЛАР-150, AZ-EQ6GT PRO

Оффлайн Павел Бахтинов

  • *****
  • Сообщений: 2 500
  • Благодарностей: 111
    • Сообщения от Павел Бахтинов
    • Искусство астрофотографии
...это у нас на работе писали для открытия COM-порта для обычного последовательного обмена, но с принудительной установкой в определенное состояние сигналов квитирования RTS, DTR ...
Посмотрел пример и документацию по этим вызовам в Windows API -- надо сказать, что структура данных DCB несколько отличается. Вернее даже не сама структура, а ее раскладка. Я прицепил архив со страничкой документации про это DCB, может кто понимает, разберется, чего ей говорить?
Простейшие опыты показали, что RTS устанавливается с помощью RTS_CONTROL_ENABLE ;)
В Delphi это выглядит так:
.....
const
  dcb_Binary              = $00000001;
  dcb_ParityCheck         = $00000002;
  dcb_OutxCtsFlow         = $00000004;
  dcb_OutxDsrFlow         = $00000008;
  dcb_DtrControlMask      = $00000030;
  dcb_DtrControlDisable   = $00000000;
  dcb_DtrControlEnable    = $00000010;
  dcb_DtrControlHandshake = $00000020;
  dcb_DsrSensivity        = $00000040;
  dcb_TXContinueOnXoff    = $00000080;
  dcb_OutX                = $00000100;
  dcb_InX                 = $00000200;
  dcb_ErrorChar           = $00000400;
  dcb_NullStrip           = $00000800;
  dcb_RtsControlMask      = $00003000;
  dcb_RtsControlDisable   = $00000000;
  dcb_RtsControlEnable    = $00001000;
  dcb_RtsControlHandshake = $00002000;
  dcb_RtsControlToggle    = $00003000;
  dcb_AbortOnError        = $00004000;
  dcb_Reserveds           = $FFFF8000;
....
// Включение RTS (нажатие на кнопку затвора)
  DCB.Flags:=DCB.Flags or dcb_RtsControlEnable;
  SetCommState(com,DCB);
....
// Выключение RTS
  DCB.Flags:=DCB.Flags and (not dcb_RtsControlEnable);
  SetCommState(com,DCB);

Сейчас сделано так: на время выполнения команд set и shot интерфейс блокируется напрочь. На время всех wait -- блокировка снимается. Если будет работа через COM, можно будет присобачить отключение блокировки и сюда.
Это приемлемый вариант.

Пару слов про сравнение с DSL Remote Pro.
... если нет желания устраивать лихие скачки по выдержкам, и вполне устраивает работа с длинным линейным брекетингом (15 ступеней от длинных выдержек к коротким), то надо брать инструкцию Стаса Короткого и не мудрствовать.
Тогда уж лучше МаксимДЛ, где поддерживается и произвольный ряд выдержек, и предподъем зеркала (на длинных фокусах последний действительно нужен!). Но предподъем в Максиме начинается только после записи предыдущего кадра на флэшку. Если бы с помощью DSLRobot удалось записывать предыдущий снимок в процессе цикла предподъема, число полученных за время полной фазы кадров увеличилось бы чуть ли не вдвое!

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Павел, запрограммировал.

На сайте и в доках этого пока нет, но выложен отдельный архив с экспериментальной версией DSLRobot.

В командной строке он принимает параметр -com n, где n -- задает номер COM-порта.
Если это задано, то в скрипте можно использовать команду shotcom.
По ней я пытаюсь выставить на порт сначала включение RTS, затем жду 250 ms и выключаю.
При необходимости время ожидания можно задать с помощью команды set shotcom=<время в мс>.
Т.е. что-то вроде:

set shotcom=250
...
shotcom
...
shotcom
и т.д.

Во-первых, это правильная логика? Проверить вживую я не могу.

Во-вторых, я сейчас даже не могу запустить -- без камеры не стартует, а камеры под руками нет. Т.е. фактически проверил что все компилируется и открывается COM. И все...  :P

Реальный запуск проверю завтра утром, но если есть возможность -- пустите на пробу. Вдруг... Вроде все вещи простые, и явных ошибок допускать негде.

Оффлайн Павел Бахтинов

  • *****
  • Сообщений: 2 500
  • Благодарностей: 111
    • Сообщения от Павел Бахтинов
    • Искусство астрофотографии
Спасибо, Дмитрий!
Пробовать буду уже на месте: сейчас "сижу на чемоданах", скоро на поезд. По прибытии в Новосибирск будет еще около суток на эксперименты ;) . Если не пойдет - тогда Максим, или вот это: http://www.moonglowtech.com/products/EclipseOrchestrator/index.shtml (спасибо Антону Санину за ссылку).

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Чуть подправил программу. Все-таки одну маленькую, но неприятную ошибку с установкой параметров я нашел. Пока выложен только архив с COM. Сейчас подправлю документацию -- выложу все остальное.

Бросил в личку свой мобильный телефон на всякий случай.

А где в Новосибирске обитать будете?

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
На сайте обновлена документация к DSLRobot и выложены свежие версии программы с поддержкой (неопробованной) управления через COM.

Сейчас буду изучать EclipseOrchestrant. То что написано про него -- очень вкусно.

Оффлайн dmitryP

  • *****
  • Сообщений: 718
  • Благодарностей: 12
    • Сообщения от dmitryP
Спасибо, Дмитрий!
Если не пойдет - тогда Максим, или вот это: http://www.moonglowtech.com/products/EclipseOrchestrator/index.shtml (спасибо Антону Санину за ссылку).
Вот спасибо так спасибо!
Хоть это и не очень приятно мне как разработчику, но этот EclipseOrchestrator делает все что нужно и еще сверх того. Немного (на мой взгляд) странный формат скрипта, но это все с запасом окупается функциональностью!

И работает. Правда на быстрой-быстрой съемке проблемы с камерамы все же есть. Но у кого их нет.

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 096
  • Благодарностей: 97
    • Сообщения от Дядя Вова
этот EclipseOrchestrator делает все что нужно и еще сверх того. Немного (на мой взгляд) странный формат скрипта, но это все с запасом окупается функциональностью!

И работает. Правда на быстрой-быстрой съемке проблемы с камерамы все же есть. Но у кого их нет.

Да, неплохо!
Только 1) надо точно указать в скрипте название камеры (например скопировать из окошка установки оной) 2) для 300D интервал между кадрами должен быть не менее 7 сек.


(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE