Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einfangen der Wassertropfen mit Arduino

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Lasermodul KY-008
× 1
LM393 Lichtsensormodul
× 1
Allzwecktransistor NPN
× 3
Drehpotentiometer (allgemein)
× 1
> /td>
C&K-Switches Switch der PTS 645-Serie
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Dieses Projekt entstand aus der Sehnsucht heraus, diesen Bereich der Fotografie auszuprobieren. Unten sehen Sie ein einfaches Arduino-basiertes Setup, das ich gebaut habe, um Hochgeschwindigkeitsfotos von Wassertropfen zu machen.

Zuallererst sollten Sie eine Fotokamera mit manuellen Einstellungen und ein externes Blitzlicht haben, beide müssen die Fernbedienung unterstützen. Ich habe Sony DSC-HX300 (Abb. 1) und GODOX SY8000 (Abb. 2) mit Kabeln.

In Abb. 2 sieht man zwei sorgfältig isolierte Arduino-Drähte, die mit dem PC-Anschluss des SyncCable verbunden sind.

Ich beschloss, die Fernbedienung zu modifizieren, indem ich einen einfachen 3-Pin-Header hinzufügte (Abb. 3).

Im Inneren der Fernbedienung (Abb. 4) befinden sich drei federnde Metallstreifen (1 – «+» des Verschlusses; 2 – GND; 3 – «+» des Autofokus), die zwei Stromkreise («2–3», dann «1–2»), wenn die Taste gedrückt wird.

Da die Stiftleiste jetzt installiert ist, können wir den Tastendruck programmgesteuert mit Arduino emulieren.

Das SyncCable funktioniert genauso:Die Kontakte im PC-Anschluss müssen kurzgeschlossen werden, um den Blitz auszulösen.

Mein Ziel war es, den Moment des Spritzens einzufangen, wenn ein Tropfen auf die Wasseroberfläche fällt.

Um den Aufbau zu vereinfachen, habe ich einige Teile einer zusammengebauten Medikamentenpipette verwendet (Abb. 5).

Das Lasermodul KY-008 und das LM393-basierte Lichtsensormodul erkennen den fallenden Tropfen (Abb. 6).

Es ist möglich, diese Module so anzuordnen, dass der fallende Tropfen den Laserstrahl unterbricht und somit den Stromkreis unterbricht. Der Lichtsensor kann seine Empfindlichkeit an die Laserleistung anpassen, indem er den variablen Widerstand am Modul dreht. Außerdem können die Module weit voneinander entfernt positioniert werden.

Die Aufnahme erfolgt im Dunkeln mit Langzeitbelichtung für mehrere Sekunden, sodass nur kurzzeitiges Blitzlicht für das Endergebnis zählt.

Das Schaltbild ist in Abb. 7 dargestellt.

Die Einrichtung ist nicht vollständig automatisiert. Vor der beobachtbaren Tropfenabscheidung drückt der Benutzer den Button. Dieser öffnet den Shutter für einige Sekunden, indem die Kontakte nacheinander in der Fernbedienung per Autofokus-Trigger und Shutter-Trigger gekürzt werden. Auch das Drücken der Taste ermöglicht das Auslösen des Blitzlichts. Wenn der Tropfen den Laserstrahl kreuzt, schließt der Blitzlichtauslöser die Kontakte im PC-Anschluss kurz und das Blitzlicht wird ausgelöst. Die Zeit zwischen dem Durchqueren des Laserstrahls und dem Verkürzen der Kontakte im SyncCable wird durch das Potentiometer in einem Bereich von 1 bis 500 ms eingestellt. (Grenzen können im Code geändert werden). Auf diese Weise können unterschiedliche Momente des Spritzens festgehalten werden. Die nächsten Tropfen zünden das Blitzlicht nicht:Um diese Funktion zu aktivieren, muss der Button erneut gedrückt werden.

Die Montage ist in Abb. 8 dargestellt.

