Site icon Meccanismo Complesso

Realizziamo una barriera laser con Arduino

In questo articolo vedremo come è possibile realizzare una barriera laser da utilizzare successivamente con Arduino.

Le applicazioni di una barriera luminosa (a laser o a infrarosso) sono moltissime, soprattutto ogni volta che vogliamo che un determinato evento si attivi al passaggio di una persona o un oggetto attraverso una soglia. Questo evento potrebbe essere per esempio un conteggio se si desidera contare il numero di oggetti che attraversa una determinata soglia (per esempio su un nastro trasportatore); potrebbe essere lo scatto di una foto all’attraversamento da parte di un animale per la caccia fotografica. Un altro esempio è l’attivazione di un allarme per proteggere una determinata area in cui si vuole controllare l’accesso. Se si dispongono poi più barriere laser allora le applicazioni crescono, per esempio misurare il tempo impiegato nell’attraversare lo spazio che intercorre tra due diverse barriere.

Navigando un po’ nella rete per cercare un punto di partenza su cui lavorare, ho trovato un articolo di M.Ribble sul sito www.glacialwanderer.com/hobbyrobotics che utilizzava una barriera laser per la caccia fotografica: quando un animale attraversa la barriera laser la macchina fotografica collegata ad un trigger scatta la foto.

Dato che le mie esigenze erano diverse e soprattutto volevo fare in modo che l’applicabilità di quello che stavo facendo fosse la più generale possibile ho apportato alcune modifiche. Infatti avevo bisogno che sia l’emettitore (laser LED) che il ricevitore (fotoresistenza) avessero i loro circuiti separati montati su moduli diversi, in modo da collegarli su Arduino (o anche altre schede) separatamente. Avendo così dei moduli separati e indipendenti si ha la possibiltà di utilizzarli in moltissime applicazioni, montandoli in linea su diverse infrastutture ogni volta a seconda delle esigenze.

Ecco lo schema dei due moduli:

Fig.1: lo schema dei due moduli

Per prima cosa vediamo tutto l’occorrente riportato in Fig.2

Fig.2: Materiale per realizzare la barriera laser

Mentre tutto il resto è materiale generico acquistabile in qualsiasi negozio di componenti elettronici, per quanto riguarda il laser, ho trovato sul sito della Sparkfun questo prodotto:

Laser card Module – Red ( Sparkfun COM-00594 )

Produttore: Wenta Electronics co., LTD, China
Wavelength: 650nm (645-660nm)
Output power: 0.45 to 0.80mW
Input power source: 3.1V+/-10%
Consumption current: 35mA (max 40mA)
Laser spot: circle
Laser life: 3000 hours

In Figura 3 c’è il circuito recettore che ho realizzato con la fotoresistenza ripiegata per affacciarsi lungo il bordo esterno opposto ai tre pin.

Fig.3: circuito recettore con fotoresistenza

Mentre in Fig.4 abbiamo il circuito emettitore con il morsetto sul lato opposto ai 2 pin. Il laser LED può essere così rimosso o sostituito dal circuito.

Fig.4: circuito emettitore con LED laser

Adesso che abbiamo realizzato i due moduli, possiamo collegarli ad Arduino.

Fig.4: circuiti emettitore e recettore collegati alla scheda Arduino UNO

Ecco la configurazione dei collegamenti sulla scheda Arduino UNO che ho utilizzato e che si riferiscono al il codice dell’esempio:

Fig.5: diagramma del circuito con arduino

Ed ecco il codice per il trigger che si attiva quando il fascio laser viene interrotto tra l’emettitore e il recettore.

#define LASER_PIN 5
#define LASER_THRESHOLD 600
#define LASER_TRIGGER_ANALOG_PIN 0

int laserVal;

void setup()
 {
 pinMode(LASER_PIN,OUTPUT);
 digitalWrite(LASER_PIN,LOW);
 digitalWrite(LASER_PIN,HIGH); //turn on the laser
 Serial.begin(9600);
 }

void loop()
 {
 laserVal = analogRead(LASER_TRIGGER_ANALOG_PIN);
 delay(1000);
 //Serial.println(laserVal);
 if(laserVal < LASER_THRESHOLD)
 {
    digitalWrite(LASER_PIN,LOW); //turn off the laser
    //Scrivi qui il codice che viene eseguito quando il fascio viene interrotto
    delay(100);
    digitalWrite(LASER_PIN,HIGH); //turn on the laser
 }
 }

Una volta compilato il codice e caricato su Arduino, sarà necessario regolare il valore di soglia (threshold) più adatto al caso su cui stiamo lavorando. Per partire ho impostato un valore medio di 600. Il recettore segnala alla scheda Arduino continuamente un valore (laserVal) che è proporzionale al livello di luminosità a cui è sottoposto la fotoresistenza. Maggiore sarà il valore, maggiore sarà la luminosità percepita dal sensore. Quindi finchè Arduino riceverà dal sensore valori di laserVal superiori al valore di soglia, la barriera luminosa verrà considerata come non interrotta. Nel preciso istante in cui si dovesse registrare un valore inferiore al valore specificato in LASER_THRESHOLD, la condizione if all’interno della funzione loop() verrà soddisfatta e il codice al suo interno eseguito. Il laser verrà momentaneamente disattivato (100 millisecondi) e poi riattivato. Infatti l’alimentazione del laser proviene dal PIN 5 della scheda e non dal pin di alimentazione 5VDC, questa scelta di proposito ci permette di avere un controllo sul laser in modo da poter decidere quando debba essere acceso o spento.

Exit mobile version