Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Capturando as gotas de água com Arduino

Componentes e suprimentos

Arduino Nano R3
× 1
Módulo Laser KY-008
× 1
Módulo sensor de luz LM393
× 1
Transistor de uso geral NPN
× 3
Potenciômetro rotativo (genérico)
× 1
/ td>
Chaves C&K Comutador série PTS 645
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Este projeto nasceu da vontade de experimentar esta área da fotografia. Abaixo você verá uma configuração simples baseada em Arduino que construí para fazer fotos em alta velocidade de gotas de água.

Primeiramente você deve ter uma fotocâmera com ajustes manuais e um flash externo, ambos devem suportar controle remoto. Tenho Sony DSC-HX300 (fig. 1) e GODOX SY8000 (fig. 2) com cabos.

Na Fig. 2 pode-se ver dois fios do Arduino cuidadosamente isolados e presos ao conector de PC do SyncCable.

Decidi modificar o controle remoto adicionando um cabeçalho simples de 3 pinos (Fig. 3).

Dentro do controle remoto (Fig. 4), há três tiras de metal elásticas (1 - «+» do obturador; 2 - GND; 3 - «+» do foco automático) que causam curto-circuito em dois circuitos («2–3», então «1–2») quando o botão está sendo pressionado.

Uma vez que o cabeçalho do pino está instalado, podemos emular o pressionamento do botão programaticamente usando o Arduino.

O SyncCable funciona da mesma maneira:os contatos no conector do PC devem estar em curto para disparar o flash.

Meu objetivo era capturar o momento do respingo quando uma gota cai na superfície da água.

Para simplificar a configuração, usei algumas partes de um conta-gotas de remédio montadas juntas (fig. 5).

O módulo laser KY-008 e o módulo sensor de luz baseado em LM393 irão detectar a queda da gota (Fig. 6).

É possível dispor esses módulos de forma que a queda da gota interrompa o feixe de laser, interrompendo o circuito. O sensor de luz é capaz de ajustar sua sensibilidade à potência do laser girando o resistor variável no módulo. Além disso, os módulos podem ser posicionados a uma longa distância uns dos outros.

A filmagem é conduzida no escuro, com exposição longa por vários segundos, de modo que apenas a luz do flash de curta duração é importante para os resultados finais.

O diagrama do circuito é mostrado na Fig. 7.

A configuração não é totalmente automatizada. Antes da separação das gotas observáveis, o usuário pressiona o botão. Isso abre o obturador por alguns segundos encurtando os contatos consecutivamente no controle remoto por Autofocus Trigger e Shutter Trigger. Além disso, o pressionamento do botão permite disparar a luz do flash. Quando a gota cruza o feixe de laser, o disparador da luz do flash causa um curto-circuito nos contatos no conector do PC e a luz do flash dispara. O tempo entre o cruzamento do feixe de laser e o encurtamento dos contatos em SyncCable é ajustado pelo potenciômetro em uma faixa de 1 a 500 ms. (os limites podem ser alterados no código). Desta forma, diferentes momentos do respingo podem ser capturados. As próximas gotas não acendem o flash:para ativar esta função o Botão deve ser pressionado novamente.

A montagem é mostrada na Fig. 8.

Um acoplador óptico pode ser adicionado ao circuito acima para separar a luz do flash de alta voltagem dos eletrônicos de baixa voltagem.

Os principais parâmetros do código são mostrados na Fig. 9. O projeto é baseado no Arduino Nano.

A bandeira «DBG_MODE» se destina ao arranjo preliminar e ao ajuste do módulo do laser e do módulo do sensor de luz. Neste modo, nem a câmera nem a luz do flash são usadas. O LED integrado da placa Arduino serve como um indicador.

Para ajustar a configuração, descomente o sinalizador, compile o código e atualize o Arduino. Se a configuração estiver correta, o LED acende quando o botão é pressionado (simulação de obturador) e apaga quando uma gota cruza o feixe de laser (simulação de disparo de flash).

Quando a configuração funcionar bem, comente o sinalizador de volta, compile o código e atualize o Arduino novamente.

O código também contém as seguintes constantes:

· Pinos do Arduino aos quais os componentes deste projeto estão conectados;

· Atrasos aplicados quando os contatos do foco automático, obturador ou luz do flash estão em curto;

· Limites da faixa de tempo ajustáveis ​​pelo potenciômetro.

Alguns resultados são mostrados na Fig. 10-12.



Código

  • Arquivo sem título
Arquivo sem título Arduino
 // # define o byte DBG_MODEconst 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 sem sinal int FOCUS_DELAY =100; const sem sinal int SHUTTER_DELAY =100; const sem sinal int FLASH_DELAY =10; const sem sinal int FIRE_DELAY_MIN =1; const sem sinal int FIRE_DELAY_MAX =500; booleano prevButton, currButton; boolean prevSensor, currSensor; boolean permitirShutelay (aberto longo fogo) #ifndef DBG_MODE digitalWrite (FOCUS_PIN, HIGH); atraso (FOCUS_DELAY); digitalWrite (SHUTTER_PIN, HIGH); atraso (SHUTTER_DELAY); digitalWrite (SHUTTER_PIN, LOW); atraso (FOCUS_DELAY); digitalWrite (FOCUS_PIN, LOW); #else digitalWrite (LED_BUILTIN, HIGH); #endif} void fireFlash () {#ifndef DBG_MODE digitalWrite (FLASH_PIN, HIGH); atraso (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) {allowFlash =true; prevSensor =HIGH; fireDelay =map (analogRead (RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openShutter (); } mais {atraso (50); }} currSensor =digitalRead (SENSOR_PIN); if (prevSensor! =currSensor) {prevSensor =currSensor; if (currSensor ==HIGH) {if (allowFlash) {allowFlash =false; atraso (fireDelay); fireFlash (); }}}} 

Esquemas


Processo de manufatura

  1. Aceitar moeda de controle com Arduino
  2. Como salvar vidas aquáticas e combater a poluição da água com IoT e IA
  3. JX Wave Generator
  4. Arduino com Bluetooth para controlar um LED!
  5. Conheça a temperatura de sua casa de qualquer lugar com a nuvem Arduino!
  6. Como fazer a interface do Arduino Mega com o Módulo GPS NEO-6M
  7. u-blox LEA-6H 02 Módulo GPS com Arduino e Python
  8. Usando o sensor de pulso vestível MAX30100 com Arduino
  9. Crie o aplicativo Fridgeye com uma tela Nextion
  10. Usando o Sensor de Umidade do Solo YL-39 + YL-69 com Arduino