In der obigen Schaltung kann ein Optokoppler hinzugefügt werden, um das Hochvolt-Blitzlicht von der Niedervolt-Elektronik zu trennen.

Die wichtigsten Codeparameter sind in Abb. 9 dargestellt. Das Projekt basiert auf Arduino Nano.

Das Flag «DBG_MODE» dient der vorläufigen Anordnung und Justage sowohl des Lasermoduls als auch des Lichtsensormoduls. In diesem Modus wird weder die Kamera noch das Blitzlicht verwendet. Die integrierte LED des Arduino-Boards dient als Indikator.

Um das Setup anzupassen, entkommentieren Sie das Flag, kompilieren Sie den Code und flashen Sie das Arduino. Bei korrekter Einstellung geht die LED an, wenn die Taste gedrückt wird (Shutter-Simulation) und erlischt, wenn ein Tropfen den Laserstrahl kreuzt (Blitzlicht-Simulation).

Wenn das Setup gut funktioniert, kommentieren Sie das Flag zurück, kompilieren Sie den Code und flashen Sie das Arduino erneut.

Der Code enthält außerdem folgende Konstanten:

· Arduino-Pins, mit denen die Komponenten dieses Projekts verbunden sind;

· Verzögerungen, wenn die Kontakte von Autofokus, Verschluss oder Blitzlicht kurzgeschlossen werden;

· Grenzen des Zeitbereichs einstellbar durch das Potentiometer.

Einige Ergebnisse sind in Abb. 10 – 12 dargestellt.


Code

  • Unbenannte Datei
Unbenannte DateiArduino
//#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;FOCUS_unsigned inDELt =100OCUS_unsigned in 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 allowfireDelay(); #ifndef DBG_MODE digitalWrite(FOCUS_PIN, HIGH); Verzögerung (FOCUS_DELAY); digitalWrite (SHUTTER_PIN, HIGH); Verzögerung (SHUTTER_DELAY); digitalWrite (SHUTTER_PIN, LOW); Verzögerung (FOCUS_DELAY); digitalWrite (FOCUS_PIN, LOW); #else digitalWrite (LED_BUILTIN, HIGH); #endif}void fireFlash() { #ifndef DBG_MODE digitalWrite(FLASH_PIN, HIGH); Verzögerung (FLASH_DELAY); digitalWrite (FLASH_PIN, LOW); #else digitalWrite (LED_BUILTIN, LOW); #endif}void setup() { pinMode (BUTTON_PIN, INPUT_PULLUP); pinMode (FOCUS_PIN, AUSGANG); pinMode (SHUTTER_PIN, AUSGANG); pinMode (FLASH_PIN, AUSGANG); 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 =HOCH; fireDelay =map(analogRead(RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openShutter(); aufrechtzuerhalten. Sonst { Verzögerung (50); } } currSensor =digitalRead (SENSOR_PIN); if (prevSensor !=currSensor) { prevSensor =currSensor; if (currSensor ==HIGH) { if (allowFlash) { allowFlash =false; Verzögerung (fireDelay); fireFlash(); } } }} 

Schaltpläne


Herstellungsprozess

  1. Münzprüfer mit Arduino steuern
  2. Rettung des Wasserlebens und Bekämpfung der Wasserverschmutzung mit IoT und KI
  3. JX-Wellengenerator
  4. Arduino mit Bluetooth zur Steuerung einer LED!
  5. Kennen Sie die Temperatur Ihres Zuhauses von überall mit der Arduino Cloud!
  6. Wie man Arduino Mega mit dem NEO-6M GPS-Modul verbindet
  7. u-blox LEA-6H 02 GPS-Modul mit Arduino und Python
  8. Verwenden des tragbaren Pulssensors MAX30100 mit Arduino
  9. Erstellen Sie die Fridgeye-App mit einem Nextion-Display
  10. Verwenden des Bodenfeuchtesensors YL-39 + YL-69 mit Arduino