Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

De waterdruppels vastleggen met Arduino

Componenten en benodigdheden

Arduino Nano R3
× 1
Lasermodule KY-008
× 1
LM393 lichtsensormodule
× 1
Transistor-NPN voor algemeen gebruik
× 3
Draaipotentiometer (algemeen)
× 1
/td>
C&K Switches PTS 645 Series Switch
× 1

Apps en online services

Arduino IDE

Over dit project

Dit project werd geboren als resultaat van een verlangen om dit gebied van fotografie te proberen. Hieronder zie je een eenvoudige op Arduino gebaseerde opstelling die ik heb gebouwd om supersnelle foto's van waterdruppels te maken.

Allereerst moet u een fotocamera hebben met handmatige instellingen en een externe flitslamp, beide moeten afstandsbediening ondersteunen. Ik heb Sony DSC-HX300 (Fig. 1) en GODOX SY8000 (Fig. 2) met kabels.

In Fig. 2 zijn twee Arduino-draden te zien die zorgvuldig zijn geïsoleerd en zijn bevestigd aan de pc-connector van de SyncCable.

Ik besloot de afstandsbediening aan te passen door een eenvoudige 3-pins header toe te voegen (Fig. 3).

In de afstandsbediening (Fig. 4) bevinden zich drie verende metalen strips (1 – «+» van de sluiter; 2 – GND; 3 – «+» van de autofocus) die twee circuits kortsluiten («2–3», dan «1–2») wanneer de knop wordt ingedrukt.

Omdat de pin-header nu is geïnstalleerd, kunnen we de druk op de knop programmatisch emuleren met Arduino.

De SyncCable werkt op dezelfde manier:de contacten in de pc-connector moeten worden kortgesloten om te flitsen.

Mijn doel was om het moment van spatten vast te leggen wanneer een druppel op het wateroppervlak valt.

Om de installatie te vereenvoudigen, heb ik enkele onderdelen van een medicijndruppelaar gebruikt die in elkaar zijn gezet (Fig. 5).

De lasermodule KY-008 en de op LM393 gebaseerde lichtsensormodule zullen de vallende druppel detecteren (Fig. 6).

Het is mogelijk deze modules zo te rangschikken dat de vallende druppel de laserstraal onderbreekt en zo de stroomkring verbreekt. De lichtsensor kan zijn gevoeligheid voor het laservermogen aanpassen door de variabele weerstand op de module te draaien. Bovendien kunnen de modules op grote afstand van elkaar worden geplaatst.

De opnamen worden gemaakt in het donker met een lange belichtingstijd van enkele seconden, zodat alleen kort flitslicht van belang is voor de uiteindelijke resultaten.

Het schakelschema wordt getoond in Fig. 7.

De installatie is niet volledig geautomatiseerd. Voor de waarneembare druppelscheiding drukt de gebruiker op de knop. Hierdoor wordt de sluiter enkele seconden geopend door de contacten in de afstandsbediening achtereenvolgens in te korten door middel van Autofocus Trigger en Shutter Trigger. Ook maakt de druk op de knop het afvuren van het flitslicht mogelijk. Wanneer de druppel de laserstraal kruist, sluit de Flash Light Trigger de contacten in de pc-connector kort en het flitslicht gaat af. De tijd tussen het kruisen van de laserstraal en het verkorten van de contacten in SyncCable wordt door de Potentiometer aangepast in een bereik van 1 tot 500 ms. (limieten kunnen in de code worden gewijzigd). Op deze manier kunnen verschillende momenten van de plons worden vastgelegd. Volgende druppels doen het flitslicht niet afgaan:om deze functie te activeren moet de knop opnieuw worden ingedrukt.

De montage wordt getoond in Fig. 8.

In het bovenstaande circuit kan een optische koppeling worden toegevoegd om de hoogspanningsflitslamp te scheiden van de laagspanningselektronica.

De belangrijkste codeparameters worden getoond in Fig. 9. Het project is gebaseerd op Arduino Nano.

