come leggere un optical endstop con arduino

Ciao a tutti
Ho un sensore endstop, per la mia CNC, con 3 pin 5V, GND, e segnale. Quando collego un led al segnale e faccio passare un oggetto metallico nell’apposito sezione il led si accende però collegandolo ad arduino con un digitalread() non ricevo nessun segnale.
Qualcuno ha un idea di cosa possa essere?
Grazie in anticipo.

Definisci "segnale".

Ossia il sensore quali tensioni manda in out? Non è che ti manca una resistenza di pulldown?

Spiega meglio lo schema e posta un esempio di codice così capiamo meglio (e non scrivere 2 volte lo stesso post).

Il sensore in questione è quello nell’allegato

Ecco il codice:

#define ENDSTOP 8

void setup() {
  pinMode(ENDSTOP, INPUT);
  digitalWrite(ENDSTOP, LOW);
  Serial.begin(19200);
}

void loop() {

  Serial.println(digitalRead(ENDSTOP));

}

Ti serve una resistenza pullup o pulldown (dipende come é collegato il sensore).
Il LED come lo avevi collegato?

Ciao Uwe

Più che altro … spiega il senso di ciò che segue perché non è chiaro cosa fai … :o

void setup() {
 pinMode(ENDSTOP, INPUT);
 digitalWrite(ENDSTOP, LOW);  // <--- ???
 .....
}

Guglielmo

Ho collegato il segnale con l’anodo del LED e il catodo con GND

Più che altro … spiega il senso di ciò che segue perché non è chiaro cosa fai … :o

@Guglielmo facevo delle prove visto che nei tentatevi precedenti non funzionava.

Perdona, ma ... in questo settore "prove a caso" hanno ben poco senso ...

... ai dichiarato il pin ENDSTOP in INPUT quindi ... ti aspetti di leggere dei dati da esso (... come è giusto), quindi ... che senso ha che tu faccia un "digitalWrite()", ovvero una operazione di OUTPUT su quel pin (anche se si può fare) ? ? ?

Guglielmo

bilal-jih:
Ho collegato il segnale con l'anodo del LED e il catodo con GND ...

Collegare un LED direttamente hai pin di Arduino, senza interporre una resistenza che limiti la corrente, di ha il probabile risultato di ... danneggiarlo (parlo del pin) ...

Ti ricordo che, come da datasheet, ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore). Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.

Guglielmo

gpb01:
Collegare un LED direttamente hai pin di Arduino, senza interporre una resistenza che limiti la corrente, di ha il probabile risultato di ... danneggiarlo (parlo del pin) ...

avevo capito che aveva collegato il LED al optocoppler a forcella per controllare se funziona.

Ovviamente serve una resistenza in serie al LED anche in questo caso.

bilal-jih
metti una resistenza da 10kOhm tra uscita e massa. Collega l' uscita al pin digitale di Arduino e cosí dovresti leggere il segnale con Arduino.

Ciao Uwe

Ciao e grazie a tutti adesso funziona con una resistenza. Però non riesco a capire perché quando dichiaro:

pinMode(ENDSTOP, INPUT);

Lo stato del pin con
digitalRead(ENDSTOP) restituisce 1 quando quest'ultimo è scollegato.
Se invece è collegato restituisce 0.

Perdona, ma ... in questo settore "prove a caso" hanno ben poco senso ...

@Guglielmo: lo so, ma purtroppo mancano 2 giorni all'orale e il progetto della tesina non funziona, ero disperato.