Остановить мгновение. Фототриггер на Arduino

Съемка быстротекущих процессов, таких как падение капли, взрыв воздушного шарика, — очень непростое дело. Точно подгадать момент, когда нужно нажать на спуск затвора, без специальных устройств практически невозможно. Нет, можно, конечно, сделать сотню попыток, и в какой-то момент удача повернется к тебе. Но можно обойтись и без сотни шариков. Тут на помощь придет Arduino. Ниже описан процесс конструирования автоматического триггера на базе Arduino с реакцией на звук или пересечение луча лазерной указки.

Cтрого говоря, Arduino будет управлять не затвором камеры, а фотовспышкой. К сожалению, задержка реакции камеры на сигнал — в районе 20 миллисекунд, что для человеческого глаза не заметно, но все же дольше, чем можно себе позволить при съемке лопнувшего шарика. Поэтому съемка производится в темной комнате с выдержкой 10 секунд, а вот вспышка срабатывает именно в нужный момент. Так как в комнате практически нет освещения, то всё экспонирование фотографии произойдет именно в момент работы вспышки (около 1 миллисекунды).

Лазерный фотосенсор

В качестве сенсора используется простая лазерная указка и фоторезистор. Луч указки направляется на фотосенсор, а фотосенсор будет регистрировать потерю луча. То есть в тот момент, когда объект пересекает луч, Arduino активирует вспышку. Также, в этот момент, программно отключается лазер, чтобы луч не попал на фотографию. Внеся небольшую задержку между пересечением луча и освещением сцены вспышкой, можно поймать в кадр интересные моменты, например, разбивающуюся о пол лампу накаливания, которая за мгновение до этого падая пересечет луч указки.

Для удешевления конструкции использовался недорогой лазерный модуль. Так как он очень маломощный, его можно запитать напрямую с цифрового выхода Arduino. Так как модуль лазера требует 3В, а напряжение на выходе Arduino 5В, в схеме используется делитель напряжения на двух резисторах. Другой делитель — в цепи фоторезистора. Значение сигнала с фоторезистора считывается аналоговым входом Arduino.

Схема:

Звуковой сенсор

Сенсор реагирует на шум — это может быть звук падающей капли на воду или звук лопнувшего шарика и т.д. Для упрощения конструкции в схеме используется уже готовый усилитель, в данном случае — гитарный. С усилителя мы будем получать синусоидальный сигнал в районе 8 кГц на 5 вольтах. Для защиты аналогового входа Arduino используется диод, отсекающий отрицательную часть волны.

На первом изображении — сигнал с усилителя (это голос), на втором — сигнал после диода. Arduino, считывая сигнал, сравнивает его с некоторым пороговым значением. Если сигнал превышает его, то срабатывает триггер вспышки. В принципе, можно сделать более избирательную систему и заставить Arduino реагировать на определенные частоты, но в данном приложении этого не требуется.

Схема включения:

Управление вспышкой

Об управлении вспышкой можно почитать здесь.

Окончательная сборка

Сборка заключалась в размещении всех компонентов в подходящем корпусе и выводе на корпус разъемов для подключения микрофона и лазерного сенсора.

Программный код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// Maurice Ribble
 
// These enable the different types of triggers
//#define ENABLE_LASER_TRIGGER
#define ENABLE_SOUND_TRIGGER
 
// The threshhold values for the different triggers.
// These may need to be changed depending on evironment and sensors being used.
// Using PRINT_MESSAGES can help determine the correct value for these.
#define LASER_THRESHHOLD 500
#define SOUND_THRESHHOLD 100
 
// This prints messages to the serial port.  This is good to enable while determining
// the threshholds for your trigger, but these communications are very slow and
// when using these sensors to actually take pictures this should be turned off.
//#define PRINT_MESSAGES
 
// The digital pins being used
#define CAMERA_FLASH_PIN 4
#define LASER_PIN 5
 
// The analog pins being used
#define LASER_TRIGGER_ANALOG_PIN A0
#define SOUND_TRIGGER_ANALOG_PIN A1
 
void setup()
{
  pinMode(CAMERA_FLASH_PIN, OUTPUT);
  digitalWrite(CAMERA_FLASH_PIN, LOW);
  pinMode(LASER_PIN, OUTPUT);
  digitalWrite(LASER_PIN, LOW);
 
#ifdef ENABLE_LASER_TRIGGER
  digitalWrite(LASER_PIN, HIGH);  // Turn on the Laser
#endif
 
#ifdef PRINT_MESSAGES
  Serial.begin(9600); // open serial
#endif
}
 
void loop()
{
  int soundVal;
  int laserVal;
 
  ////////////////////////////////////////////////////////////
  // SOUND TRIGGER
  ////////////////////////////////////////////////////////////
#ifdef ENABLE_SOUND_TRIGGER
  soundVal = analogRead(SOUND_TRIGGER_ANALOG_PIN);
  if (soundVal > SOUND_THRESHHOLD)
  {
     digitalWrite(CAMERA_FLASH_PIN, HIGH);
#ifdef PRINT_MESSAGES
     Serial.println("Flash Triggered!!!");
#endif
     delay(100);
     digitalWrite(CAMERA_FLASH_PIN, LOW);
   }
#ifdef PRINT_MESSAGES
  Serial.print("Sound: ");
  Serial.println(soundVal, DEC);
#endif
#endif // ENABLE_SOUND_TRIGGER
 
  ////////////////////////////////////////////////////////////
  // LASER TRIGGER
  ////////////////////////////////////////////////////////////
#ifdef ENABLE_LASER_TRIGGER
  laserVal = analogRead(LASER_TRIGGER_ANALOG_PIN);
  if (laserVal < LASER_THRESHHOLD)
  {
     digitalWrite(CAMERA_FLASH_PIN, HIGH);
     digitalWrite(LASER_PIN, LOW);  // Turn off laser during picture
#ifdef PRINT_MESSAGES
     Serial.println("Flash Triggered!!!");
#endif
     delay(100);
     digitalWrite(CAMERA_FLASH_PIN, LOW);
     digitalWrite(LASER_PIN, HIGH);  // Turn laser back on after picture
   }
#ifdef PRINT_MESSAGES
  Serial.print("Laser: ");
  Serial.println(laserVal, DEC);
#endif
#endif // ENABLE_LASER_TRIGGER
}

Результат:

Оригинальная статья (англ.) на сайте автора.

 

Файлы проекта

Источник

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

3 комментария к “Остановить мгновение. Фототриггер на Arduino”

  1. Сергей:

    😯 ахах, я такое делал ток у меня неиспользовалася серийка, и программа намного проще, ха да я так и недодумался что можно выключить лазер все фотки получальсь с им. 🙁

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bug Report
Локализовано: шаблоны Wordpress