Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Captura Gotas de Agua en Acción con Arduino Nano: Fotografía de Alta Velocidad DIY

Componentes y suministros

Componente Cantidad
Arduino Nano R3 1
Módulo láser KY-008 1
Módulo sensor de luz LM393 1
Transistor NPN de propósito general 3
Potenciómetro rotativo 1
Pulsador C&K PTS 645 1

Aplicaciones y servicios en línea

Sobre este proyecto

Este proyecto nació de las ganas de probar la fotografía de alta velocidad. Aquí presento un montaje sencillo basado en Arduino para fotografiar gotas de agua.

Requisitos previos

Modifiqué el mando remoto de la cámara añadiendo un header de 3 pines para emular la pulsación del botón vía Arduino. Dentro del mando hay tres láminas metálicas: común (GND), autofoco y obturador. Al pulsar, cierran primero autofoco+GND y luego obturador+GND. El cable de sincronización del flash funciona igual: cerrar contactos dispara el flash.

Detección de la gota

Objetivo: capturar el instante del chapoteo al caer la gota sobre la superficie del agua. Para simplificar, usé partes de un gotero médico ensambladas.

Un módulo láser KY-008 y un sensor de luz LM393 detectan la caída: la gota interrumpe el haz láser al pasar. El sensor LM393 permite ajustar sensibilidad con su potenciómetro integrado. Los módulos pueden separarse a gran distancia.

Principio de disparo

La foto se toma en oscuridad con exposición larga (varios segundos), de modo que solo la luz del flash (duración ~1/10.000 s) congela la imagen.

  1. El usuario pulsa el Botón antes de que caiga la gota observable.
  2. Arduino cierra contactos de autofoco y obturador en el mando → la cámara abre obturador (exposición larga).
  3. Al mismo tiempo, Arduino habilita el disparo del flash.
  4. Cuando la gota cruza el haz láser, el sensor lo detecta.
  5. Tras un retardo ajustable (1-500 ms, vía potenciómetro), Arduino cierra contactos del cable PC-sync → flash dispara.
  6. Ese retardo permite capturar distintas fases del chapoteo.
  7. Las siguientes gotas no disparan el flash; hay que pulsar de nuevo el Botón.

El esquema del circuito se muestra en la figura 7. Un acoplador óptico puede aislar el flash (alta tensión) de la electrónica de baja tensión.

Parámetros principales del código

Resultados

Las figuras 10-12 muestran ejemplos de gotas capturadas: corona, columna, doble gota...

Código

Código principal (Arduino)

//#define DBG_MODE
const 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;

boolean prevButton, currButton;
boolean prevSensor, currSensor;
boolean allowFlash;
unsigned long fireDelay;

void openShutter() {
  #ifndef DBG_MODE
    digitalWrite(FOCUS_PIN, HIGH); delay(FOCUS_DELAY);
    digitalWrite(SHUTTER_PIN, HIGH); delay(SHUTTER_DELAY);
    digitalWrite(SHUTTER_PIN, LOW); delay(FOCUS_DELAY);
    digitalWrite(FOCUS_PIN, LOW);
  #else
    digitalWrite(LED_BUILTIN, HIGH);
  #endif
}

void fireFlash() {
  #ifndef DBG_MODE
    digitalWrite(FLASH_PIN, HIGH); delay(FLASH_DELAY);
    digitalWrite(FLASH_PIN, LOW);
  #else
    digitalWrite(LED_BUILTIN, LOW);
  #endif
}

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(FOCUS_PIN, OUTPUT); pinMode(SHUTTER_PIN, OUTPUT);
  pinMode(FLASH_PIN, OUTPUT); 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 loop() {
  currButton = digitalRead(BUTTON_PIN);
  if (prevButton != currButton) {
    prevButton = currButton;
    if (currButton == LOW) { // Botón pulsado (pull-up)
      allowFlash = true;
      prevSensor = HIGH;
      fireDelay = map(analogRead(RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX);
      openShutter();
    } else { delay(50); }
  }
  currSensor = digitalRead(SENSOR_PIN);
  if (prevSensor != currSensor) {
    prevSensor = currSensor;
    if (currSensor == HIGH && allowFlash) { // Flanco subida: gota cruza haz
      allowFlash = false;
      delay(fireDelay);
      fireFlash();
    }
  }
}

Esquemáticos

Esquema del circuito (imagen adjunta).

Proceso de manufactura

  1. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  2. Monitorización IoT y IA de calidad del agua para proteger la vida acuática
  3. Generador de Ondas JX – Oscilador DDS Compatible con Arduino con Pantalla OLED
  4. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  5. Monitoriza la Temperatura de tu Hogar desde Cualquier Lugar con Integración Arduino Cloud
  6. Conectar Arduino Mega a módulo GPS NEO‑6M: Guía paso a paso
  7. Módulo GPS u-blox LEA‑6H 02: Guía de integración con Arduino y Python
  8. Integración del Sensor de Pulso MAX30100 con Arduino: Guía Paso a Paso
  9. Construye la App Fridgeye con una Pantalla Nextion: Guía Paso a Paso
  10. Guía Paso a Paso: Conectar Sensor de Humedad de Suelo YL-39/YL-69 a Arduino UNO
  11. Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet