Захват капель воды с помощью Arduino
Компоненты и расходные материалы
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 3 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Приложения и онлайн-сервисы
![]() |
|
Об этом проекте
Этот проект родился в результате стремления попробовать эту область фотографии. Ниже вы увидите простую установку на базе Arduino, которую я построил для высокоскоростного фотографирования капель воды.
Во-первых, у вас должна быть фотокамера с ручными настройками и внешней вспышкой, обе они должны поддерживать дистанционное управление. У меня есть Sony DSC-HX300 (рис. 1) и GODOX SY8000 (рис. 2) с кабелями.


На рис. 2 можно увидеть два провода Arduino, тщательно изолированные и подключенные к ПК-разъему SyncCable.
Я решил модифицировать пульт дистанционного управления, добавив простой 3-контактный разъем (рис. 3).

Внутри пульта ДУ (рис. 4) расположены три пружинящие металлические полоски (1 - «+» шторки; 2 - GND; 3 - «+» автофокуса), замыкающие две цепи («2–3», затем «1–2») при нажатии кнопки.

Поскольку заголовок вывода теперь установлен, мы можем программно эмулировать нажатие кнопки с помощью Arduino.
SyncCable работает точно так же:контакты в разъеме ПК должны быть закорочены, чтобы сработала вспышка.
Моей целью было запечатлеть момент всплеска, когда капля падает на поверхность воды.
Чтобы упростить настройку, я использовал собранные вместе части капельницы для лекарств (рис. 5).

Лазерный модуль KY-008 и модуль светового датчика на основе LM393 обнаружат падение капли (рис. 6).

Эти модули можно расположить таким образом, чтобы падающая капля прерывала лазерный луч, тем самым разрывая цепь. Датчик освещенности может регулировать свою чувствительность к мощности лазера путем вращения переменного резистора на модуле. Дополнительно модули можно размещать на большом расстоянии друг от друга.
Съемка ведется в темноте с использованием длинной выдержки в течение нескольких секунд, поэтому для окончательного результата важна только кратковременная вспышка.
Принципиальная схема представлена на рис. 7.

Установка не полностью автоматизирована. Перед видимым разделением капли пользователь нажимает кнопку. Это открывает затвор на несколько секунд за счет последовательного укорачивания контактов на пульте дистанционного управления с помощью триггера автофокуса и триггера затвора. Также нажатие кнопки позволяет включить фонарик. Когда капля пересекает лазерный луч, Flash Light Trigger замыкает контакты в разъеме ПК, и вспышка срабатывает. Время между пересечением лазерного луча и сокращением контактов в SyncCable регулируется потенциометром в диапазоне от 1 до 500 мс. (лимиты можно изменить в коде). Таким образом можно запечатлеть разные моменты всплеска. Следующие капли не загораются:чтобы активировать эту функцию, необходимо снова нажать кнопку.
Сборка представлена на рис. 8.

В приведенную выше схему можно добавить оптический соединитель, чтобы отделить высоковольтную вспышку от низковольтной электроники.
Основные параметры кода показаны на рис. 9. Проект основан на Arduino Nano.

Флаг «DBG_MODE» предназначен для предварительной настройки и настройки как лазерного модуля, так и модуля светового датчика. В этом режиме ни камера, ни вспышка не используются. Встроенный светодиод на плату Arduino служит индикатором.
Чтобы отрегулировать настройку, раскомментируйте флаг, скомпилируйте код и прошейте Arduino. Если настройка верна, светодиод загорается при нажатии кнопки (имитация затвора) и гаснет, когда капля пересекает лазерный луч (имитация срабатывания вспышки).
Когда установка сработает правильно, закомментируйте флаг, скомпилируйте код и снова запустите Arduino.
Код также содержит следующие константы:
· Выводы Arduino, к которым подключаются компоненты этого проекта;
· Задержки, возникающие при закорачивании контактов автофокуса, затвора или вспышки;
· Пределы временного диапазона, регулируемые потенциометром.
Некоторые результаты показаны на рис. 10–12.



Код
- Файл без названия
Файл без названия Arduino
// # определить DBG_MODEconst byte BUTTON_PIN =2; const byte FOCUS_PIN =3; const byte SHUTTER_PIN =4; const byte FLASH_PIN =5; const byte SENSOR_PIN =6; const byte RESISTOR_PIN =A5; const unsigned int FOCUS_DELAY =100; const unsigned int SHUTTER_DELAY =100; const unsigned int FLASH_DELAY =10; const unsigned int FIRE_DELAY_MIN =1; const unsigned int FIRE_DELAY_MAX =500; логическое prevButton, currButton; логическое prevSensor, currSensor; логическое значение allow longFlash { #ifndef DBG_MODE digitalWrite (FOCUS_PIN, HIGH); задержка (FOCUS_DELAY); digitalWrite (SHUTTER_PIN, HIGH); задержка (SHUTTER_DELAY); digitalWrite (SHUTTER_PIN, LOW); задержка (FOCUS_DELAY); digitalWrite (FOCUS_PIN, LOW); #else digitalWrite (LED_BUILTIN, HIGH); #endif} void fireFlash () {#ifndef DBG_MODE digitalWrite (FLASH_PIN, HIGH); задержка (FLASH_DELAY); digitalWrite (FLASH_PIN, LOW); #else digitalWrite (LED_BUILTIN, LOW); #endif} void setup () {pinMode (BUTTON_PIN, INPUT_PULLUP); pinMode (FOCUS_PIN, ВЫХОД); pinMode (SHUTTER_PIN, ВЫХОД); pinMode (FLASH_PIN, ВЫХОД); pinMode (SENSOR_PIN, INPUT); #ifdef DBG_MODE pinMode (LED_BUILTIN, OUTPUT); #endif digitalWrite (FOCUS_PIN, LOW); digitalWrite (SHUTTER_PIN, LOW); digitalWrite (FLASH_PIN, LOW); prevButton =digitalRead (BUTTON_PIN); prevSensor =digitalRead (SENSOR_PIN); allowFlash =false;} цикл void () {currButton =digitalRead (BUTTON_PIN); если (prevButton! =currButton) {prevButton =currButton; если (currButton ==LOW) {allowFlash =true; prevSensor =HIGH; fireDelay =map (analogRead (RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openShutter (); } else {задержка (50); }} currSensor =digitalRead (SENSOR_PIN); если (prevSensor! =currSensor) {prevSensor =currSensor; если (currSensor ==HIGH) {если (allowFlash) {allowFlash =false; задержка (fireDelay); fireFlash (); }}}}
Схема

Производственный процесс
- Управление монетоприемником с помощью Arduino
- Спасение водных организмов и борьба с загрязнением воды с помощью Интернета вещей и искусственного интеллек…
- Генератор волн JX
- Arduino с Bluetooth для управления светодиодом!
- Узнавайте температуру своего дома откуда угодно с помощью Arduino Cloud!
- Как связать Arduino Mega с GPS-модулем NEO-6M
- u-blox LEA-6H 02 GPS-модуль с Arduino и Python
- Использование переносного датчика пульса MAX30100 с Arduino
- Создайте приложение Fridgeye с дисплеем Nextion
- Использование датчика влажности почвы YL-39 + YL-69 с Arduino