De vlag «DBG_MODE» is bedoeld voor de voorlopige opstelling en afstelling van zowel de lasermodule als de lichtsensormodule. In deze modus wordt noch de camera noch de flitslamp gebruikt. De ingebouwde LED van het Arduino-bord dient als indicator.

Om de setup aan te passen, moet u de vlag verwijderen, de code compileren en de Arduino flashen. Als de instelling correct is, gaat de LED AAN wanneer de knop wordt ingedrukt (sluitersimulatie) en gaat UIT wanneer een druppel de laserstraal kruist (flitslichtsimulatie).

Als de setup goed werkt, becommentarieert u de vlag terug, compileert u de code en flasht u de Arduino opnieuw.

De code bevat ook de volgende constanten:

· Arduino-pinnen waarop de componenten van dit project zijn aangesloten;

· vertragingen die worden toegepast wanneer de contacten van autofocus, sluiter of flitslicht worden kortgesloten;

· limieten van het tijdbereik instelbaar door de Potentiometer.

Enkele resultaten worden getoond in Fig. 10 – 12.


Code

  • Naamloos bestand
Naamloos bestandArduino
//#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 niet-ondertekende int 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; #ifndef DBG_MODE digitalWrite(FOCUS_PIN, HOOG); vertraging (FOCUS_DELAY); digitalWrite (SHUTTER_PIN, HOOG); vertraging (SHUTTER_DELAY); digitalWrite (SHUTTER_PIN, LAAG); vertraging (FOCUS_DELAY); digitalWrite (FOCUS_PIN, LAAG); #else digitalWrite(LED_BUILTIN, HOOG); #endif}void fireFlash() { #ifndef DBG_MODE digitalWrite(FLASH_PIN, HIGH); vertraging (FLASH_DELAY); digitalWrite (FLASH_PIN, LAAG); #else digitalWrite(LED_BUILTIN, LAAG); #endif} ongeldige setup () { pinMode (BUTTON_PIN, INPUT_PULLUP); pinMode (FOCUS_PIN, UITGANG); pinMode (SHUTTER_PIN, UITGANG); pinMode (FLASH_PIN, UITGANG); pinMode (SENSOR_PIN, INPUT); #ifdef DBG_MODE pinMode (LED_BUILTIN, OUTPUT); #endif digitalWrite(FOCUS_PIN, LAAG); digitalWrite (SHUTTER_PIN, LAAG); digitalWrite (FLASH_PIN, LAAG); prevButton =digitalRead (BUTTON_PIN); prevSensor =digitalRead (SENSOR_PIN); allowFlash =false;} ongeldige lus () { currButton =digitalRead (BUTTON_PIN); if (prevButton !=currButton) { prevButton =currButton; if (currButton ==LAAG) { allowFlash =waar; prevSensor =HOOG; fireDelay =kaart (analogRead (RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openSluiter(); } anders { vertraging(50); } } currSensor =digitalRead (SENSOR_PIN); if (prevSensor !=currSensor) { prevSensor =currSensor; if (currSensor ==HOOG) {if (allowFlash) { allowFlash =false; vertraging (fireDelay); vuurflits(); } } }} 

Schema's


Productieproces

  1. Bedien muntvangers met Arduino
  2. Het waterleven redden en watervervuiling bestrijden met IoT en AI
  3. JX Wave Generator
  4. Arduino met Bluetooth om een ​​LED te bedienen!
  5. Ken de temperatuur van uw huis overal met Arduino Cloud!
  6. Hoe Arduino Mega te interfacen met NEO-6M GPS-module
  7. u-blox LEA-6H 02 GPS-module met Arduino en Python
  8. De draagbare MAX30100-polssensor gebruiken met Arduino
  9. Bouw de Fridgeye-app met een Nextion-display
  10. De YL-39 + YL-69 bodemvochtigheidssensor gebruiken met Arduino
  11. Zonnestraling meten met Arduino