DIY – Trigger Laser per High Speed Photography con Arduino


Ciao ragazzi e bentornati per un nuovo progetto fai da te (Do-It-Yourself!)

Ciò che faremo oggi riguarda la fotografia e l’elettronica, e ci permetterà di scattare le cosiddette “High Speed Photo”!

20150919151437__DSC1415

Quello che vedete in foto, è proprio il risultato finale che riuscirete ad ottenere grazie al trigger laser che costruiremo!


A cosa serve?

Grazie al progetto creeremo una barriera laser che una volta infranta da un qualsiasi oggetto, farà scattare il nostro flash.
Tutto ciò avviene in una frazione di secondo, permettendoci di catturare azioni velocissime come il cadere delle gocce o altro!

 

Lo posso comprare? Quanto spendo a realizzarlo?

Un trigger del genere esiste già in commercio, ma i prezzi partono dalle 50€ in su.
Il progetto considerando tutto ciò che è stato usato, non supera le 20€ e si abbassa se avete già un laser, dei cavi, e qualche altro componente che potreste staccare da elettronica vecchia ormai inutilizzata o rotta!

 

Cosa utilizzeremo per la costruzione?

Ci servirà nello specifico:

  • Un laser anche economico (quello da 1€ delle bancarelle va anche bene)
  • Resistenze da 220Ohm
  • 2 Potenziometri da 10k
  • 1 Fotoaccoppiatore 4n35
  • 1 Fotoresistenza da 1k
  • 1 Interruttore bipolare
  • 1 Kit Arduino Uno
  • Cavi maschio-maschio
  • Basetta millefori
  • (opzionale) lastre di plexiglass da tagliare

 

Tutorial di costruzione

 

Script per arduino

const int LDR = A0; // pin LDR
const int PCaduta = A1; // pin potenziometro caduta
const int PSoglia = A2; // pin potenziometro soglia
const int led = 13; // pin led
const int bottone = 12; // pin bottone
const int outpin = 11; // pin comando flash
byte RitardoLettura = 3; // tempo ritardo per la lettura sensore in secondi
int soglia = 0;
byte caduta = 0;
boolean calibrazione = 0;
int Laser = 0;

int beccato = 0;

void setup() {

pinMode(LDR, INPUT);
pinMode(PCaduta, INPUT);
pinMode(PSoglia, INPUT);
pinMode(led, OUTPUT);
pinMode(bottone, INPUT);
pinMode(outpin, OUTPUT);
digitalWrite(led, HIGH);
Serial.begin(115200);
}

void loop() {

int caduta = analogRead(PCaduta);
int soglia = analogRead(PSoglia);

soglia = (soglia / 2) - 3;

if (calibrazione == 0)
{

boolean lettura = digitalRead(bottone);

if (lettura == HIGH)
{
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay (RitardoLettura * 1000);
Laser = analogRead(LDR);
delay(100);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
calibrazione = 1;
}
}


int Fotoresistenza = analogRead(LDR);


if(calibrazione == 1 && Fotoresistenza < (Laser - soglia))
{
beccato = Fotoresistenza;
delay(caduta);
digitalWrite(outpin, HIGH);
delay(50);
digitalWrite(outpin, LOW);
Serial.print("Beccato: ");
Serial.print(beccato);
Serial.print(" - Laser: ");
Serial.print(Laser);
Serial.print(" - Soglia: ");
Serial.print(soglia);
Serial.print(" - Cadura: ");
Serial.println(caduta);
digitalWrite(led, HIGH);
delay(3000);
digitalWrite(led, LOW);
}

}



3 Commenti

  1. Donato ha detto:

    Ciao, Complimenti per la realizzazione. Penso che te la copierò.
    Una domanda: pensi che sia possibile mettere in serie delle fotoresistenze per prendere una linea di luce ivece che un punto?
    Per esempio usando un laser per livellare (che disegna una linea) sarebbe più semplice “colpire” la goccia. Non so se sono riuscito a spiegarmi…

    • Gabriel Rudiferia ha detto:

      Ciao, un laser per livellare non ha senso, perche per funzionare se deve interrompere proprio davanti al sensore, puoi avere il laser a 360 gradi ma il sensore è sempre su un punto, dovresti usare una barriera laser como quelle usate per allarme, ma non so quanto siano sensibili come per vedere una goccia d’acqua….. magari SV legge questo e ci da una diritta 😉
      Io già sto radunando gli elementi per farlo, vorrei aggiungere un display per non dipendere del pc… vediamo se ci riesco :o)

    • Stefano Venneri ha detto:

      Ciao Donato,
      perdonami per la lunga attesa, ma il sistema non mi ha notificato il commento (Grazie Gabriel per avermi avvertito!).

      Puoi usare una “serie” di fotoresistenze per ricevere il fascio di una livella laser, però non vedo a che scopo.
      Inoltre dovresti usare un port-expander tipo MCP2017 (se ricordo bene il modello, non vorrei sbagliare) per aumentare il numero di porte se non dovessero bastare (in base a quante fotoresistenze avrai).

      Se il problema è semplicemente usare il laser della livella anziché un laser a punto, allora puoi usarla tranquillamente senza problemi… se invece vuoi un range d’azione piu ampio, allora devi calcolare bene la sensibilità di ogni foto resistenza e gestirle manualmente, perché facendo una media non avresti una sensibilità accurata. Devi stazionare bene la livella laser prima di far campionare il valore di scatto ecc…

      In teoria non dovrebbe esserci nessun problema a farlo.

Lascia un commento

%d blogger hanno fatto clic su Mi Piace per questo: