Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capturer les gouttes d'eau avec Arduino

Composants et fournitures

Arduino Nano R3
× 1
Module laser KY-008
× 1
Module de capteur de lumière LM393
× 1
Transistor à usage général NPN
× 3
Potentiomètre rotatif (générique)
× 1
Commutateurs C&K Commutateur série PTS 645
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Ce projet est né d'une envie d'essayer ce domaine de la photographie. Ci-dessous, vous verrez une configuration simple basée sur Arduino que j'ai construite pour faire des photos à grande vitesse de gouttes d'eau.

Tout d'abord, vous devez avoir un appareil photo avec des réglages manuels et un flash externe, les deux doivent prendre en charge la télécommande. J'ai Sony DSC-HX300 (Fig. 1) et GODOX SY8000 (Fig. 2) avec câbles.

Sur la figure 2, on peut voir deux fils Arduino soigneusement isolés et attachés au connecteur PC du SyncCable.

J'ai décidé de modifier la télécommande en ajoutant un simple en-tête à 3 broches (Fig. 3).

A l'intérieur de la télécommande (Fig. 4) se trouvent trois bandes métalliques élastiques (1 – « + » de l'obturateur ; 2 – GND ; 3 – « + » de l'autofocus) qui court-circuitent deux circuits (« 2–3 », puis « 1–2 ») lorsque le bouton est enfoncé.

Étant donné que l'en-tête de broche est maintenant installé, nous pouvons émuler la pression du bouton par programmation à l'aide d'Arduino.

Le SyncCable fonctionne de la même manière :les contacts du connecteur PC doivent être court-circuités pour déclencher le flash.

Mon objectif était de capturer le moment des éclaboussures lorsqu'une goutte tombe à la surface de l'eau.

Pour simplifier la configuration, j'ai utilisé certaines parties d'un compte-gouttes de médicament assemblées (Fig. 5).

Le module laser KY-008 et le module capteur de lumière à base de LM393 détecteront la chute de goutte (Fig. 6).

Il est possible d'agencer ces modules de telle sorte que la goutte tombante interrompe le faisceau laser interrompant ainsi le circuit. Le capteur de lumière est capable d'ajuster sa sensibilité à la puissance laser en faisant tourner la résistance variable sur le module. De plus, les modules peuvent être positionnés à grande distance les uns des autres.

La prise de vue est effectuée dans l'obscurité en utilisant une longue exposition pendant plusieurs secondes afin que seule la lumière du flash de courte durée compte pour les résultats finaux.

Le schéma du circuit est illustré à la Fig. 7.

La configuration n'est pas entièrement automatisée. Avant la séparation des gouttes observable, l'utilisateur appuie sur le bouton. Cela ouvre l'obturateur pendant quelques secondes en raccourcissant les contacts consécutivement dans la télécommande par Autofocus Trigger et Shutter Trigger. De plus, la pression sur le bouton permet de déclencher la lumière du flash. Lorsque la goutte traverse le faisceau laser, le déclencheur de la lumière flash court-circuite les contacts du connecteur PC et la lumière du flash se déclenche. Le temps entre le croisement du faisceau laser et le raccourcissement des contacts dans SyncCable est ajusté par le potentiomètre dans une plage de 1 à 500 ms. (les limites peuvent être modifiées dans le code). De cette façon, différents moments du splash peuvent être capturés. Les gouttes suivantes ne déclenchent pas la lumière du flash :pour activer cette fonction, il faut à nouveau appuyer sur le bouton.

L'assemblage est illustré à la Fig. 8.

Un coupleur optique peut être ajouté dans le circuit ci-dessus pour séparer le flash haute tension de l'électronique basse tension.

Les principaux paramètres du code sont illustrés à la figure 9. Le projet est basé sur Arduino Nano.

Le drapeau « DBG_MODE » est destiné à la disposition et au réglage préliminaires du module laser et du module capteur de lumière. Dans ce mode, ni l'appareil photo ni le flash ne sont utilisés. La LED intégrée à la carte Arduino sert d'indicateur.

Pour ajuster la configuration, décommentez le drapeau, compilez le code et flashez l'Arduino. Si la configuration est correcte, la LED s'allume lorsque le bouton est enfoncé (simulation d'obturateur) et s'éteint lorsqu'une goutte traverse le faisceau laser (simulation de tir de flash).

Lorsque la configuration fonctionne bien, commentez le drapeau, compilez le code et flashez à nouveau l'Arduino.

Le code contient également les constantes suivantes :

· Broches Arduino auxquelles les composants de ce projet sont connectés ;

· retards appliqués lorsque les contacts de l'autofocus, de l'obturateur ou du flash sont en court-circuit ;

· limites de la plage de temps réglable par le potentiomètre.

Certains résultats sont montrés dans les Fig. 10 – 12.


Code

  • Fichier sans titre
Fichier sans titreArduino
//#define DBG_MODEconst octet BUTTON_PIN =2;const octet FOCUS_PIN =3;const octet SHUTTER_PIN =4;const octet FLASH_PIN =5;const octet SENSOR_PIN =6;const octet RESISTOR_PIN =A5;const unsigned_inlay 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, uttervoidlashFensor, currSensor {longSensor;boolean() #ifndef DBG_MODE digitalWrite(FOCUS_PIN, HIGH); retard(FOCUS_DELAY); digitalWrite(SHUTTER_PIN, HAUT); retard(SHUTTER_DELAY); digitalWrite(SHUTTER_PIN, LOW); retard(FOCUS_DELAY); digitalWrite(FOCUS_PIN, LOW); #else digitalWrite(LED_BUILTIN, HAUT); #endif}void fireFlash() { #ifndef DBG_MODE digitalWrite(FLASH_PIN, HIGH); retard(FLASH_DELAY); digitalWrite(FLASH_PIN, LOW); #else digitalWrite(LED_BUILTIN, LOW); #endif }void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(FOCUS_PIN, SORTIE); pinMode(SHUTTER_PIN, SORTIE); pinMode(FLASH_PIN, SORTIE); pinMode(SENSOR_PIN, INPUT); #ifdef DBG_MODE pinMode(LED_BUILTIN, SORTIE); #endif digitalWrite(FOCUS_PIN, LOW); digitalWrite(SHUTTER_PIN, LOW); digitalWrite(FLASH_PIN, LOW); prevButton =digitalRead(BUTTON_PIN); prevSensor =digitalRead(SENSOR_PIN); allowFlash =false;}boucle vide() { currButton =digitalRead(BUTTON_PIN); if (PrevButton !=currButton) { prevButton =currButton; if (currButton ==LOW) { allowFlash =true; prevSensor =HAUT; fireDelay =map(analogRead(RESISTOR_PIN), 0, 1023, FIRE_DELAY_MIN, FIRE_DELAY_MAX); openShutter(); } else { retard (50); } } currSensor =digitalRead(SENSOR_PIN); if (prevSensor !=currSensor) { prevSensor =currSensor; if (currSensor ==HIGH) { if (allowFlash) { allowFlash =false; retard(fireDelay); fireFlash(); } } }} 

Schémas


Processus de fabrication

  1. Contrôler l'accepteur de pièces avec Arduino
  2. Sauver la vie aquatique et lutter contre la pollution de l'eau avec l'IoT et l'IA
  3. Générateur d'ondes JX
  4. Arduino avec Bluetooth pour contrôler une LED !
  5. Connaître la température de votre maison depuis n'importe où avec Arduino Cloud !
  6. Comment interfacer Arduino Mega avec le module GPS NEO-6M
  7. module GPS u-blox LEA-6H 02 avec Arduino et Python
  8. Utilisation du capteur cardiaque portable MAX30100 avec Arduino
  9. Créer l'application Fridgeye avec un écran Nextion