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 !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/sharp-gp1a57hrj00f-arduino.html

8 commenti

2 ping

Vai al modulo dei commenti

    • Marco Perrotta il 28 Ottobre 2013 alle 15:05
    • Rispondi

    Salve, mi chiedevo se era possibile sapere dove posso comperare la fotocellula IA57HR. Io sono di Padova. Molte grazie

    1. Ciao Marco,
      io acquisto tutti i componenti online da robot-domestici.it.

      Mauro

    • Mario De Stefano il 28 Maggio 2014 alle 17:44
    • Rispondi

    Salve, si tratta di un sensore davvero interessante.
    Non è che sapreste come risulterebbe il codice se si volessero misurare i giri al minuto di un motorino (magari con un elica per tagliare il campo infrarosso) e mandarli impressi su uno schermo LCD.
    Sarei interessato a implementarlo in un progettino che sto facendo con la scheda Arduino Mega.
    Se è disposto ad aiutarmi le sarei molto grato.
    Comunque complimenti, ottima guida.
    Grazie.
    Mario.

    1. Ciao Mario,
      si lo trovo anche io molto interessante.
      Il suo funzionamento, come leggi è semplice, io userei gli interrupt di arduino per realizzare il progetto che desideri.

        • Mario De Stefano il 28 Maggio 2014 alle 18:45
        • Rispondi

        Si infatti girovagando sul web avevo estrapolato qualche informazioni poi riportate alle mie esigenze.
        Qualcosa del genere potrebbe funzionare:
        (Ho mandato a prendere il sensore infrarossi e quindi fino a quando non mi arriva non posso sperimentare)

        — codice rimosso in automatico —

        Era pensato per un sistema fatto da led emettitore ir e fototransistor ricevente. Quello in cui ho trovato complicanze è stato il collegamento del fototransistor in un pin digitale (in questo caso il 2).
        Sapreste dirmi se, ad occhio, così pensato il programma potrebbe funzionare o se vi sono errori ?
        Grazie.

        1. Ciao Mario, il codice degli sketch non può essere inserito nei commenti come ha letto in fondo ad ogni articolo.
          Io ti consiglio di attendere il sensore per fare dei test o in alternativa puoi usare un pulsante per simulare a mano la chiusura del contatto.

    • Mattia variola il 1 Ottobre 2016 alle 00:34
    • Rispondi

    Ciao io ho trovato molti di questi sensori (un altro modello) sempre della sharp smontando una vecchia stampante da ufficio però non essendoci alcun dato non riesco a riconoscere quale sia il diodo e quale il ricevitore e quindi neanche i pin…la mia idea era di usarli sulla mia reprap adapto ma vorrei sapere se funzionano prima di montarli come potrei fare?

    1. Ciao Mattia,
      cerca il datasheet sul sito sharp, se sono sensori ancora in produzione dovresti trovarli.

  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

Il tuo indirizzo email non sarà pubblicato.

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