SHARP GP1A57HRJ00F Arduino

Il sensore ottico SHARP GP1A57HRJ00F è spesso utilizzato per determinare il finecorsa o la posizione di parti meccaniche in progetti tipo le stampanti 3D, le cnc ed anche i Dolly per fotografia o riprese:

SHARP GP1A57HRJ00F

l’uso di sensori ottici in meccanica ti garantisce maggiore affidabilità e durata del progetto nei confronti di analoghi sensori meccanici e sebbene sensibili alla polvere sono soggetti a minor usura e degradamento delle prestazioni su lunghi periodi di lavoro.

Puoi trovare facilmente sensori di tipo ottico, come il sensore SHARP GP1A57HRJ00F, nella tua stampante casalinga, solitamente è posizionato ai capi estremi del carrello e indica alla stampante l’arrivo in posizione della testina di stampa.

Come è fatto il sensore SHARP GP1A57HRJ00F

Ogni buon makers si pone una domanda simile quando ha un componente nuovo da usare nel suo progetto, riporto la descrizione presente sul sito da cui l’ho acquistato:

è costituito da un emettitore ad infrarossi su un montante ed un rilevatore diinfrarossi schermato dall’altro. Emette un fascio di luce infrarossa da un montante all’altro, il sensore può rilevare quando un oggetto passa tra i  due montanti, rompendo il fascio.

in pratica è un sensore a forma di “U” squadrata in cui un lato presenta un emettitore ad infrarossi e l’altro lato un ricevitore che si comporta come un interruttore: restituisce +5v se il fascio non presenta ostacoli e 0v quando il fascio viene interrotto.

SHARP GP1A57HRJ00F datasheet

I pin del sensore SHARP GP1A57HRJ00F

il sensore SHARP GP1A57HRJ00F ha 5 pin totali, di cui 2 dal lato dell’emettitore infrarosso e tre dal lato del ricevitore:

nella foto ho cercato di mostrare tutti i pin del sensore SHARP GP1A57HRJ00F sia da un ato sia dall’altro.

Ti consiglio di verificare bene sul datasheet come eseguire i collegamenti o di utilizzare la SHARP GP1A57HRJ00F Breakout Board:

SHARP GP1A57HRJ00F Breakout Board

a cui devi aggiungere solo una resistenza da 220ohm in corrispondenza della serigrafia.

In alternativa puoi sempre saldare una resistenza da 220ohm, 330ohm o 470ohm come ho fatto io direttamente in serie ad uno dei due poli dellemettitore del sensore SHARP GP1A57HRJ00F:

SHARP GP1A57HRJ00F resistenza

in questo modo limiti la corrente sull’emettitore non incorrendo nel rischio di bruciarlo.

Ho anche realizzato delle foto in cui trovi esattamente a quali pin saldare i terminali positivo e negativo del sensore SHARP GP1A57HRJ00F, lato emettitore:

SHARP GP1A57HRJ00F emettitore

e lato ricevitore:

SHARP GP1A57HRJ00F lato ricevitore

in modo che seguendo l’indicazione dell’angolo tagliato, evidenziato dalla freccia bleu, tu possa essere sicuro delle connessioni.

Circuito di test del sensore SHARP GP1A57HRJ00F

Per eseguire i test del sensore ho utilizzato una breadboard e dei cavi per collegare il sensore ad arduino:

SHARP-GP1A57HRJ00F arduino

come vedi in figura il corcuito è semplice, tutti i terminali negativi ( Gnd ) sono connessi tra loro e collegati al Gnd di arduino e tutti i terminali positivi ( +5v ) sono collegati al +5v di arduino.

Ti resta da collegare il pin di output del sensore ( di colore verde ) ad uno dei pin analogici dei Arduino, io ho scelto di collegalo al pin A0.

Lo sketch di test del sensore SHARP-GP1A57HRJ00F

I primi test con questo sensore li ho realizzati con questo sketch:

/**********************************************************
 * SHARP IA57HR
 *
 * Data creazione 17 marzo 2013
 * Ultima modifica 20 marzo 2013
 * 
 * autore: Mauro Alfieri
 * web:    mauroalfieri.it
 * tw:     @mauroalfieri
 *
/**********************************************************/

#define pinSensore A0
#define pinLed     13

void setup() {
  Serial.begin( 9600 );
  
  pinMode( pinSensore,INPUT );
  pinMode( pinLed,OUTPUT );

  digitalWrite( pinSensore,LOW );
  digitalWrite( pinLed,LOW );
  
  Serial.println( "Fine Setup" );  
}

void loop() {
  int valSensore = analogRead( pinSensore );
  digitalWrite( pinLed,LOW );
  
  Serial.print( "Valore Sensore: " );
  Serial.println( valSensore );

  if ( valSensore < 1000 ) {
    digitalWrite( pinLed,HIGH );
    delay( 2000 );
  }
  delay( 100 );
}

è molto semplice: accendere il led collegato al pin 13 di arduino quando il sensore SHARP GP1A57HRJ00F rileva un oggetto che intralcia il fascio ottico.

linee 13-14: definisci i 2 pin che utilizzi per ricevere l’input dal sensore e inviare l’output al led;

linee 19-23: imposta la modalità di funzionamento per i due pin scelti: A0 sarà INPUT e 13 sarà OUTPUT. Imposta a LOW il valore di entrambi i pin, nel caso del led serve a spegnerlo, per il sensore ( A0 ) imposta la resistenza di pull-down di Arduino collegata al pin A0;

linea 29: leggi il valore analogico sul pin A0 e assegnalo alla variabile valSensore;

linea 30: spegni il led, serve per riportare il led nella condizione iniziale ad ogni loop();

linee32-33: scrivi a video, sul monitor seriale dell’IDE arduino, i valori letti sul pin A0;

linea 35: se il valore letto sul pin A0 è inferiore a 1000 entra nella condizione di if. In pratica il sensore a vuoto restituisce sempre +5v che per Arduino sai essere 1023 come valore digitale, quando interrompi il fascio di luce il sensore SHARP GP1A57HRJ00F porta la sua uscita a 0v = 0 come valore analogico letto e convertito dall’ADC di Arduino;

linee 36-37: porta ad HIGH il valore del pin 13, accendendo il led ed attendi 2 secondi prima di procedere oltre;

linea 39: aggiungi un delay di 100 millisecondi ( un decimo di secondo ) prima di ripetere il controllo del sensore rieseguendo il loop();

Buona sperimentazione !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/sharp-gp1a57hrj00f-arduino.html

10 pings

Skip to comment form

  1. […] sensore GP1A57HRJ00F è stato già oggetto di un precedente articolo in cui avevo accennato alla possibilità di essere montato su una […]

  2. […] cui saldare il GP1A57HRJ00F, la resistenza da 330ohm ed i pin per collegare il finecorsa al […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.