Измерение времени задержки срабатывания затвора Nikon D300s

Здесь я расскажу о том, как я измерял задержку затвора своего фотоаппарата. Если вы не знаете, что это такое, вероятно, оно вам и не надо. Если же знаете и интересуетесь, возможно, статья окажется для вас полезной. Я старался описывать всё так, чтобы измерения можно было легко повторить для другого фотоаппарата.

Хотелось бы выразить благодарность чуваку из Бельгии по имени Frans, более известному под ником fotoopa. Он — маньяк (в хорошем смысле слова). Хотя его методами измерения я не пользовался, но много интересного почерпнул из его фотоблога. Загляните туда, не пожалеете (даже если не знаете, что такое задержка затвора).

Зачем?

Характеристикой любого фотоаппарата является время задержки срабатывания затвора (shutter release time lag или просто shutter lag), то есть время, которое проходит с момента нажатия кнопки спуска до момента, когда затвор приходит в движение (и начинается собственно фиксация изображения). Значение этой характеристики весьма велико для цифромыльниц и встроенных в телефоны камер, в то время как для цифрозеркалок составляет только десятки миллисекунд. Однако даже такая незначительная задержка становится критичной при съёмке быстропротекающих процессов. В таких случаях спуск обычно производится не по нажатию кнопки фотографом, а по срабатыванию триггера, запускаемого сигналом от датчика света, звука, движения или какого-либо ещё. Когда производится съёмка полностью контролируемого процесса, например когда электронное устройство инициирует подачу капли воды, а затем включает триггер, чтобы заснять её падение, при настройке задержки срабатывания триггера задержка затвора должна быть учтена и вычтена из времени падения капли. Если же снимается неконтролируемый процесс (разряд молнии или полёт насекомого), возникает потребность свести задержку затвора к минимуму.

Разумеется, производители публикуют информацию о времени срабатывания затвора (так, для моего D300s оно заявлено 49 мс). Но, во-первых, некоторые любят приврать (в частности, упоминавшийся выше Frans повёлся на заявленную величину задержки в 10 мс и купил беззеркалку от Olympus, о чём впоследствии пожалел), а во-вторых, не сообщают, при каких настройках проводились измерения, из-за чего на практике добиться воспроизведения их результатов может быть проблематично.

Что?

Надо сказать, что на предмет измерения задержки затвора (и не только) существует международный стандарт ISO 15781. И ему я при измерении не следовал по двум причинам: во-первых, мне так было проще, а во-вторых, я измерял ту величину, которая для меня критична, а не ту, которую положено измерять. Дело в том, что стандарт определяет время задержки срабатывания затвора как время с момента полного нажатия кнопки спуска (при условии, что замер экспозиции и фокусировка автоматикой фотоаппарата уже выполнены) до того момента, когда затвор приходит в движение. Момент начала отсчёта меня устраивал, а вот завершения — нет, потому как меня интересовала в первую очередь съёмка со вспышкой. При синхронизации вспышки по передней шторке затвора она срабатывает в момент, когда затвор полностью откроется, и именно до этого момента я и проводил измерение.

В итоге ожидаемый результат должен быть больше корректно измеренного на время полного хода шторки. Оценить эту разницу можно по минимальной выдержке синхронизации вспышки, которая для D300s при укороченном импульсе составляет 1/320 с или 3,125 мс. Допустим, что 125 мкс отводится под урезанный импульс, стало быть, шторка открывается за 3 мс.

Как?

В случае D300s измерить задержку от отправки сигнала начала съёмки до включения вспышки не просто, а очень просто. В нём, как и в большинстве фотоаппаратов уровня выше начального, есть разъём для подключения проводного пульта и разъём для подключения внешней вспышки. Соответственно, алгоритм измерения в общих чертах следующий: посылаем сигнал, засекаем время, ждём замыкания синхроконтакта вспышки, фиксируем время.

Нужные для измерения разъёмы расположены рядом. Разъём для пульта у D300s 10-контактный, как у всех профессиональных моделей Nikon. У других моделей они другие, но в любом случае задействовано только три контакта: земля, половинное нажатие спуска и полное нажатие спуска. Для подключения вспышки есть стандартный разъём PC, двухконтактный. На моделях, где его нет, можно использовать контакты «горячего» башмака (центральный и крайний, самые большие; остальные, если они есть, служат для передачи данных и специфичны для поизводителя).

Разъёмы Nikon D300s
Разъёмы Nikon D300s

Для управления процессом я использовал Arduino, а конкретно — Arduino Nano 3.0. С тем же успехом подошла бы любая другая модель. Для моделей, основанных на контроллере ATMega 168 или 328 не потребуется никаких изменений в коде скетча (который приведён в конце статьи), для других — достаточно изменить номер контакта, соединённого с синхроконтактом для вспышки, и соответствующего ему прерывания.

Для соединения с разъёмом для пульта я разломал китайский пульт (два с полтиной бакса) и выпаял из него кабель. Общий провод (в моём случае — белого цвета) подключается к земле (GND) Arduino, провода половинного и полного нажатия спуска (соответственно жёлтый и красный) — к коллекторам транзисторов P2N2222. Эмиттеры этих транзисторов соединяются с землёй, а базы — через резисторы номиналом 1 кОм с цифровыми портами Arduino.

Подключение проводов
Подключение проводов

Разъёма PC у меня под рукой не нашлось, поэтому к его ободу я прицепил «крокодил», который соединил с землёй, а вместо штырька воткнул соединитель для макетной платы, другой конец коорого соединил с разъёмом Arduino, могущим служить источником прерывания.

Подключение к разъёму PC
Подключение к разъёму PC

В итоге работа всей установки происходила следующим образом. Сначала через транзистор замыкался на землю контакт половинного нажатия. Спустя 250 мс (камера была в режиме ручной фокусировки и ручной же экспозиции, так что это с запасом) через второй транзистор замыкался на землю контакт полного нажатия спуска и запоминалось текущее время. Ещё через 10 мс контакты размыкались и система давала камере 3 с «отдыха». Замыкание синхроконтакта вспышки фиксировалось по прерыванию, и прошедшее с момента засечки время в микросекундах выводилось через последовательный порт.

Всё это, конечно, было сделано довольно некрасиво, но поскольку задача была разовая, я не выпендривался.

И что?

Благодаря fotoopa я знал, что у Nikon D300 время задержки затвора зависит от настроек глубины цвета RAW. Если она выставлена в 14 бит, задержка оказывается едва ли не вдвое больше по сравнению с 12 битами. Эта зависимость, которой я не вижу логического объяснения, оказалась верна и для D300s.

В 14-битном режиме задержка затвора составила 94 с хвостиком миллисекунды (точнее, колебалась от 93,9 до 94,9 мс) и от изменения каких бы то ни было настроек не зависела. В 12-битном режиме задержка оказалась равна 52 мс (от 51,7 до 52,7 мс) и также не реагировала на изменение прочих настроек.

Чтобы найти способ уменьшить величину задержки, надо разобраться, что же собственно такого происходит между нажатием спуска и открытием затвора. В случае зеркалки это, конечно, подъём зеркала. Кроме того, в это же время закрывается диафрагма. Если эти процессы являются самыми длительными, то избавление от них должно было бы помочь.

Увы, это всё в теории. На практике оказалось, что предварительный подъём зеркала (в режиме MUP) и закрытие диафрагмы (нажатием кнопки предварительного просмотра вручную) никак на время задержки не влияют. Это значит, что либо эти два процесса происходят без обратной связи, и под них просто отведено фиксированное время, либо задержка обусловлена каким-то не учтённым мной процессом (например тем же, который увеличивает задержку при съёмке 14-битного RAW).

Кроме того, с целью добиться сокращения задержки я пробовал менять диафрагменное число, использовать полностью мануальный объектив и включать сохранение фотографий только в JPEG, — всё без какого бы то ни было результата, как положительного, так и отрицательного. Всё те же 52 мс.

Надо заметить, что 52 мс до срабатывания вспышки минус 3 мс хода шторки — это как раз заявленные производителем 49 мс. Такая точность удивляет и внушает уважение.

52 мс — это много или мало? Зависит от того, что снимаешь, конечно. Если пытаешься поймать в полёте какого-нибудь бражника с крейсерской скоростью под 20 м/с, то он за это время окажется в полуметре от того места, где потревожил датчик, то есть не то что вне зоны резкости, а вообще за пределами кадра.

Ну и вот…

Итого. Чтобы задержка не увеличивалась сверх меры, надо снимать 12-битные RAW. Способа уменьшить задержку, увы, не обнаружилось. При необходимости, видимо, придётся идти по стопам fotoopa и изобретать внешний затвор, а внутренний открывать предварительно в режиме ручной выдержки.

Радует, что Nikon таки не врёт по поводу ТТХ своих камер, по крайней мере профессиональных.

Ах, да, чуть не забыл!

enum {
  HALF_PRESS = 3,
  FULL_PRESS = 4,
  FLASH_TRIGGER = 2,
};
const int FLASH_TRIGGER_INT = 0;

volatile unsigned long start_time;

void setup() {
  pinMode(HALF_PRESS, OUTPUT);
  pinMode(FULL_PRESS, OUTPUT);
  digitalWrite(FULL_PRESS, LOW);
  digitalWrite(HALF_PRESS, LOW);
  pinMode(FLASH_TRIGGER, INPUT_PULLUP);
  Serial.begin(115200);
  attachInterrupt(FLASH_TRIGGER_INT, result, FALLING);
}

void loop() {
  delay(3000);
  measure();
}

void measure() {
  digitalWrite(HALF_PRESS, HIGH);
  delay(250);
  start_time = micros();
  digitalWrite(FULL_PRESS, HIGH);
  delay(10);
  digitalWrite(FULL_PRESS, LOW);
  digitalWrite(HALF_PRESS, LOW);
}

void result() {
  unsigned long lag = micros() - start_time;
  Serial.println(lag);
}