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

Capturando las gotas de agua con Arduino

Componentes y suministros

Arduino Nano R3
× 1
Módulo láser KY-008
× 1
Módulo de sensor de luz LM393
× 1
Transistor de uso general NPN
× 3
Potenciómetro giratorio (genérico)
× 1
C&K Switches PTS 645 Series Switch
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Este proyecto nació como resultado del anhelo de probar esta área de la fotografía. A continuación, verá una configuración simple basada en Arduino que construí para hacer fotos de gotas de agua a alta velocidad.

En primer lugar, debe tener una cámara fotográfica con ajustes manuales y una luz de flash externa, ambos deben ser compatibles con el control remoto. Tengo Sony DSC-HX300 (Fig. 1) y GODOX SY8000 (Fig. 2) con cables.

En la Fig. 2 se pueden ver dos cables Arduino cuidadosamente aislados y conectados al conector de PC del SyncCable.

Decidí modificar el control remoto agregando un encabezado simple de 3 pines (Fig. 3).

En el interior del mando a distancia (Fig. 4) hay tres tiras de metal elásticas (1 - «+» del obturador; 2 - GND; 3 - «+» del autofocus) que cortocircuitan dos circuitos («2–3», luego «1–2») cuando se presiona el botón.

Dado que el encabezado del pin ahora está instalado, podemos emular el botón presionando programáticamente usando Arduino.

SyncCable funciona de la misma manera:los contactos en el conector de la PC deben estar en cortocircuito para disparar el flash.

Mi objetivo era capturar el momento del chapoteo cuando una gota cae sobre la superficie del agua.

Para simplificar la configuración, utilicé algunas partes de un gotero para medicamentos ensambladas (Fig. 5).

El módulo láser KY-008 y el módulo sensor de luz basado en LM393 detectarán la caída de la gota (Fig. 6).

Es posible disponer estos módulos de tal manera que la gota que cae interrumpa el rayo láser rompiendo así el circuito. El sensor de luz es capaz de ajustar su sensibilidad a la potencia del láser girando la resistencia variable en el módulo. Además, los módulos se pueden colocar a una gran distancia entre sí.

El disparo se realiza en la oscuridad con una exposición prolongada durante varios segundos, de modo que solo la luz del flash de corta duración importa para los resultados finales.

El diagrama del circuito se muestra en la Fig. 7.

La configuración no está completamente automatizada. Antes de la separación de gotas observable, el usuario presiona el botón. Esto abre el obturador durante unos segundos al acortar los contactos consecutivamente en el control remoto mediante el disparador de enfoque automático y el disparador del obturador. Además, la pulsación del botón permite disparar la luz del flash. Cuando la gota cruza el rayo láser, el disparador de luz de flash cortocircuita los contactos en el conector de la PC y la luz de flash se enciende. El tiempo entre el cruce del rayo láser y el acortamiento de los contactos en SyncCable se ajusta mediante el potenciómetro en un rango de 1 a 500 ms. (los límites se pueden cambiar en el código). De esta forma, se pueden capturar diferentes momentos del chapoteo. Las siguientes gotas no disparan la luz del flash:para activar esta función, el Botón debe presionarse nuevamente.

El montaje se muestra en la Fig. 8.

Se puede agregar un acoplador óptico en el circuito de arriba para separar la luz del flash de alto voltaje de la electrónica de bajo voltaje.

Los principales parámetros del código se muestran en la Fig. 9. El proyecto se basa en Arduino Nano.

La bandera «DBG_MODE» está destinada a la disposición preliminar y el ajuste tanto del módulo láser como del módulo sensor de luz. En este modo, no se utiliza ni la cámara ni la luz del flash. El LED integrado de la placa Arduino sirve como indicador.

Para ajustar la configuración, descomente la bandera, compile el código y actualice el Arduino. Si la configuración es correcta, el LED se enciende cuando se presiona el botón (simulación de obturador) y se apaga cuando una gota cruza el rayo láser (simulación de disparo de luz de flash).

Cuando la configuración funcione bien, vuelva a comentar la bandera, compile el código y vuelva a actualizar Arduino.

El código también contiene las siguientes constantes:

· Pines de Arduino a los que están conectados los componentes de este proyecto;

· Retrasos aplicados cuando los contactos del enfoque automático, el obturador o la luz del flash están en cortocircuito;

· Límites del rango de tiempo ajustable por el potenciómetro.

Algunos resultados se muestran en la Fig. 10-12.


Código

  • Archivo sin título
Archivo sin título Arduino
 // # define 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_DELAY int FOCUS 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; booleano prevButton, currButton; booleano prevSensor, currSensor; booleano open fireFlash; #ifndef DBG_MODE digitalWrite (FOCUS_PIN, HIGH); retraso (FOCUS_DELAY); digitalWrite (SHUTTER_PIN, HIGH); retraso (SHUTTER_DELAY); digitalWrite (SHUTTER_PIN, LOW); retraso (FOCUS_DELAY); digitalWrite (FOCUS_PIN, BAJO); #else digitalWrite (LED_BUILTIN, HIGH); #endif} void fireFlash () {#ifndef DBG_MODE digitalWrite (FLASH_PIN, HIGH); retraso (FLASH_DELAY); digitalWrite (FLASH_PIN, BAJO); #else digitalWrite (LED_BUILTIN, LOW); #endif} void setup () {pinMode (BUTTON_PIN, INPUT_PULLUP); pinMode (FOCUS_PIN, SALIDA); pinMode (SHUTTER_PIN, SALIDA); pinMode (FLASH_PIN, SALIDA); pinMode (SENSOR_PIN, ENTRADA); #ifdef DBG_MODE pinMode (LED_BUILTIN, SALIDA); #endif digitalWrite (FOCUS_PIN, LOW); digitalWrite (SHUTTER_PIN, LOW); digitalWrite (FLASH_PIN, BAJO); prevButton =digitalRead (BUTTON_PIN); prevSensor =digitalRead (SENSOR_PIN); allowFlash =false;} bucle vacío () {currButton =digitalRead (BUTTON_PIN); if (prevButton! =currButton) {prevButton =currButton; if (currButton ==LOW) {allowFlash =true; prevSensor =HIGH; fireDelay =map (analogRead (RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openShutter (); } else {retraso (50); }} currSensor =digitalRead (SENSOR_PIN); if (prevSensor! =currSensor) {prevSensor =currSensor; if (currSensor ==HIGH) {if (allowFlash) {allowFlash =false; delay (fireDelay); fireFlash (); }}}} 

Esquemas


Proceso de manufactura

  1. Controlar el aceptador de monedas con Arduino
  2. Salvando la vida acuática y luchando contra la contaminación del agua con IoT y AI
  3. Generador de ondas JX
  4. ¡Arduino con Bluetooth para controlar un LED!
  5. ¡Conoce la temperatura de tu hogar desde cualquier lugar con Arduino Cloud!
  6. Cómo conectar Arduino Mega con el módulo GPS NEO-6M
  7. Módulo GPS u-blox LEA-6H 02 con Arduino y Python
  8. Uso del sensor de pulso portátil MAX30100 con Arduino
  9. Cree la aplicación Fridgeye con una pantalla Nextion
  10. Uso del sensor de humedad del suelo YL-39 + YL-69 con Arduino
  11. Medición de la radiación solar con Arduino